keepalived+nginx

本文介绍如何使用Keepalived与Nginx搭建高可用集群,确保服务稳定运行。通过配置两台Nginx服务器及Keepalived进行主备切换,实现在一台服务器故障时自动切换至另一台,保持服务连续性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、nginx高可用

在nginx作为反向代理或者作为http服务器的时候, 如果单台nginx服务器出现问题,则服务就会出现问题;此时需要多台nginx去完成反向代理工作,nginx服务器需要建立一个集群;

二、keepalived+nginx

在这里插入图片描述

准备工作

  • 两台nginx服务器
  • 安装keepalived
  • 对外的一个虚拟IP
  • 关闭firewalld、selinux

操作

安装nginx
#安装依赖包

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 

#下载pcre,编译安装

cd /usr/local/src/
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar -xvf pcre-8.35.tar.gz
cd pcre-8.35
./configure
make && make install

#下载nginx,编译安装

wget http://nginx.org/download/nginx-1.6.2.tar.gz
tar -xvf nginx-1.6.2.tar.gz
cd nginx-1.6.2/
./configure
make && make install

#启动nginx

cd /usr/local/nginx/sbin
./nginx

安装keepalived

yum install keepalived

修改keepalived配置
#keepalived检测脚本

cat /usr/local/src/nginx_check.sh 
#!/bin/bash 
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx &> /dev/null
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

#修改脚本权限

chmod u+x /usr/local/src/nginx_check.sh 

#主用设备的keepalived配置

# cat /etc/keepalived/keepalived.conf
global_defs {
  notification_email {
    acassen@firewall.loc  
	failover@firewall.loc  
	sysadmin@firewall.loc  
	}  
  notification_email_from Alexandre.Cassen@firewall.loc 
    smtp_server 192.168.17.129  
	smtp_connect_timeout 30  
	router_id LVS_DEVEL 
	}  
vrrp_script nginx_check {
   script /usr/local/src/nginx_check.sh 
   interval 2 #(检测脚本执行的间隔)
   weight -30  #脚本检测失败后优先级-30 
   fail 2     #检测两次则表示失败
   }  
vrrp_instance VI_1 {
  state MASTER # 备份服务器上将 MASTER 改为 BACKUP  
  interface ens33 //网卡  
  virtual_router_id 51 # 主、备机的virtual_router_id必须相同  
  priority 120 # 主、备机取不同的优先级,主机值较大,备份机值较小  
  advert_int 1
  authentication { 
      auth_type PASS 
      auth_pass 1111
  }
  virtual_ipaddress { 
      172.16.200.251
  }
  track_script {
      nginx_check
  }
}

#备用设备的keepalived配置

# cat /etc/keepalived/keepalived.conf
global_defs {
  notification_email {
    acassen@firewall.loc  
	failover@firewall.loc  
	sysadmin@firewall.loc  
	}  
  notification_email_from Alexandre.Cassen@firewall.loc 
    smtp_server 192.168.17.129  
	smtp_connect_timeout 30  
	router_id LVS_DEVEL 
	}  
vrrp_script nginx_check {
   script /usr/local/src/nginx_check.sh 
   interval 2 #(检测脚本执行的间隔)
   }  
vrrp_instance VI_1 {
  state BACKUP # 备份服务器上将 MASTER 改为 BACKUP  
  interface ens33 //网卡  
  virtual_router_id 51 # 主、备机的virtual_router_id必须相同  
  priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小  
  advert_int 1
  authentication { 
      auth_type PASS 
      auth_pass 1111
  }
  virtual_ipaddress { 
      172.16.200.251
  }
  track_script {
      nginx_check
  }
}

启动nginx、启动keepalived

/usr/local/nginx/sbin/nginx
systemctl start keepalived
systemctl enable keepalived

测试
#访问VIP,查看VIP所在的设备
在这里插入图片描述
在这里插入图片描述

#暂停主用的nginx,查看keepalived的脚本是否将服务拉起来
在这里插入图片描述
#可以看到主备未发生切换
在这里插入图片描述

#修改nginx配置,kill掉nginx进程,让keepalived脚本无法拉起nginx服务,切换到备机

#删除localhost末尾的; kill掉nginx进程,让keeplived的脚本无法拉起nginx;
在这里插入图片描述
在这里插入图片描述
#查看keepalived日志,可以看到脚本传递了信号,主备发生了切换
在这里插入图片描述

#备机的keepalived日志
在这里插入图片描述
#VIP切换到备机
在这里插入图片描述
#服务依然能够访问
在这里插入图片描述

#将主机进程nginx进程起来,查看keepalive日志,查看VIP
在这里插入图片描述

总结

keepalived即高可用软件,两台发布相同服务的服务器,组成一个高可用集群,对外通过一个虚拟的VIP来进行通信,通过VRRP协议实现;
由两台nginx服务器组成VRRP一主一备,当主用服务器出现问题时,备用服务器能够接管业务;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值