首页 > 技术文章 > nignx高可用集群配置

xujunkai 原文

1.Nginx配置高可用的集群

  • 一台主服务器一台从服务器

  • 需要一个软件keepalived

对外暴漏一个虚拟ip,当主服务器挂了,会将虚拟IP转从服务器。
  • 准比工作
1.准备2台服务器
2.在两台服务器安装nginx
3.在两台服务器安装keepalived
	yum install keepalived
  • 编辑/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.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL# 唯一值,服务器名字可在vi /etc/hosts中配置,如 127.0.0.1 LVS_DEVEL
}
# 检测脚本 和权重参数,判断nginx是否活着
vrrp_script chk_http_port {
  script "/usr/local/src/nginx_check.sh"
  interval 2 #检测脚本执行间隔
  weight 2 #设置当前服务器权重
}

// 虚拟ip配置
vrrp instance VI_1 {
  state MASTER # 主服务器为MASTER,备份服务器BACKUP
  interface ens33 # 要在哪个网卡绑定你虚拟主机名字
  virtual_router_id 51# 主,备机的virtual_router_id必须相同
  priority 100 #主,备机取不同的优先级,主机值较大,备份机较小
  advert_int 1# 每隔1秒,进行心跳
  # 权限校验
  authentication {
    auth_type PASS
    auth_pass 1111
  }
  virtual_ipaddress {
    192.168.11.50 # 虚拟ip地址绑定,当然可以绑定多个
  }
}
  • nginx_check.sh 检查nginx是否还活着
#! /bin/bash
A = `ps -c nginx -no-header |wc -l`
if [ $A eq 0 ];then
    /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi
  • 从服务器更改 虚拟ip配置即可
state BACKUP # 主服务器为MASTER,备份服务器 BACKUP
priority 90 # priority小于主服务器
  • 启动nginx 主服务器和备份服务器
  • 启动keepalived
systemctl start keepalived.service
  • 测试
1.在浏览器输入虚拟ip也就是上面设置的192.168.11.50
2.通过ip a 查看虚拟ip是否绑定

# 当把主服务器停止 再从浏览器访问虚拟ip,按理来说是可以访问的
./nginx -s stop #停止主服务器
# 浏览器也可以正常访问。说明切换了备份服务器。

推荐阅读