keepalived高可用性

1、在上一节的基础上,再加一个nginx服务器,并配置好负载均衡,系统结构如下:

主机名软件版本IP
javajdk-1.7
nginx-masternginx-1.1510.1.1.11
keepalived-masterkeepalived-2.0.1510.1.1.11
nginx-slavenginx-1.1510.1.1.12
keepalived-slavekeepalived-2.0.1510.1.1.12
tomcat1tomcat-7.0.9410.1.1.13
tomcat2tomcat-7.0.9410.1.1.14
memcached10.1.1.15
memcached-slave10.1.1.16

2、在两台nginx服务器上必须使用tar包源码安装keepalived,不然会遇到很多问题,并修改配置,如下:
安装:

tar -zxf keepalived-2.0.15.tar.gz
cd keeplived-2.0.15
./configure --prefix=/usr/local/keepalived
make && make install

3、修改10.1.1.11主节点的keepalived.conf,配置的路径为:/etc/keepalived/keepalived.conf:

#vim /etc/keepalived/keepalived.conf

global_defs {
    router_id LVS_MASTER #此id必须是唯一的,不允许重复
}
vrrp_script chk-nginx { #Nginx状态检测
    script "/usr/local/keepalived/sbin/chk-nginx.sh" #脚本路径和名称
    interval 3 #3秒检测一次
    weight 2 #权重值
}
vrrp_instance VI_1 {
    state MASTER #此节点为主节点
    interface ens33 #VIP地址绑定的网卡
    virtual_router_id 66 #id不允许重复
    priority 100 #优先级,优先级大的会获取到VIP,MASTER节点必须大于BACKUP
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {#VIP地址
        10.1.1.100
    }
    track_script
    {
        chk-nginx #此处要对应上面Nginx状态检测的名称
    }
} 
# 定义对外提供的LVS的VIP以及port
virtual_server 10.1.1.100 80 {
    delay_loop 6             # 设置健康检查时间,单位为秒
    lb_algo wrr            # 设置负载调度的算法为wrr
    lb_kind DR            # 设置lvs实现负载的机制,有NAT、TUN、DR三个模式
    netmask 255.255.255.0
    persistence_timeout 0        # 同一IP 0秒内的请求都发到同个real server
    protocol TCP
    real_server 10.1.1.11 80 { # 指定real server1的ip地址
            weight 3        # 配置节点权值,数值越大权重越高
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 10.1.1.12 80 {
        weight 3
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

4、修改10.1.1.12备节点的keepalived.conf:

global_defs {
    router_id LVS_BACKUP
}
vrrp_script chk-nginx {
    script "/usr/local/keepalived/sbin/chk-nginx.sh"
    interval 3
    weight 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 66
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.1.1.100
    }
    track_script
    {
        chk-nginx
    }
} 
# 定义对外提供的LVS的VIP以及port
virtual_server 10.1.1.100 80 {
    delay_loop 6             # 设置健康检查时间,单位为秒
    lb_algo wrr            # 设置负载调度的算法为wrr
    lb_kind DR            # 设置lvs实现负载的机制,有NAT、TUN、DR三个模式
    netmask 255.255.255.0
    persistence_timeout 0        # 同一IP 0秒内的请求都发到同个real server
    protocol TCP
    real_server 10.1.1.11 80 { # 指定real server的ip地址
        weight 3        # 配置节点权值,数值越大权重越高
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 10.1.1.12 80 {
        weight 3
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

5、Nginx状态检测的脚本:

#!/bin/bash
#author:fansik
#description:check nginx service
if [ `ps -ef|grep -v grep |grep "nginx: master process"|wc -l` -eq 0  ]
then
    /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps -ef|grep -v grep |grep "nginx: master process"|wc -l` -eq 0  ]
    then
          killall keepalived 
    fi
fi

注:整个逻辑为:

  1. 检查nginx: master process进程在不在,如果不在,则执行/etc/init.d/nginx start,自动拉起nginx;
  2. 再次检查nginx: master process进程在不在,如果不在,则执行killall keepalived,杀掉当前的keepalived服务;
  3. 若Nginx和keepalived服务同时都在运行,我们手动杀掉nginx进程的话,keepalived进程会自动拉起nginx。
  4. 使用此脚本前提是必须安装psmisc,可使用yum安装,不然会excited with status 127;

6、keepalived配置完成后,使用systemctl keepalived start启动,并观察两个服务器的网卡信息:
先看10.1.1.11上,这个是我们设置的master节点,可以看到当前的VIP地址10.1.1.100绑定在ens33网卡上:
在这里插入图片描述再看10.1.1.12 SLAVE节点的网卡信息,当前无VIP地址信息:在这里插入图片描述7、keepalived主备切换测试:
将MASTER节点keepalived停掉,再查看网卡信息:
MASTER节点无VIP信息:
在这里插入图片描述SLAVE节点出现VIP信息:在这里插入图片描述再将MASTER节点keepalived服务开启:
MASTER:VIP再次回到MASTER节点上
在这里插入图片描述SLAVE:无VIP信息在这里插入图片描述8、在网页上输入 http://10.1.1.100:80 ,可以访问到nginx后端的负载地址:在这里插入图片描述在这里插入图片描述keepalived高可用性基础配置已经完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dustin.Hoffman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值