首页 > 其他分享 >LVS负载均衡集群

LVS负载均衡集群

时间:2022-11-27 14:55:06浏览次数:36  
标签:负载 LVS IP ipvsadm 192.168 Server systemctl 集群 服务器

LVS-DR集群介绍

LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境中最常用的一 种工作模式。

1、LVS-DR 工作原理

LVS-DR 模式,Director Server 作为群集的访问入口,不作为网关使用,节点 Director Server 与 Real Server 需要在同一个网络中,返回给客户端的数据不需要经过 Director Server。为了响应对整个群集的访问,Director Server 与 Real Server 都需要配置 VIP 地址。

2、 数据包流向分析

为方便进行原理分析,将Client与群集机器放在同一网络中,数据包流经的路线为 1-2-3-4 四步

第一步:客户端发送请求到 Director Server (负载均衡器),请求的数据报文到达内核空间。

此时请求的数据报文
源 IP —— 客户端的 IP(CIP)
目标 IP —— VIP
源 MAC —— 客户端的 MAC
目的 MAC —— Director Server 的 MAC

第二步:内核空间判断数据包的目标 IP 是本机 VIP,此时 IPVS(IP 虚拟服务器)比对数据包请求的服务是否是集群服务,是集群服务就重新封装数据包。然后将数据包发送给根据 负载均衡算法选择的 Real Server。(Director Server 和 Real Server 在同一个网络中,数据通过二层数据链路层来传输。)

此时请求的数据报文
源 IP —— 客户端的 IP
目标 IP —— VIP
源 MAC —— Director Server 的 MAC
目的 MAC —— Real Server 的 MAC

第三步:到达 Real Server 的请求报文的 MAC 地址是自身的 MAC 地址,就接收此报文。数据包重新封装报文,将响应报文通过 lo 接口传送给物理网卡然后向外发出。

此时请求的数据报文
源 IP —— VIP
目标 IP —— 客户端的 IP(CIP)
源 MAC —— Real Server 的 MAC
目的 MAC —— 客户端的 MAC

第四步:通过交换机和路由器将响应报文传送到客户端。客户端收到回复报文,得到想要的服务,但是不会知道是哪台服务器处理的。

3、LVS-DR 模式的特点

Director Server 和 Real Server 必须在同一个物理网络中。

Real Server 可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP进行直接访问。

所有的请求报文经由 Director Server,但回复响应报文不能经过 Director Server。

Real Server 的网关不允许指向 Director Server IP,即不允许数据包经过 Director S erver。

Real Server 上的 lo 接口配置 VIP 的 IP 地址。

4、LVS-DR中的ARP问题

4.1 问题一

在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要配置相同的VIP地址,在局域网中具有相同的IP地址。势必会造成各服务器ARP通信的紊乱

当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播

只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播

解决方法:

节点服务器进行处理,使其不响应针对VIP的ARP请求

使用虚接口lo:0承载VIP地址

设置内核参数arp_ ignore=1: 系统只响应目的IP为本地IP的ARP请求

4.2问题二

问题说明:RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址,发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址,路由器收到ARP请求后,将更新ARP表项,原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址。

路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效

解决方法:

节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址

NAT模式 LVS负载均衡集群部署

 NAT模式 LVS负载均衡集群部署操作步骤(理论) 实验环境准备: 负载调度器:内网关 ens33:192.168.153.40,外网关 ens37:12.0.0.1 Web节点服务器1:192.168.153.60 Web节点服务器2:192.168.153.50 NFS服务器:192.168.153.70 客户端:12.0.0.12   1.部署共享存储(NFS服务器:192.168.153.70)   systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0   yum install nfs-utils rpcbind -y systemctl start rpcbind.service systemctl start nfs.service   systemctl enable rpcbind.service systemctl enable nfs.service   mkdir /opt/accp/ /opt/benet/ chmod 777 /opt/kgc /opt/benet echo 'this is accp web!' > /opt/kgc/index.html echo 'this is benet web!' > /opt/benet/index.html   vim /etc/exports   /opt/accp 192.168.153.0/24(rw,sync) /opt/benet 192.168.153.0/24(rw,sync)   --发布共享--- exportfs -rv   2.配置节点服务器(192.168.80.10、192.168.80.20) ens33网关需要设置为网关服务器   systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0   yum install httpd -y systemctl start httpd.service systemctl enable httpd.service   yum install nfs-utils rpcbind -y showmount -e 192.168.80.30     systemctl start rpcbind.service systemctl start nfs.service systemctl enable rpcbind.service systemctl enable nfs.service   --192.168.80.10--- mount.nfs 192.168.80.30:/opt/kgc /var/www/html   vim /etc/fstab 192.168.80.30:/opt/kgc /myshare nfs defaults,_netdev 0 0     另一台节点服务器挂载如下: --192.168.80.20--- mount.nfs 192.168.153.70:/opt/benet /var/www/html   vim /etc/fstab 192.168.80.30:/opt/benet /myshare nfs defaults,_netdev 0 0   3.配置负载调度器(内网关 ens33:192.168.80.1,外网关 ens36:12.0.0.1)   systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0   (1)配置SNAT转发规则   vim /etc/sysctl.conf net.ipv4.ip_forward = 1 #添加ip路由转发   或 echo '1' > /proc/sys/net/ipv4/ip_forward sysctl -p   iptables -t nat -F iptables -F iptables -t nat -A POSTROUTING -s 192.168.153.0/24 -o ens36 -j SNAT --to-source 12.0.0.1   (2)加载LVS内核模块   modprobe ip_vs #加载 ip_vs模块 cat /proc/net/ip_vs #查看 ip_vs版本信息   ##加载全部模块 for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done   (3)安装ipvsadm 管理工具   yum -y install ipvsadm   --启动服务前须保存负载分配策略--- ipvsadm-save > /etc/sysconfig/ipvsadm 或者 ipvsadm --save > /etc/sysconfig/ipvsadm   systemctl start ipvsadm.service   (4)配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)   ipvsadm -C #清除原有策略 ipvsadm -A -t 12.0.0.1:80 -s rr ipvsadm -a -t 12.0.0.1:80 -r 192.168.153.50:80 -m [-w 1] #添加真实ip ipvsadm -a -t 12.0.0.1:80 -r 192.168.153.60:80 -m [-w 1] #添加真实ip ipvsadm #启用策略   ipvsadm -ln #查看节点状态,Masq代表 NAT模式 ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略   ipvsadm -d -t 12.0.0.1:80 -r 192.168.80.10:80 -m [-w 1] #删除群集中某一节点服务器 ipvsadm -D -t 12.0.0.1:80 #删除整个虚拟服务器 systemctl stop ipvsadm #停止服务(清除策略) systemctl start ipvsadm #启动服务(重建规则) ipvsadm-restore < /etc/sysconfig/ipvsadm #恢复LVS 策略   4.测试效果 网络设置里面网关需要设置为网关服务器 在一台IP为12.0.0.12的客户机使用浏览器访问 http://12.0.0.1/ ,不断刷新浏览器测试负载均衡效果,刷新间隔需长点。 2.2 NAT模式 LVS负载均衡集群部署实验具体步骤(实操) 第一步:环境搭建 1)网关服务器网卡配置(在虚拟机设置里面添加新网卡),内外网网关ip如下:

 

2)web节点服务器1的IP和网关如下: 3)web节点服务器2的IP和网关如下: 4)客户端IP和网关设置如下: 5)关闭所有设备的防火墙和SElinux 第二步:部署共享服务器(NFS服务器:192.168.153.70) 1)安装相关软件并设置开机自启 2)创建accp和benet目录,分别创建index.html并写入内容 3)添加要发布的目录 4)发布共享 第三步:配置节点服务器(192.168.153.50、192.168.153.60) 1)节点服务器1和2安装httpd服务并开启   2)节点服务器1和2安装nfs-utils和rpcbind程序 3)节点服务器1扫描并挂载共享目录 4)节点服务器2扫描并挂载共享目录 第四步:配置负载调度器(内网关 ens33:192.168.153.40,外网关 ens36:12.0.0.1) 1)配置SNAT转发规则   2)情况iptables规则并添加新规则 3)加载LVS内核模块并查看 4)安装ipvsadm管理工具 5)保存负载分配策略并启动服务 6)配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置) 7)查看节点策略并保存 第五步:浏览器中进行测试(不断刷新浏览器测试负载均衡效果,刷新间隔需长点)

 

标签:负载,LVS,IP,ipvsadm,192.168,Server,systemctl,集群,服务器
From: https://www.cnblogs.com/lnj0/p/16929683.html

相关文章