热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

两台虚拟机centos7配置keepalived

两台CentOS7,如下规划:192.168.202.128MASTER192.168.202.129BACKUP两台虚拟机准备,关闭防火墙,下载所需包,本次实验对象是给ng

两台CentOS7,如下规划:

192.168.202.128  MASTER   

192.168.202.129  BACKUP

两台虚拟机准备,关闭防火墙,下载所需包,本次实验对象是给nginx使用高可用(keepalived)

# getenforce 
Disabled  //如若不是disabled
# setenforce 0  //先暂时关闭selinx
# yum install -y keepalived  
# yum install -y nginx

安装nginx时报错,提示找不到该包,就修改下载源,就可以成功安装nginx

vi /etc/yum.repos.d/nginx.repo
# nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1             

修改master的keepalived配置文件

vi /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     aming@aminglinux.com
   }
   notification_email_from root@aminglinux.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"
    interval 3
}

vrrp_instance VI_1 {
    state MASTER
    interface eno16777736
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com
    }
    virtual_ipaddress {
        192.168.202.100
    }

    track_script {
        chk_nginx
    }

}

修改master脚本

# vi /usr/local/sbin/check_ng.sh 
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
        systemctl start nginx
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi

修改master脚本权限

# chmod 755 /usr/local/sbin/check_ng.sh

启动master的keepalived

# systemctl start keepalived

修改backup的keepalived配置文件

# vi /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     aming@aminglinux.com
   }
   notification_email_from root@aminglinux.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"
    interval 3
}

vrrp_instance VI_1 {
    state BACKUP
    interface eno16777736
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com
    }
    virtual_ipaddress {
        192.168.202.100
    }

    track_script {
        chk_nginx
    }

}

修改backup脚本

# vi /usr/local/sbin/check_ng.sh 
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
        systemctl start nginx
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi

修改backup脚本权限

# chmod 755 /usr/local/sbin/check_ng.sh

启动backup的keepalived

# systemctl start keepalived

测试1:通过curl ip查看状态

[root@202-128 ~]# curl  192.168.202.128  
Master
[root@202-128 ~]# curl  192.168.202.129
Backup
[root@202-128 ~]# curl  192.168.202.100
Master

这里显示结果Master、Backup,修改yum安装的nginx的默认index文件,

# vi /usr/share/nginx/html/index.html
Master

测试2:关闭master上的nginx,结果显示nginx依然会启动是因为配置文件 /usr/local/sbin/check_ng.sh的脚本

[root@202-128 ~]# systemctl stop nginx
[root@202-128 ~]# ps aux |grep nginx  
root      12703  0.0  0.0  48532   976 ?        Ss   22:25   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx     12704  0.0  0.1  48932  1928 ?        S    22:25   0:00 nginx: worker process
root      12709  0.0  0.0 112644   948 pts/0    R+   22:25   0:00 grep --color=auto nginx

测试3:关闭master上的keepalived、nginx,显示backup起作用

[root@202-128 ~]# systemctl stop keepalived
[root@202-128 ~]# systemctl stop nginx
[root@202-128 ~]# curl 192.168.202.128
curl: (7) Failed connect to 192.168.202.128:80; Connection refused
[root@202-128 ~]# curl 192.168.202.129
Backup
[root@202-128 ~]# curl 192.168.202.100
Backup

测试4:开启master的keepalived,master重新起作用,backup作冗余。

[root@202-128 ~]# systemctl start keepalived
[root@202-128 ~]# curl 192.168.202.128      
Master
[root@202-128 ~]# curl 192.168.202.129
Backup
[root@202-128 ~]# curl 192.168.202.100
Master

 


推荐阅读
author-avatar
黄思悦-XHNZ_314
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有