ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Keepalived配置和测试过程for linux

Keepalived配置和测试过程for linux

原创 Linux操作系统 作者:ywxj_001 时间:2016-06-29 18:05:48 0 删除 编辑

Keepalived配置和测试过程for linux

安装环境:

两台server:System x3650 M3

Node1:硬盘:130G   CPU:2颗E5620  @ 2.40GHz     内存:4G

Node2:硬盘:130G   CPU:2颗E5620  @ 2.40GHz     内存:8G

1、  安装redhat 6.4系统

用U盘安装rhel-server-6.4-x86_64-dvd.iso

分区:

/boot        200M

/boot/efi     200M

Swap        4096M

/            13000M

只安装Basic版本,不要安装桌面

需要在language里面选择chinese包

安装系统完成后设置网卡eth0


2、  设置keepalived

Node1:


! Configuration File for keepalived

global_defs {

   router_id 234567       #router_id,配置一个网络唯一的ID

}

vrrp_instance VI_3 {        #为keeplived实例号,一般一台服务器只有1个实例,不用更改

    state BACKUP         #为keepalived初始状态,此处需要设置成BACKUP

    nopreempt           #配置为非抢占模式,在node1切到node2,vip从node1飘到node2后,node1恢复后,服务不会再切回node1,而是继续让node2做MASTER,服务在node2上面继续跑

    interface eth0          #为启用keepalived的接口,根据实际情况设置

    virtual_router_id 40    #为keepalived虚拟ID,同一集群必须相同

    priority 100          #服务优先级,MASTER设置为100,BACKUP设置为90

    advert_int 1          #心跳区间设置为1秒

    authentication {

        auth_type PASS

        auth_pass 10101010       #设置验证密码,同一集群必须相同

    }

    virtual_ipaddress {

        172.16.0.120 dev eth0 label eth0:0   #设置服务IP,dev label可省略

    }

    notify_master "/etc/keepalived/notify.sh master"    #切换成master,执行一次脚本

    notify_backup "/etc/keepalived/notify.sh backup"    #切换成backup,执行一次脚本

    notify_fault "/etc/keepalived/notify.sh fault"        #切换成fault,执行一次脚本

}

Node2:


! Configuration File for keepalived

global_defs {

   router_id 123456

}

vrrp_instance VI_3 {

    state BACKUP

    nopreempt

    interface eth0

    virtual_router_id 40

    priority 90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 10101010

    }

    virtual_ipaddress {

        172.16.0.120 dev eth0 label eth0:0

    }

    notify_master "/etc/keepalived/notify.sh master"

    notify_backup "/etc/keepalived/notify.sh backup"

    notify_fault "/etc/keepalived/notify.sh fault"

}

3、  设置notify. sh

Node1:


#!/bin/bash

#

case $1 in

    master)

        service httpd restart      #此行为应用启动脚本,根据应用更改

    echo "master" >>/etc/keepalived/log

        ;;

    backup)

        service httpd stop        #此行为应用启动脚本,根据应用更改

        echo "backup" >>/etc/keepalived/log

        ;;

    fault)

        service httpd stop        #此行为应用启动脚本,根据应用更改

        echo "fault" >>/etc/keepalived/log

        ;;

esac
Node2:



#!/bin/bash

#

case $1 in

    master)

        service httpd restart

    echo "master" >>/etc/keepalived/log

        ;;

    backup)

        service httpd stop

        echo "backup" >>/etc/keepalived/log

        ;;

    fault)

        service httpd stop

        echo "fault" >>/etc/keepalived/log

        ;;

esac

4、  其他设置

关闭两个系统的防火墙


设置keepalived服务开机启动:chkconfig keepalived on

5、  进行keepalived服务切换试验

初始状态:

Node1:


Node2:



重启Node1上的keepalived服务:Vip从node1漂移到了node2





VIP掉了一个包(advert_int 1          #心跳区间设置为1秒)间隔是1秒

Node1上的httpd服务停止,Node1变成backup


Node2上的httpd服务启动,Node2变成master

 

重启Node2上的keepalived服务:

Vip从node2漂移到了node1



在重启keepalived的时候,每个节点的VIP会进行漂移,在VIP漂移到某个节点的时候,这个节点的httpd服务也相应会起来。而没有VIP节点的httpd服务会关闭。

比如:

Node1的IP:172.16.0.121

Node2的IP:172.16.0.122

VIP:172.16.0.120

Httpd的服务在哪个节点,那么就可以通过那个节点的IP和VIP共同访问Apache的测试网页。


6、  用插拔网线来测试服务漂移情况

拔出Node1上的网线:


服务漂到Node2上


插上Node1上的网线:






Node2的VIP没有漂回到Node1,因为在Node1上设置了非抢占模式

拔出Node2的网线



VIP漂到了Node1上


插上Node2的网线




VIP仍然在node1上,没有漂到node2上

测试OK

表示keepalived的非抢占模式成功

如果遇到非抢占模式不成功的话,因为这两台服务器都是通过交换机连接的,可以把连接交换机的端口设置为快速转发即可

int eth 1/0/1
stp disable
stp edged-port enable

因为可能是网络端口的延迟导致了非抢占不生效,比如说拔下node1的网线再插上,可能系统认为网络端口已经起来了,但是因为stp的存在,导致两台服务器网络之间的互信有延迟,node1可能认为node2是非存活状态,就把自己当做master拉起来了,等两端网络互信完成,就没有通过非抢占,而是直接比较优先级,node1优先级高,继续维持master状态。

所以这里加快了网络端口的转发速度,使网络端口在第一时间实现互通,node1第一时间认为node2是存活的,就应用了非抢占模式,node1变成了backup,node2还是做master。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22996654/viewspace-2121215/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: GPO策略变更
请登录后发表评论 登录
全部评论
在零售、金融、互联网行业从事数据库相关工作10余年,有丰富的数据库管理和架构的相关经验。 涉及SQLServer、Oracle、MySQL、PostgreSQL等多种数据库。 目前在一家互联网公司担任DBA经理。 负责整个集团数据库的架构设计和管理工作。

注册时间:2010-01-19

  • 博文量
    247
  • 访问量
    436217