需求简介
为了提升两台Apache服务器的高可用性,通过配置Keepalived并结合Shell脚本,实现VIP(虚拟IP)的自动切换,从而确保服务的高可用性和连续性。
注:请结合实际情况修改配置。
环境准备
1.Apache服务器两台;192.168.10.44,192.168.10.67
2.vip(虚拟IP):192.168.10.252
3.win10客户端
安装Apache服务
这里使用dnf命令安装部署(两台主机都需安装)
dnf install httpd -y
启动服务,确保客户端能够正常访问80端口
systemctl start httpd


PS:为了方便展示虚拟IP切换效果,这里将网页内容做一简单修改。
#分别在两台服务器上执行
echo "web1" > /var/www/html/index.html
echo "web2" > /var/www/html/index.html

安装keepalived
两台服务器均需安装.
dnf install keepalived
安装成功后会生成一个默认的文件
/etc/keepalived/keepalived.conf
,删除不需要的内容或直接复制粘贴以下内容
! Configuration File for keepalived
global_defs {
router_id web1 #服务器名称,不可重复
script_user root #执行脚本的用户
enable_script_security #启用脚本安全
}
vrrp_script check_httpd {
script "/etc/keepalived/check_httpd.sh" #指定需要执行的脚本路径
interval 3 #设置脚本执行的时间间隔
weight -50 #如果脚本检测到服务不可用就将优先级减少50
fall 2 #如果脚本执行连续失败两次,则减少优先级
rise 1 #如果脚本执行成功一次,则恢复当前设备的优先级
}
vrrp_instance VI_1 {
state MASTER #配置该主机角色为MASTER
interface ens160 #设置要关联的网卡
virtual_router_id 51 #另一台服务器虚拟ID需保持一致,否则无法选举master
priority 100 #设置优先级
advert_int 1 #设置心跳检测时间
authentication {
auth_type PASS
auth_pass 1111
}
#配置VIP
virtual_ipaddress {
192.168.10.252/24
}
#关联检测脚本
track_script {
check_httpd
}
}
编写检测脚本,用于监控apache服务进程,当进程不存在时关闭keepalived,实现虚拟IP切换
#!/usr/bin/env bash
if pgrep httpd 1>/dev/null ;then
true
else
systemctl stop keepalived
fi
将配置文件和检测脚本复制到服务器2
scp /etc/keepalived/* root@192.168.10.67:/etc/keepalived/
复制后需要对配置文件做一简单修改,否则会导致服务器2启动失败。

赋予脚本可执行权限
chmod +x /etc/keepalived/check_httpd.sh
启动服务,查看VIP状态
systemctl start keepalived
可以看到当前VIP在web1上

访问测试,可以看到当前访问的服务器为web1

故障切换测试
手动停止web1的apache服务,VIP会自动切换至web2
systemctl stop httpd
当web1服务恢复时,虚拟IP又会自动切回从而实现了Apache的高可用性
▽往期推荐△
原文始发于微信公众号(青菜浪人):
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/308226.html