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

 

本文作者:KwFruit

本文链接:https://www.cnblogs.com/mangoubiubiu/p/14508579.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   KwFruit  阅读(200)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起