【资料图】
NAT模式(地址转换)原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址 并发至此RS来处理,RS处理完后把数据交给负载均衡器,负载均衡器再把数据包原IP地址改为自己的IP,将目的地址改为客户端IP地址即可期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器(原路返回,只改变了Mac地址)
2、 直接路由(DR模式)原理:负载均衡器和RS都使用同一个IP对外服务,但只有DR对ARP请求进行响应。所有RS对本身这个IP的ARP请求保持静默也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致),并将请求分发给这台RS这时RS收到这个数据包。处理完成之后,由于IP一致,可以直接将数据返给客户,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端,由于负载均衡器要对二层包头进行改换,所以负载均衡器和RS之间必须在一个广播域也可以简单的理解为在同一台交换机上
主机名 IP 作用node01 192.168.11.21 clientnode02 192.168.11.22 LVSnode03 192.168.11.23 LVSnode04 192.168.11.24 RS-web1node05 192.168.11.25 RS-web2
[root@node01 ~]# systemctl stop firewalld.service[root@node01 ~]# systemctl disable firewalld.service[root@node01 ~]# sed -i "/^SELINUX=/ c SELINUX=disabled" /etc/selinux/config
# 安装Apache软件,做web服务器[root@node04 ~]# yum install httpd -y# 提供测试页,为了区分用IP标识[root@node04 ~]# echo "web test page...host is `hostname -I`." > /var/www/html/index.html# 重启服务[root@node04 ~]# systemctl start httpd.service # 本地测试访问[root@node04 ~]# curl 192.168.11.24web test page...host is 192.168.11.24 .[root@node04 ~]# curl 192.168.11.25web test page...host is 192.168.11.25 .
# 下载负载均衡工具[root@node02 ~]# yum install ipvsadm.x86_64 -y
[root@node02 ~]# nmcli connection modify ens32 +ipv4.addresses 192.168.11.100/24[root@node02 ~]# nmcli connection up ens32 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)[root@node02 ~]# ip a1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: ens32: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:3c:41:bb brd ff:ff:ff:ff:ff:ff inet 192.168.11.22/24 brd 192.168.11.255 scope global noprefixroute ens32 valid_lft forever preferred_lft forever inet 192.168.11.100/24 brd 192.168.11.255 scope global secondary noprefixroute ens32 valid_lft forever preferred_lft forever inet6 fe80::9543:bb74:6781:68d6/64 scope link noprefixroute valid_lft forever preferred_lft forever
# 清除策略[root@node02 ~]# ipvsadm -C# 对TCP80端口提供负载分流服务,使用的调度为轮询[root@node02 ~]# ipvsadm -A -t 192.168.11.100:80 -s rr # 查看本地规则[root@node02 ~]# ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.11.100:80 rr# 添加节点服务器RS[root@node02 ~]# ipvsadm -a -t 192.168.11.100:80 -r 192.168.11.24:80 -g[root@node02 ~]# ipvsadm -a -t 192.168.11.100:80 -r 192.168.11.25:80 -g[root@node02 ~]# ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.11.100:80 rr -> 192.168.11.24:80 Route 1 0 0 -> 192.168.11.25:80 Route 1 0 0
[root@node02 ~]# ipvsadm-save -A -t node02:http -s rr-a -t node02:http -r 192.168.11.24:http -g -w 1-a -t node02:http -r 192.168.11.25:http -g -w 1
[删除方法]# ipvsadm -D -t 192.168.11.100:80-s wrr# ipvsadm -d -t 192.168.11.100:80 -r 192.168.11.24:80[相关参数说明][root@node02 ~]# ipvsadm –help-A 添加虚拟服务器-t 设置群集地址(VIP,Virtual IP)-s 指定负载调度算法-a 添加真实服务器-d 删除真实服务器-r 指定真实服务器(Real Server)的地址-m 使用NAT模式;-g、-i分别对应DR、TUN模式-w 为节点服务器设置权重,默认为1
[root@node04 ~]# ifconfig lo:110 192.168.11.110 netmask 255.255.255.255 up[root@node04 ~]# route add -host 192.168.11.100 dev lo
[root@node05 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore[root@node05 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce[root@node05 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore[root@node05 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
PS:也可以使用arptables实现抑制arp
arptables -A INPUT -d $VIP -j DROParptables -A OUTPUT -s $VIP -j mangle --mangle-ip-s $RIP# arptables-save > /etc/sysconfig/arptables# systemctl enable --now arptables
# 在LVS上监控 [root@node02 ~]# watch ipvsadm -Ln# 在客户端上测试[root@node01 ~]# for ((i=1;i<=10;i++)); do curl 192.168.11.100; done;
标签:
X 关闭
X 关闭