拓扑说明:为了便于测试实验部署,这里直接采用Clinent和Director相连的方式,实际生产环境肯定比这复杂,但是这个图也能掩饰除lvs-nat模型的调度效果.
按照上面拓扑图准备环境后,还需要做其他环境准备:
/* 1)关闭Director、RealServer的防火墙(避免写iptables规则) 2)RealServer的网关需要指向10.0.0.3(Director的DIP) 3)在Director调度器上面开启核心转发功能,/etc/sysctl.conf文件中添加一行 net.ipv4.ip_forward=1 并执行sysctl -p */ 在RealServer上部署Web服务这里只是简单模拟了web服务,以便我们能够看出lvs的效果
[root@3 ~]# rpm -ivh nginx-1.16.0-1.el7.ngx.x86_64.rpm [root@3 ~]# echo 3 > /usr/share/nginx/html/index.html [root@3 ~]# nginx [root@5 ~]# rpm -ivh nginx-1.16.0-1.el7.ngx.x86_64.rpm [root@5 ~]# echo 5 > /usr/share/nginx/html/index.html [root@5 ~]# nginx 在Director上部署lvs服务 [root@43 ~]# yum -y install ipvsadm [root@43 ~]# ipvsadm -A -t 192.168.43.43:80 -s rr [root@43 ~]# ipvsadm -a -t 192.168.43.43:80 -r 172.18.80.3:80 -m [root@43 ~]# ipvsadm -a -t 192.168.43.43:80 -r 172.18.80.5:80 -m # -A 添加一个集群服务 # -E 修改一个集群服务 # -t 使用tcp协议 # -u 使用udp协议 # -f 使用防火墙标记 # -s 使用哪种集群算法 # -p 是否启用持久连接 [root@43 ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm # ipvsadm-save 保存规则 恢复规则 # ipvsadm -C 清空所有规则 # 但不清楚以保存在/etc/sysconfig/ipvsadm中的规则,以及自定义保存的规则。 [root@43 ~]# systemctl start ipvsadm && systemctl enable ipvsadm # 查看类命令 ipvsadm -L|l [ -n ] [--rate] [--stats] [--timeout] [-c] -L|l:显示目前系统中创建的集群 -n:以数字显示端口 -c:显示连接信息状态 --rate:显示速率 --stats:显示统计信息 eg:ipvsadm -Lc 显示连接信息状态 ipvsadm -L -n --stats 显示统计信息 客户端访问测试在客户端上访问vip,看访问的情况,从下面的访问情况,我们可以看到请求被轮询的方式分别调度到了RealServer1和RealServer2
[root@web219 ~]# curl 192.168.43.43 5 [root@web219 ~]# curl 192.168.43.43 3 [root@web219 ~]# curl 192.168.43.43 5 [root@web219 ~]# curl 192.168.43.43 3 Lvs-DR部署在LVS-DR模型中,DIP和RIP与VIP可以在相同网段,可以在不同网段
下面这张图是DIP和RIP与VIP网段相同的情况,部署方法同上面一样,只是网络配置有一些差异
环境准备按照上面拓扑图搭建好网络,个人实验可以全部用虚拟机代替,包括router,注意在Router和Director上开启核心转发功能,编辑/etc/sysctl.conf文件添加net.ipv4.ip_forward=1然后执行sysctl -p命令生效.
配置vip ifconfig ens32:0 192.168.43.100 netmask 255.255.255.255 route add -host 192.168.43.100 dev ens32:0 Director配置lvs [root@43 ~]# yum -y install ipvsadm [root@43 ~]# ipvsadm -At 192.168.43.100:80 -s rr [root@43 ~]# ipvsadm -at 192.168.43.100:80 -r 192.168.43.215:80 -g [root@43 ~]# ipvsadm -at 192.168.43.100:80 -r 192.168.43.86:80 -g [root@43 ~]# 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.43.100:80 rr -> 192.168.43.86:80 Route 1 0 0 -> 192.168.43.215:80 Route 1 0 0 [root@43 ~]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 43:http rr -> 192.168.43.86:http Route 1 0 0 -> 192.168.43.215:http Route 1 0 0 配置RealServer [root@215 ~]# ifconfig lo:0 192.168.43.100 netmask 255.255.255.255 broadcast 192.168.43.100 [root@215 ~]# route add -host 192.168.43.100 dev lo:0 [root@215 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore [root@215 ~]# [root@215 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce [root@215 ~]# [root@215 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore [root@215 ~]# [root@215 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce [root@web86 ~]# ifconfig lo:0 192.168.43.100 netmask 255.255.255.255 broadcast 192.168.43.100 [root@web86 ~]# [root@web86 ~]# route add -host 192.168.43.100 dev lo:0 [root@web86 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore [root@web86 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce [root@web86 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore [root@web86 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce 客户端访问测试 [root@web219 ~]# curl 192.168.43.100 5 [root@web219 ~]# curl 192.168.43.100 86 [root@web219 ~]# curl 192.168.43.100 5 [root@web219 ~]# curl 192.168.43.100 86 Lvs负载+Keepalived高可用