本章教程,简单介绍如何利用keepalived实现nginx服务高可用。
keepalived是一个开源的高可用性解决方案,它可以在Linux系统上实现负载均衡和故障转移。它主要用于确保在服务器集群中的主服务器出现故障时,能够快速切换到备用服务器,从而保证系统的可用性。
keepalived通过VRRP(Virtual Router Redundancy Protocol)协议实现故障转移。VRRP协议允许多个路由器组成一个虚拟路由器,其中一个路由器作为主路由器,负责转发数据流量,其他路由器作为备用路由器,当主路由器故障时接管数据流量。
除了故障转移功能,keepalived还提供了负载均衡功能。它可以根据不同的负载均衡算法将流量分发到多个服务器上,从而提高系统的性能和可扩展性。
目录
一、前置条件
1、安装keepalived
2、安装nginx
3、查看网卡名称
二、修改配置
1、状态检查脚本
2、修改keepalived(主)配置文件
3、修改keepalived(从)配置文件
三、故障模拟
1、访问虚拟VIP地址
2、将主节点的nginx服务停止
3、将主节点的nginx服务重新开启
一、前置条件
准备两台虚拟机服务(CentOS7):192.168.101.3(主) 和192.168.101.5(从)
规划虚拟virtual_ipaddress:192.168.101.10(VIP)
分别两台虚拟机服务上安装keeplived和nginx
1、安装keepalived
# 安装
yum -y install keepalived
# 启动
systemctl start keepalived
# 重启
systemctl restart keepalived
# 停止
systemctl stop keepalived
# 查看状态
systemctl status keepalived
2、安装nginx
参考以往教程:Linux 安装 nginx 服务教程_putty 安装nginx-CSDN博客
3、查看网卡名称
echo `ip ad|awk '/state UP/ {gsub(":", "");print $2}'`
二、修改配置
1、状态检查脚本
vim /etc/keepalived/check_nginx.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/bin/kill -15 `cat /var/run/keepalived.pid`
fi
赋予脚本执行权限:chmod +x nginx_check.sh
2、修改keepalived(主)配置文件
配置文件位置:/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
#状态检查脚本
vrrp_script chk_nginx {
script "/etc/keepalived/check_nginx.sh" # 状态检查脚本位置
interval 1 # (检测脚本执行的间隔)1s
weight -10 # 权重
}
vrrp_instance VI_1 {
state MASTER #备份节点
interface enp0s3 #网卡名称
virtual_router_id 51
priority 100 # 优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx #执行脚本
}
virtual_ipaddress {
192.168.101.10 # 虚拟VIP
}
}
3、修改keepalived(从)配置文件
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
#状态检查脚本
vrrp_script chk_nginx {
script "/etc/keepalived/check_nginx.sh" # 状态检查脚本位置
interval 1 # (检测脚本执行的间隔)1s
weight 2 # 权重
}
vrrp_instance VI_1 {
state BACKUP #备份节点
interface enp0s3 #网卡名称
virtual_router_id 51
priority 100 # 优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx #执行脚本
}
virtual_ipaddress {
192.168.101.10 # 虚拟VIP
}
}
配置完成之后,需要重启一下keepalived服务,才会有效。
三、故障模拟
请先确保两台虚拟机的keepalived和nginx都处于运行状态。
1、访问虚拟VIP地址
可以看到,默认情况下,优先访问主节点服务器。
2、将主节点的nginx服务停止
systemctl stop nginx
然后,再次访问虚拟VIP地址。
此时,你就会发现,我的配置已经生效了,自动切换到从节点服务器。
3、将主节点的nginx服务重新开启
systemctl start nginx
到此,本章教程就结束了,如果你也感兴趣的话,最好自己动手试试,效果会更好。