LVS调度之搭建NAT模型实现
两大部分,一环境,二LVS规则
一、环境
1、两台服务器上安装httpd 服务
yum install httpd -y
2、开启服务,并设置为开机自启
systemctl start httpd
systemctl enable httpd
3、新建页面
1)、在RS1 服务器上新建页面RS1
echo 192.168.11.4 RS1 > /var/www/html/index.html
2)、在RS2 服务器上新建页面RS2
echo 192.168.11.5 RS2 > /var/www/html/index.html
正常是两台页面应该是一样的,我这里为了区分具体调度到哪台机器上,所以显示不一样的。
4、防火墙设置(下面任选一种,不设置无法访问,)(所有机器都需要设置,不然会不通的)
1)、关闭防火墙
systemctl stop firewalld
2)、设置防火墙规则临时允许80端口
firewall-cmd --zone=public --add-port=80/tcp
3)、设置永久允许防火墙80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
4)、设置临时允许对应的服务
firewall-cmd --add-service=http
5)、设置永久允许对应的服务
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
临时生效,重启就没了,设置服务允许,对应的端口也会允许(此处针对centos7及以上)
5、在192.168.11.3上开启路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
6、路由生效
sysctl -p
返回如下,则表示生效成功
net.ipv4.ip_forward = 1
二、LVS规则(在LVS服务器上)
1、安装ipvsadmin 包
yum install ipvsadm -y
2、列出规则表
ipvsadm -L
3、增加集群
ipvsadm -A -t 172.16.8.35:80 -s rr
(-A 增加)、(-t,tcp协议)、(172.16.8.35:80,LVS服务器外网IP地址,80web服务的端口号)、(-s rr,指定调度算法rr (轮循),不指定默认,默认wLc)
4、查看
1)、通过ipvsadm -L 可以列出:
ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP lvs:http rr
2)、ipvsadm -Ln ,数字方式查看,和上面显示http不同直接显示IP地址
ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.8.35:80 rr
5、增加集群上的RS
ipvsadm -a -t 172.16.8.35:80 -r 192.168.11.4 -m
ipvsadm -a -t 172.16.8.35:80 -r 192.168.11.5 -m
(-a 增加rs)、(-t 集群服务,指明集群服务)、(-r rs 地址)、(-m 指定NAT模型,不加默认DR模型)
6、查看集群状态
ipvsadm -Ln --stats
7、查看速率(速度比率)
ipvsadm -Ln --rate
8、循环没隔0.5 测试访问,是否是轮循
while true; do curl 172.16.8.35 ;sleep 0.5 ;done
9、ipvs规则
cat /proc/net/ip_vs
10、ipvs连接
cat /proc/net/ip_vs_conn
NAT模型源地址不变,所以后端RS 服务器可以查看到是谁在访问我
三、修改权重,前面是都是1,没有权重(wrr加权重轮流循环)
1、修改集群里调度算法为wrr(wrr=加权轮循)
ipvsadm -E -t 172.16.8.35:80 -s wrr
2、修改权重3:1
ipvsadm -e -t 172.16.8.35:80 -r 192.168.11.4 -m -w 6
pvsadm -e -t 172.16.8.35:80 -r 192.168.11.5 -m -w 2
-E 修改集群,-e 修改rs ,-m NAT 模型 -w 轮循比重
访问就是3比1了,192.168.11.4这台机器三次,192.168.1.5这台机器一次
四、后端服务非标端口
1、将192.168.11.4的httpd服务的端口改成8080
sed -i 's@^Listen 80@ Listen 8080@' /etc/httpd/conf/httpd.conf
2、重启httpd服务
systemctl restart httpd
这个时候,就只能调度到192.168.11.5这台服务器上去了,从这里就可以看LVS的巨大缺憾,对后台服务器没有健康性检查
3、在LVS服务器上修改权重
1、)直接改是改不了的,只能删除
ipvsadm -d -t 172.16.8.35:80 -r 192.168.11.4:80
2、) 重新添加,这里将两个权重修改为同样的,可以不修改为一样的(记得改防火墙规则哦)
ipvsadm -a -t 172.16.8.35:80 -r 192.168.11.4:8080 -m -w 2
五、根据源地址哈希调度(sh算法)
1、将集群的调度算法改成sh
ipvsadm -E -t 172.16.8.35:80 -s sh
源地址不变,就会一直往同一台机器上调度
六、根据目标来调度,目标相同往同一个服务器上调度(dh算法)
1、通过for循环在两台机器上各自生成10个网页
for i in {1..10};do echo Page $i on RS1 > test$i.html;done
for i in {1..10};do echo Page $i on RS2 > test$i.html;done
2、修改集群的调度算法为dh
ipvsadm -E -t 172.16.8.35:80 -s dh
dh算法识别不了具体的链接,一般配合后端的缓存服务器,相当于是个正向代理功能
七、修改为默认的调度算法{wcl(活动连接数乘以非活动连接数)除以权重)}
ipvsadm -E -t 172.16.8.35:80
删除RS 服务器
#ipvsadm -d -t 172.16.8.35:80 -r 192.168.11.4:8080
NAT 模型就实现了,NAT模型可以跨路由