keepalived+nginx实现高可用

1、安装nginx(省略)

2、安装keepalived(ubuntu 18.04.3)

#安装依赖包
sudo apt-get install libssl-dev openssl libpopt-dev
#安装keepalived
sudo apt-get install keepalived

3、配置文件(keepalived主)

vim /etc/keepalived/keepalived.conf #默认不存在

global_defs {
	router_id 192.168.1.10				#随便写,与备机不一样
}
vrrp_script check_nginx
{
	script "/opt/check_nginx.sh"		#定义检测nginx状态的脚本位置
	interval 1							#每秒检查一次
	fall 1								#失败一次则认为nginx挂掉
}
vrrp_instance VI_1 {
	state MASTER						#角色为主,如果设置了nopreempt,这个值无用,主要看优先级的大小
	interface eth0						#监听的网卡(用ifconfig可以查)
	virtual_router_id 2					#VRRP的ID,如果系统中该ID被占用会导致没有VIP,需要更改,范围0~255
	priority 100						#优先级,越大优先级越高
	advert_int 1						#检查间隔,默认1秒
	authentication {					#设置认证
		auth_type PASS					#认证方式
		auth_pass moresec@seckey		#认证密码
}
virtual_ipaddress {
	192.168.1.30/24						#设置VIP,可以带子网掩码,不带的话默认为32为子网掩码
}
track_script {							#捕获脚本
	check_nginx
	}
notify_master {							#通告主脚本
	check_nginx
	}
notify_backup {							#通告备脚本
	check_nginx
	}
}

#启动服务
systemctl start keepalived

4、配置文件(keepalived备)

vim /etc/keepalived/keepalived.conf #默认不存在

global_defs {
	router_id 192.168.1.20				#随便写,与Master不一样
}
vrrp_script check_nginx
{
	script "/opt/check_nginx.sh"		#定义检测nginx状态的脚本位置
	interval 1							#每秒检查一次
	fall 1								#失败一次则认为nginx挂掉
}
vrrp_instance VI_1 {
	state BACKUP						#角色为备,如果设置了nopreempt,这个值无用,主要看优先级的大小
	interface eth0						#监听的网卡(用ifconfig可以查)
	virtual_router_id 2					#VRRP的ID,主备必须一致,如果系统中该ID被占用会导致没有VIP,需要更改,范围0~255
	priority 90							#优先级,越大优先级越高
	advert_int 1						#检查间隔,默认1秒
	authentication {					#设置认证
		auth_type PASS					#认证方式
		auth_pass moresec@seckey		#认证密码,必须一直
}
virtual_ipaddress {
	192.168.1.30/24						#设置VIP,可以带子网掩码,不带的话默认为32为子网掩码
}
track_script {							#捕获脚本
	check_nginx
	}
notify_master {							#通告主脚本
	check_nginx
	}
notify_backup {							#通告备脚本
	check_nginx
	}
}

#启动服务
systemctl start keepalived

5、nginx检测脚本

vim /opt/check_nginx.sh

#!/bin/bash
# 时间变量  用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
# 计算Nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
# 如果进程为0,则启动Nginx,并且再次检测进程数量
# 如果还为0,说明Nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
     /etc/init.d/nginx start
     n2=`ps -C nginx --no-heading|wc -l`
     if [ $n2 -eq "0" ];then
             echo "$d nginx down,keepalived will stop">> /var/log/check_ng.log
             systemctl stop keepalived
     fi
fi

chmod 777 /opt/check_nginx.sh

6、检测

在主服务器上ip a s查看是否多了一个虚拟IP

主服务器上停止nginx,查看nginx是否会自动起来

主服务器停止keepalived,查看VIP是否漂移到从服务器

主服务器启动keepalived,查看VIP是否被抢占过来

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值