KeepAlived实现高可用(suse)

来源:互联网 发布:网络摄像机哪个好 编辑:程序博客网 时间:2024/06/06 04:19

一、简介

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器

 

二、安装前的环境配置

本文档介绍的是keepAlived源码编译安装,需要为编译安装配置一些必须的环境,gcc是编译最基础的需要的环境,另外,下载ipvsadm-1.29-lp150.2.1.x86_64.rpm,kernel-devel-4.4.85-22.1.noarch.rpm,libopenssl-devel-1.0.2j-13.1.x86_64.rpm,zlib-devel-1.2.8-10.1.x86_64.rpm,然后使用rpm-ivh xxxx.xxx.rpm –nodeps

 

三、机器情况

IP地址

Hostname

服务

操作系统

172.20.43.21

HD-BATCH-NN-01

Ldap/mysql

Suse12

172.20.43.35

HD-BATCH-NN-02

Ldap/mysql

Suse12

 

虚拟IP:172.20.43.143/144

四、安装

1.下载软件:去官方网站下载keepAlived稳定版本,地址:http://www.keepalived.org/download.html,本文档使用的是目前最新版本:Keepalived for Linux - Version 1.3.9 - October 21, 2017。

2.解压文件:tar -zxvf  keepalived-1.3.9.tar.gz

3.进入解压后的目录:cd keepalived-1.3.9

4.编译安装:# ./configure --prefix=/usr/local/keepalived
            # make
              # make install
     说明:如果编译安装过程中报错,应该是缺少相对应的包,下载对应的rpm包安装好即可。

五、配置

1.    注册为系统服务:

# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/# touch /etc/init.d/keepalived# chmod +x /etc/init.d/keepalived
# vim /etc/init.d/keepalived


 /etc/init.d/keepalived 的文件内容:

#!/bin/sh

#

# Startup script for the Keepalived daemon

#

# processname: keepalived

# pidfile: /var/run/keepalived.pid

# config: /etc/keepalived/keepalived.conf

# chkconfig: - 21 79

# description: Start and stop Keepalived

 

# Source function library

. /etc/rc.d/init.d/functions

 

# Source configuration file (we set KEEPALIVED_OPTIONS there)

. /etc/sysconfig/keepalived

 

RETVAL=0

 

prog="keepalived"

 

start() {

    echo -n $"Starting $prog: "

    daemon keepalived ${KEEPALIVED_OPTIONS}

    RETVAL=$?

    echo

    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog

}

 

stop() {

    echo -n $"Stopping $prog: "

    killproc keepalived

    RETVAL=$?

    echo

    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog

}

 

reload() {

    echo -n $"Reloading $prog: "

    killproc keepalived -1

    RETVAL=$?

    echo

}

 

# See how we were called.

case "$1" in

    start)

        start

        ;;

    stop)

        stop

        ;;

    reload)

        reload

        ;;

    restart)

        stop

        start

        ;;

    condrestart)

        if [ -f /var/lock/subsys/$prog ]; then

            stop

            start

        fi

        ;;

    status)

        status keepalived

        RETVAL=$?

        ;;

    *)

        echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"                                                                            

        RETVAL=1

esac

 

exit $RETVAL

 


2.    编辑keepalived.conf配置文件

# mkdir /etc/keepalived/

# cp /usr/local/keepalived/etc/keepalived/keepalived.conf/etc/keepalived/

# vim /etc/keepalived/keepalived.conf

       说明:keepalived.conf内容

    global_defs {
    router_id LVS_A  #虚拟路由名称
    }
 

      vrrp_script chkHealth { #脚本,可以用作安全检查或者脑裂处理等,可有可无

       ……

       ……

   }
 
   vrrp_instance VI_1 { #实例1,可配置多个实例,此处1个即可。
    state MASTER     #A服务主机作为MASTER(主),另外的作为BACKUP(备)
    interface bond0     #此处要注意,redhat,centos为eth0,但是suse为bond0                                    
    virtual_router_id 51  #为当前实例命名ID
    priority 150     #MASTER的值应该大于BACKUP
    advert_int 1
    authentication { #默认配置,不用修改
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.20.54.143  #给定的虚拟IP,请勿与同网段的主机发生IP冲突
    }

      track_script {   #需要执行的脚本或这函数(非必需)

            chkHealth

       }

 
}

 

 

3.    启动KeepAlived服务以及重启、停止相关命令:

servicekeepalived start

servicekeepalived stop

service keepalived restart

六、测试

1.    查看进程是否已经正常启动:

# ps-ef|grep keepalived |grep -v grep

root 139077  1      0  16:38?  00:00:00 /usr/local/keepalived/sbin/keepalived-D

root 139078139077  0  16:38 ?  00:00:00 /usr/local/keepalived/sbin/keepalived-D

root 139079139077  0  16:38 ?  00:00:00 /usr/local/keepalived/sbin/keepalived-D

 

2.    查看虚拟 IP 持有者

#ip add | grep “虚拟ip”

持有者返回的信息: inet172.20.43.143/32 scope global bond0

未持有者不返回信息

 

七、实现LDAP高可用。

Ldap服务器的主机不用做任何修改,需要修改客户端的配置,把客户端设置的ip地址把172.20.43.21改为虚拟IP即可。(需要实现LDAP主从复制:请参考后期:《广西五象O域批处理集群平台Ldap主从复制方案》)

八、实现MYSQL高可用

Mysql服务器不用做任何的修改,连接mysql的时候把IP地址172.20.43.21改为虚拟ip地址即可。(需要实现MYSQL主从复制,请参考:《广西五象O域批处理集群平台Mysql主从集群升级文档(suse12).docx》)

九、阻止“脑裂“

后期需要写脚本检查两边主机的虚拟IP情况,确保虚拟IP只同一时间存在一台主机智商,不允许存在两台主机之上(俗称“脑裂“)。

十、后续

如果不正确或者不明白之处,请提出和修正。

原创粉丝点击