搭建keepalived集群+nginx高可用

搭建keepalived集群使nginx高可用

虚拟机环境:ubuntu 18.04

1. 每台服务器下载 nginx 和 keepalived

apt-get nginx
apt-get keepalived

2. 找到nginx配置文件 /etc/nginx/nginx.conf ,并进行简单配置

server{
  listen 80; #监听端口
  server_name 192.168.201.127; # 服务器地址或者域名
  location / {
    root /usr/share/nginx/html;  # root 是配置服务器的默认网关根目录位置
    index index.html;   # 配置首页文件的名称
}
}

3. 配置keepalived, /etc/keepalived/keepalived.conf,若文件不存在,就自己创建

! Configuration File for keepalived
  
global_defs {
   notification_email { # keepalived 服务器宕机异常出现的时候,发送通知邮件,可以是多个
    1329926762@@qq.com # 收件人邮箱1
    # ***@**.com # 收件人邮箱2
   }
   notification_email_from 1329926762@qq.com #邮箱发件人
   smtp_server stmp.qq.com #邮箱服务器地址
   smtp_connect_timeout 30 # 超时时间
   router_id LVS_DEVEL # 路由id
   vrrp_skip_check_adv_addr # 默认不跳过检查
   # vrrp_strict # 这个东西要注释掉
   vrrp_gna_interval 0 #单位秒,在一个网卡上每组na消息之间的延迟时间,默认为0
   script_user root
   enable_script_security
}
vrrp_script chk_haproxy
{
    script "/etc/keepalived/chk_nginx.sh"
    interval 2
    weight 2
}
# vrrp实例,我们集群设置,多机配置,除了state和priority不一样,其他都一样
# 主实例 state 为 MASTER;priority 较高
# 副本实例 state 为 BACKUP
vrrp_instance VI_1 {
    state MASTER # 服务器状态,MASTER是主服务器,BACKUP是备份服务器
    interface ens33 # 通信端口,通过ip addr 命令可以看到,根据自己的机器配置
    virtual_router_id 51 #同一个局域网内,virtual_router_id 在集群中不能相同
    priority 100 # 权重比,主服务器的priority要比副本服务器大
    advert_int 1 # 心跳间隔,单位秒,keepalived多机器集群 通过心跳检测,如果发送心跳没反应,就立刻接管
    authentication { # 服务器之间的通信密码
        auth_type PASS
        auth_pass 111123
    }
    track_script { # 脚本,与vrrp_script 定义的名称一致
      chk_haproxy
    }
    virtual_ipaddress { #自定义虚拟ip,可以配置多个,每行一个
        192.168.201.23
    }
}

4. 在keepalived.conf相同目录下配置 keepalived 脚本文件 chk_nginx.sh,检测nginx是否正常,若nginx挂掉,则重启nginx

#!/bin/bash
# nginx挂掉之后,keepalived重新启动nginx,若不能启动,则关闭当前keepalived
status=`ps -ef|grep -w  nginx|grep -v grep|wc -l`
echo ${status}
if [ ${status} -eq 0 ]; then
    systemctl start nginx.service
    sleep 2
    status2=`ps -ef|grep -w  nginx|grep -v grep|wc -l`
    echo ${status2}
    if [ ${status2} -eq 0  ]; then
            systemctl stop keepalived.service
    fi
fi

然后运行 chmod +x chk_nginx.sh,为脚本文件添加可执行权限

5. 每台服务器启动 nginx keepalived

systemctl start nginx # 启动nginx
systemctl start keepalived  # 启动keepalived

systemctl status nginx # 查看nginx状态
systemctl status keepalived  # 查看keepalived状态

6. 访问虚拟ip,我这里是 192.168.201.23,查看是否成功

posted @ 2020-09-16 10:30  她的开呀  阅读(323)  评论(0编辑  收藏  举报