大兵是
一个想全能的运维

高可用软件keepalived与heartbeat的配置与区别

一、环境及规划

[root@ha01 ~]# cat /etc/redhat-release 
CentOS release 6.8 (Final)
[root@ha01 ~]# uname -r
2.6.32-642.el6.x86_64
[root@ha01 /]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@ha01 ~]# getenforce 
Disabled
ip规划

服务器(主机名)

外网ip 内网ip
ha01 10.0.0.11 172.16.1.12
ha02 10.0.0.12 172.16.1.12

说明:10.0.0.10作为VIP。

本次测试使用httpd演示,在ha01和ha02上安装httpd。

#在两台服务器都进行下面的操作
yum install httpd -y   #安装httpd
/etc/init.d/httpd start   #启动httpd
lsof -i:80  #检查启动结果
[root@ha01 /]# echo "10.0.0.11"> /var/www/html/index.html
[root@ha02 /]# echo "10.0.0.12"> /var/www/html/index.html
#在二台服务器web站点下分别写入为自己ip的页面
[root@ha01 /]# curl 10.0.0.11
10.0.0.11   #访问结果
[root@ha01 /]# curl 10.0.0.12
10.0.0.12   #访问结果

二、keepalived部署

1、在两台服务器上安装keepalived。

yum install keepalived -y

2、修改配置文件

#ha01的配置文件
[root@ha01 /]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
   yourmail@qq.com
   }
   notification_email_from  yourmail@qq.com   #配置发送邮箱及邮箱的服务器
   smtp_server 192.168.1.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL  #标识符,唯一
}

vrrp_instance VI_1 {
    state MASTER #主
    interface eth0 #设置绑定的网卡
    virtual_router_id 51 #虚拟路由标识,主备一样
    priority 150 #优先级,主高于备
    advert_int 1 #检查时间
    authentication {
        auth_type PASS #验证密码
        auth_pass 1111 #主备相同
    }
    virtual_ipaddress {
     10.0.0.10/24 dev eth0 label eth0:1  #虚拟ip地址
    }
}
#ha02的配置文件
[root@ha02 /]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
   yourmail@qq.com
   }
   notification_email_from  yourmail@qq.com
   smtp_server 192.168.1.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL1

 }
vrrp_instance VI_1 {
    state BACKUP #备
    interface eth0
    virtual_router_id 51
    priority 100 #优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
     10.0.0.10/24 dev eth0 label eth0:1 
    }
}

3、启动两台服务器keepalived

[root@ha01 /]# /etc/init.d/keepalived start
Starting keepalived:                                     [  OK  ]
[root@ha02 /]# /etc/init.d/keepalived start
Starting keepalived:                                     [  OK  ]

4、测试

[root@ha01 /]# curl 10.0.0.10
10.0.0.11 #当ha01宕机后,自动切换到备机,当主机恢复后,会切回来。
[root@ha01 /]# curl 10.0.0.10
10.0.0.12  
#将keepalived加入开机任务。
[root@ha01 ~]# chkconfig  keepalived on

三、heartbeat部署

1、在keepalived的基础上,为ha01和ha02增加一块网卡,用作心跳直连。

ha01增加eth2,ip为10.0.10.11;ha02增加eth2,ip为10.0.10.12,。

[root@ha01 ~]# ifup eth2 #启动网卡eth2
[root@ha01 ~]# route add -host 10.0.10.12 dev eth2 #ha01执行
[root@ha02 ~]# route add -host 10.0.10.11 dev eth2 #ha02执行
#vip进行通信

2、安装heartbeat。

#yum安装需要epel源,加入epel,http://mirrors.aliyun.com/help/epel
[root@ha01 ~]# yum install heartbeat -y #安装heartbeat

3、配置

配置名称 作用 备注
ha.cf heartbeat参数配置文件 在这里配置一些heartbeat的参数
authkey heartbeat认证文件 高可用服务器之间根据对端的authkey来进行认证
haresource heartbeat资源配置文件 如配置启动ip资源、服务等

[root@ha01 ~]# ll /etc/ha.d/ #配置文件目录
total 20
-rwxr-xr-x 1 root root  745 Dec  3  2013 harc
drwxr-xr-x 2 root root 4096 Feb 13 17:40 rc.d
-rw-r--r-- 1 root root  692 Dec  3  2013 README.config
drwxr-xr-x 2 root root 4096 Feb 13 17:40 resource.d
-rw-r--r-- 1 root root 2082 May 12  2016 shellfuncs
[root@ha01 ~]# ll /usr/share/doc/heartbeat-3.0.4/ 配置文件模板目录
total 144 
-rw-r--r-- 1 root root  1873 Dec  3  2013 apphbd.cf
-rw-r--r-- 1 root root   645 Dec  3  2013 authkeys
-rw-r--r-- 1 root root  3701 Dec  3  2013 AUTHORS
-rw-r--r-- 1 root root 58752 Dec  3  2013 ChangeLog
-rw-r--r-- 1 root root 17989 Dec  3  2013 COPYING
-rw-r--r-- 1 root root 26532 Dec  3  2013 COPYING.LGPL
-rw-r--r-- 1 root root 10502 Dec  3  2013 ha.cf
-rw-r--r-- 1 root root  5905 Dec  3  2013 haresources
-rw-r--r-- 1 root root  2935 Dec  3  2013 README

(1)配置/etc/ha.cf,两台服务器的配置是一模一样的

[root@data01 ~]# cd /etc/ha.d/
[root@data01 ha.d]# vim ha.cf 
#the start by bigd 
debugfile /var/log/ha-debug #日志文件
logfile	/var/log/ha-log
logfacility	local1  #接收日志的设备

keepalive 2 #间隔
deadtime 30 #死亡时间
warntime 10 #警告时间
initdead 60 #初始化的死亡时间,是deadtime的2倍

#bcast	eth2  #多播
mcast eth2 225.0.0.11 694 1 0

auto_failback on #主节点恢复后,是否自动切回,测试配置,实际使用场景用off,恢复后人工切回
node	ha01 #主节点主机名
node	ha02 #备节点主机名
crm	no #是否开启Cluster Resource Manager功能
#the end by bigd 

(2)authkeys配置

[root@ha01 ha.d]# echo 123456|md5sum #生成随机密码
f447b20a7fcbf53a5d5be013ea0b15af  -
[root@ha01 ha.d]# vim authkeys
auth 1
1 sha1 f447b20a7fcbf53a5d5be013ea0b15af
[root@ha01 ha.d]# chmod 600 /etc/ha.d/authkeys #密码文件的权限600 
[root@ha01 ha.d]# ll
total 28
-rw------- 1 root root   40 Feb 18 14:41 authkeys
-rw-r--r-- 1 root root  248 Feb 18 12:29 ha.cf
-rwxr-xr-x 1 root root  745 Dec  3  2013 harc
drwxr-xr-x 2 root root 4096 Feb 13 17:40 rc.d
-rw-r--r-- 1 root root  692 Dec  3  2013 README.config
drwxr-xr-x 2 root root 4096 Feb 13 17:40 resource.d
-rw-r--r-- 1 root root 2082 May 12  2016 shellfuncs

(3)配置haresources

[root@ha01 ha.d]# vim haresources
#ha service 
ha01 IPaddr::10.0.0.10/24/eth0  #代表开机后ha01服务器的eth0首先获得10.0.0.10

4、启动heartbeat

#ha01
[root@ha01 ha.d]# /etc/init.d/heartbeat start
Starting High-Availability services: INFO:  Resource is stopped
Done.

[root@ha01 ha.d]# ip a|grep 10.0.0.10
    inet 10.0.0.10/24 brd 10.0.0.255 scope global secondary eth0
#ha02
[root@ha02 html]# /etc/init.d/heartbeat start
Starting High-Availability services: INFO:  Resource is stopped
Done.

[root@ha02 html]# ip a|grep 10.0.0.10
###############模拟宕机##############
#ha01
[root@ha01 ha.d]# /etc/init.d/heartbeat stop
Stopping High-Availability services: Done.

[root@ha01 ha.d]# ip a|grep 10.0.0.10
#ha02
[root@ha02 html]# ip a|grep 10.0.0.10
    inet 10.0.0.10/24 brd 10.0.0.255 scope global secondary eth0

heartbeat实现准备切换成功。

如何出现错误,请查看日志/var/log/message。

[root@ha02 html]# /usr/share/heartbeat/hb_standby #完全释放
[root@ha02 html]# /usr/share/heartbeat/hb_takeover #完全接管,可接参数
/usr/share/heartbeat/hb_takeover: wrong resources(--).
usage:
/usr/share/heartbeat/hb_takeover [all|foreign|local|failback]

5、web高可用ha01、ha02

实现方式:

(1)、先启动httpd,通过ip漂移实现高可用,类似keepalived;

(2)、不启动httpd,交给heartbeat去控制。

#可以使用前面的keepalived的http环境
[root@ha01 ha.d]# pkill httpd
#修改配置文件
[root@ha01 ha.d]# cd /etc/ha.d/
[root@ha01 ha.d]# vim haresources 
#ha service
ha01 IPaddr::10.0.0.10/24/eth0 httpd

重启heartbeat,即可实现httpd高可用。

四、二者的区别与选择

1、heartbeat调用资源的生产场景:既可以控制VIP的漂移,也可以控制服务的启动与停止 ;

2、只需要控制vip漂移的时候,使用keepalived,但是需要控制服务使用heartbeat;

3、需要数据同步的,配合drbd,使用heartbeat。

打赏

未经允许不得转载: » 高可用软件keepalived与heartbeat的配置与区别

分享到:更多 ()

评论 2

  • 昵称 (必填)
  1. #2

    兵哥厉害

    2年前 (2017-03-30)回复
  2. #1

    兵哥,好厉害

    呵呵2年前 (2017-07-12)回复