一、对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势
NAT模式(地址转换)
原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址 并发至此RS来处理,RS处理完后把数据交给负载均衡器,负载均衡器再把数据包原IP地址改为自己的IP,将目的地址改为客户端IP地址即可期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器(原路返回,只改变了Mac地址)
优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址;
缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈 因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器,速度就会变慢!
2、 直接路由(DR模式)
原理:负载均衡器和RS都使用同一个IP对外服务,但只有DR对ARP请求进行响应。所有RS对本身这个IP的ARP请求保持静默也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致),并将请求分发给这台RS这时RS收到这个数据包。处理完成之后,由于IP一致,可以直接将数据返给客户,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端,由于负载均衡器要对二层包头进行改换,所以负载均衡器和RS之间必须在一个广播域也可以简单的理解为在同一台交换机上
优点:和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。
缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。
二、 基于 CentOS 7 构建 LVS-DR 群集
1、环境准备
主机名 IP 作用
node01 192.168.11.21 client
node02 192.168.11.22 LVS
node03 192.168.11.23 LVS
node04 192.168.11.24 RS-web1
node05 192.168.11.25 RS-web2
2、关闭防火墙和selinux
[root@node01 ~]# systemctl stop firewalld.service
[root@node01 ~]# systemctl disable firewalld.service
[root@node01 ~]# sed -i '/^SELINUX=/ c SELINUX=disabled' /etc/selinux/config
3、修改主机名和设置为静态IP
4、先在节点node04 node05准备俩个web服务器访问页面---4和5一样的配置
# 安装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.24
web test page...host is 192.168.11.24 .
[root@node04 ~]# curl 192.168.11.25
web test page...host is 192.168.11.25 .
5、配置LVS负载均衡服务
第一种LVS配置方式:node02上配置
# 下载负载均衡工具
[root@node02 ~]# yum install ipvsadm.x86_64 -y
6、添加VIP地址,注意掩码
[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 a
1: lo: <LOOPBACK,UP,LOWER_UP> 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 forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> 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
7、配置LVS策略
# 清除策略
[root@node02 ~]# ipvsadm -C
# 对TCP80端口提供负载分流服务,使用的调度为轮询
[root@node02 ~]# ipvsadm -A -t 192.168.11.100:80 -s rr
# 查看本地规则
[root@node02 ~]# 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.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 -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.11.100:80 rr
-> 192.168.11.24:80 Route 1 0 0
-> 192.168.11.25:80 Route 1 0 0
8、保存配置,重启服务即失效
[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
9、配置说明
[删除方法]
# 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
10、手工在RS端绑定VIP,添加本机访问VIP的路由信息
[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
11、手工在RS端抑制ARP响应
[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 DROP
arptables -A OUTPUT -s $VIP -j mangle --mangle-ip-s $RIP
# arptables-save > /etc/sysconfig/arptables
# systemctl enable --now arptables
12、测试
# 在LVS上监控
[root@node02 ~]# watch ipvsadm -Ln
# 在客户端上测试
[root@node01 ~]# for ((i=1;i<=10;i++)); do curl 192.168.11.100; done;
标签:node02,负载,CentOS,LVS,RS,192.168,---,均衡器,root
From: https://www.cnblogs.com/sre-chan/p/17343340.html