推荐阅读
是一种主备的模式
现有 192.168.189.136 192.186.189.140
另一台服务器我选择的是Ubuntu。安装Nginx的过程
sudo apt update sudo apt install nginx sudo systemctl status nginx //配置防火墙 允许通过HTTP 80 HTTPS 443 sudo ufw allow "Nginx Full" //验证 sudo ufw status
在Ubuntu,如果通过这种方式安装,Nginx的配置文件在/etc/nginx
目录下
//centos安装 yum install keepalived -y //验证 rpm -q -a keepalived
centos的配置文件位置
因为我是垃圾在ubuntu上安装的keepalived没有配置文件,有换成了centos
修改配置文件
global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_form Alexandre.Cassen@firewall.loc smtp_server 192.168.189.136 smtp_connect_timeout 30 router_id nginx_01 #标识本节点的名称,通常为hostname } ## keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。 ##如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。如果脚本执行结果非0, ##并且weight配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中priority对应的值。 vrrp_script chk_nginx { script "/usr/local/src/nginx_check.sh" interval 2 #每2秒检测一次nginx的运行状态 weight -20 #失败一次,将自己的优先级-20 } vrrp_instance VI_1 { state MASTER # 状态,主节点为MASTER,备份节点为BACKUP interface ens160 # 绑定VIP的网络接口,通过ifconfig查看自己的网络接口,网卡名称 virtual_router_id 51 # 虚拟路由的ID号,两个节点设置必须一样,可选IP最后一段使用,相同的VRID为一个组,他将决定多播的MAC地址 priority 100 # 节点优先级,值范围0~254,MASTER要比BACKUP高 advert_int 1 # 组播信息发送时间间隔,两个节点必须设置一样,默认为1秒 # 设置验证信息,两个节点必须一致 authentication { auth_type PASS auth_pass 1111 } # 虚拟IP,两个节点设置必须一样。可以设置多个,一行写一个 virtual_ipaddress { 192.168.189.50 #后来我换了 } }
编写脚本文件,由于我的Nginx安装在自定义的目录
#!/bin/bash A=`ps -C nginx --no-header | wc -l` if [ $A -eq 0 ];then /software/nginx/sbin/nginx #自己Nginx的启动位置 sleep 2 #睡眠2秒 if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then killall keepalived #启动失败,将keepalived服务杀死。将vip漂移到其它备份节点 fi fi
//192.168.189.136 //重新启动Nginx cd /software/nginx/sbin ./nginx -s stop ./nginx //启动keepalived systemctl start keepalived.service ps aux | grep keepalived //192.168.189.140 //重新启动Nginx cd /usr/sbin/nginx ./nginx -s stop ./nginx //启动keepalived systemctl start keepalived.service ps aux | grep keepalived
网上说网段要保持一致,我重新配了一次,但是不生效!
把主服务器的Nginx和keepalived断掉,也会生效。达到了高可用的效果。
硬着头皮来!