一、实验环境:
需要6台服务器:
192.168.7.10 还原新系统,开机;node1
192.168.7.11还原新系统,开机;node2
192.168.7.12 还原新系统,添加新网卡VMnet1,开机; web1
192.168.7.13 还原新系统,添加新网卡VMnet1,开机; web2
192.168.7.14还原新系统,添加新网卡VMnet1,开机; web3
192.168.7.15还原新系统,添加一块SCSI的100G硬盘,开机;nfs






二、修改server 10、11主机名为node1、node2,server12、server13主机名为web1、web2、web3,server15为nfs:






三、六台同时关闭sestatus和防火墙:

四、六台需同步阿里云时间:




五、node1、node2安装keepalived(目的实现高可用和负载均衡)
[root@node1 ~]# dnf -y install keepalived 安装keepalived(作用:实现高可用和负载均衡)
[root@node2 ~]# dnf -y install keepalived 安装keepalived(作用:实现高可用和负载均衡)
六、备份keepalived配置文件及设置192.168.7.254的服务器为主,优先级为100
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak(备份keepalived的配置文件)
[root@node1 ~]# vim /etc/keepalived/keepalived.conf 编辑keepalived的配置文件
! Configuration File for keepalived
global_defs {
notification_email {
2823629811@qq.com 写入通知邮箱
}
router_id LVS_DEVEL 路由的ID名称
}
vrrp_instance VI_1 {
state MASTER 状态是主
interface ens160 网卡接口ens160
virtual_router_id 51
priority 100 优先级100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.7.254 虚拟IP 192.168.7.25490简称VIP
}
}
virtual_server 192.168.7.254 80 { 虚拟服务器的名称192.168.7.254;端口80
delay_loop 6
lb_algo rr 算法采用轮询 rr
lb_kind DR 调度器的类型为直接路由 简称DR
persistence_timeout 50
protocol TCP
web1服务器
real_server 192.168.7.12 80 { 定义后台真实的web服务器的IP:192.168.7.12;端口80
weight 1 权重1
TCP_CHECK { TCP协议的检查
connect_timeout 3 连接操作时间3秒
retry 3 重试3秒
delay_before_retry 3 延期重试3秒
connect_port 80 连接端口80
}
} web2服务器
real_server 192.168.7.13 80 { 定义后台真实的web服务器的IP:192.168.7.13;端口80
weight 1 权重1
TCP_CHECK{
connect_timeout 3
retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.7.14 80 { web3服务器
weight 1
TCP_CHECK{
connect_timeout 3
retry 3
delay_before_retry 3
connect_port 80
}
}
}
七、将node1的配置文件远程复制到node2上:
[root@node1 ~]# scp /etc/keepalived/keepalived.conf 192.168.7.11:/etc/keepalived/keepalived.conf 将keepalived的配置文件远程复制到192.168.7.11的配置文件目录下(scp远程复制)
八、node1上重启keepalived,查看ens160网卡信息

[root@node1 ~]#systemctl restart keepalived
[root@node1 ~]#systemctl enable --now keepalived
[root@node1 ~]#ip addr
九、node2上安装keepalived,设置192.168.7.254的服务器为主,优先级为100
[root@node 2]# dnf -y install keepalived
[root@node2 ~]# vim /etc/keepalived/keepalived.conf 编辑keep alive的配置文件
11 state BACKUP 状态是备份
14 priority 90 优先级是90(必须低于主的优先级)
十、node2重启keepalived
[root@node2 ~]# systemctl restart keepalived
[root@node2 ~]# systemctl enable keepalived
[root@node2 ~]# ip addr

十一、在真实机上ping 192.168.7.254

十二、node1关机,测试ping192.168.7.254通不通


十二 (2)、Node2(192.168.7.11)和最后一台nfs(192.168.7.15)关机
十三、web1、web2、web3进入网卡配置文件目录
cd /etc/NetworkManager/system-connections/(进入网卡配置文件目录)


[root@web1 system-connections] ls
[root@web1 system-connections] ip addr
十四、当前系统中的 ens160.nmconnection 文件复制一份,并将复制后的文件命名为 ens192.nmconnection

十五、web1、web2、web3下编辑ens192的网卡:



[connection]
id=ens192(修改ID为192)
uuid=820bcdf1-f4c3-3a49-a2fa-a0489c823071(网卡改最后一位)
type=ethernet
autoconnect-priority=-999
interface-name=ens192(切口名称为ens192)
[ethernet]
[ipv4]
address1=192.168.10.12/24(网址,去掉网关)
#dns=114.114.114.114;(注释掉)
method=manual(方式为手动)
十六、重启web1、web2、web3
[root@web1~]reboot
[root@web1~] ip addr

十七、创建lvs脚本
vim /usr/local/sbin/lvs_dir_rs.sh(创建lvs脚本)

#!/bin/bash #(shell声明)
vip=192.168.7.254 #(声明vip的变量是192.168.7.254)
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up #(作用:控制内核相应ARP请求;1仅当arp(地址解析)请求目标IP精确匹配本地接口的IP时,才相应arp)
route add -host $vip lo:0 #(向回环地址1中添加主机的路由192.168.7.254)
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore #(请求目标IP精确匹配本地IP接口ID时才相应ARP)
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce #(控制内核如何发送arp通告;2 有限选择与目标网络配皮的本地地址,作为源IP发送arp. 针对本地回环地址)
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore #(请求目标IP精确匹配本地IP接口ID时才相应ARP))
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce #(控制内核如何发送arp通告;2 有限选择与目标网络配皮的本地地址,作为源IP发送arp. 针对所有物理地址)
sysctl -p &>/dev/null #(配置生效)
前俩只针对回环地址
后俩针对所有物理接口
第一步:lvs流量路径,客户机发出请求
第二步:lvs的vip相应arp请求
第三步:真实服务器的目标IP为vip,原IP为客户端
十八、web1、web2、web3给lvs脚本添加执行权限、运行lvs脚本
[root@web1~]chmod +x /usr/local/sbin/lvs_dir_rs.sh(给lvs脚本添加执行权限)
[root@web1~]sh /usr/local/sbin/lvs_dir_rs.sh(运行lvs脚本)
十九、web1、web2、web3查看IP地址:

二十、web1、web2、web3将开机启动配置文件添加执行权限

[root@web1~]chmod +x /etc/rc.d/rc.local(将开机启动配置文件添加执行权限
[root@web1~]ll /etc/rc.d/rc.local(查看开机启动配置文件权限)
[root@web1~]echo "/usr/local/sbin/lvs_dir_rs.sh" >> /etc/rc.d/rc.local(将运行脚本的命令加到开机启动配置 )
二十一、web1、web2、web3安装阿帕奇,启动阿帕奇并设置阿帕奇开机启动
dnf -y install httpd(安装阿帕奇)
systemctl enable --now httpd(启动阿帕奇并设置开机启动)
二十二、创建测试页面

echo "11111" > /var/www/html/index.html(创建一个测试页面)
echo "22222" > /var/www/html/index.html(创建一个测试页面)
echo "33333" > /var/www/html/index.html(创建一个测试页面)
二十三、三台web上轮询 虚拟IP:192.168.7.254:

二十四、验证,关闭node1节点测试:
方法一:本机验证

方法二:7.15虚拟机验证

方法三:win11虚拟机验证


二十五、nfs机器上对sdb磁盘进行分区:
gdisk /dev/sdb(对sdb磁盘进行分区)
Command (? for help): n(新建分区)
Partition number (1-128, default 1): 1(创建第一个主导分区)
Command (? for help): w(保存并退出)
Do you want to proceed? (Y/N): y(写入进程吗?是的)
二十六、格式化sdb1磁盘、创建nfs目录
mkfs.xfs /dev/sdb1(格式化sdb硬盘)
mkdir /nfs(创建ns目录)
二十七、编辑开机挂载配置文件
vim /etc/fstab (编辑开机挂载配置文件)

/dev/sdb1 /nfs xfs defaults 0 0
(将sdb1磁盘挂载到nfs ,使用xfs系统,默认参数,不备份,不检查磁盘)
systemctl daemon-reload(重新加载进程)
mount -a(重新加载挂载项)
df -hT(查看磁盘容量)
二十八、安装nfs、启动nfs并设置开机启动
dnf -y install nfs-utils(安装nfs)
systemctl enable --now nfs-server(启动nfs并设置开机启动)
二十九、进入到ens160网卡下:
cd /etc/NetworkManager/system-connections/ens160.nmconnetcion
192.168.7.15改成192.168.10.15



三十、进入到nfs服务器下,创建data1目录,编辑nfs配置文件:
mkdir /nfs/data1(创建data1目录)
vim /etc/exports(编辑nfs配置文件)
/nfs/data1 192.168.10.0/24(rw,no_root_squash)(将data目录共享给192.168.10.0网段)
三十一、将nfs发布出去、查看挂载项
exportfs -avr(将nfs发布出去)
-a(表示对所有共享目录执行操作(挂载或卸载))
-r(重新导出所有目录)
-v(显示详细操作过程)
showmount -e(查看挂载项)
三十二、web1、web2、web3安装nfs
[root@web1\web2\web3]dnf -y install nfs-utils(安装nfs)
[root@web1\web2\web3]showmount -e 192.168.10.15(查看挂载项)
三十三、nfs进入data1目录下创建一个测试页面
[root@nfs] cd /nfs/data1/(进入data1目录)
[root@nfs data1] echo “<h1>NFS Server 192.168.10.15</h1>” > index.html(创建一个测试页面)
三十四、web1\web2\web3(编辑fstab)
vim /etc/fstab(编辑fstab)
192.168.10.15:/nfs/data1 /var/www/html nfs defaults 0 0
(将192.168.10.15nfs目录挂载到阿帕奇网站目录下 文件系统是nfs ,默认参数,不备份,不检查磁盘)
systemctl daemon-reload(重新加载进程)
mount -a(重新加载挂载项)
df -hT(查看磁盘)
三十五、测试





