目录
1.LVS-DR模式的特点:
2.环境规划:
3.初始化配置
4.LVS服务器的LSV配置:
5.node节点配置
6.在客户端服务器,测试:
1.LVS-DR模式的特点:
-
所有集群节点RS必须和Director在相同的物理网段(即同一个局域网中);
-
所有客户端入站(而不是出站)请求由Director首先接收,并转发给集群节点RS;
2.环境规划:
名称 | IP地址 | 备注 |
---|---|---|
客户端服务器 | CIP:外网192.168.128.201(ens37) | 关闭setlinux和firewalld |
LVS服务器 | DIP:内网192.168.178.52(ens33) | 关闭setlinux和firewalld |
后端服务器node1 | RIP:内网192.168.178.101(ens33) | 关闭setlinux和firewalld |
后端服务器node2 | RIP:内网192.168.178.151(ens33) | 关闭setlinux和firewalld |
3.初始化配置
-
在LVS服务器上,创建VIP,安装ipvsad
ifconfig ens33:1 192.168.178.53 netmask 255.255.255.0 up
yum install -y ipvsadm
-
在node1和node2服务器安装httpd服务,并创建页面:
yum install -y httpd echo "this is node1" > /var/www/html/index.html echo "this is node2" > /var/www/html/index.html
4.LVS服务器的LSV配置:
-
清空ipvsadm配置:
ipvsadm -C
-
添加ipvsadm虚拟配置
ipvsadm -At 192.168.178.53:80 -s rr # 添加一条tcp协议的虚拟服务,使用的是轮询算法
-
添加真实服务器node1和node2:
ipvsadm -at 192.168.178.53:80 -r 192.168.178.101:80 -g # 添加一个真实服务器,使用DR模式 ipvsadm -at 192.168.178.53:80 -r 192.168.178.151:80 -g
-
查看服务规则,以数字的形式显示IP端口:
[root@localhost ~]# 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.178.53:80 rr-> 192.168.178.101:80 Route 1 0 0 -> 192.168.178.151:80 Route 1 0 0
5.node节点配置
-
在node1和node2服务器上,手动将vip绑定在lo的子接口上,并添加本机访问VIP的路由
# 主要目的是,确保在使用VS集群时,真实服务器能够正确地将请求转发给虚拟服务器。 # 当一个客户端向虚拟IP地址发送请求时,请求会先到达真实服务器,真实服务器需要将这个请求转发给VS集群, # 然后由VS集群进行负载均衡,并将请求发送给合适的虚拟服务器 ifconfig lo:100 192.168.178.53 netmask 255.255.255.255 up
route add -host 192.168.178.53 dev lo:100
-
在node1和node2服务器上,配置arp抑制:
# 一个客户端向虚拟IP地址发送请求时,集群中的服务器都会收到这个请求,但只有其中一个服务器会响应。 # 如果其他服务器也响应了这个请求并发送了响应包,那么客户端就会收到多个响应包,这会导致数据丢失和网络拥堵等问题 echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore;echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore;echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
6.在客户端服务器,测试:
[root@localhost ~]# for ((i=1;i<=10;i++));do curl 192.168.178.53;done
this is node1
this is node2
this is node1
this is node2
this is node1
this is node2
this is node1
this is node2
this is node1
this is node2