nginx高可用-主备模式
一、概念主备模式就是指多台nginx,其中一台为主节点,其余为从节点,正常情况下,由主节点做代理,假如主节点出了问题(例如宕机),那么系统会自动切换从节点作为主节点,接替主节点的工作。这样可以提高系统的抗风险能力。这里对外暴露的地址并不是真实的服务器ip地址,而是虚拟ip,所以即使有一台nginx服务器宕机,用户也感知不到的。二、搭建准备工作假设有两台服务器,分别是192.168.0.48(主)和
·
一、概念
主备模式就是指多台nginx,其中一台为主节点,其余为从节点,正常情况下,由主节点做代理,假如主节点出了问题(例如宕机),那么系统会自动切换从节点作为主节点,接替主节点的工作。这样可以提高系统的抗风险能力。这里对外暴露的地址并不是真实的服务器ip地址,而是虚拟ip,所以即使有一台nginx服务器宕机,用户也感知不到的。
二、搭建准备工作
假设有两台服务器,分别是192.168.0.48(主)和192.168.0.49(从)
1、为两台服务器安装nginx。安装教程:https://www.runoob.com/linux/nginx-install-setup.html
2、在两台服务器安装keepalived。
#安装命令
yum install keepalived -y
#校验安装是否成功
rpm -q -a keepalived
安装后配置文件位置:/etc/keepalived/keepalived.conf
3、完成高可用配置
修改keepalived的配置文件
global_defs {
notification_email { #该参数指定故障发生时发送邮件的对象。
acassen@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #该参数指定故障发生时邮件由哪个地址发出。
smtp_server 192.168.200.1 #该参数指定邮件的smtp服务器地址。
smtp_connect_timeout 30 #该参数指定连接smtp服务器的超时时间。
router_id LVS_DEVEL #该参数是vrrp协议中用于标识本节点的ip地址形式的字符串。
script_user root #添加运行健康检查脚本的用户
enable_script_security #添加运行健康检查脚本的组
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" #表示将一个脚本信息赋值给变量check_web
interval 2 #检测脚本执行的间隔
weight -20 #监测失败,则相应的vrrp_instance的优先级会减少20个点
}
vrrp_instance VI_1 {
state MASTER #keepalived角色描述信息,备份服务器上将 MASTER 改为 BACKUP
interface ens33 #将虚拟ip用于那块网卡(改为自己的网卡,可用ip -a查看网卡名称)
virtual_router_id 51 #主、备机的 virtual_router_id 必须相同
priority 100 #主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1 #主服务器组播包发送间隔时间
authentication { # 主备主机之间的认证表示信息
auth_type PASS #采用明文认证机制
auth_pass 1111 #编写明文密码
}
virtual_ipaddress {
192.168.200.199 #设置虚拟ip地址信息,此参数备节点设置和主节点相同
}
track_script {
chk_http_port #调用执行脚本
}
}
添加检查nginx状态的脚本
vim /usr/local/src/nginx_check.sh
拷贝如下内容:
#!/bin/bash
counter=$(ps -C nginx |grep -v PID |wc -l)
if [ $counter == 0 ];then
/usr/local/webserver/nginx/sbin/nginx
sleep 30
counter=$(ps -C nginx |grep -v PID |wc -l)
if [ $counter == 0 ];then
systemctl stop keepalived
fi
fi
启动nginx和keepalived
#启动nginx
cd /usr/local/webserver/nginx/sbib
./nginx
#启动keeplived
systemctl start keepalived.service
访问nginx
192.168.0.48
通过虚拟IP访问
192.168.200.199
假如主节点挂了,依旧可以通过192.168.200.199访问从节点nginx。
更多推荐
所有评论(0)