高可用集群keepalived---实战案例1

目录

一、环境:

二、文件的配置

1、server1

下载keepalived

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

 开机启动keepalived

安装Nginx

启动keepalived

2、server2

下载keepalived

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

 开机启动keepalived

安装Nginx

启动keepalived

三、测试

访问VIP(对外虚拟ip)http://192.168.229.110

拔掉master(server1)的网线。

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

添加nginx监控脚本

赋予脚本权限

启动监控脚本

重启keepalived

nginx状态测试


一、环境:

初识keepalived,实现web服务器的高可用集群。

准备两台虚拟机

Server1: 192.168.229.11

Server2: 192.168.229.12

关闭防火墙、selinux,配置yum源 等步骤请参考:

关闭防火墙,selinux,配置源

二、文件的配置

1、server1

下载keepalived

yum -y install keepalived

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

vim /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
#    }

}

 开机启动keepalived

systemctl enable keepalived.service

安装Nginx

yum -y install nginx

systemctl enable nginx.service    #开机自启动
systemctl start nginx.service     #开启

修改一下nginx默认页面内容,方便更直观的感受高可用性,内容可以web111111为例

vim /usr/share/nginx/html/index.html

启动keepalived

systemctl start keepalived.service

使用 ip a 命令查看

2、server2

下载keepalived

yum -y install keepalived

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

vim /etc/keepalived/keepalived.conf

配置文件示例:

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

state MASTER改为  state BACKUP
mcast_src_ip 192.168.229.11改为backup服务器实际的IP mcast_src_ip 192.168.229.12
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 {
    state 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
#    }

}

 开机启动keepalived

systemctl enable keepalived.service

安装Nginx

yum -y install nginx

systemctl enable nginx.service    #开机自启动
systemctl start nginx.service     #开启

修改一下nginx默认页面内容,方便更直观的感受高可用性,内容可以web22222为例

vim /usr/share/nginx/html/index.html

启动keepalived

systemctl start keepalived.service

使用 ip a 命令查看

在此对比可发现,在server1主服务器中可以看到192.168.229.100这个对外虚拟ip,而在server2从服务器中看不到192.168.229.100这个对外虚拟ip,这是因为

1.server1 拥有虚拟 IP,因为它是主服务器。

2.server2 不拥有虚拟 IP,因为它是备用状态。

这种设计保证了服务的连续性和高可用性。

三、测试

访问VIP(对外虚拟ip)http://192.168.229.110

拔掉master(server1)的网线。

访问VIP(对外虚拟ip)http://192.168.229.110,观察网页已经切换

再查看一下server2的ip,发现对外虚拟ip已切换

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

关闭master的nginx服务 。systemctl stop nginx 继续访问VIP,就会出现错误,不能够切换到从服务器上,原因是keepalived监控的是接口IP状态。无法监控nginx服务状态,因此需要编辑一个脚本监控nginx的状态。

添加nginx监控脚本

server1和server2一样都添加nginx脚本

vim /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

启动监控脚本

清除掉配置文件中的注释

vim /etc/keepalived/keepalived.conf

重启keepalived

systemctl restart keepalived.service

nginx状态测试

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值