keepalived搭建nginx高可用

1、keepalived是什么?


? ?keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。


2、keepalived工作原理


? keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。

3、keepalived实现双机热备

测试环境如下:

在上一篇nginx负载均衡中讲到212和213都是httpd服务。

10.10.252.211   nginx服务对212,213httpd服务实现负载均衡     keepalived主机
10.10.252.214   nginx服务对212,213httpd服务实现负载均衡     keepalived备机    

10.10.252.212    httpd服务 
10.10.252.213    httpd服务  

4、keepalived的安装

? ? ?4.1、两台机均安装keepalived

#yum 安装
yum install  keepalived

#修改主配置文件,已经将不是必须的配置内容删掉了。
vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
   router_id master
}
vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight -20
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    mcast_src_ip 10.10.252.211
    priority 100
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_nginx

 }
    virtual_ipaddress {
        10.10.252.215
    }
}
#从keepalived配置文件
! Configuration File for keepalived
global_defs {
   router_id slave1
}
vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight -20
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    mcast_src_ip 10.10.252.214
    priority 50
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_nginx

 }
    virtual_ipaddress {
        10.10.252.215
    }
}


4.2、检查nginx进程的脚本,将脚本放在/etc/keepalived/目录下,主从端都要有,并授权。

#!/bin/bash
pid=`ps -C nginx --no-header |wc -l`
if [ $pid -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

5、keepalived的启动和验证

systemctl restart keepalived

查看在wyl01和wyl04机器上是否有下面的进程

然后我们再看看机器wyl01上多了之前我们设定的vip的情况:

我们在页面上用10.10.252.215的ip去访问可以看到的wyl02机器上的httpd服务和wyl03上的机器上的httpd服务会依次出现。

?

当我们去关掉主keepalived服务后在查看情况:我们可以看到wyl04上多了虚拟vip。

?

?

我们再继续访问页面,查看效果,依然会出现依次出现wyl02和wyl03上的httpd服务。。

原文链接:加载失败,请重新获取