LVS-DR集群(一台LVS,一台CIP,两台web,一台NFS)的构建以及LVS-DR模式工作原理和特点

一.LVS-DR工作模式原理和特点

1.工作模式

2.模式特点

二.构建环境

1.五台关闭防火墙,关闭selinux,拥有固定IP,部署有http服务的虚拟机,LVS设备下载ipvsadm工具,NFS 设备需要下载rpcbind和nfs-utils

2.实现功能

3.ipvsadm命令部分参数介绍

三.配置和测试

1.LVS设备

(1)配置VIP,并清除原有的虚拟服务规则

(2)为两台web服务器配置算法和服务规则,并启用保存ipvsadm配置

(3)调整proc响应参数,关闭ICMP重定向并重新读取

2.NFS服务器

(1)配置共享目录并写入html内容

(2)调整NFS共享配置,允许两台web服务器所在网段进行共享

3.web服务器1

(1)绑定VIP并开通到达VIP的路由

(2)屏蔽ARP响应

(3)也可以临时设置

(4)进行NFS共享文件夹挂载,挂载到httpd的页面默认目录

4.web服务器2

(1)绑定VIP并开通到达VIP的路由

(2)屏蔽ARP响应

(3)同上,也可以临时设置

(4)进行NFS共享文件夹挂载,挂载到httpd的页面默认目录

5.CIP上测试


 

 

一.LVS-DR工作模式原理和特点

1.工作模式

用户通过路由器等网络设备访问VIP向负载均衡调度器发出数据请求;VIP将其发送到内核空间中的PREROUTING链,此链判断目标IP是本机以后将包发给INPUT链;此链中的IPVS会将用户请求与自己定义好的集群服务进行对比,匹配成功将会改变数据包的目标mac地址为RS的mac地址,后发给POSTROUTING链;此链确认目标mac地址与RSmac地址匹配后将包发给RS组;RS组处理完直接将结果返还给用户。

badc3670ddef4578bbeacf724aeaa528.png

2.模式特点

(1)所有集群节点RS必须和director server位于同一局域网。

(2)所有客户端入站流量由director server首先接收,再判断是否转发给RS。

(3)集群节点RS最好带有外部IP,为便于将数据包直接返还用户,不使用固定机器作为默认网关。

(4)所有集群节点RS必须以环回(lo)网卡设备上绑定VIP,便于验证。

(5)集群节点RS需要进行ARP抑制来把相应VIP的请求交给LVS director server。

(6)LVS-DR不需要开启调度转发器功能。

(7)LVS-DR可以承受比LVS-NAT更多的并发数据请求和服务器数量。

二.构建环境

1.五台关闭防火墙,关闭selinux,拥有固定IP,部署有http服务的虚拟机,LVS设备下载ipvsadm工具,NFS 设备需要下载rpcbind和nfs-utils

[root@localhost ~]# yum install -y ipvsadm.x86_64[root@localhost ~]# yum install -y rpcbind nfs-utils

2.实现功能

CIP用户通过网络向LVS集群发出数据请求,LVS经过算法将请求分配给web1或web2,这两台web服务器将从nfs共享到的内容返回给用户

0c34728aeab746c88bb1f965c391fb3a.png

3.ipvsadm命令部分参数介绍

-A添加一条新的虚拟服务
-a在一个虚拟服务中添加一个新的真实服务器
-E编辑虚拟服务
-e编辑某个真实服务器
-D删除虚拟服务
-d删除某个真实服务器
-C清除所有的虚拟服务规则
-c显示IPVS中目前存在的连接,分析调度情况
-R恢复虚拟服务规则
-L显示内核中的虚拟服务规则
-n以数字形式显示IP端口
-Z将转达消息的统计清零
-p配置持久化时间
-t,-u配置tcp或udp协议的虚拟服务
-g,-m,i设置LVS模块为DR,NAT,TUN
-w配置真实服务器的权重
-s配置负载均衡算法,建议使用rr,wrr,lc,wlc等几个常用的算法
--stats

显示历史转发消息累计统计

Conns表示已经转发过的连接数
InPkts表示入包个数
OutPkts表示出包个数
nBytes表示入流量(字节)
OutBytes表示出流量(字节)
--rate

显示转发速率信息,瞬时值

CPS表示每秒连接数
InPPS表示每秒的入包个数
OutPPS表示每秒的出包个数
InBPS表示每秒入流量(字节)
OutBPS表示每秒入流量(字节)

三.配置和测试

1.LVS设备

(1)配置VIP,并清除原有的虚拟服务规则

[root@localhost ~]# ifconfig ens33:188 192.168.2.188 netmask 255.255.255.0 up[root@localhost ~]# ipvsadm -C

(2)为两台web服务器配置算法和服务规则,并启用保存ipvsadm配置

[root@localhost ~]# ipvsadm -A -t 192.168.2.188:80 -s rr  #指定使用tcp协议和rr调度算法[root@localhost ~]# ipvsadm -a -t 192.168.2.188:80 -r 192.168.2.191 -g  #添加真实服务器,指定tcp协议和DR模式[root@localhost ~]# ipvsadm -a -t 192.168.2.188:80 -r 192.168.2.192 -g[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.2.188:80 rr-> 192.168.2.191:80             Route   1      0          0         -> 192.168.2.192:80             Route   1      0          0[root@localhost ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  localhost.localdomain:http rr-> 192.168.2.191:http           Route   1      0          0         -> 192.168.2.192:http           Route   1      0          0     
[root@localhost ~]# ipvsadm --save > /etc/sysconfig/ipvsadm      

(3)调整proc响应参数,关闭ICMP重定向并重新读取

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost ~]# sysctl -p

2.NFS服务器

(1)配置共享目录并写入html内容

[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# mkdir /share/{191,192} -pv
mkdir: created directory ‘/share’
mkdir: created directory ‘/share/191’
mkdir: created directory ‘/share/192’
[root@localhost ~]# cat /share/191/index.html 
share191
[root@localhost ~]# cat /share/192/index.html 
share192
[root@localhost ~]# chmod -R 777 /share/

(2)调整NFS共享配置,允许两台web服务器所在网段进行共享

[root@localhost ~]# vim /etc/exports
/share/191 192.168.2.0/24(rw,sync)
/share/192 192.168.2.0/24(rw,sync)
[root@localhost ~]# exportfs -rv
exporting 192.168.2.0/24:/share/192
exporting 192.168.2.0/24:/share/191

3.web服务器1

(1)绑定VIP并开通到达VIP的路由

[root@localhost ~]# ifconfig lo:188 192.168.2.188 netmask 255.255.255.255 up
[root@localhost ~]# route add -host 192.168.2.188 dev lo:188

(2)屏蔽ARP响应

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@localhost ~]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

(3)也可以临时设置

[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@localhost ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@localhost ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
[root@localhost ~]# sysctl -parp_ignore——定义对目标地址为本地IP的ARP询问不同的应答模式
0 (默认值):回应任何网络接口上对任何本地IP地址的arp查询请求。
1 只回答目标IP地址是来访网络接口本地地址的ARP查询请求。
2 只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内。
3 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应。
4-7 保留未使用。
8 不回应所有(本地地址)的arp查询arp_announce——对网络接口上,本地IP地址发出的ARP回应,做出相应级别的限制
0 (默认)在任意网络接口(eth0,eth1,lo)上的任何本地地址
1 尽量避免不在该网络接口子网段的本地地址做出arp回应,当发起ARP请求的源IP地址是被设置应该经路由到达此网络接口的时候很有用,此时会检查来访IP是否为所有接口上的子网段内ip之一。如果该来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理。
2 对查询目标是要最适当的本地地址,在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通 信的本地地址。首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址。如果没有合适的地址被发现,将选择当前的网络发送接口或其他的有可能接受到该ARP回应的网络接口来进行发送。限制了使用本地的vip地址作为优先的网络接口。

(4)进行NFS共享文件夹挂载,挂载到httpd的页面默认目录

[root@localhost ~]# mount 192.168.2.193:/share/191 /var/www/html/
[root@localhost ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
devtmpfs                  5.1G     0  5.1G   0% /dev
tmpfs                     5.1G     0  5.1G   0% /dev/shm
tmpfs                     5.1G   12M  5.1G   1% /run
tmpfs                     5.1G     0  5.1G   0% /sys/fs/cgroup
/dev/mapper/centos-root    44G  4.9G   40G  11% /
/dev/sda1                1014M  151M  864M  15% /boot
/dev/sr0                  4.4G  4.4G     0 100% /cdrom
tmpfs                     1.1G     0  1.1G   0% /run/user/0
192.168.2.193:/share/191   44G  3.2G   41G   8% /var/www/html#开机自动挂载
[root@localhost ~]# vim /etc/fstab
192.168.2.193:/share/191 /var/www/html nfs defaults,_netdev 0 0

4.web服务器2

(1)绑定VIP并开通到达VIP的路由

[root@localhost ~]# ifconfig lo:188 192.168.2.188 netmask 255.255.255.255 up
[root@localhost ~]# route add -host 192.168.2.188 dev lo:188

(2)屏蔽ARP响应

[root@localhost ~]# vim /etc/sysctl.conf 
[root@localhost ~]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

(3)同上,也可以临时设置

(4)进行NFS共享文件夹挂载,挂载到httpd的页面默认目录

[root@localhost ~]# mount 192.168.2.193:/share/192 /var/www/html/
[root@localhost ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
devtmpfs                  5.1G     0  5.1G   0% /dev
tmpfs                     5.1G     0  5.1G   0% /dev/shm
tmpfs                     5.1G   12M  5.1G   1% /run
tmpfs                     5.1G     0  5.1G   0% /sys/fs/cgroup
/dev/mapper/centos-root    44G  3.2G   41G   8% /
/dev/sda1                1014M  151M  864M  15% /boot
/dev/sr0                  4.4G  4.4G     0 100% /cdrom
tmpfs                     1.1G     0  1.1G   0% /run/user/0
192.168.2.193:/share/192   44G  3.2G   41G   8% /var/www/html#开机自动挂载
[root@localhost ~]# vim /etc/fstab
192.168.2.193:/share/192 /var/www/html nfs defaults,_netdev 0 0

5.CIP上测试

[root@localhost ~]# for ((i=1;i<=10;i++));  
> do
> curl 192.168.2.188
> done
share191
share192
share191
share192
share191
share192
share191
share192
share191
share192
#我调度算法设置的是rr,均值轮询也就是服务器一次获得分配任务,交替返回结果,若是需要一些差别,可以设置为wrr权重轮询,那么在添加规则时就要使用-w去指定权重

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/96608.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图数据库_Neo4j中文版_Centos7.9安装Neo4j社区版3.5.9_基于jdk1.8---Neo4j图数据库工作笔记0012

由于我们在国内使用啊,具体还是要用中文版滴,找了好久这个neo4j,原来还是有中文版的, https://we-yun.com/doc/neo4j-chs/ 中文版下载地址在这里: 所有版本都在这里了,需要哪个自己去下载就可以了,要注意下载以后,参考: https://we-yun.com/blog/prod-56.html 在这个位置下载…

YOLOv8改进后效果

数据集 自建铁路障碍数据集-包含路障&#xff0c;人等少数标签。其中百分之八十作为训练集&#xff0c;百分之二十作为测试集 第一次部署 版本&#xff1a;YOLOv5 训练50epoch后精度可达0.94 mAP可达0.95.此时未包含任何改进操作 第二次部署 版本&#xff1a;YOLOv8改进版本 首…

linux——mysql的高可用MHA

目录 一、概述 一、概念 二、组成 三、特点 四、工作原理 二、案例 三、构建MHA 一、基础环境 二、ssh免密登录 三、主从复制 master slave1 四、MHA安装 一、环境 二、安装node 三、安装manager 一、概述 一、概念 MHA&#xff08;MasterHigh Availability&a…

最强自动化测试框架Playwright(37)-网络

介绍 Playwright 提供 API 来监控和修改浏览器网络流量&#xff0c;包括 HTTP 和 HTTPS。页面执行的任何请求&#xff0c;包括 XHR 和获取请求&#xff0c;都可以被跟踪、修改和处理。 模拟接口 查看我们的 API 模拟指南&#xff0c;了解有关如何 模拟 API 请求&#xff0c…

Sentinel规则持久化

首先 Sentinel 控制台通过 API 将规则推送至客户端并更新到内存中&#xff0c;接着注册的写数据源会将新的规则保存到本地的文件中。 示例代码&#xff1a; 1.编写处理类 //规则持久化 public class FilePersistence implements InitFunc {Value("spring.application:n…

java+springboot+mysql银行管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的银行管理系统&#xff0c;系统包含超级管理员、管理员、客户角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;客户管理&#xff1b;卡号管理&#xff08;存款、取款、转账&#xff09…

GRPC 学习记录

GRPC 安装 安装 grpcio、grpcio-tools、protobuf、 pip install grpcio -i https://pypi.tuna.tsinghua.edu.cn/simple pip install grpcio-tools -i https://pypi.tuna.tsinghua.edu.cn/simple pip install protobuf -i https://pypi.tuna.tsinghua.edu.cn/simple常用类型 p…

pytorch3d成功安装

一、pytorch3d是什么&#xff1f; PyTorch3D的目标是帮助加速深度学习和3D交叉点的研究。3D数据比2D图像更复杂&#xff0c;在从事Mesh R-CNN和C3DPO等项目时&#xff0c;我们遇到了一些挑战&#xff0c;包括3D数据表示、批处理和速度。我们开发了许多有用的算子和抽象&#xf…

tauri-react:快速开发跨平台软件的架子,支持自定义头部UI拖拽移动和窗口阴影效果

tauri-react 一个使用 taurireacttsantd 开发跨平台软件的模板&#xff0c;支持窗口头部自定义和窗口阴影&#xff0c;不用再自己做适配了&#xff0c;拿来即用&#xff0c;非常 nice。而且已经封装好了 tauri 的 http 请求工具&#xff0c;省去很多弯路。 开原地址&#xff…

如何基于 ACK Serverless 快速部署 AI 推理服务

作者&#xff1a;元毅 随着 AI 浪潮的到来&#xff0c;各种 AI 应用层出不穷&#xff0c;众所周知 AI 应用对 GPU 资源强烈依赖&#xff0c;但 GPU 很昂贵&#xff0c;如何降低 GPU 资源使用成本成为用户首要问题。而 AI 与 Serverless 技术结合&#xff0c;完全可以达到按需使…

Electron入门,项目启动。

electron 简单介绍&#xff1a; 实现&#xff1a;HTML/CSS/JS桌面程序&#xff0c;搭建跨平台桌面应用。 electron 官方文档&#xff1a; [https://electronjs.org/docs] 本文是基于以下2篇文章且自行实践过的&#xff0c;可行性真实有效。 文章1&#xff1a; https://www.cnbl…

高效mac常用快捷键整理

高效mac常用快捷键整理 macOS全局、剪切、拷贝、粘贴finder 和 系统快捷键文稿 浏览器chrome标签页和窗口快捷键功能快捷键网页快捷键 Idea & Pycharm必记编辑查询&替换导航重构编译、运行、调试 iTerm标签分屏编辑 文本编辑 sublime text导航&#xff1a;打开&关闭…

springcloud3 hystrix实现服务监控显示3(了解)

一 hystrix的服务监控调用 1.1 hystrix的服务监控调用 hystrix提供了准实时的监控调用&#xff08;hystrix dashbord&#xff09;&#xff0c;Hystrix 会持续的记录所有通过hystrix发送的请求的执行信息&#xff0c;并以统计报表和图形的形式展示给用户&#xff0c;包括每秒执…

安装和配置 Ansible

安装和配置 Ansible 按照下方所述&#xff0c;在控制节点 control.area12.example.com 上安装和配置 Ansible&#xff1a; 安装所需的软件包 创建名为 /home/curtis/ansible/inventory 的静态清单文件&#xff0c;以满足以下要求&#xff1a; node1 是 dev 主机组的成员 node2 …

【面试题】2、Docker和Spring相关

1、Docker是什么&#xff1f; &#xff08;1&#xff09;Docker是一个快速交互、运行应用的技术&#xff0c;可以将程序及其依赖、运行环境一起打包为一个镜像&#xff0c;该镜像可以迁移到任意的Linux操作系统 &#xff08;2&#xff09;运行时利用沙箱机制形成隔离容器&…

docker打包运行中的容器,生成镜像文件保存到本地

因为想着方便部署&#xff0c;将所有没问题的项目容器打包成镜像&#xff0c;走到哪儿都离线安装自动部署。 第一步先把运行中的容器打包成镜像 docker commit 运行中容器id 像打包成的镜像名称第二步将大象装进冰箱&#xff0c;不好意思说错了&#xff0c;把镜像保存到本地 …

vue3 + antv/x6 实现拖拽侧边栏节点到画布

前篇&#xff1a;vue3ts使用antv/x6 自定义节点 前篇&#xff1a;vue3antv x6自定义节点样式 1、创建侧边栏 用antd的menu来做侧边栏 npm i --save ant-design-vue4.x//入口文件main.js内 import Antd from ant-design-vue; import App from ./App; import ant-design-vue/…

Java SpringBoot Vue ERP系统

系统介绍 该ERP系统基于SpringBoot框架和SaaS模式&#xff0c;支持多租户&#xff0c;专注进销存财务生产功能。主要模块有零售管理、采购管理、销售管理、仓库管理、财务管理、报表查询、系统管理等。支持预付款、收入支出、仓库调拨、组装拆卸、订单等特色功能。拥有商品库存…

用户订阅付费如何拆解分析?看这篇就够了

会员制的订阅付费在影音娱乐行业中已相当普及&#xff0c;近几年&#xff0c;不少游戏厂商也开始尝试订阅收费模式。在分析具体的用户订阅偏好以及订阅付费模式带来的增长效果时&#xff0c;我们常常会有这些疑问&#xff1a; 如何从用户的整体付费行为中具体拆解订阅付费事件…

Unity用NPOI创建Exect表,保存数据,和修改删除数据。以及打包后的坑——无法打开新创建的Exect表

先说坑花了一下午才找到解决方法解决&#xff0c; 在Unity编辑模式下点击物体创建对应的表&#xff0c;获取物体名字与在InputText填写的注释数据。然后保存。创建Exect表可以打开&#xff0c;打包PC后&#xff0c;点击物体创建的表&#xff0c;打不开文件破损 解决方法&#…