###################这里采用LVS-DR 模式来做负载均衡############################
环境准备:三台虚拟机 node1,node2,node3, 并互做本地解析(/etc/hosts),修改主机名基本操作。
node1----------192.168.142.178 #做lvs的负载均衡器
node2----------192.168.142.179 #lvs代理的后端服务器
node3----------192.168.142.180 #lvs代理的后端服务器
#######在node1的操作#############################
yum install -y ipvsadm 安装lvs管理工具
service ipvsadm start #启动,若启动报错,可能是没有配置文件,我们可以手动创建
ipvsadm --save > /etc/sysconfig/ipvsadm #手动创建配置文件,再次执行上面的启动命令,若出错就不用这一步
ip addr add dev ens33 192.168.142.189/32 #设置VIP(虚拟ip),在工作中为公网ip
ipvsadm -C #清除内核虚拟服务器表中记录
ipvsadm -A -t 192.168.142.189:80 -s rr #给lvs添加vip记录
ipvsadm -a -t 192.168.142.189:80 -r 192.168.142.179 -g #添加vip转发的目的后端服务器ip,并指定默认工作模式直接路由
ipvsadm -a -t 192.168.142.189:80 -r 192.168.142.180 -g #这里只有两台后端服务器,实际有几台就添加几个记录
ipvsadm -S > /etc/sysconfig/ipvsadm #将添加的记录保存到配置文件,(service ipvsadm save这是版本7之前的保存方式,7之后不支持)两种方式看版本选择使用。
ipvsadm -ln #查看是否将记录添加成功(ipvsadm -ln --stats显示统计信息,–rate查看转发速率 )
为什么RS上lo配置的VIP掩码为32位:
这是由于lo设备的特殊性导致, 如果lo绑定VIP/24,则该设备会响应该网段所有IP(192.168.246.0-254)的请求,而不是只响应192.168.246.160这一个地址。,就算是不设置为32也是可以的,只不过会影响访问
######################所有后端服务器上的操作###########
ip addr add dev lo 192.168.142.189/32 #在后端的lo回环网卡上绑定vip
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore #忽略arp广播
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce #匹配精确ip地址回包
因为:realServer(后端)的vip有了,接着就是同一个网段中拥有两个vip, 客户端在网关发送arp广播需找vip时需要让realServer不接受响应.
解决:
echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore
arp_ignore 设置为1,意味着当别人的arp请求过来的时候,如果接收的设备没有这个ip,就不做出响应(这个ip在lo上,lo不是接收设备的进口)
echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce 使用最好的ip来回应,什么是最好的ip?同一个网段内子网掩码最长的
到这里就做好LVS-DR模式的负载均衡,要做测试可以在后端服务器上装nginx等来做访问测试,访问时访问node1上添加的VIP。http://192.168.142.189