今天来说LVS-DR模式集群实现负载均衡的搭建方法html
环境node
主机名 | IP | 系统 | 角色 | |
dir | DIP:192.168.199.9 | VIP:192.168.199.8 | rhel7.4 | 集群服务器 |
node1 | RIP:192.168.199.67 | VIP:192.168.199.8 | rhel6.5 | RS/web服务器 |
node2 | RIP:192.168.199.68 | VIP:192.168.199.8 | rhel6.5 | RS/web服务器 |
分发器配置:web
一、安装lvs核心软件包:vim
[root@dir ~]# yum install ipvsadm -y后端
二、在DR设置两个IP地址:DIP要配置在接口上,VIP要配置在网卡接口别名上tomcat
a) DIP: 192.168.199.9 ,设置静态IDbash
b) VIP:192.168.199.8服务器
[root@dir ~]# cd /etc/sysconfig/network-scripts/
[root@dir network-scripts]# cp ifcfg-ens33 ifcfg-ens33:1网络
[root@dir network-scripts]# vim ifcfg-ens33:1负载均衡
三、写脚本管理(开启路由转发,添加虚拟服务,添加虚拟服务后端的real server)
[root@dir ~]# vim lvs_nat.sh
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.199.0/24 -j MASQUERADE
IPVSADM='/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.199.8:80 -s rr
$IPVSADM -a -t 192.168.199.8:80 -r 192.168.199.67:80 -g
$IPVSADM -a -t 192.168.199.8:80 -r 192.168.199.68:80 -g
[root@dir ~]# ./lvs_nat.sh
查看规则:
[root@node1 ~]# 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.199.8:80 rr
-> 192.168.199.67:80 Route 1 0 0
-> 192.168.199.68:80 Route 1 0 0
四、添加路由规则:
[root@dir ~]#route add -host 192.168.199.8 dev ens33:1
RS上配置(两台都得配置)。
一、在多台RS( apeche或者tomcat )上面的配置:RIP要配置在接口上,VIP要配置在lo的别名上,定义内核参数,禁止响应对VIP的ARP广播请求(先配置,再绑定VIP)
两台RS的RIP设置:静态设置192.168.199.67 192.168.199.68
二、关闭ARP
临时关闭:
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
永久关闭:
[root@node1 ~]# vim /etc/sysctl.conf (配置文件后面添加)
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
三、在两台机器(RS)上,设置网卡的别名192.168.199.8,此时绑定的网络接口不进行对外通讯,因此VIP绑定在lo的别名上
ifconfig lo:1 192.168.199.8 netmask 255.255.255.255
四、在两台机器(RS)上,添加一个路由:route add -host 192.168.199.8 dev lo:1 确保若是请求的目标IP是$VIP,那么让出去的数据包的源地址也显示为$VIP
五、在rs1和rs2上安装Apache服务,而后下一个测试页面
rs1:echo 'this is 192.168.199.67' > /var/www/html/index.html
rs2: echo 'this is 192.168.199.68' > /var/www/html/index.html
测试:找一台客户机访问VIP,查看结果: