FastDFS之Nginx+keepalived主备双机备份

VIP:10.2.5.208
Keepalived:10.2.5.201 Keepalived:10.2.5.202
Tracker:10.2.5.205 Tracker:10.2.5.204
Storage:10.2.5.205 Storage:10.2.5.203

在201和202两台机器上面搭建keepalived:
步骤1:解压keepalived-1.2.18.tar.gz
tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local

步骤2:配置
mkdir /usr/local/keepalived && cd /usr/local/keepalived-1.2.18 && ./configure --prefix=/usr/local/keepalived

步骤3:编译 安装
make && make install

步骤4:将Keepalived配置为linux自启动服务
创建目录
mkdir /etc/keepalived
拷贝文件
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin
#添加keepalived到开机启动
chkconfig keepalived on
#启动keepalived服务
service keepalived start [stop restart]

或者 yum install keepalived -y
/etc/keepalived
/etc/keepalived/keepalived.conf #keepalived服务主配置文件/etc/rc.d/init.d/keepalived #服务启动脚本
/etc/sysconfig/keepalived
/usr/bin/genhash
/usr/libexec/keepalived
/usr/sbin/keepalived

配置keepalived.conf
201:vim /etc/keepalived/keepalived.conf

 global_defs {
   router_id 201 ##标识节点的字符串,通常为hostname
}

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" ##执行脚本位置
    interval 2 ##检测时间间隔
    weight -20 ## 如果条件成立则权重减20(-20)
}
## 定义虚拟路由 VI_1为自定义标识。
vrrp_instance VI_1 {
state MASTER   ## 主节点为MASTER,备份节点为BACKUP
## 绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同(我这>里是eth6)
interface eth1
virtual_router_id 201  ## 虚拟路由ID号  同一个集群主备要一致
    mcast_src_ip 10.2.5.201  ## 本机ip地址
    priority 100  ##优先级配置(0-254的值)
    Nopreempt  ##
    advert_int 1 ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
    authentication {
        auth_type PASS
        auth_pass 1234 ## 真实生产环境下对密码进行匹配
    }

    track_script {
        chk_nginx
    }

    virtual_ipaddress {
        10.2.5.208 ## 虚拟ip(vip),可以指定多个
    }
}

202:vim /etc/keepalived/keepalived.conf

global_defs {
   router_id 202 ##标识节点的字符串,通常为hostname
}

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" ##执行脚本位置
    interval 2 ##检测时间间隔
    weight -20 ## 如果条件成立则权重减20(-20)
}
定义虚拟路由 VI_1为自定义标识。

    vrrp_instance VI_1 {
    state BACKUP   ## 主节点为MASTER,备份节点为BACKUP
     绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同
    
        interface eth1
        virtual_router_id 201  ## 虚拟路由ID号  同一个集群主备要一致
            mcast_src_ip 10.2.5.202  ## 本机ip地址
            priority 100  ##优先级配置(0-254的值)
            Nopreempt  ##
            advert_int 1 ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
            authentication {
                auth_type PASS
                auth_pass 1234 ## 真实生产环境下对密码进行匹配
            }
        
            track_script {
                chk_nginx
            }
        
            virtual_ipaddress {
                10.2.5.208 ## 虚拟ip(vip),可以指定多个
            }
        }

动态检查脚本
/etc/keepalived/nginx_check.sh:

keepalived 会定时执行脚本并且对脚本的执行结果进行分析,动态调整vrrp_instance的优先级。这里的权重weight 是与下面的优先级priority有关,如果执行了一次检查脚本成功,则权重会-20,也就是由100 - 20 变成了80,Master的优先级为80 就低于了Backup的优先级90,那么会进行自动的主备切换。

如果脚本执行结果为0并且weight配置的值大于0,则优先级会相应增加。
如果脚本执行结果不为0 并且weight配置的值小于0,则优先级会相应减少。
当脚本执行成功,keepalived被关闭,当nginx修复后需要手工启动keepalived 才能使该主机nginx可用

扫描二维码关注公众号,回复: 5418984 查看本文章
#!/bin/bash
A=`ps -C nginx --no-heading|wc -l` 
if [ $A -eq 0 ];then 
    /usr/local/nginx/sbin/nginx 
    sleep 2 

    if [ `ps -C nginx --no-heading |wc -l` -eq 0 ];then 

        killall keepalived 
    fi 
Fi

常用命令

service keepalived start
service keepalived restart
service keepalived stop

猜你喜欢

转载自blog.csdn.net/weixin_42591789/article/details/88167201