nginx+keepalived高可用集群搭建

本文详细介绍了如何在两台服务器上安装Nginx和Keepalived,创建用户并授权,配置Keepalived以实现主从模式的高可用性,包括VRRP脚本和VIP设置。同时,还提供了开机自启设置以及服务检测脚本来确保在Nginx服务异常时避免VIP漂移问题。
摘要由CSDN通过智能技术生成

1. 服务器列表

IP名称hostname
192.168.0.86manager86manager86
192.168.0.87manager87manager87

2. 两台服务器都安装nginx

参考上篇文章《Linux下安装nginx 1.18.0稳定版》

3. 两台服务器安装keepalived

yum install keepalived

如果安装失败多执行几次即可
默认安装路径:/etc/keepalived
安装之后,在etc里面生成目录keepalived, 有配置文件keepalived.conf

4. 检查是否完成安装keepalived

rpm -q -a keepalived

5. 新建keepalived所须的用户并授权

打开终端并以 root 用户登录。
运行以下命令创建新用户:

useradd -r keepalived_script

设置该用户的密码:

passwd keepalived_script

修改脚本权限

chmod 755 /usr/local/src/nginx_check.sh

6. 完成高可用配置(主从配置)

配置keepalived的配置文件,使其使用上述新建的网卡进行通信,并使用ARR协议管理vip
keepalived配置文件路径:/etc/keepalived/keepalived.conf
主机manager86配置信息

global_defs {
  notification_email {
    acassen@firewall.loc
    failover@firewall.loc
    sysadmin@firewall.loc
    779627573@qq.com
  }
  notification_email_from Alexandre.Cassen@firewall.loc
  smtp_ server 192.168.0.86
  smtp_connect_timeout 30
  router_id LVS_DEVEL
  script_user root
}

vrrp_script chk_http_port {
  script "/usr/local/src/nginx_check.sh"
  interval 2
  weight 2
}

vrrp_instance VI_1 {
  state MASTER
  interface ens3 # 这里设置成自己电脑的网卡
  virtual_router_id 51
  priority 101
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 12345678
  }
  virtual_ipaddress {
    192.168.0.79/24 dev ens3 # 这里的vip设置成自己的vip,需要和ens3在同一个网段
  }
}

从机manager87配置信息

global_defs {
  notification_email {
    acassen@firewall.loc
    failover@firewall.loc
    sysadmin@firewall.loc
    779627573@qq.com
  }
  notification_email_from Alexandre.Cassen@firewall.loc
  smtp_ server 192.168.0.87
  smtp_connect_timeout 30
  router_id LVS_DEVEL
}

vrrp_script chk_http_port {
  script "/usr/local/src/nginx_check.sh"
  interval 2
  weight 2
}

vrrp_instance VI_1 {
  state BACKUP
  interface ens3 # 这里设置成自己电脑的网卡
  virtual_router_id 51
  priority 100
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 12345678
  }
  virtual_ipaddress {
    192.168.0.79/24 dev ens3 # 这里的vip设置成自己的vip,需要和ens3在同一个网段
  }
}

两台服务器都设置keepalived开机自启

systemctl enable keepalived

启动keepalived服务,观察服务情况

systemctl start keepalivied

编写服务检测脚本/usr/local/src/nginx_check.sh
用于检测nginx服务是否存在,不存在则尝试启动nginx,启动失败则关掉keepalived,避免没有nginx服务,但是当前服务器的keepalived拿走了vip导致服务访问不了的问题

#!/bin/bash
A=`ps -C nginx -o pid= | wc -l`
if [ $A -eq 0 ]; then
    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    sleep 2
    if [ $(ps -C nginx --no-header | wc -l) -eq 0 ]; then
        killall keepalived
    fi
fi

7. 其他命令

重启keepalived:

systemctl restart keepalived

查看keepalived状态:

systemctl status keepalived
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值