本篇博客只讲解怎么实现nginx高可用,不会仔细讲解keepalived的详细配置内容
高可靠概念内容
HA(High Available):高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。
keepalive是一款可以实现高可靠的软件,通常部署在2台服务器上,分为一主一备。keepalived会虚拟出一个vip地址,用户访问这个vip地址,Keepalived可以对本机上的进程进行检测,一旦Master检测出某个进程出现问题,将自己切换成Backup状态,然后通知另外一个节点切换成Master状态,这样就保证了系统的高可用。
keepalived安装
现有两台机器安装了nginx分别为:192.168.110.102、192.168.110.103,需要保证系统的高可用,则在两台机器安装keepalive
安装192.168.110.102
1.依赖安装
yum install -y ca-certificates # 如果安全连接拒接则安装
yum -y install openssl-devel # 安装OpenSSL依赖
yum -y install libnl libnl-devel # 安装支持ipv6
yum install -y libnfnetlink-devel
2.创建 /usr/local/tool文件夹
mkdir /usr/local/tool/
3.将文件上传到该文件夹下后下载,官网地址为:https://keepalived.org/download.html
wget https://keepalived.org/software/keepalived-2.0.20.tar.gz
4.解压文件
tar -zxvf keepalived-2.0.20.tar.gz
5.进入keepalived-2.0.20文件夹下
cd keepalived-2.0.20
6.检查安装环境,并指定将来要安装的路径
./configure --prefix=/etc/keepalived --sysconf=/etc
7.编译并安装
make && make install
8.keepalived.conf配置文件配置
首先获取到系统网卡的名称
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_1
}
vrrp_instance VI_1 {
state MASTER
interface ens33 #系统网卡
virtual_router_id 51 #主备两机器一致
priority 100 #值大的机器是master,值小的为BACKUP
advert_int 1
authentication { # 认证信息
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #可虚拟多个ip
192.168.110.200
}
}
9.启动keepalived
/etc/keepalived/sbin/keepalived
- 查看是否启动完成
ps -ef |grep keepalived
11.查看启动日志
tail -f /var/log/messages
安装192.168.110.103
- 按照192.168.110.103的1到7进行安装
- keepalived.conf配置文件配置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.244.200
}
}
- 按照192.168.110.102的9到11步启动并查看日志信息
这样keepalived就搭建完成了,下面我们访问一下,访问http://192.168.110.200/
访问VIP地址http://192.168.110.200/,访问到了102这台master的nginx,当将102上的keepalived关闭时,再一次访问。
当102的keepalived被关闭时,自动切换到了103上的nginx上。
在主服务器上添加检测脚本
当主服务器的keepalived启动,但nginx已经停止运行了,keepalived不会自动关闭或指定到备用服务器上,这就需要我们添加检测脚本。
1.创建可执行文件,添加完成后,为chk_nginx_pid.sh 文件授权,便于脚本获得执行权限
/etc/keepalived/sbin/chk_nginx_pid.sh
2.编写检测脚本
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx #重启nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #nginx重启失败,则停掉keepalived服务,进行VIP转移
killall keepalived #杀掉,vip就漫游到另一台机器
fi
fi
3.修改keepalived脚本,添加nginx检测脚本
! Configuration File for keepalived
global_defs {
router_id LVS_1
}
vrrp_script chk_http_port {
script "/data/program/keepalived/sbin/chk_nginx_pid.sh" #心跳执行的脚本
interval 2 #(检测脚本执行的间隔,单位是秒)
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33 #系统网卡
virtual_router_id 51 #主备两机器一致
priority 100 #值大的机器,胜出
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port #(调用检测脚本)
}
virtual_ipaddress { #可虚拟多个ip
192.168.110.200
}
}
keepalived抢占模式和非抢占模式
- 默认配置为抢占式
如果master挂掉,则跳转到backup,如果master重新启动,则重新指向master。
- 非抢占模式
非抢占模式所有节点都为backup,按照配置的优先级来决定哪个是master。如果其中一个挂掉,则另一个变成master。
#Master
vrrp_instance VI_1 {
state BACKUP
priority 150
nopreempt #非抢占模式
.
.
.
}
#Backup
vrrp_instance VI_1 {
state BACKUP
priority 100
nopreempt #非抢占模式
.
.
.
}
如果感觉这篇文章对您有帮助,可以给博主点赞、评论、收藏,这样是对博主最大的鼓励,谢谢。