keepalived高可用集群实战案例

环境

Server1:        192.168.229.11

Server2: ·        192.168.229.12

VIP:         192.168.229.100         对外的虚拟ip

注意:

关闭防火墙、selinux、配置yum源

server1

1、创建etc下的keepalived目录,编辑配置文件
        

# yum -y install keepalived

# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
 router_id 1                            #设备在组中的标识,设置不一样即可(改改改)
 }

#vrrp_script chk_nginx {                        #健康检查
# script "/etc/keepalived/ck_ng.sh"     #检查脚本
# interval 2                            #检查频率.秒
# weight -5                             #priority减5
# fall 3                                        #失败三次
# }

#高可用集群的组员设置
vrrp_instance VI_1 {               #VI_1。实例名两台路由器相同。同学们要注意区分。(注意注意)
    state MASTER                        #主或者从状态(改改改)
    interface ens33                     #监控网卡
    mcast_src_ip 192.168.229.11         #心跳源IP,当前主机的ip
    virtual_router_id 55                #虚拟路由编号,主备要一致。同学们注意区分
    priority 100                        #优先级 数值越大优先级越高
    advert_int 1                        #心跳间隔 单位是秒

    authentication {                    #秘钥认证(1-8位)(注意注意)
        auth_type PASS
        auth_pass 123456
    }

    virtual_ipaddress {                 #VIP 虚拟ip(自己设置自己设置)
    192.168.229.100/24
        }

#  track_script {                       #引用脚本
#       chk_nginx
#    }

}

2、把当前服务器的keepalived的配置,传给另外一台服务器(或者在另外一台服务器再手动创建)

# scp -r /etc/keepalived/keepalived.conf  192.168.229.12:/etc/keepalived/
# systemctl enable keepalived.service

3、安装Nginx

# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

# yum -y install nginx
# systemctl enable nginx.service
# systemctl start nginx.service
# vi /usr/share/nginx/html/index.html
# curl -i localhost
-i 显示目标地址返回的响应头信息
# systemctl start keepalived.service

server2

1、BACKUP服务器的配置需要几处修改

# yum -y install keepalived

# vi /etc/keepalived/keepalived.conf

注意注意注意!!!!!

state MASTER改为  state BACKUP
mcast_src_ip 192.168.0.118改为backup服务器实际的IP mcast_src_ip 192.168.0.119
priority 100改为priority 99

 配置文件示例

! Configuration File for keepalived
global_defs {
 router_id 2        #(更改了)
 }

#vrrp_script chk_nginx {
# script "/etc/keepalived/ck_ng.sh"
# interval 2
# weight -5
# fall 3
# }

vrrp_instance VI_1 {    #(与master保持一致)
    state BACKUP        #(master改为backup)
    interface ens33
    mcast_src_ip 192.168.229.12
    virtual_router_id 55
    priority 99
    advert_int 1

    authentication {    #(账号密码保持一致)
        auth_type PASS
        auth_pass 123456
    }

    virtual_ipaddress {   #(对外暴露地址保持一致)
    192.168.229.100/24
        }

#  track_script {
#       chk_nginx
#    }

}
# systemctl enable keepalived.service

2、安装Nginx

# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

# yum -y install nginx
# systemctl enable nginx.service
# systemctl start nginx.service
# vi /usr/share/nginx/html/index.html
# curl -i localhost
-i 显示目标地址返回的响应头信息
# systemctl start keepalived.service

思考,为什么在server2中看不到192.168.229.100这个ip

因为这个虚拟IP只会再master服务器中出现,当master服务器宕机后,才会出现再backup服务器上

client 访问

访问VIP http://192.168.229.100 (虚拟IP)

1、 拔掉master(server1)的网线

2、访问

访问VIP http://192.168.229.100,观察网页已经切换

 

 关于keepalived对nginx状态未知的问题

恢复之前的实验。启动两台主机的keepalived和nginx。确保页面访问正常。 关闭master的nginx服务 。systemctl stop nginx 继续访问VIP,请问页面是否会切换到slave呢?

不会!!!

原因是keepalived监控的是接口IP状态。无法监控nginx服务状态

编辑监控脚本

1、server1 添加Nginx监控脚本

vi /etc/keepalived/ck_ng.sh

#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测
    systemctl start nginx
    sleep 5
    counter=$(ps -C nginx --no-heading|wc -l)
    if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换
        systemctl stop keepalived 
    fi
fi
# chmod +x /etc/keepalived/ck_ng.sh

2、server2 添加Nginx监控脚本

vi /etc/keepalived/ck_ng.sh

#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测
    systemctl start nginx
    sleep 5
    counter=$(ps -C nginx --no-heading|wc -l)
    if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换
        service keepalived stop
    fi
fi
# chmod +x /etc/keepalived/ck_ng.sh

3、启动监控脚本

清除掉配置文件中的注释。

vim /etc/keepalived/keepalived.conf

 重启keepalived即可

systemctl restart keepalived.service

4、nginx状态测试

因为脚本中有拉起nginx的语句,测试时可以将脚本文件位置进行改变。观察脚本的效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值