一、 负载均衡-LVS 全解析

主机名 IP地址 网关 DNS 服务器角色
client2.song.cloud 10.1.1.21(vmnet1) 10.1.1.10 223.5.5.5 客户端
client1.song.cloud 10.1.8.21(vmnet8) 10.1.8.10 223.5.5.5 客户端
lvs.song.cloud 10.1.1.10(vmnet1)
10.1.8.10(vmnet8)
无网关
10.1.8.2
无DNS
223.5.5.5
LVS 服务器
web1.song.cloud 10.1.8.11(vmnet8) 10.1.8.10 223.5.5.5 Web 服务器
web2.song.cloud 10.1.8.12(vmnet8) 10.1.8.10 223.5.5.5 Web 服务器
web3.song.cloud 10.1.8.13(vmnet8) 10.1.8.10 223.5.5.5 Web 服务器

网络说明:

  1. 所有主机:第一块网卡名为 ens33,第二块网卡名为xx
  2. 默认第一块网卡模式为nat,第二块网卡模式为hostonly
  3. 网关设置:10.1.1.0/24 网段网关为10.1.1.10,10.1.8.0/24 网段网关为10.1.8.10

**注意:**本次实验的网关指向 LVS 服务器。

1.1 配置路由

注意:所有web都要执行以下命令。

[root@web1-3 ~ 10:58:03]# yum install -y nginx

# 部署 web
[root@web1 ~ 11:19:11]# echo Welcome to $(hostname) > /usr/share/nginx/html/index.html
[root@web1 ~ 11:19:55]# systemctl enable nginx.service --now
# 访问后端 nginx
[root@client1 ~ 10:58:03]# curl 10.1.8.11
Welcome to web1.song.cloud
[root@client1 ~ 11:21:13]# curl 10.1.8.12
Welcome to web2.song.cloud
[root@client1 ~ 11:21:16]# curl 10.1.8.13
Welcome to web3.song.cloud

1.2 配置 LVS

# 安装 ipvsadm
[root@lvs ~ 10:58:03]# yum install -y ipvsadm

# ipvsadm 服务启动的时候,从该文件中读取ipvs规则
[root@lvs ~ 11:21:44]# systemctl enable ipvsadm.service --now

# 创建轮询负载
## 增加一个tcp模式虚拟IP,调度模式:轮询
[root@lvs ~ 11:32:57]# ipvsadm -E -t 10.1.1.10:80 -s rr

# 未虚拟IP增加后端真实主机,模式masquerade(NAT)
ipvsadm -a -t 10.1.1.10:80 -r 10.1.8.11 -m
ipvsadm -a -t 10.1.1.10:80 -r 10.1.8.12 -m
ipvsadm -a -t 10.1.1.10:80 -r 10.1.8.13 -m

# 保存转发规则到文件中
ipvsadm-save -n > /etc/sysconfig/ipvsadm

# 核实配置是否生效
[root@lvs ~ 11:34:49]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.1.10:80 wrr
  -> 10.1.8.11:80                 Masq    1      0          90        
  -> 10.1.8.12:80                 Masq    2      0          90        
  -> 10.1.8.13:80                 Masq    3      0          90  
  
  # 多次访问验证 
  [root@client2 ~ 11:28:47]# for i in {1..90};do curl -s 10.1.1.10 ;done|sort|uniq -c
     30 Welcome to web1.song.cloud
     30 Welcome to web2.song.cloud
     30 Welcome to web3.song.cloud

负载均衡模式更改为加权轮询。

# 修改 调度模式为:带权重的轮询
[root@lvs ~ 11:32:57]# ipvsadm -E -t 10.1.1.10:80 -s wrr
# 设置权重为2
[root@lvs ~ 11:34:20]# ipvsadm -e -t 10.1.1.10:80 -r 10.1.8.12 -m -w 2
# 设置权重为3
[root@lvs ~ 11:34:38]# ipvsadm -e -t 10.1.1.10:80 -r 10.1.8.13 -m -w 3
[root@lvs ~ 11:34:49]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.1.10:80 wrr
  -> 10.1.8.11:80                 Masq    1      0          90        
  -> 10.1.8.12:80                 Masq    2      0          90        
  -> 10.1.8.13:80                 Masq    3      0          90       

访问验证

[root@client2 ~ 11:33:18]# for i in {1..90};do curl -s 10.1.1.10 ;done|sort|uniq -c
     15 Welcome to web1.song.cloud
     30 Welcome to web2.song.cloud
     45 Welcome to web3.song.cloud

二、DR模式

主机名 IP地址 网关 DNS 服务器角色
client2.song.cloud 10.1.1.21(vmnet1) 10.1.1.10 223.5.5.5 客户端
client1.song.cloud 10.1.8.21(vmnet8) 10.1.8.10 223.5.5.5 客户端
lvs.song.cloud 10.1.8.10(vmnet8) 10.1.8.20 >223.5.5.5 LVS 服务器
web1.song.cloud 10.1.8.11(vmnet8) 10.1.8.10 223.5.5.5 Web 服务器
web2.song.cloud 10.1.8.12(vmnet8) 10.1.8.10 223.5.5.5 Web 服务器
web3.song.cloud 10.1.8.13(vmnet8) 10.1.8.10 223.5.5.5 Web 服务器
router.song.cloud 10.1.8.20(vmnet8)
10.1.1.20(vmnet1)
10.1.8.2
无网关
223.5.5.5
无DNS
路由器

网络说明:

  1. 所有主机:第一块网卡名为 ens33,第二块网卡名为 ens36
  2. 默认第一块网卡模式为 nat,第二块网卡模式为 hostonly
  3. 网关设置:10.1.1.0/24 网段网关为10.1.1.20,10.1.8.0/24 网段网关为10.1.8.20

2.2 配置 router

# 开启路由
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

2.3 配置 web

注意:所有web都要执行以下命令。

[root@web1-3 ~]#
# 部署 web
yum install -y nginx
echo Welcome to $(hostname) > /usr/share/nginx/html/index.html 
systemctl enable nginx.service --now
# 访问后端 nginx
[root@client1 ~]# curl 10.1.8.11
Welcome to web1.song.cloud
[root@client1 ~]# curl 10.1.8.12
Welcome to web2.song.cloud
[root@client1 ~]# curl 10.1.8.13
Welcome to web3.song.cloud

2.4 配置 LVS-RS

所有后端主机都要做相同配置。

[root@web1-3 ~]#
# 增加虚拟网卡,子网掩码一定要设置为 32 位
nmcli connection add type dummy ifname dummy con-name dummy ipv4.method manual 
ipv4.addresses 10.1.8.100/32
nmcli connection up dummy
# 配置 arp 参数,关闭arp对dummy网卡的解析
cat >> /etc/sysctl.conf << EOF
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.dummy.arp_ignore = 1
net.ipv4.conf.dummy.arp_announce = 2
EOF
sysctl -p

2.4 配置 LVS-DS

[root@lvs ~]# 
# 配置虚拟网卡
nmcli connection add type dummy ifname dummy con-name dummy ipv4.method manual 
ipv4.addresses 10.1.8.100/32
nmcli connection up dummy
# 安装 ipvsadm
yum install -y ipvsadm
touch /etc/sysconfig/ipvsadm
systemctl enable ipvsadm --now
# 创建轮询负载
ipvsadm -A -t 10.1.8.100:80 -s rr
ipvsadm -a -t 10.1.8.100:80 -r 10.1.8.11:80
ipvsadm -a -t 10.1.8.100:80 -r 10.1.8.12:80
ipvsadm -a -t 10.1.8.100:80 -r 10.1.8.13:80
ipvsadm-save -n > /etc/sysconfig/ipvsadm
TCP  10.1.8.100:80 rr-> 10.1.8.11:80                 
# 核实配置是否生效
# 核实配置是否生效
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           -> RemoteAddress:Port           
Forward Weight ActiveConn InActConn
Route   -> 10.1.8.12:80                 -> 10.1.8.13:80                     -> TCP  10.1.8.100:80 rr
 	    -> 10.1.8.11:80                 Route   1      0          0
        -> 10.1.8.12:80                 Route   1      0          0
        -> 10.1.8.13:80                 Route   1      0          0 
# Forward 值为 Route,代表当前模式为 DR

访问验证

[root@client1 ~]# for i in {1..90};do curl -s 10.1.8.100 ;done|sort|uniq -c
    30 Welcome to web1.song.cloud
    30 Welcome to web2.song.cloud
    30 Welcome to web3.song.cloud
[root@client2 ~]# for i in {1..90};do curl -s 10.1.8.100 ;done|sort|uniq -c
    30 Welcome to web1.song.cloud
    30 Welcome to web2.song.cloud
    30 Welcome to web3.song.cloud
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐