nignx高可用集群配置
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 #停止主服务器
# 浏览器也可以正常访问。说明切换了备份服务器。