- LVS-NAT案例
- LVS-DR案例
1.LVS-NAT案例
1.1 环境
拓扑图:
地址分配:
client: VMNET0 192.168.88.128
LVS: VMNET0 192.168.88.129
VMNET2 192.168.176.128
web1: VMNET2 192.168.176.129 提前安装httpd
web2: VMNET2 192.168.176.130
1.2 步骤
查看路由信息:ip route
web1配置网站和路由: 注意网络连通性问题
#yum install -y httpd
#systemctl start httpd
#systemctl enable httpd
#echo web1 > /var/www/html/index.html
# route add -net 192.168.88.0/24 gw 192.168.176.128
配置真实服务器的网络出口。
-net 外部网络 gw 网关,网络的唯一出口web2配置网站和路由:
#yum install -y httpd
#systemctl start httpd
#systemctl enable httpd
#echo web2 > /var/www/html/index.html
# route add -net 192.168.88.0/24 gw 192.168.176.128LVS-NAT配置路由功能和负载策略:
# echo 1 > /proc/sys/net/ipv4/ip_forward 启动路由功能
# yum install -y ipvsadm 正在安装LVS
# ipvsadm -A -t 192.168.88.129:80 -s rr
-A 添加一个VIP -t TCP协议 -s schedule调度 rr 轮训策略类型#ipvsadm -a -t 192.168.88.129:80 -r 192.168.176.129:80 -m
-a 添加一个真实服务 -r 真实服务器IP 地址 -m nat 模式工作
#ipvsadm -a -t 192.168.88.129:80 -r 192.168.176.130:80 -mclient测试:
elinks --dump http://192.168.88.129 每次访问的结果都不一样
1.LVS的健康状态检查 :
在LVS中,目录服务器不负责检查真实服务器的健康状况,这就使得当有的真实服务器出故障了,目录服务器还会将服务请求派发至此服务器,这种情况对用户、企业都是很不爽的,哪个用户倒霉说不定就遇到类似了,为了让目录更人性化、可靠还要给目录服务器提供健康检查功能;如何实现?目录服务器没有自带检查工具,只有手动编写脚本2.LVS持久连接 :
定义:
持久连接是指无论LVS使用什么算法,LVS持久都能实现在一定时间内,将来自同一个客户端请求派发至此前选定的RS
原理:
无论使用LVS任何调度算法,LVS持久连接都能实现在一定时间内,将来自同一个客户端请求派发至此前选定的服务器;当一个新的客户端请求连接时,LVS就会在内存的缓冲区内记录客户端的IP以及所选的服务器,在一定时间内用户再次访问时,LVS会通过内存缓冲区来查找是否有此用户记录,如果有将直接连接到已选定的服务器上,否则记录IP及连接的服务器;这个内存缓冲区称之为持久连接模板,它存储了每一个客户端,及分配给它的RS的映射关系。持久连接在一定环境下还是非常有用的,由于在SSL会话中,比如当用户和服务器好不容易建立了SSL会话,用户一不小心刷新了页面,director有给用户分发了一个新的服务器,用户还要从新建立SSL连接请求,这是很不爽的!这种连接方式称为持久端口连接(PPC),将来自于同一个客户端对同一个集群服务的请求,始终定向至此前选定的RS。
-p timeout
2.LVS-DR实战案例
2.1 DR
direct routing 直连路由
2.2 环境
192.168.0.106 client 真机
192.168.0.124 dr1 负载均衡器 192.168.26.144
虚拟IP地址:192.168.0.123 虚拟IP的设计,遵循本网段未使用的IP即可。
192.168.0.120 rs1 web1 192.168.26168
虚拟IP地址:192.168.0.123
192.168.0.121 rs2 web2 192.168.26.167
虚拟IP地址:192.168.0.123 192.168.26.170
2.3 步骤
LVS服务器:
1.LVS准备VIP和路由
--添加VIP:# ifconfig ens33:0 192.168.26.170 broadcast 192.168.26.255 netmask 255.255.255.0 up
# route add -host 192.168.26.170 dev ens33:0
当有主机预知通信时使用192.168.26.170 与之通信
VIP与RIP要配到同一个网卡上
--设置路由转发:
服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能
# vi /etc/sysctl.confnet.ipv4.ip_forward = 1 开启路由功能
net.ipv4.conf.all.send_redirects = 0 #禁止转发重定向报文
net.ipv4.conf.ens33.send_redirects = 0 禁止ens33转发重定向报文
net.ipv4.conf.default.send_redirects = 0 禁止转发默认重定向报文2.LVS设置负载均衡条目/规则
--设置IPVSADM:
# yum install ipvsadm -y
ipvsadm: internet protocol virtual server admin 互联网 协议 虚拟 服务器 管理器
ipvsadm -C 【 -C Clear the virtual server table.】
# ipvsadm -A -t 192.168.26.170:80 -s rr 添加VIP规则# ipvsadm -a -t 192.168.26.170:80 -r 192.168.26.168:80 -g
# ipvsadm -a -t 192.168.26.170:80 -r 192.168.26.167:80 -g
--参数说明:
-A 添加virtual server
-t 指定使用tcp协议
-s 指定调度策略/负载算法为rr
-a 添加realserver
-r 指定realserver是谁
-g LVS类型DR
LVS类型:
-g:Gateway,DR(默认使用的类型)
-i:ipip,TUN
-m:masquerade(地址伪装),NAT3.LVS让配置永久生效:
# ipvsadm-save > /etc/sysconfig/ipvsadm
# systemctl enable ipvsadmWEB集群:
1.两个web上部署web服务
安装web服务 #yum install nginx -y
修改主页内容 # vim /usr/share/nginx/html/index.html
启动服务:
#systemctl start nginx
#systemctl enable nginx2.给两个web服务器的lo网卡设置子网掩码为32位vip
rs1:
# ifconfig lo:0 192.168.0.123/32
rs2:
# ifconfig lo:0 192.168.0.123/323.给两个web服务器设置内核参数
--# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
忽略arp响应 ,不允许收
arp_ignore:定义对目标地址为本地IP的ARP询问不同的应答模式0
0 - (默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求
1 - 只回答目标IP地址是来访网络接口本地地址的ARP查询请求
2 -只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内
3 - 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应
4-7 - 保留未使用
8 -不回应所有(本地地址)的arp查询
--# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
为了让vip发包出去,但允许发
arp_announce:对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制: 确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口
0 - (默认) 在任意网络接口(eth0,eth1,lo)上的任何本地地址
1 -尽量避免不在该网络接口子网段的本地地址做出arp回应. 当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理.
2 - 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.
关于对arp_announce 理解的一点补充
2.4 客户端测试
图示:
ipvsadm状态测试:
[root@localhost ~]# ipvsadm -Lnc
2.5 命令解释
1. 管理虚拟服务
添加一个虚拟服务192.168.1.100:80,使用轮询算法
ipvsadm -A -t 192.168.1.100:80 -s rr
修改虚拟服务的算法为加权轮询
ipvsadm -E -t 192.168.1.100:80 -s wrr
删除虚拟服务
ipvsadm -D -t 192.168.1.100:802. 管理真实服务
添加一个真实服务器192.168.1.123,使用DR模式,权重2
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.123 -g -w 2
增加真实服务器的权重
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.123 -g -w 5
修改真实服务器的权重
ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.123 -g -w 2
删除真实服务器
ipvsadm -d -t 192.168.1.100:80 -r 192.168.1.1233. 查看统计
查看当前配置的虚拟服务和各个RS的权重
ipvsadm -Ln
查看当前ipvs模块中记录的连接(可用于观察转发情况)
ipvsadm -lnc
查看ipvs模块的转发情况统计
ipvsadm -Ln --stats --rate