CentOS7-Nginx配置高可用集群
1、什么是Nginx 高可用
2、准备工作
(1)两台Nginx服务器
(2)keepalived
(3)虚拟IP
-- 安装 keepalived
yum install -y keepalived
-- 验证
rpm -q -a keepalived
-- 在 /etc/keepalived 目录下生成 keepalived.conf
3、keepalived.conf 主从配置
1、192.168.137.131主机 keepalived.conf 配置
! Configuration File for keepalived
# 全局配置
global_defs {
# 邮件通知信息
notification_email {
# 定义收件人
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
# 定义发件人
notification_email_from Alexandre.Cassen@firewall.loc
# 表示发送email时使用的smtp服务器地址,可以用本地的sendmail来实现
smtp_server 127.0.0.1
# 连接smtp连接超时时间
smtp_connect_timeout 30
# 路由器标识,一般不用改,也可以写成每个主机自己的主机名
router_id LVS_DEVEL
}
# 定义脚本名字和脚本执行的间隔和脚本执行的优先级变更
vrrp_script chk_http_port {
# 检测Nginx状态脚本位置
script "/usr/local/src/nginx_check.sh"
# 检测脚本执行的间隔
interval 2
# 权重
weight 2
}
# 定义一个虚拟路由器的,实例名称
vrrp_instance VI_1 {
# 备份服务器上将 MASTER 改为 BACKUP
state MASTER
# 绑定当前使用的网卡名称
interface ens32
# 主、备机的 virtual_router_id 必须相同
virtual_router_id 51
# 主、备机取不同的优先级,主机值较大,备份机值较小
priority 100
# 检查间隔,默认为1秒
advert_int 1
# 通信认证机制,这里是明文认证还有一种是加密认证
authentication {
auth_type PASS
auth_pass 1111
}
# 设置虚拟VIP地址,一般就设置一个,在LVS中这个就是为LVS主机设置VIP的,这样你就不用自己手动设置了
virtual_ipaddress {
192.168.137.50
}
}
-- 在 /etc/ 目录下的 hosts文件中,新增上
127.0.0.1 LVS_DEVEL
2、192.168.137.131主机 nginx_check.sh 配置
位置:/usr/local/src/
#!/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
3、192.168.1.101备份机 keepalived.conf 配置
! Configuration File for keepalived
# 全局配置
global_defs {
# 邮件通知信息
notification_email {
# 定义收件人
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
# 定义发件人
notification_email_from Alexandre.Cassen@firewall.loc
# 表示发送email时使用的smtp服务器地址,可以用本地的sendmail来实现
smtp_server 127.0.0.1
# 连接smtp连接超时时间
smtp_connect_timeout 30
# 路由器标识,一般不用改,也可以写成每个主机自己的主机名
router_id LVS_DEVEL
}
# 定义脚本名字和脚本执行的间隔和脚本执行的优先级变更
vrrp_script chk_http_port {
# 检测Nginx状态脚本位置
script "/usr/local/src/nginx_check.sh"
# 检测脚本执行的间隔
interval 2
# 权重
weight 2
}
# 定义一个虚拟路由器的,实例名称
vrrp_instance VI_1 {
# 备份服务器上将 MASTER 改为 BACKUP
state BACKUP
# 绑定当前使用的网卡名称
interface ens33
# 主、备机的 virtual_router_id 必须相同
virtual_router_id 51
# 主、备机取不同的优先级,主机值较大,备份机值较小
priority 90
# 检查间隔,默认为1秒
advert_int 1
# 通信认证机制,这里是明文认证还有一种是加密认证
authentication {
auth_type PASS
auth_pass 1111
}
# 设置虚拟VIP地址,一般就设置一个,在LVS中这个就是为LVS主机设置VIP的,这样你就不用自己手动设置了
virtual_ipaddress {
192.168.137.50
}
}
4、192.168.1.101备份机 nginx_check.sh 配置
位置:/usr/local/src/
#!/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
4、启动两台虚拟机上的Nginx和Keepalived
(1) 启动主机192.168.137.131的 Nginx和Keepalived
systemctl start keepalived.service
(2)启动备份机192.168.1.101的 Nginx和Keepalived
systemctl start keepalived.service
5、测试访问虚拟IP
6、关闭主机Nginx和Keepalived,再次访问虚拟IP