负载均衡的高可用集群(3)-LVS负载均衡中的DR模式实现

实验环境

虚拟机名称 作用 IP
server1 lvs 172.25.254.1
server2 RS1 172.25.254.2
server3 RS2 172.25.254.3

VIP为:172.25.254.100
测试服务:Http 端口:80
物理机为客户端

一、DR模式的实现

1. 配置DS
在server1上:
安装 ipvsadm    ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置。

 yum install ipvsadm -y

查看lvs编写的策略:

 ipvsadm -l				#若速度比较慢可以使用-ln选项

添加策略:

 ipvsadm -A -t 172.25.254.100:80 -s rr				#-t表示TCP协议的虚拟服务,-s指定策略为轮询
 ipvsadm -a -t 172.25.254.100:80 -r 172.25.63.2:80 -g			#添加RS指定并端口,-g表示为DR模式
 ipvsadm -a -t 172.25.254.100:80 -r 172.25.63.3:80 -g			#添加另外一台RS

添加后查看规则:

[root@server1 ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.100:http rr
  -> server2:http                 Route   1      0          0         
  -> server3:http                 Route   1      0          0         

为DS添加VIP:

ip addr add 172.25.254.100/32 dev eth0				#子网掩码可以为32,也可以为24

ipvs命令的选项:

-A 添加一个虚拟服务,使用ip地址、端口号、协议来唯一定义一个虚拟服务
-E 编辑一个虚拟服务
-D 删除一个虚拟服务
-C 清空虚拟服务列表
-R 从标准输入中还原虚拟服务列表
-S 保存虚拟服务规则至标准输出,输出规则可使用-R选项还原
-L 显示虚拟服务列表
-Z 虚拟服务器列表计数器清零(清空当前连接数)
-a 添加一台真实服务器
-e 编辑一台真实服务器
-d 减少一台真实服务器
-t 使用TCP服务,该参数后需加主机与端口信息
-u 使用UDP服务,该参数后需加主机与端口信息
-s 指定lvs的调度算法
-r 设置真实服务器IP与端口
-g 设置lvs工作模式为DR直连路由
-i 设置lvs工作模式为TUN隧道
-m 设置lvs工作模式为NAT地址转换模式
-w 指定真实服务器权重
-c 连接状态,配和-L使用
-n 数字格式显示
–stats 显示统计信息
–rate 显示速率信息
–sort 对虚拟服务器和真实服务器排序输出
–set tcp tcpfin udp
设置ipvs连接超时值,三个参数分别代表tcp会话超时时间、收到FIN包后tcp会话超时时间、udp超时时间
–timeout 显示tcp tcpfin udp的timeout值
–start-daemon
启动同步守护进程
–stop-daemon
停止同步守护进程

2.配置RS

server2和server3上:

添加VIP:

ip addr add 172.25.254.100/32 dev eth0				#子网掩码可以为32,也可以为24
  •  

为 server2 配置apache服务:

[root@server2 html]# yum install -y httpd
[root@server2 html]# cd /var/www/html/
[root@server2 html]# vim index.html
[root@server2 html]# cat index.html 
server2
[root@server2 html]# systemctl start httpd

为 server3 配置apache服务:

[root@server2 html]# yum install -y httpd
[root@server2 html]# cd /var/www/html/
[root@server2 html]# vim index.html
[root@server2 html]# cat index.html 
server3
[root@server2 html]# systemctl start httpd

3.为RS配置arptables

首先需要先了解APR协议:ARP协议详解(https://blog.csdn.net/qq_35887546/article/details/104425939),由于server 1 2 3均有VIP,由ARP协议可知,apr请求将会在局域网内广播, 此配置arptables的作用是当客户端访问VIP时,让其访问DS而不是RS

也可通过修改内核参数实现,此处使用arptables

在server2 上:

yum install -y arptables-0.0.4-8.el7.x86_64
arptables -nL				#查看策略
arptables -A INPUT -d 172.25.254.100 -j DROP			#添加策略,将目的地址为172.25.254.100的arp请求丢弃
arptables -A OUTPUT -s 172.25.254.100 -j mangle --mangle-ip-s 172.25.63.2		#将源ip为VIP的arp响应的源IP改成RS的IP

策略配置完成查看策略:

[root@server2 html]# arptables -nL
Chain INPUT (policy ACCEPT)
-j DROP -d 172.25.63.100 

Chain OUTPUT (policy ACCEPT)
-j mangle -s 172.25.254.100 --mangle-ip-s 172.25.254.2 

Chain FORWARD (policy ACCEPT)

在server3 上做同样的操作:

yum install -y arptables-0.0.4-8.el7.x86_64
arptables -nL				#查看策略
arptables -A INPUT -d 172.25.254.100 -j DROP			#添加策略,将目的地址为172.25.63.100的arp请求丢弃
arptables -A OUTPUT -s 172.25.254.100 -j mangle --mangle-ip-s 172.25.254.3		#将源ip为VIP的arp响应的源IP改成RS的IP

4.测试

在客户端(物理机)上:

[kiosk@foundation63 ~]$ curl 172.25.254.100
server2
[kiosk@foundation63 ~]$ curl 172.25.254.100
server3
[kiosk@foundation63 ~]$ curl 172.25.254.100
server2
[kiosk@foundation63 ~]$ curl 172.25.254.100
server3
[kiosk@foundation63 ~]$ curl 172.25.254.100
server2
  • 成功实现
    在DS上查看轮询次数:
[root@server1 ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  server1:http rr
  -> server2:http                 Route   1      0          2         
  -> server3:http                 Route   1      0          2         

猜你喜欢

转载自blog.csdn.net/weixin_43215948/article/details/107848669