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

 

实验环境

虚拟机名称 作用 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选项

 
   
   
   
   

添加策略:


 
   
   
   
   
  1. ipvsadm -A -t 172 .25 .254 .100 :80 -s rr #-t表示 TCP协议的虚拟服务, -s指定策略为轮询
  2. ipvsadm -a -t 172 .25 .254 .100 :80 -r 172 .25 .63 .2 :80 -g #添加 RS指定并端口, -g表示为 DR模式
  3. ipvsadm -a -t 172 .25 .254 .100 :80 -r 172 .25 .63 .3 :80 -g #添加另外一台 RS

添加后查看规则:


 
   
   
   
   
  1. [ root@server1 ~] # ipvsadm -l
  2. IP Virtual Server version 1.2 .1 (size=4096)
  3. Prot LocalAddress:Port Scheduler Flags
  4. -> RemoteAddress:Port Forward Weight ActiveConn InActConn
  5. TCP 172.25 .254 .100 :http rr
  6. -> server2:http Route 1 0 0
  7. -> 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服务:


 
   
   
   
   
  1. [root@server2 html] # yum install -y httpd
  2. [root@server2 html] # cd /var/www/html/
  3. [root@server2 html] # vim index.html
  4. [root@server2 html] # cat index.html
  5. server2
  6. [root@server2 html] # systemctl start httpd

为 server3 配置apache服务:


 
   
   
   
   
  1. [root@server2 html] # yum install -y httpd
  2. [root@server2 html] # cd /var/www/html/
  3. [root@server2 html] # vim index.html
  4. [root@server2 html] # cat index.html
  5. server3
  6. [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 上:


 
   
   
   
   
  1. yum install -y arptables-0 .0 .4-8 .el7 .x86_64
  2. arptables -nL #查看策略
  3. arptables -A INPUT -d 172 .25 .254 .100 -j DROP #添加策略,将目的地址为172 .25 .254 .100arp请求丢弃
  4. arptables -A OUTPUT -s 172 .25 .254 .100 -j mangle --mangle-ip-s 172 .25 .63 .2 #将源 ipVIParp响应的源 IP改成 RSIP

策略配置完成查看策略:


 
   
   
   
   
  1. [root@server2 html] # arptables -nL
  2. Chain INPUT (policy ACCEPT)
  3. -j DROP -d 172.25 .63 .100
  4. Chain OUTPUT ( policy ACCEPT)
  5. -j mangle -s 172.25 .254 .100 --mangle-ip-s 172.25.254.2
  6. Chain FORWARD ( policy ACCEPT)

在server3 上做同样的操作:


 
   
   
   
   
  1. yum install -y arptables-0 .0 .4-8 .el7 .x86_64
  2. arptables -nL #查看策略
  3. arptables -A INPUT -d 172 .25 .254 .100 -j DROP #添加策略,将目的地址为172 .25 .63 .100arp请求丢弃
  4. arptables -A OUTPUT -s 172 .25 .254 .100 -j mangle --mangle-ip-s 172 .25 .254 .3 #将源 ipVIParp响应的源 IP改成 RSIP

4.测试

在客户端(物理机)上:


 
   
   
   
   
  1. [ kiosk@foundation63 ~] $ curl 172.25 .254 .100
  2. server2
  3. [ kiosk@foundation63 ~] $ curl 172.25 .254 .100
  4. server3
  5. [ kiosk@foundation63 ~] $ curl 172.25 .254 .100
  6. server2
  7. [ kiosk@foundation63 ~] $ curl 172.25 .254 .100
  8. server3
  9. [ kiosk@foundation63 ~] $ curl 172.25 .254 .100
  10. server2
  • 成功实现
    在DS上查看轮询次数:

 
   
   
   
   
  1. [ root@server1 ~] # ipvsadm -l
  2. IP Virtual Server version 1.2 .1 (size=4096)
  3. Prot LocalAddress:Port Scheduler Flags
  4. -> RemoteAddress:Port Forward Weight ActiveConn InActConn
  5. TCP server1:http rr
  6. -> server2:http Route 1 0 2
  7. -> server3:http Route 1 0 2

你可能感兴趣的:(企业,linux,负载均衡,运维)