编程技术分享平台

网站首页 > 技术教程 正文

Keepalived+Nginx高可用集群配置测试

xnh888 2024-09-14 15:18:04 技术教程 24 ℃ 0 评论

Keepalived+Nginx高可用集群配置,准备两台机器来测试,每台机器都需要安装keepalived和nginx。


nginx的安装及常用配置在前面笔记已经有。以下是keepalived在linux上安装及常用命令:

yum命令安装:

安装依赖包:yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel

安装:yum install -y keepalived

这样就能安装好,可以用find / -name keepalived命令查询其安装目录。

其配置文件在/etc/keepalived/目录下的keepalived.conf。

重要的是global_defs和vrrp_instance

配置主机192.168.1.101的配置文件keepalived.conf:

同时为了方便测试,修改nginx的默认访问文件,/usr/local/nginx/html/index.html文件,访问时显示本机ip。

配置备份机器,地址是192.168.1.103

修改nginx的/usr/local/nginx/html/index.html文件


启动keepalived

systemctl start keepalived.service

使用自定义虚拟ip访问:

可以访问到101机器上的nginx,可以把主的机器101上keepalived挂掉,再访问:

此时已经切换到备份机器103。


实际情况keepalived不容易挂掉,容易挂掉的是nginx。若nginx挂掉了,但是keepalived没事,这时候就访问不到服务了。


我们可以借助keepalived的vrrp_scrip配置调用自定义shell脚本。

有以下脚本:

#!/bin/bash
echo 'xxx
'count_nginx=`ps -ef|grep -w nginx|grep -v grep|wc -l`
echo $count_nginx
if [ $count_nginx -eq 0 ];then   
			/usr/local/nginx/sbin/nginx   
		sleep 2    
		if [ `ps -ef|grep -w nginx|grep -v grep|wc -l` -eq 0 ];then      
    systemctl stop keepalived.service    
	f
  ifi

这段脚本大概意思是:统计nginx进程数,假如是0个,说明nginx挂掉了,那就启动nginx,等2秒,再统计,假如还是0,说明nginx启动失败,那么就把keepalived也挂掉切换到备份机器,假如不是0,说明启动成功,那就继续运行。


编写脚本文件,运行看看它的效果:

输出2,说明nginx正常。现在将nginx停掉,

停掉nginx
/usr/local/nginx/sbin/nginx -s stop

再运行脚本 ,看能否把nginx启动起来:

第一次运行输出0,第二次输出 2,说明脚本能查到nginx挂掉并启动起来。


现在将脚本配置到keepalived中。

在配置文件中添加以下配置

vrrp_script chk_http_port{ 
  script "/home/shell/nginx_check.sh" #脚本地址   
  interval 2 #检测脚本执行间隔 秒   
  weight 2 #比重

}
  


注意,主机和备份机器都需要。配置好之后再重启keepalived即可。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表