负载均衡-LVS
*注意:**本次实验的网关指向 LVS 服务器。
·
一、 负载均衡-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 服务器 |
网络说明:
- 所有主机:第一块网卡名为 ens33,第二块网卡名为xx
- 默认第一块网卡模式为nat,第二块网卡模式为hostonly
- 网关设置: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 |
路由器 |
网络说明:
- 所有主机:第一块网卡名为 ens33,第二块网卡名为 ens36
- 默认第一块网卡模式为 nat,第二块网卡模式为 hostonly
- 网关设置: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
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)