1. 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。
DR 模式
* 负载各节点服务器通过本地网络连接,不需要建立专用的IP隧道
原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地址(R-MAC)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。
优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。
缺点:需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。
NAT模式:
原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP)。真实服务器响应完请求后,查看默认路由,把响应后的数据包发送给负载均衡器,负载均衡器在接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。
优点:集群中的服务器可以使用任何支持TCP/IP的操作系统,只要负载均衡器有一个合法的IP地址。
缺点:扩展性有限,当服务器节点增长过多时,由于所有的请求和应答都需要经过负载均衡器,因此负载均衡器将成为整个系统的瓶颈。
两者的区别:
DR模式不使用调度器为公司网关,而是路由设备,调度器只是分配访问的请求任务而回应的web页面,不经过调度器,直接通过网络设备回应,不容易造成阻塞而且所有节点都使用VIP地址。
在nat模式群集中,LSV负载均衡调度器是所有节点的访问internet的网关服务器其外网口地址也最为整个群集的VIP地址,调度器是整个公司网关任何请求都要经过调度器,包括回应的。
2. 构建 LVS-DR 群集时,在调度器与节点服务器中的 /proc 参数调整有何区别?
DR群集模式:LVS负载调度器和节点需要共同VIP地址,应关闭Linux内核的重定向参数响应。
节点服务器:同样要有VIP地址,但此地址仅用作发送Web响应数据包的原地址,不需要监听客户机的访问请求(改由调度器监听毕分发)
3. 基于 CentOS 7 构建 LVS-DR 群集。
负载调度器端配置
[root@localhost ~]# nmcli con mod ens33 ipv4.address 192.168.136.140/24
[root@localhost ~]# nmcli con up ens33
[root@localhost ~]# ip a
ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:39:0d:95 brd ff:ff:ff:ff:ff:ff
inet 192.168.136.133/24 brd 192.168.136.255 scope global noprefixroute dynamic ens33
valid_lft 1792sec preferred_lft 1792sec
inet 192.168.136.140/24 brd 192.168.136.255 scope global secondary noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::c99b:165d:97c2:8424/64 scope link noprefixroute
valid_lft forever preferred_lft forever
2、安装ipvsadm软件
[root@localhost ~]# yum install ipvsadm -y
3、 手工执行配置添加LVS服务并增加两台RS
[root@localhost ~]# ipvsadm -A -t 192.168.136.140:80 -s rr //添加一个虚拟服务使用轮询算法
[root@localhost ~]# ipvsadm -a -t 192.168.136.140:80 -r 192.168.136.136:80
[root@localhost ~]# ipvsadm -a -t 192.168.136.140:80 -r 192.168.136.138:80
4、查看配置情况
[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.136.140:80 rr
-> 192.168.136.136:80 Route 1 0 0
-> 192.168.136.138:80 Route 1 0 0
手工在RS终端端绑定VIP
##RS1
[root@localhost ~]# ifconfig lo:100 192.168.136.140 netmask 255.255.255.255
[root@localhost ~]# route add -host 192.168.136.140 dev lo //添加本机访问VIP的路由
##RS2
[root@localhost ~]# ifconfig lo:100 192.168.136.140 netmask 255.255.255.255
[root@localhost ~]# route add -host 192.168.136.140 dev lo //添加本机访问VIP的路由
[root@localhost ~]# 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
inet 192.168.136.140/32 scope global lo:100
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
关闭ARP转发
cat >> /etc/sysctl.conf << EOF
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
EOF
4. 基于 CentOS 7 构建 LVS-NAT 群集。
环境:
服务端DS:有两张网卡,开启路由转发功能
内网地址:192.168.136.133 外网地址:192.168.172.133
RS:网关指向DR的内网口 191.168.136.136 192.168.136.138
1、将两台RS的网关指向服务端DS的内网地址
[root@rs1 ~]# nmcli con mod ens33 ipv4.gateway 192.168.136.133
[root@rs1 ~]# nmcli con up ens33
[root@rs2 ~]# nmcli con mod ens33 ipv4.gateway 192.168.136.133
[root@rs2 ~]# nmcli con up ens33
2、服务端DS开启路有转发
[root@localhost ~]# sysctl -w net.ipv4.ip_forward=1 >> /etc/sysctl.conf
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
3、添加ipvsadm TCP集群(使用外网IP)
A添加 -t:指定虚拟ip -s:指定轮询
[root@localhost ~]# ipvsadm -A -t 192.168.172.133:80 -s rr
4、添加ipvsadm节点
[root@localhost ~]# ipvsadm -a -t 192.168.172.133:80 -r 192.168.136.136:80 -m
[root@localhost ~]# ipvsadm -a -t 192.168.172.133:80 -r 192.168.136.138:80 -m