完整实验命令解析:从集群搭建到负载均衡配置(2)

一、环境准备与基础网络配置

1.1 节点角色与网络规划

节点角色主机名所属网段IP 地址网关核心功能
Web 服务器web110.1.8.0/2410.1.8.1110.1.8.10(后期调整为 10.1.8.20)部署 Nginx/HTTPD,提供 Web 服务
Web 服务器web210.1.8.0/2410.1.8.1210.1.8.10(后期调整为 10.1.8.20)部署 Nginx/HTTPD,提供 Web 服务
Web 服务器web310.1.8.0/2410.1.8.1310.1.8.10(后期调整为 10.1.8.20)部署 Nginx/HTTPD,提供 Web 服务
负载均衡器(初期)lb10.1.1.0/2410.1.1.10无需配置部署 LVS,实现负载均衡
客户端client110.1.8.0/2410.1.8.2110.1.8.10(后期调整为 10.1.8.20)测试 Web 服务访问
客户端client210.1.1.0/2410.1.1.2110.1.1.10(后期调整为 10.1.1.20)测试负载均衡与高可用
路由器router多网段(10.1.8.0/24、10.1.1.0/24、10.1.2.0/24)10.1.8.20、10.1.1.20、10.1.2.20-实现多网段互通
NFS 服务器nfs10.1.2.0/2410.1.2.10010.1.2.20提供共享存储,存储 Web 静态资源
高可用负载均衡器ha110.1.8.0/2410.1.8.1410.1.8.20部署 HAProxy+Keepalived,主负载均衡节点
高可用负载均衡器ha210.1.8.0/24

1.2 基础网络配置(全节点)

1.2.1 10.1.8.0/24 网段节点(web1、web2、web3、client1)
  • web 服务器

[root@web1-3 ~]#yum install -y nginxsystemctl enable nginx --nowecho Welcome to $(hostname) > /usr/share/nginx/html/index.html
  • lvs 服务器

[root@lvs ~]# yum install -y ipvsadm# systemctl enable ipvsadm# 等ipvs规则配置完成后再启动ipvsadm服务
  • client服务器

# 10.1.8.0/24 网段网关为10.1.8.10   #web123  client1nmcli connection modify ens33 ipv4.gateway 10.1.8.10nmcli connection up ens33  ​# 10.1.1.0/24 网段网关为10.1.1.10  #client2  lb不用配置nmcli connection modify ens33 ipv4.gateway 10.1.1.10nmcli connection up ens33  

二、Web 服务部署(web1、web2、web3 节点)

  • 配置 web

[root@web1-3 ~]#​# 部署 webyum install -y nginxecho Welcome to $(hostname) > /usr/share/nginx/html/index.html systemctl enable nginx.service --now​​#验证 Web 服务可用性[root@client1 ~ 10:56:20]# curl 10.1.8.11Welcome to web1.laoma.cloud[root@client1 ~ 10:57:49]# curl 10.1.8.12Welcome to web2.laoma.cloud[root@client1 ~ 10:57:53]# curl 10.1.8.13Welcome to web3.laoma.cloud​​

三、LVS 负载均衡部署(lb 节点)

  • 配置 LVS

[root@lb ~ 10:55:16]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf[root@lb ~ 10:59:15]# sysctl -pnet.ipv4.ip_forward = 1​​[root@lb ~ 10:59:21]# yum install -y ipvsadm[root@lb ~ 10:59:38]# touch /etc/sysconfig/ipvsadm[root@lb ~ 10:59:38]# systemctl enable ipvsadm --now​# 创建轮询负载[root@lb ~ 10:59:38]# ipvsadm -A -t 10.1.1.10:80 -s rr[root@lb ~ 11:00:03]# ipvsadm -a -t 10.1.1.10:80 -r 10.1.8.11 -m[root@lb ~ 11:00:03]# ipvsadm -a -t 10.1.1.10:80 -r 10.1.8.12 -m[root@lb ~ 11:00:03]# ipvsadm -a -t 10.1.1.10:80 -r 10.1.8.13 -m[root@lb ~ 11:00:03]# ipvsadm-save -n > /etc/sysconfig/ipvsadm​​# 核实配置是否生效[root@lb ~ 11:00:04]# ipvsadm -Ln[root@lb ~ 11:00:59]# for i in {1..90};do curl -s 10.1.1.10 ;done|sort|uniq -c30 Welcome to web1.laoma.cloud30 Welcome to web2.laoma.cloud30 Welcome to web3.laoma.cloud​
  • 负载均衡模式更改为加权轮询

[root@lb ~ 11:01:12]# ipvsadm -E -t 10.1.1.10:80 -s wrr[root@lb ~ 11:01:33]# ipvsadm -e -t 10.1.1.10:80 -r 10.1.8.12 -m -w 2[root@lb ~ 11:01:33]# ipvsadm -e -t 10.1.1.10:80 -r 10.1.8.13 -m -w 3[root@lb ~ 11:01:34]# ipvsadm -Ln​访问验证[root@lb ~ 11:01:46]# for i in {1..90};do curl -s 10.1.1.10 ;done|sort|uniq -c15 Welcome to web1.laoma.cloud30 Welcome to web2.laoma.cloud45 Welcome to web3.laoma.cloud​​
思考

此时client1是否可以通过10.1.1.10访问后端服务器?

答:不能访问

client1 发出去数据包经过10.1.1.10的ipvs模块处理,而后端web收到数据包后根据来源地址10.1.8.21进行回复,也就是直接返回client1 导致数据包没有返回LVS处理

如果不能,需要如何配置才能实现访问?

[root@web1 ~ 10:57:32]# nmcli connection modify ens33 ipv4.routes '10.1.8.21 255.255.255.255 10.1.8.10'[root@web1 ~ 11:02:32]# nmcli connection up ens33​[root@web2 ~ 10:57:32]# nmcli connection modify ens33 ipv4.routes '10.1.8.21 255.255.255.255 10.1.8.10'[root@web2 ~ 11:02:32]# nmcli connection up ens33​[root@web3 ~ 10:57:32]# nmcli connection modify ens33 ipv4.routes '10.1.8.21 255.255.255.255 10.1.8.10'[root@web3 ~ 11:02:32]# nmcli connection up ens33​

#清空之前实验[root@lb ~ 11:02:09]# > /etc/sysconfig/ipvsadm[root@lb ~ 11:16:16]# systemctl restart ipvsadm.service ​进入虚拟机把lb的第二张网卡拔掉​#web1 2 3 client1 执行# 10.1.8.0/24 网段网关为10.1.8.20nmcli connection modify ens33 ipv4.gateway 10.1.8.20nmcli connection up ens33​#client2 执行# 10.1.1.0/24 网段网关为10.1.1.20nmcli connection modify ens33 ipv4.gateway 10.1.1.20nmcli connection up ens33

四、LVS-DR 模式部署(全节点适配)

4.1 虚拟网卡(Dummy)配置

  • Web 节点(web1、web2、web3)配置

# 增加虚拟网卡,子网掩码一定要32位
[root@client2 ~ 11:20:31]# nmcli connection add type dummy ifname dummy con-name dummy ipv4.method manual ipv4.addresses 10.1.8.100/32
连接 "dummy" (cafa29cd-6424-4356-9dc0-edc6b044be44) 已成功添加。
[root@client2 ~ 11:32:10]# nmcli connection up dummy[root@web1 ~ 11:20:31]# nmcli connection add type dummy ifname dummy con-name dummy ipv4.method manual ipv4.addresses 10.1.8.100/32
连接 "dummy" (c1d840b5-f6f9-4aa9-9688-2318a45628e1) 已成功添加。
[root@web1 ~ 11:34:09]# nmcli connection up dummy[root@web2 ~ 11:20:31]# nmcli connection add type dummy ifname dummy con-name dummy ipv4.method manual ipv4.addresses 10.1.8.100/32
连接 "dummy" (c1d840b5-f6f9-4aa9-9688-2318a45628e1) 已成功添加。
[root@web2 ~ 11:34:09]# nmcli connection up dummy[root@web3 ~ 11:20:31]# nmcli connection add type dummy ifname dummy con-name dummy ipv4.method manual ipv4.addresses 10.1.8.100/32
连接 "dummy" (c1d840b5-f6f9-4aa9-9688-2318a45628e1) 已成功添加。
[root@web3 ~ 11:34:09]# nmcli connection up dummy[root@client2 ~ 11:32:11]# nmcli connection delete dummy 
成功删除连接 "dummy" (cafa29cd-6424-4356-9dc0-edc6b044be44)。
[root@client2 ~ 11:35:56]# nmcli c
NAME   UUID                                  TYPE      DEVICE 
ens33  555eece5-af4c-45ae-bab9-c07e68d0e649  ethernet  ens33  # LVS 节点(lb)配置
[root@web1 ~ 11:33:40]# ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens33            UP             10.1.8.11/24 fe80::20c:29ff:feb2:fcae/64 
dummy0           DOWN           
dummy            UNKNOWN        10.1.8.100/32 fe80::6f18:c0cb:74d0:ea0d/64 [root@web2 ~ 11:34:04]# ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens33            UP             10.1.8.12/24 fe80::20c:29ff:fefe:b2c/64 
dummy0           DOWN           
dummy            UNKNOWN        10.1.8.100/32 fe80::f4aa:4d23:ac32:7129/64[root@web3 ~ 11:36:41]# ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens33            UP             10.1.8.13/24 fe80::20c:29ff:fe1d:4a9c/64 
dummy0           DOWN           
dummy            UNKNOWN        10.1.8.100/32 fe80::30ca:ef21:2f8:fe5c/64 

4.2 LVS-DR 模式规则配置(lb 节点)

[root@lb ~ 11:36:58]# nmcli connection add type dummy ifname dummy con-name dummy ipv4.method manual ipv4.addresses 10.1.8.100/32
连接 "dummy" (8cdb619b-460e-4b83-afe3-5f855a601d4d) 已成功添加。
[root@lb ~ 11:40:46]# nmcli connection up dummy
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@lb ~ 11:40:48]# ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens33            UP             10.1.8.10/24 fe80::20c:29ff:fe55:d621/64 
dummy0           DOWN           
dummy            UNKNOWN        10.1.8.100/32 fe80::d941:efae:a684:17ea/64 [root@lb ~ 11:40:59]# ipvsadm -A -t 10.1.8.100:80 -s rr
[root@lb ~ 11:42:26]# ipvsadm -a -t 10.1.8.100:80 -r 10.1.8.11:80
[root@lb ~ 11:42:26]# ipvsadm -a -t 10.1.8.100:80 -r 10.1.8.12:80
[root@lb ~ 11:42:26]# ipvsadm -a -t 10.1.8.100:80 -r 10.1.8.13:80
[root@lb ~ 11:42:26]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
[root@lb ~ 11:42:27]# 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          0         -> 10.1.8.12:80                 Masq    2      0          0         -> 10.1.8.13:80                 Masq    3      0          0         
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         
[root@lb ~ 11:42:59]# ipvsadm -D -t 10.1.1.10:80
[root@lb ~ 11:43:20]# 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.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         #DR 模式可用性测试(client1、client2 节点)
[root@client2 ~ 11:36:58]# curl http://10.1.8.100
Welcome to web3.laoma.cloud
[root@client2 ~ 11:44:04]# curl http://10.1.8.100
Welcome to web2.laoma.cloud
[root@client2 ~ 11:44:06]# curl http://10.1.8.100
Welcome to web1.laoma.cloud[root@client1 ~ 11:36:58]# curl http://10.1.8.100
Welcome to web3.laoma.cloud
[root@client1 ~ 11:45:11]# curl http://10.1.8.100
Welcome to web2.laoma.cloud
[root@client1 ~ 11:45:12]# curl http://10.1.8.100
Welcome to web1.laoma.cloud[root@client1 ~ 11:45:12]# for i in {1..90};do curl -s 10.1.8.100 ;done|sort|uniq
Welcome to web1.laoma.cloud
Welcome to web2.laoma.cloud
Welcome to web3.laoma.cloud[root@client2 ~ 11:46:31]# for i in {1..90};do curl -s 10.1.8.100 ;done|sort|uniq -c30 Welcome to web1.laoma.cloud30 Welcome to web2.laoma.cloud30 Welcome to web3.laoma.cloud

五、Keepalived 高可用部署(web1、web2 节点,后期迁移至 ha1、ha2)

5.1 初期 Web 节点高可用配置(web1 为主、web2 为备)

[root@web1 ~ 14:02:06]# nmcli connection delete dummy 
成功删除连接 "dummy" (6a249f96-28ab-41c5-8f22-e9f0f3e395bc)。[root@lb ~ 14:05:28]#nmcli connection delete dummy reboot 
  • 配置 web2,作为备节点

[root@web2 ~]# 
yum install -y keepalived
cp /etc/keepalived/keepalived.conf{,.ori}
vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {router_id web2
}
#vim
vrrp_instance nginx {state BACKUPinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass lyk@123}virtual_ipaddress {10.1.8.100/24}
}[root@web2 ~ 14:17:54]# systemctl enable keepalived.service --now[root@web2 ~ 14:18:09]# systemctl restart keepalived.service [root@web2 ~ 14:19:28]# ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens33            UP             10.1.8.12/24 10.1.8.100/24 fe80::20c:29ff:fefe:b2c/64 [root@client1 ~ 14:05:28]# while true;do curl -s http://10.1.8.100/;sleep 1;done
Welcome to web2.laoma.cloud
Welcome to web2.laoma.cloud
......[root@client2 ~ 14:05:27]# while true;do curl -s http://10.1.8.100/;sleep 1;done
Welcome to web2.laoma.cloud
Welcome to web2.laoma.cloud
Welcome to web2.laoma.cloud
Welcome to web2.laoma.cloud
.....
5.1.2 主节点配置(web1 节点)
[root@web2 ~ 14:19:38]# scp /etc/keepalived/keepalived.conf web1:/etc/keepalived/keepalived.conf
Warning: Permanently added 'web1,10.1.8.11' (ECDSA) to the list of known hosts.
keepalived.conf                                            100%  320   998.8KB/s   00:00   # 双 VIP 高可用配置(web1、web2 节点)
# web1 节点配置(主 10.1.8.100,备 10.1.8.200)
[root@web1 ~ 14:16:44]# vim /etc/keepalived/keepalived.conf
[root@web1 ~ 14:36:08]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id web1
}vrrp_instance web {state MASTERinterface ens33virtual_router_id 51priority 200advert_int 1authentication {auth_type PASSauth_pass lyk@123}virtual_ipaddress {10.1.8.100/24}
}[root@web1 ~ 14:36:19]# systemctl restart keepalived.service 
#client链接显示
.......
Welcome to web1.laoma.cloud
Welcome to web1.laoma.cloud
Welcome to web1.laoma.cloud
Welcome to web1.laoma.cloud
Welcome to web1.laoma.cloud
Welcome to web1.laoma.cloud
......
[root@web2 ~ 14:34:11]# ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens33            UP             10.1.8.12/24 fe80::20c:29ff:fefe:b2c/64 [root@web1 ~ 14:38:42]# systemctl stop keepalived.service #client链接显示
.......
Welcome to web2.laoma.cloud
Welcome to web2.laoma.cloud
Welcome to web2.laoma.cloud
Welcome to web2.laoma.cloud
Welcome to web2.laoma.cloud
Welcome to web2.laoma.cloud
......

#web2 节点配置(备 10.1.8.100,主 10.1.8.200)
[root@web1 ~ 14:49:14]# vim /etc/keepalived/keepalived.conf
[root@web1 ~ 14:49:18]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id web1
}vrrp_instance web_1 {state MASTERinterface ens33virtual_router_id 51priority 200advert_int 1authentication {auth_type PASSauth_pass lyk@123}virtual_ipaddress {10.1.8.100/24}
}
vrrp_instance web_2 {state BACKUPinterface ens33virtual_router_id 52priority 100advert_int 1authentication {auth_type PASSauth_pass lyk@123}virtual_ipaddress {10.1.8.200/24}
}#web2
[root@web2 ~ 14:37:35]# vim /etc/keepalived/keepalived.conf
[root@web2 ~ 14:50:03]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id web2
}vrrp_instance web_1 {state BACKUPinterface ens33virtual_router_id 52priority 100advert_int 1authentication {auth_type PASSauth_pass lyk@123}virtual_ipaddress {10.1.8.100/24}
}vrrp_instance web_2 {state MASTERinterface ens33virtual_router_id 51priority 200advert_int 1authentication {auth_type PASSauth_pass lyk@123}virtual_ipaddress {10.1.8.200/24}
}[root@web1 ~ 14:51:38]# systemctl restart keepalived.service 
[root@web1 ~ 14:52:10]# ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens33            UP             10.1.8.11/24 10.1.8.100/24 fe80::20c:29ff:feb2:fcae/64 [root@web2 ~ 14:51:12]# systemctl restart keepalived.service 
[root@web2 ~ 14:52:16]# ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens33            UP             10.1.8.12/24 10.1.8.200/24 fe80::20c:29ff:fefe:b2c/64 #验证 高可用切换测试(client1 节点)
[root@client1 ~ 14:40:09]# while true;do curl -s http://10.1.8.100/;sleep 1;done
Welcome to web1.laoma.cloud
Welcome to web1.laoma.cloud
Welcome to web1.laoma.cloud
^C
[root@client1 ~ 14:53:26]# while true;do curl -s http://10.1.8.200/;sleep 1;done
Welcome to web2.laoma.cloud
Welcome to web2.laoma.cloud
Welcome to web2.laoma.cloud
Welcome to web2.laoma.cloud
^C#断开web1,查看web2
[root@web1 ~ 14:52:26]# systemctl stop keepalived.service 
[root@web2 ~ 14:55:19]# ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens33            UP             10.1.8.12/24 10.1.8.200/24 10.1.8.100/24 fe80::20c:29ff:fefe:b2c/64 
[root@web1 ~ 14:55:07]# nmcli c
NAME        UUID                                  TYPE      DEVICE 
有线连接 1  57b39c8d-d270-3ce9-95e4-48b5823381a6  ethernet  ens36  
ens33       555eece5-af4c-45ae-bab9-c07e68d0e649  ethernet  ens33  [root@web1 ~ 15:05:28]# nmcli connection modify 有线连接\ 1 ipv4.method manual ipv4.addresses 10.1.2.11/24 connection.id ens36;nmcli connection up ens36[root@web2 ~ 15:07:10]# nmcli connection modify 有线连接\ 1 ipv4.method manual ipv4.addresses 10.1.2.12/24 connection.id ens36;nmcli connection up ens36[root@web3 ~ 15:07:31]# nmcli connection modify 有线连接\ 1 ipv4.method manual ipv4.addresses 10.1.2.13/24 connection.id ens36;nmcli connection up ens36[root@web1 ~ 15:07:04]# systemctl stop keepalived
[root@web2 ~ 15:07:04]# systemctl stop keepalived
[root@web3 ~ 15:07:04]# systemctl stop keepalived
[root@lb ~ 14:05:28]# init 0[root@web 1 2 3 ~ 15:13:37]# ip -br a

用cluster-tpl 克隆三台虚拟机nfs(修改网卡为vm (仅主机2))  ha1 ha2(不变)#nfs (2.100)为2.0网络段
router 主机添加网卡(一共三个)添加网卡(设置vm (2仅主机))

#  **nfs**虚拟机界面执行
hostnamectl set-hostname nfs.lyk.cloud
nmcli c
nmcli connection modify ens33 ipv4.addresses 10.1.2.100/24 ipv4.gateway 10.1.2.20
nmcli connection up ens33
bash
ping 1.1.1.1#Xshell执行
[root@router ~ 15:26:51]# nmcli c
NAME        UUID                                  TYPE      DEVICE 
ens33       555eece5-af4c-45ae-bab9-c07e68d0e649  ethernet  ens33  
ens36       c4a81250-34ce-3a67-a3ea-bacfb0289b97  ethernet  ens36  
有线连接 1  e7758ba8-0110-3e86-883c-8aa1bbdf1f2b  ethernet  --     
[root@router ~ 15:27:05]# nmcli connection modify 有线连接\ 1 ipv4.method manual ipv4.addresses 10.1.2.20/24 connection.id ens37
[root@router ~ 15:29:39]# nmcli connection up ens37
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/11)[root@router ~ 15:31:07]# ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens33            UP             10.1.8.20/24 fe80::20c:29ff:fe62:b97a/64 
ens36            UP             10.1.1.20/24 fe80::f529:7e26:4c51:56cc/64 
ens37            UP             10.1.2.20/24 fe80::1334:fcc3:8f69:5e5a/64 [root@nfs ~ 15:28:08]# ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=2 ttl=127 time=144 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=127 time=186 ms
64 bytes from 1.1.1.1: icmp_seq=4 ttl=127 time=390 ms
64 bytes from 1.1.1.1: icmp_seq=5 ttl=127 time=145 ms
......

hostnamectl set-hostname ha1.lyk.cloud
nmcli connection modify ens33 ipv4.addresses 10.1.8.14 ipv4.gateway 10.1.8.20
nmcli connection up ens33
bashhostnamectl set-hostname ha2.lyk.cloud
nmcli connection modify ens33 ipv4.addresses 10.1.8.15 ipv4.gateway 10.1.8.20
nmcli connection up ens33
bash

[root@client2 ~ 15:52:26]# vim /etc/hosts
[root@client2 ~ 15:52:35]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6########### cluster ################
10.1.8.100      www.laoma.cloud         www
10.1.8.10       lb.laoma.cloud          lb
10.1.8.11       web1.laoma.cloud        web1
10.1.8.12       web2.laoma.cloud        web2
10.1.8.13       web3.laoma.cloud        web3
10.1.8.14       ha1.laoma.cloud         ha1
10.1.8.15       ha2.laoma.cloud         ha2
10.1.8.20       router.laoma.cloud      router
10.1.8.21       client1.laoma.cloud     client1
10.1.1.21       client2.laoma.cloud     client2#client2推送到其他节点
[root@client2 ~ 15:59:47]# for host in 10.1.8.1{1..5} 10.1.8.20 10.1.8.21 ; do scp /etc/hosts $host:/etc/hosts; done

六、NFS 共享存储部署(nfs 节点与 web 节点)

6.1 NFS 服务器配置(nfs 节点)

6.1.1 安装 NFS 服务并创建共享目录
  • web三个加网卡,vm (仅主机2)

# 安装软件  web1 2 3  nfs
yum install -y nfs-utils#再次添加一行nfs  再次推送
[root@client2 ~ 16:01:05]# vim /etc/hosts
[root@client2 ~ 16:00:37]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6########### cluster ################
10.1.8.100      www.laoma.cloud         www
10.1.8.10       lb.laoma.cloud          lb
10.1.8.11       web1.laoma.cloud        web1
10.1.8.12       web2.laoma.cloud        web2
10.1.8.13       web3.laoma.cloud        web3
10.1.8.14       ha1.laoma.cloud         ha1
10.1.8.15       ha2.laoma.cloud         ha2
10.1.8.20       router.laoma.cloud      router
10.1.8.21       client1.laoma.cloud     client1
10.1.1.21       client2.laoma.cloud     client2
10.1.2.100      nfs.laoma.cloud         nfs
  • 安装 NFS 服务并创建共享目录

[root@nfs ~ 16:19:02]# mkdir /var/www/html/ -p
[root@nfs ~ 16:19:55]# echo Welcome to www.lyk.cloud > /var/www/html/index.html
[root@nfs ~ 16:20:01]# echo '/var/www 10.1.2.0/24(rw,sync)' >> /etc/exports
[root@nfs ~ 16:27:46]# systemctl restart nfs-server
[root@nfs ~ 16:20:06]# systemctl enable nfs-server.service --now
[root@nfs ~ 16:21:12]# systemctl status nfs[root@web1 ~ 16:22:14]# systemctl disable nginx.service --now
Removed symlink /etc/systemd/system/multi-user.target.wants/nginx.service.
[root@web1 ~ 16:26:11]# systemctl start httpd[root@web1 ~ 16:22:14]# systemctl disable nginx.service --now
Removed symlink /etc/systemd/system/multi-user.target.wants/nginx.service.
[root@web1 ~ 16:26:11]# systemctl start httpd[root@web2 ~ 16:26:32]# yum install -y httpd
[root@web2 ~ 16:26:54]# echo Welcome to $(hostname) > /var/www/html/index.html 
[root@web2 ~ 16:26:54]# systemctl enable httpd.service --now
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.[root@web3 ~ 16:27:03]# systemctl disable nginx --now
Removed symlink /etc/systemd/system/multi-user.target.wants/nginx.service.
[root@web3 ~ 16:27:09]# systemctl enable httpd.service --now#验证 NFS 共享(web1 节点)
[root@web1 ~ 16:28:00]# showmount -e nfs
Export list for nfs:
/var/www 10.1.2.0/24# Web 节点挂载 NFS(web1、web2、web3 节点)
# 配置永久挂载(/etc/fstab)
[root@web1 ~ 16:35:19]# vim /etc/fstab 
#最后一行添加
【】echo 'nfs.laoma.cloud:/var/www /var/www/ nfs defaults         0 0' >> /etc/fstab
#或者
[root@web1 ~ 17:01:10]# cat /etc/fstab #
# /etc/fstab
# Created by anaconda on Fri Aug  1 15:45:32 2025
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=b54b3764-2b2b-4a76-a0ec-83e308071ae5 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
nfs.laoma.cloud:/var/www /var/www/ nfs defaults         0 0[root@web1 ~ 17:01:10]# mount /var/www/
[root@web1 ~ 17:02:20]# df -h /var/www/
文件系统                  容量  已用  可用 已用% 挂载点
nfs.laoma.cloud:/var/www   50G  1.6G   49G    4% /var/www#web2 3
[root@web2 ~ 16:26:54]# echo 'nfs.laoma.cloud:/var/www /var/www/ nfs defaults         0 0' >> /etc/fstab
[root@web2 ~ 16:42:10]# mount /var/www/
[root@web2 ~ 17:10:11]# df -h /var/www/
文件系统                  容量  已用  可用 已用% 挂载点
nfs.laoma.cloud:/var/www   50G  1.6G   49G    4% /var/www[root@web3 ~ 16:26:54]# echo 'nfs.laoma.cloud:/var/www /var/www/ nfs defaults         0 0' >> /etc/fstab
[root@web3 ~ 16:42:10]# mount /var/www/
[root@web3 ~ 17:10:11]# df -h /var/www/
文件系统                  容量  已用  可用 已用% 挂载点
nfs.laoma.cloud:/var/www   50G  1.6G   49G    4% /var/www#验证
[root@client2 ~ 16:58:02]# curl 10.1.8.13
Welcome to www.lyk.cloud
[root@client2 ~ 17:12:12]# curl 10.1.8.12
Welcome to www.lyk.cloud
[root@client2 ~ 17:12:15]# curl 10.1.8.11
Welcome to www.lyk.cloud

七、HAProxy 负载均衡部署(ha1、ha2 节点)

7.1 HAProxy 基础配置(ha1、ha2 节点)

[root@web1 ~ 17:09:54]# umount /var/www 
[root@web2 ~ 17:09:54]# umount /var/www 
[root@web3 ~ 17:09:54]# umount /var/www #验证
[root@client2 ~ 17:12:17]# curl 10.1.8.11
Welcome to web1.laoma.cloud
[root@client2 ~ 17:14:47]# curl 10.1.8.12
Welcome to web2.laoma.cloud
[root@client2 ~ 17:14:50]# curl 10.1.8.13
Welcome to web3.laoma.cloud
7.1.1 安装 HAProxy 并备份配置
[root@ha1-2 ~]# yum install -y haproxy
# 备份 haproxy 配置文件
cp /etc/haproxy/haproxy.cfg{,.ori}# 修改 haproxy 配置文件,最后添加以下内容
echo '
########### web 代理 ###########
frontend http_frontbind *:80use_backend http_back
backend http_backbalance     roundrobinserver  node1 10.1.8.11:80 checkserver  node2 10.1.8.12:80 checkserver  node3 10.1.8.13:80 check
' >> /etc/haproxy/haproxy.cfg# 启用并启动服务
systemctl enable haproxy.service --now#验证 HAProxy 负载效果(client2 节点)
[root@client2 ~ 17:14:51]# curl 10.1.8.14
Welcome to web1.laoma.cloud
[root@client2 ~ 17:24:28]# curl 10.1.8.14
Welcome to web2.laoma.cloud
[root@client2 ~ 17:24:30]# curl 10.1.8.14
Welcome to web3.laoma.cloud

7.2 HAProxy+Keepalived 高可用配置(ha1 为主、ha2 为备)

7.2.1 主节点配置(ha1 节点)
[root@ha1 ~ 17:25:35]# cp /etc/keepalived/keepalived.conf{,.bak}
[root@ha1 ~ 17:25:35]# vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {router_id ha1
}vrrp_instance nginx {state MASTERinterface ens33virtual_router_id 51priority 110advert_int 1authentication {auth_type PASSauth_pass lyk@123}virtual_ipaddress {10.1.8.100/24}
}[root@ha1 ~ 17:26:07]# systemctl enable keepalived.service --now
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
7.2.2 备节点配置(ha2 节点)
yum install -y keepalived ipvsadm
cp /etc/keepalived/keepalived.conf{,.bak}
vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {router_id ha2
}vrrp_instance nginx {state BACKUPinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass lyk@123}virtual_ipaddress {10.1.8.100/24}
}systemctl enable keepalived.service --now

八、集群功能与高可用测试

8.1 功能性测试(client2 节点)

[root@client1 ~ 17:30:02]# while true ;do curl -s www.laoma.cloud;sleep 1;done
1 2 3轮流
#好像没效果
[root@ha1 ~ 17:26:12]# systemctl stop keepalived.service#停web3
[root@web3 ~ 17:20:45]# systemctl stop httpd.service Welcome to web1.laoma.cloud
Welcome to web2.laoma.cloud......
没有web3了#web1 挂载
[root@web1 ~ 17:19:57]# mount -a
Welcome to web2.laoma.cloud
Welcome to www.lyk.cloud
Welcome to web2.laoma.cloud
....
web1变成www

#恢复web1 3
[root@web1 ~ 17:35:32]# umount /var/www 
[root@web3 ~ 17:34:32]# systemctl restart httpd.service 

8.2 高可用切换测试

8.2.1 负载均衡主节点故障测试
[root@client2 ~ 17:29:31]# while true ;do curl -s http://10.1.8.100;sleep 1;done
Welcome to web3.laoma.cloud
Welcome to web2.laoma.cloud
Welcome to web1.laoma.cloud
Welcome to web3.laoma.cloud
......

测试1:停止 ha1 上 keepalived 服务。

[root@ha1 ~ 17:32:39]# systemctl stop keepalived.service[root@client2 ~ 17:29:31]# while true ;do curl -s http://10.1.8.100;sleep 1;done
Welcome to web3.laoma.cloud
Welcome to web2.laoma.cloud
Welcome to web1.laoma.cloud
Welcome to web3.laoma.cloud
......
无影响

结果:客户端无感知故障,正常访问集群。

测试2:恢复 ha1 上 keepalived 服务。

[root@ha1 ~ 17:46:04]# systemctl start keepalived.service
**结果**:客户端无感知故障,正常访问集群。
负载均衡测试

测试1:停止 web2 上 httpd.service ,监控客户端访问情况。

[root@web2 ~ 17:48:27]# systemctl stop httpd.service 

结果:大概 15 秒,LVS 将 web2 从后端虚拟主机中剔除

测试2:启动 web2 上 httpd.service,监控客户端访问情况。

[root@web2 ~]# systemctl start httpd.service 

结果:大概 5 秒,LVS将web2加入后端虚拟主机中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/94921.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp H5禁止微信浏览器长按出菜单,只针对图片

一、问题描述 如图:uni-image>img,img {pointer-events: none;-webkit-pointer-events: none;-ms-pointer-events: none;-moz-pointer-events: none; }uni-image::before {content: ;position: absolute;top: 0;bottom: 0;left: 0;right: 0;background: transpa…

【机器学习】 15 Gaussian processes

本章目录 15 Gaussian processes 515 15.1 Introduction 515 15.2 GPs for regression 516 15.2.1 Predictions using noise-free observations 517 15.2.2 Predictions using noisy observations 518 15.2.3 Effect of the kernel parameters 519 15.2.4 Estimating the kern…

Vue加载速度优化,verder.js和element.js加载速度慢解决方法

1. 使用CDN 这里把常用的vue、vuex、elementui、echarts、axios都引入成cdn的方式 1、在index.html引入CDN 找到public/index.html在上方引入下边的cdn。 [!NOTE] 引入script的时候,一定要把vue.js放到最上边,最先引入,不然后边的js加载会…

49.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--Refit跨服务调用

Refit是一个用于.NET平台的REST库,它可以将REST API转换为实时类型安全的接口。通过Refit,我们可以轻松实现微服务之间的跨服务调用,使服务间通信变得更加简单和类型安全。本文将介绍如何在我们的项目中使用Refit来实现微服务间的通信。 一、什么是Refit Refit是一个强大的REST…

日志ELK、ELFK、EFK

一.ELK架构Elasticsearch Logstash Kibana 数据库日志处理日志显示1.logstash的使用(1)input:输入(2)filter:处理(3)output:输出2.ELFK架构Filebeat-->Elasticsearc…

【CUDA进阶】MMA分析Bank Conflict与Swizzle(下)

目录前言1. bank conflict 分析2. 通过 padding 解决 bank conflict3. mma 搭配 wmma 实现矩阵乘法计算3.1 代码实现3.2 补充:stmatrix_sync 函数分析3.3 补充:__shfl_sync 函数详解4. swizzle 原理讲解5. swizzle 实现思路讲解结语下载链接参考前言 学习…

天气查询系统

项目要求 项目知识点 问题与解决 代码分部 结果展示 项目要求 1.显示天气预报系统界面 2.系统可以通过选择城市配置获取不同城市天气信息 3.查看实时的天气信息 (当前温度、最高温度、最低温度、当前湿度、最高湿度、最低湿度、风向、风力、风级等信息&#x…

三重积分的对称性

文章目录前言柱面球面前言 规律作息 柱面 太牛了。我完全看不懂。实际上就类似于极坐标系。 球面 看到这么多东西,我真害怕。今天是 8.30 ,不管 9.10 有没有复习完概率的强化,我都一定要开始套卷,还有专业课的复习。ϕ\phiϕ…

深入理解 RabbitMQ:从底层原理到实战落地的全维度指南

引言: 本文总字数:约 18500 字预计阅读时间:45 分钟 为什么我们需要 RabbitMQ? 在当今分布式系统架构中,消息队列已成为不可或缺的核心组件。想象一下,当你在电商平台下单时,系统需要处理库存…

宽带有丢包,重传高的情况怎么优化

宽带丢包和重传率高是一个非常影响网络体验的常见问题。它会导致游戏卡顿、视频通话模糊、网页加载慢等。别担心,我们可以按照从易到难的顺序,系统地排查和优化。请遵循以下步骤:第一步:基础排查(自己动手,…

Kotlin 协程之Channel 的高阶应用

前言 了解了 Channel 的基础概念和基本使用 后,我们再来看一看 Channel 的特性以及高阶应用。 Channel 是"热流" 热流概念 Channel 是热流(Hot Stream),具备以下特性: 数据的生产和消费是两套独立的流程 …

PostgreSQL表空间(Tablespace)作用(管理数据库对象的存储位置)(pg_default、pg_global)

文章目录**1. 灵活的数据存储管理**- **逻辑与物理分离**:表空间为数据库对象(如表、索引)提供了一个逻辑名称与物理存储路径的映射。用户无需直接操作底层文件路径,只需通过表空间名称管理数据。- **多数据库共享表空间**&#x…

Ansible 核心运维场景落地:YUM 仓库、SSH 公钥、固定 IP 配置技巧

1:如何一次性验证所有主机能否被 Ansible 访问? 答:使用临时命令:ansible all -m ansible.builtin.ping或验证 sudo 是否正常:ansible all -m ansible.builtin.ping --become -K2:如何用 Ansible 统一配置…

rman导致的报错ORA-27037: unable to obtain file status

有套3节点的11204集群环境,在db2上配置了rman备份,今天例行检查时发现db1和db3上不定期有报错,报错如下:Control file backup creation failed:failure to open backup target file /u01/app/oracle/product/11.2.0/db_1/dbs/snap…

Kubernetes 与 GitOps 的深度融合实践指南

前言:在云原生技术飞速发展的今天,Kubernetes(简称 K8s)已成为容器编排领域的事实标准,而 GitOps 作为一种基于 Git 的云原生运维理念,正与 K8s 深度融合,为企业实现自动化、可追溯、可审计的应…

REST-assured 接口测试编写指南

REST-assured 简介 REST-assured 是一个基于 Java 的 DSL(领域特定语言)库,专门用于简化 RESTful API 测试的编写。它提供了流畅的 API 接口,使得测试代码更加易读易写,支持 JSON 和 XML 等多种响应格式的验证。 基本环…

内网应用如何实现外网访问?外地通过公网地址访问内网服务器的设置方法

一、内网应用程序在外网需要连接访问遇到的问题我们经常需要在内网中部署服务,比如一个 Web 服务器或者数据库,但由于本地没有公网IP,这些服务无法直接从外地公网访问。如自己家里的监控系统,在家时能查看,但出门在外就…

ubuntu24.04 QT中配置opencv4.12

假如生成的opencv路径是:/usr/local/opencv4.12QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINE…

客户端是否都需要主动发送`FindService`报文来寻找服务

<摘要> 在AUTOSAR SOME/IP-SD的服务发现流程中&#xff0c;客户端是否需要主动发送FindService报文来寻找服务&#xff0c;是理解服务订阅逻辑的一个关键。这将直接影响到事件组订阅的触发时机和网络行为。下文将结合规范&#xff0c;对这一问题进行深入剖析。 <解析&…

Go语言流式输出实战:构建高性能实时应用

什么是流式输出&#xff1f; 流式输出&#xff08;Streaming Output&#xff09;是一种服务器推送技术&#xff0c;允许数据在生成过程中逐步发送到客户端&#xff0c;而不是等待所有数据准备就绪后一次性发送。这种技术显著改善了用户体验&#xff0c;特别是在处理大量数据或长…