网站不足,360安全浏览器,设计师互动平台,如何用iis部署网站目录 概述
一、keepalived安装
二、配置文件
三、 其他配置项说明
四、名词解释
五、高阶使用
1、介绍
2、keepalived主要作用
3、工作在三层、四层和七层原理
4、健康状态检测方式
4.1 HTTP服务状态检测
4.2 TCP端口状态检测#xff08;使用TCP端口服务基本上都可…目录 概述
一、keepalived安装
二、配置文件
三、 其他配置项说明
四、名词解释
五、高阶使用
1、介绍
2、keepalived主要作用
3、工作在三层、四层和七层原理
4、健康状态检测方式
4.1 HTTP服务状态检测
4.2 TCP端口状态检测使用TCP端口服务基本上都可以使用
4.3 邮件服务器SMTP检测
4.4 用户自定义脚本检测real_server服务状态
5、状态转换通知功能
5.1 实例状态通知
5.2 虚拟服务器检测通知
六、项目实际中配置 概述
Keepalived是一个基于VRRP协议虚拟冗余路由协议来实现的LVS服务高可用方案可以利用其来避免单点故障。一个LVS服务会有2台服务器运行Keepalived一台为主服务器MASTER一台为备份服务器BACKUP但是对外表现为一个虚拟IP主服务器会发送特定的消息心跳检测heartbeat给备份服务器当备份服务器收不到这个消息的时候即主服务器宕机的时候 备份服务器就会接管虚拟IP继续提供服务从而保证了高可用性。
Keepalived的作用是检测服务器的状态如果有一台web服务器死机或工作出现故障Keepalived将检测到并将有故障的服务器从系统中剔除同时使用其他服务器代替该服务器的工作当服务器工作正常后Keepalived自动将服务器加入到服务器群中。 一、keepalived安装
[rootweb1 ~]# yum install -y epel-release
[rootweb1 ~]# yum install keepalived nginx
配置并启动
[rootweb2 keepalived]# echo web2 /usr/share/nginx/html/index.html
[rootweb2 keepalived]# systemctl enable --now keepalived.service nginx.service
验证
[rootweb1 keepalived]# ip a
2: ens33: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:c8:dc:33 brd ff:ff:ff:ff:ff:ffinet 192.168.115.111/24 brd 192.168.115.255 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.115.250/32 scope global ens33
##停掉master查看backup
[rootweb1 keepalived]# systemctl stop keepalived.service
[rootweb2 keepalived]# ip a
2: ens33: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:8a:4a:79 brd ff:ff:ff:ff:ff:ffinet 192.168.115.112/24 brd 192.168.115.255 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.115.250/32 scope global ens33
二、配置文件
global_defs {notification_email { #指定keepalived在发生切换时需要发送email到的对象一行一个sysadminfire.loc}
notification_email_from Alexandre.Cassenfirewall.loc #指定发件人smtp_server localhost #指定smtp服务器地址smtp_connect_timeout 30 #指定smtp连接超时时间router_id LVS_DEVEL #运行keepalived机器的一个标识
}
vrrp_sync_group VG_1{ #监控多个网段的实例
group {
inside_network #实例名
outside_network
}
notify_master /path/xx.sh #指定当切换到master时执行的脚本
notify_backup /path/xx.sh #指定当切换到backup时执行的脚本
notify_fault path/xx.sh VG_1 #故障时执行的脚本
notify /path/xx.sh
smtp_alert #使用global_defs中提供的邮件地址和smtp服务器发送邮件通知
}
Keepalived在转换状态时会依照状态来呼叫 当进入Master状态时会呼叫notify_master 当进入Backup状态时会呼叫notify_backup 当发现异常情况时进入Fault状态呼叫notify_fault
vrrp_instance inside_network {state BACKUP #指定那个为master那个为backup如果设置了nopreempt这个值不起作用主备靠priority决定interface eth0 #设置实例绑定的网卡 VRRP心跳包从哪块网卡发出dont_track_primary #忽略vrrp的interface错误默认不设置track_interface{ #设置额外的监控里面那个网卡出现问题都会切换eth1eth2}mcast_src_ip #发送多播包的地址如果不设置默认使用绑定网卡的primary ipgarp_master_delay #在切换到master状态后延迟进行gratuitous ARP请求virtual_router_id 50 #VPID标记 相同VRID的LVS属于同一组根据优先级选举出一个主priority 99 #优先级高优先级竞选为masteradvert_int 10 #检查间隔默认1秒 VRRP心跳包报文的发送周期单位为s 组播信息发送间隔两个节点设置必须一样实际并不一定完全是10秒测试结果是小于10秒的随机值nopreempt #设置为不抢占 注这个配置只能设置在backup主机上而且这个主机优先级要比另外一台高
首先nopreemt必须在state为BACKUP的节点上才生效因为是BACKUP节点决定是否来成为MASTER的其次要实现类似于关闭auto failback的功能需要将所有节点的state都设置为BACKUP或者将master节点的priority设置的比BACKUP低。我个人推荐使用将所有节点的state都设置成BACKUP并且都加上nopreempt选项这样就完成了关于autofailback功能当想手动将某节点切换为MASTER时只需去掉该节点的nopreempt选项并且将priority改的比其他节点大然后重新加载配置文件即可等MASTER切过来之后再将配置文件改回去再reload一下。 preempt_delay #抢占延时默认5分钟debug #debug级别authentication { #设置认证auth_type PASS #认证方式auth_pass 111111 #认证密码密码只识别前8位}virtual_ipaddress { #设置vip192.168.202.200}
}
virtual_server 192.168.202.200 23 {delay_loop 6 #健康检查时间间隔实际并不一定完全是6秒测试结果是小于6秒的随机值lb_algo rr #lvs调度算法rr|wrr|lc|wlc|lblc|sh|dhlb_kind DR #负载均衡转发规则NAT|DR|TUNpersistence_timeout 5 #会话保持时间protocol TCP #使用的协议persistence_granularity NETMASK #lvs会话保持粒度virtualhost string #检查的web服务器的虚拟主机host头 sorry_serverIPADDR port #备用机所有realserver失效后启用real_server 192.168.200.5 23 {weight 1 #默认为1,0为失效inhibit_on_failure #在服务器健康检查失效时将其设为0而不是直接从ipvs中删除notify_up string | quoted-string #在检测到server up后执行脚本notify_down string | quoted-string #在检测到server down后执行脚本TCP_CHECK {connect_timeout 3 #连接超时时间nb_get_retry 3 #重连次数delay_before_retry 3 #重连间隔时间connect_port 23 #健康检查的端口的端口bindto ip #检查的IP地址}HTTP_GET | SSL_GET{url{ #检查url可以指定多个path /digest string #检查后的摘要信息status_code 200 #检查的返回状态码301 302 }connect_port portbindto IPADDconnect_timeout 5nb_get_retry 3delay_before_retry 2}
SMTP_CHECK{host{connect_ip IP ADDRESSconnect_port port #默认检查25端口bindto IP ADDRESS}connect_timeout 5retry 3delay_before_retry 2helo_name string | quoted-string #smtp helo请求命令参数可选}MISC_CHECK{misc_path string | quoted-string #外部脚本路径misc_timeout #脚本执行超时时间misc_dynamic #如设置该项则退出状态码会用来动态调整服务器的权重返回0 正常不修改返回1检查失败权重改为0返回2-255正常权重设置为返回状态码-2}}
三、 其他配置项说明
keepalived 的核心就是将IPVS配置成高可用生成ipvs规则来完成负载均衡效果。 virtual server 虚拟服务的定义 virtual_server IP port #定义虚拟主机IP地址及其端口 virtual_server fwmark int #ipvs的防火墙打标实现基于防火墙的负载均衡集群 virtual_server group string #将多个虚拟服务器定义成组将组定义成虚拟服务 lb_algo{rr|wrr|lc|wlc|lblc|lblcr} #定义LVS的调度算法 lb_kind {NAT|DR|TUN} #定义LVS的模型 presitence_timeout #定义支持持久连接的时长 protocol TCP #规则所能支持的协议 sorry_server #如果所有real_server都出现故障了利用此返回信息
四、名词解释
虚拟路由器 由一个Master路由器和多个Backup路由器组成。主机将虚拟路由器当作默认网关;
VRID虚拟路由器的标识。有相同VRID的一组路由器构成一个虚拟路由器;
Master路由器虚拟路由器中承担报文转发任务的路由器;
Backup路由器 Master路由器出现故障时能够代替Master路由器工作的路由器;
虚拟IP 地址虚拟路由器的IP 地址。一个虚拟路由器可以拥有一个或多个IP地址;
IP地址拥有者 接口IP地址与虚拟IP地址相同的路由器被称为IP地址拥有者;
虚拟MAC地址 一个虚拟路由器拥有一个虚拟MAC地址。通常情况下虚拟路由器回应ARP请求使用的是虚拟MAC地址只有虚拟路由器做特殊配置的时候才回应接口的真实MAC地址;
优先级VRRP根据优先级来确定虚拟路由器中每台路由器的地位;
非抢占方式如果Backup路由器工作在非抢占方式下则只要Master路由器没有出现故障Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器;
抢占方式如果Backup路由器工作在抢占方式下当它收到VRRP报文后会将自己的优先级与通告报文中的优先级进行比较。如果自己的优先级比当前的Master路由器的优先级高就会主动抢占成为Master路由器否则将保持Backup状态
五、高阶使用
1、介绍
Keeaplived 主要有两种应用场景一个是通过配置keepalived结合ipvs做到负载均衡LVSKeepalived。另一个是通过自身健康检查、资源接管功能做高可用双机热备实现故障转移。
以下内容主要针对KeepalivedMySQL双主实现双机热备为根据主要讲解keepalived的状态转换通知功能利用此功能可有效加强对MySQL数据库监控。
2、keepalived主要作用
keepalived采用VRRPvirtual router redundancy protocol虚拟路由冗余协议以软件的形式实现服务器热备功能。通常情况下是将两台linux服务器组成一个热备组master-backup同一时间热备组内只有一台主服务器master提供服务同时master会虚拟出一个共用IP地址VIP这个VIP只存在master上并对外提供服务。如果keepalived检测到master宕机或服务故障备服务器backup会自动接管VIP成为masterkeepalived并将master从热备组移除当master恢复后会自动加入到热备组默认再抢占成为master起到故障转移功能。
3、工作在三层、四层和七层原理
Layer3 工作在三层时keepalived会定期向热备组中的服务器发送一个ICMP数据包来判断某台服务器是否故障如果故障则将这台服务器从热备组移除。
Layer4 工作在四层时keepalived以TCP端口的状态判断服务器是否故障比如检测mysql 3306端口如果故障则将这台服务器从热备组移除。
! Configuration File for keepalivedglobal_defs {notification_email { example163.com } notification_email_from exampleexample.comsmtp_server 127.0.0.1smtp_connect_timeout 30router_id MYSQL_HA}vrrp_instance VI_1 { state BACKUPinterface eth1virtual_router_id 50 nopreempt #当主down时备接管主恢复不自动接管 priority 100 advert_int 1authentication { auth_type PASS ahth_pass 123 } virtual_ipaddress { 192.168.1.200 #虚拟IP地址}virtual_server 192.168.1.200 3306 { delay_loop 6# lb_algo rr # lb_kind NATpersistence_timeout 50 protocol TCP real_server 192.168.1.201 3306 { #监控本机3306端口 weight 1 notify_down /etc/keepalived/kill_keepalived.sh #检测3306端口为down状态就执行此脚本只有keepalived关闭VIP才漂移 TCP_CHECK { #健康状态检测方式可针对业务需求调整TTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECKconnect_timeout 3 nb_get_retry 3 delay_before_retry 3 } #MISC_CHECK { ## 使用 MISC_CHECK 方式自定义脚本做健康检查# misc_path /etc/keepalived/check.sh ## 检测脚本# misc_timeout 10 ## 执行脚本的超时时间# misc_dynamic ## 根据退出状态码动态调整服务器的权重# }
}}
Layer7工作在七层时keepalived根据用户设定的策略判断服务器上的程序是否正常运行如果故障则将这台服务器从热备组移除。 ! Configuration File for keepalivedglobal_defs {notification_email {example163.com}notification_email_from exampleexample.com smtp_server 127.0.0.1smtp_connect_timeout 30router_id MYSQL_HA}vrrp_script check_nginx { script /etc/keepalived/check_nginx.sh #检测脚本interval 2 #执行间隔时间}vrrp_instance VI_1 {state BACKUPinterface eth1virtual_router_id 50nopreempt #当主down时备接管主恢复不自动接管priority 100 advert_int 1authentication { auth_type PASS ahth_pass 123 } virtual_ipaddress {192.168.1.200 #虚拟IP地址 } track_script { #在实例中引用脚本 check_nginx } }
脚本内容如下 # cat /etc/keepalived/check_nginx.shCount1netstat -antp |grep -v grep |grep nginx |wc -lif [ $Count1 -eq 0 ]; then/usr/local/nginx/sbin/nginxsleep 2 Count2netstat -antp |grep -v grep |grep nginx |wc -lif [ $Count2 -eq 0 ]; then service keepalived stop elseexit 0fi else exit 0fi
#也可以简单如下#!/bin/bash[[ ps -C nginx --no-header |wc -l -eq 0 ]] exit 1 || exit 0# 如果没有nginx进程 返回错误状态1 #if [ ps -C nginx --no-header |wc -l -eq 0 ];then# echo $(date) nginx pid not found/etc/keepalived/keepalived.log# #killall keepalived#fi
#在keepalived主机中运行如下脚本用来检测本机的nginx进行状态
vim start_keepalived.sh
#!/bin/bash
while true
doif pgrep nginx /dev/null;thensystemctl start keepalivedfisleep 3
done
#mysql 检测脚本如下#!/bin/bash[[ ps -C mysqld --no-header |wc -l -eq 0 ]] exit 1 || exit 0# 如果没有nginx进程 返回错误状态1 if [ ps -C nginx --no-header |wc -l -eq 0 ];thenecho $(date) nginx pid not found/etc/keepalived/keepalived.logkillall keepalivedfi
4、健康状态检测方式
4.1 HTTP服务状态检测
HTTP_GET或SSL_GET { url { path /index.html #检测url可写多个 digest 24326582a86bee478bac72d5af25089e #检测效验码 #digest效验码获取方法genhash -s IP -p 80 -u http://IP/index.html status_code 200 #检测返回http状态码 } connect_port 80 #连接端口 connect_timeout 3 #连接超时时间 nb_get_retry 3 #重试次数delay_before_retry 2 #连接间隔时间}
4.2 TCP端口状态检测使用TCP端口服务基本上都可以使用 TCP_CHECK { connect_port 80 #健康检测端口默认为real_server后跟端口 connect_timeout 5 nb_get_retry 3 delay_before_retry 3}
4.3 邮件服务器SMTP检测
SMTP_CHECK { #健康检测邮件服务器smtp host { connect_ip connect_port } connect_timeout 5 retry 2 delay_before_retry 3 hello_name mail.domain.com }
4.4 用户自定义脚本检测real_server服务状态 MISC_CHECK { misc_path /script.sh #指定外部程序或脚本位置 misc_timeout 3 #执行脚本超时时间 !misc_dynamic #不动态调整服务器权重weight如果启用将通过退出状态码动态调整real_server权重值# misc_dynamic ## 根据退出状态码动态调整服务器的权重}
5、状态转换通知功能
keepalived主配置邮件通知功能默认当real_server宕机或者恢复时才会发出邮件。有时我们更想知道keepalived的主服务器故障切换后VIP是否顺利漂移到备服务器MySQL服务器是否正常那写个监控脚本吧可以但没必要因为keepalived具备状态检测功能所以我们直接使用就行了。
主配置默认邮件通知配置模板如下global_defs # Block id{ notification_email # To: { adminexample1.com ... }
# From: from address that will be in header notification_email_from adminexample.comsmtp_server 127.0.0.1 # IP smtp_connect_timeout 30 # integer, secondsrouter_id my_hostname # string identifying the machine, # (doesnt have to be hostname).
5.1 实例状态通知
a) notify_master 节点变为master时执行
b) notify_backup 节点变为backup时执行
c) notify_fault 节点变为故障时执行
5.2 虚拟服务器检测通知
a) notify_up 虚拟服务器up时执行
b) notify_down 虚拟服务器down时执行
示例! Configuration File for keepalivedglobal_defs { notification_email {example163.com } notification_email_from exampleexample.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id MYSQL_HA} vrrp_instance VI_1 { state BACKUP interface eth1virtual_router_id 50 nopreempt #当主down时备接管主恢复不自动接管 priority 100advert_int 1 authentication { auth_type PASS ahth_pass 123 } virtual_ipaddress { 192.168.1.200 } notify_master /etc/keepalived/to_master.sh notify_backup /etc/keepalived/to_backup.shnotify_fault /etc/keepalived/to_fault.sh } virtual_server 192.168.1.200 3306 { delay_loop 6 persistence_timeout 50 protocol TCP real_server 192.168.1.201 3306 { weight 1 notify_up /etc/keepalived/mysql_up.sh notify_down /etc/keepalived/mysql_down.sh TCP_CHECK {connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
状态参数后可以是bash命令也可以是shell脚本内容根据自己需求定义以上示例中所涉及状态脚本如下 当服务器改变为主时执行此脚本
yum install -y sendmail mailx
systemctl enabled --now sendmail # cat to_master.sh #!/bin/bashDate$(date %F %T)IP$(ifconfig eth0 |grep inet addr |cut -d: -f2 |awk {print $1})Mailz13516052620163.comecho $Date $IP change to master. |mail -s Master-Backup Change Status $Mail 当服务器改变为备时执行此脚本 # cat to_backup.sh#!/bin/bashDate$(date %F %T)IP$(ifconfig eth0 |grep inet addr |cut -d: -f2 |awk {print $1})Mailbaojingtongzhi163.comecho $Date $IP change to backup. |mail -s Master-Backup Change Status $Mail
当服务器改变为故障时执行此脚本 # cat to_fault.sh#!/bin/bashDate$(date %F %T)IP$(ifconfig eth0 |grep inet addr |cut -d: -f2 |awk {print $1})Mailbaojingtongzhi163.comecho $Date $IP change to fault. |mail -s Master-Backup Change Status $Mail 当检测TCP端口3306为不可用时执行此脚本杀死keepalived实现切换
# cat mysql_down.sh#!/bin/bashDate$(date %F %T)IP$(ifconfig eth0 |grep inet addr |cut -d: -f2 |awk {print $1})Mailbaojingtongzhi163.compkill keepalivedecho $Date $IP The mysql service failure,kill keepalived. |mail -s Master-Backup MySQL Monitor $Mail 当检测TCP端口3306可用时执行此脚本 # cat mysql_up.sh#!/bin/bashDate$(date %F %T)IP$(ifconfig eth0 |grep inet addr |cut -d: -f2 |awk {print $1})Mailbaojingtongzhi163.comecho $Date $IP The mysql service is recovery. |mail -s Master-Backup MySQL Monitor $Mail
六、项目实际中配置
检测nginx配置
global_defs {router_id masterenable_script_security
}
vrrp_script check_nginx {script /etc/keepalived/check_nginx.shinterval 1weight -20
}
vrrp_instance VI_1 {state MASTERinterface eth2virtual_router_id 201priority 100advert_int 3authentication {auth_type PASSauth_pass 1114}
track_script {check_nginx}virtual_ipaddress {10.239.167.8}
}
vrrp_instance VI_2 {state BACKUPinterface eth0virtual_router_id 202priority 100advert_int 3authentication {auth_type PASSauth_pass 1114}
track_script {check_nginx}virtual_ipaddress {10.1.19.105}
}
2
! Configuration File for keepalived
global_defs {router_id LVS_HTTPscript_user root
}
#vrrp_script check_keepalived {
# script /etc/keepalived/check_keepalived.sh
# interval 2
# weight 3
#}
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 21nopreemptpriority 130advert_int 3authentication {auth_type PASSauth_pass 1111}#track_script {# check_keepalived#}virtual_ipaddress {10.1.13.27/24}#notify_master /etc/keepalived/master.sh ethxx #切换主执行#notify_backup /etc/keepalived/slave.sh eth0 ##切换备执行#notify_stop /etc/keepalived/stop.sh eth0 ##
}
virtual_server 10.1.13.27 26000 { #设置虚拟服务器的 IP 和端口用空格隔开delay_loop 6 #设置运行情况检查时间单位是秒
# lb_algo rr #负载调度算法(轮询)
# lb_kind DR #负载均衡机制(NAT、TUN、DR)persistence_timeout 50 #会话保持时间(秒)protocol TCP #转发协议类型real_server 10.1.13.136 26000 { #配置服务节点weight 90 #配置服务节点的权重notify_down /etc/keepalived/failoverdb.sh #虚拟服务故障响应脚本TCP_CHECK { #使用TCP_CHECK方式进行健康检查connect_timeout 10 #10秒无响应即超时delay_before_retry 3 #重试间隔时间}#MISC_CHECK { ## 使用 MISC_CHECK 方式自定义脚本做健康检查# misc_path /etc/keepalived/check.sh ## 检测脚本# misc_timeout 10 ## 执行脚本的超时时间# misc_dynamic ## 根据退出状态码动态调整服务器的权重# }}
} 在Openeluer系统中以上环境将存储系统更改为NFS构建一个双机热备环境该如何操作
构建高可用NFS共享存储方案基于Keepalived NFS on OpenEuler
实验环境规划
操作系统OpenEuler 22.03 LTS 1. VIP主机 (Keepalived Master)IP: 192.168.1.100 2. 备份主机 (Keepalived Slave)IP: 192.168.1.101 3. 客户端主机IP: 192.168.1.102 4. 虚拟IP (VIP)192.168.1.200 5. 共享目录/data/nfs_share 配置步骤详解OpenEuler系统
第一阶段NFS服务器配置Master Slave 执行 安装NFS服务 dnf install nfs-utils rpcbind -y 创建共享目录并设置权限 mkdir -p /data/nfs_share
chown nfsnobody:nfsnobody /data/nfs_share
chmod 777 /data/nfs_share 配置NFS导出文件 (/etc/exports) echo /data/nfs_share 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash) | tee /etc/exports 启动NFS服务 systemctl enable --now rpcbind
systemctl enable --now nfs-server
exportfs -arv # 重新加载配置 验证NFS共享 showmount -e localhost
# 应显示: /data/nfs_share 192.168.1.0/24 第二阶段Keepalived配置实现VIP漂移 安装Keepalived双节点执行 dnf install keepalived -y Master节点配置 (/etc/keepalived/keepalived.conf) confvrrp_script chk_nfs {script /usr/bin/pgrep nfsd || exit 1interval 2weight 50
}vrrp_instance VI_1 {state MASTERinterface eth0 # 使用ip a查看实际网卡名virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.200/24}track_script {chk_nfs}
} Slave节点配置 (/etc/keepalived/keepalived.conf) confvrrp_script chk_nfs {script /usr/bin/pgrep nfsd || exit 1interval 2weight 50
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.200/24}track_script {chk_nfs}
} 启动Keepalived服务 systemctl enable --now keepalived
systemctl status keepalived 验证VIP分配 ip addr show eth0
# Master节点应显示192.168.1.200 第三阶段客户端配置 安装NFS客户端 dnf install nfs-utils -y 创建挂载点 mkdir -p /mnt/nfs 挂载NFS共享 mount -t nfs 192.168.1.200:/data/nfs_share /mnt/nfs 验证挂载 df -hT | grep nfs
# 应显示: 192.168.1.200:/data/nfs_share nfs4 ...touch /mnt/nfs/testfile # 测试写入 配置开机自动挂载 echo 192.168.1.200:/data/nfs_share /mnt/nfs nfs defaults 0 0 | sudo tee -a /etc/fstab 高可用测试流程 在Master节点创建文件 echo From Master /data/nfs_share/master.txt 客户端验证 cat /mnt/nfs/master.txt # 应显示From Master 模拟Master故障 # 在Master节点执行:
systemctl stop keepalived 验证VIP漂移 # 在Slave节点执行:
ip addr show eth0 # 应显示VIP 192.168.1.200 客户端持续访问 echo After failover /mnt/nfs/master.txt
cat /mnt/nfs/master.txt
# 应显示两行内容证明切换成功