Nginx 入门(九) Nginx 配置实例- Keepalived+Nginx 高可用集群(主从模式)(基础基础基础 初步尝试)
1 Keepalived+Nginx 高可用集群(主从模式)
2 准备2台服务器 分别装上 nginx 和Keepalived
一 丶安装nginx
https://www.cnblogs.com/mangoubiubiu/p/14497061.html
二丶使用 yum 命令安装Keepalived
yum install keepalived –y
三丶查看Keepalived 是否安装成功
rpm -q -a keepalived
3 Keepalived 配置文件修改
一 丶主服务(192.168.117.129)器配置:
/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.117.129 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script check_nginx { script "/usr/local/src/nginx_check.sh" interval 3 #(检测脚本执行的间隔) weight 2 } vrrp_instance VI_1 { state MASTER # 备份服务器上将 MASTER 改为 BACKUP interface ens33 //网卡 virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_nginx } virtual_ipaddress { 192.168.117.50 // VRRP H 虚拟地址 } }
/usr/local/src/nginx_check.sh
#!/bin/bash A=`ps -C nginx ¨Cno-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
二 丶从服务(192.168.117.134)器配置:
/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.117.129 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script check_nginx { script "/usr/local/src/nginx_check.sh" interval 3 #(检测脚本执行的间隔) weight 2 } vrrp_instance VI_1 { state MASTER # 备份服务器上将 MASTER 改为 BACKUP interface ens33 //网卡 virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 priority 90# 主、备机取不同的优先级,主机值较大,备份机值较小 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_nginx } virtual_ipaddress { 192.168.117.50 // VRRP H 虚拟地址 } }
/usr/local/src/nginx_check.sh 和上面的(主服务器)一致
注意点 虚拟ip 不能乱写 如果 主服务器的 ip 是 192.168.117.129 虚拟ip 前三段一定要相同
正例 192.168.117.50
反例子 192.168.17.50
4 开启服务(主 从服务器 操作一致)
一 启动 keepalived:
systemctl start keepalived.service
二 启动 nginx:
./nginx
5 测试
一 丶 2台服务器 keepalived,nginx都已启动 效果
访问主服务器(192.168.117.129)
访问从服务器(192.168.117.134)
访问虚拟ip(192.168.117.50)
二 丶 停掉主服务器 nginx
发现 keeplived 会被立即kill掉 说明执行了 脚本
三 丶 注意点 如果发现 脚本未执行
先授权
chmod 755 nginx_check.sh
手动 ./nginx_check.sh
如果 报
-bash: ./nginx_check.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录
执行
sed -i 's/\r$//' nginx_check.sh
查看 keepalived 日志
tail -f /var/log/messages
如果 报
/usr/local/src/nginx_check.sh exited due to signal 15