
使用ipvsadm模块
常用ipvsadm命令语法格式
案例:
实验:
步骤一:使用命令增、删、改LVS集群规则
1)创建LVS虚拟集群服务器(算法为加权轮询:wrr)
1. [root@proxy ~]# yum -y install ipvsadm
2. [root@proxy ~]# ipvsadm -A -t 192.168.4.5:80 -s wrr
3. [root@proxy ~]# ipvsadm -Ln
2)为集群添加若干real server
1. [root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100
2. [root@proxy ~]# ipvsadm -Ln
8. [root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200 -m -w 2
9. [root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.201 -m -w 3
10. [root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.202 -m -w 4
3)修改集群服务器设置(修改调度器算法,将加权轮询修改为轮询)
1. [root@proxy ~]# ipvsadm -E -t 192.168.4.5:80 -s rr
2. [root@proxy ~]# ipvsadm -Ln
4)修改real server(使用-g选项,将模式改为DR模式)
1. [root@proxy ~]# ipvsadm -e -t 192.168.4.5:80 -r 192.168.2.202 -g
5)永久保存所有规则(非必须的操作)
1. [root@proxy ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
注意:永久规则需要确保ipvsadm服务为开机启动服务才可以。
(systemctl enable ipvsadm)。
6)清空所有规则
1. [root@proxy ~]# ipvsadm -C
实验:部署LVS-NAT集群
使用LVS实现NAT模式的集群调度服务器,为用户提供Web服务:
• 集群对外公网IP地址为192.168.4.5
• 调度器内网IP地址为192.168.2.5
• 真实Web服务器地址分别为192.168.2.100、192.168.2.200
• 使用加权轮询调度算法,真实服务器权重任意
实验拓扑结构主机配置细节
步骤一:配置基础环境
1)设置Web服务器
1. [root@web1 ~]# yum -y install httpd #安装软件
2. [root@web1 ~]# echo "192.168.2.100" > /var/www/html/index.html #创建网页文件
3. [root@web1 ~]# firewall-cmd --set-default-zone=trusted #设置防火墙
4. [root@web1 ~]# setenforce 0
5. [root@web1 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
6.
7. [root@web2 ~]# yum -y install httpd #安装软件
8. [root@web2 ~]# echo "192.168.2.200" > /var/www/html/index.html #创建网页文件
9. [root@web2 ~]# firewall-cmd --set-default-zone=trusted #设置防火墙
10. [root@web2 ~]# setenforce 0
11. [root@web2 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
2)启动Web服务器软件
1. [root@web1 ~]# systemctl restart httpd
2. [root@web2 ~]# systemctl restart httpd
验证:
1. [root@proxy ~]# curl http://192.168.2.100
2. [root@proxy ~]# curl http://192.168.2.200
3)配置网关,将web1和web2的网关设置为192.168.2.5(不能照抄网卡名称)
如果有4网段的IP,则临时将该网卡关闭nmcli con down 网卡名称
1. [root@web1 ~]# nmcli connection modify ens33 ipv4.method manual ipv4.gateway 192.168.2.5
3. #备注:网卡名称不能照抄,需要自己查看下2.100的网卡名称
4. [root@web1 ~]# nmcli connection up ens33
5. [root@web1 ~]# ip route show #查看默认网关
6. default via 192.168.2.5 dev ens33 #提示:这里default后面的IP就是默认网关
9. [root@web2 ~]# nmcli connection modify ens33 ipv4.method manual ipv4.gateway 192.168.2.5
11. #备注:网卡名称不能照抄,需要自己查看下2.200的网卡名称
12. [root@web2 ~]# nmcli connection up ens33
13. [root@web2 ~]# ip route show #查看默认网关,default后面的IP就是默认网关

LVS采用的是路由器的NAT通讯原理!通讯流程如下:
1.客户端发送请求数据包(src:4.10,dst:4.5)
2.数据包被发送给LVS调度器,调度器做NAT地址转换(外网转内网,内网转外网)
a)数据包被修改为src:4.10,dst:2.100(dst也有可能被修改为2.200,随机的)
b)LVS调度器把数据包转发给后端真正的web服务器(2.100)
3.web1收到数据包开始回应数据(rsc:2.100,dst:4.10)
备注:谁访问就给谁回复数据,因为src是4.10,所以应该给4.10回应数据!
但是,自己是2.100,对方是4.10,跨网段默认无法通讯,如何解决???
Web1和web2都需要设置默认网关(也就是192.168.2.5)
4)web1想发送数据给4.10但是又无法与其通讯,所以数据包被交给默认网关
5)LVS调度器(软路由)收到后端web发送过来的数据后,再次做NAT地址转换
a)数据包被修改为src:4.5,dst:4.10
b)LVS调度器把数据包转发给客户端主机
6)客户端接收网页数据内容
注意:客户端访问的是4.5,最后是4.5给客户端回复的网页数据!!!!
步骤二:部署LVS-NAT模式调度器
1)确认调度器的路由转发功能(如果已经开启,可以忽略)
1. [root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward #开启路由转发,临时有效
2. [root@proxy ~]# cat /proc/sys/net/ipv4/ip_forward #查看效果
4. [root@proxy ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
5. #修改配置文件,设置永久规则,英语词汇:forward(转寄,转发,发送,向前)
2)创建集群服务器
1. [root@proxy ~]# yum -y install ipvsadm
2. [root@proxy ~]# ipvsadm -A -t 192.168.4.5:80 -s wrr
3. # -A(add)是创建添加虚拟服务器集群
4. # -t(tcp)后面指定集群VIP的地址和端口,协议是tcp协议
5. # -s后面指定调度算法,如rr(轮询)、wrr(加权轮询)、lc(最少连接)、wlc(加权最少连接)等等
3)添加真实服务器
1. [root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100 -w 1 -m
2. [root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200 -w 1 -m
3. #-a(add)往虚拟服务器集群中添加后端真实服务器IP,指定往-t 192.168.4.5:80这个集群中添加
4. #-r(real)后面跟后端真实服务器的IP和端口,这里不写端口默认是80端口
5. #-w(weight)指定服务器的权重,权重越大被访问的次数越多,英语词汇:weight(重量,分量)
6. #-m指定集群工作模式为NAT模式,如果是-g则代表使用DR模式,-i代表TUN模式
4)查看规则列表(L是list查看,n是number数字格式显示)
1. [root@proxy ~]# ipvsadm -Ln
5)设置防火墙,SELinux
1. [root@proxy ~]# firewall-cmd --set-default-zone=trusted
2. [root@proxy ~]# setenforce 0
3. [root@proxy ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
步骤三:客户端测试
客户端client主机使用curl命令反复连接http://192.168.4.5,查看访问的页面是否会轮询到不同的后端真实服务器。
版权声明:本文为qq_43404505原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。