CentOS_6.7高可用服务Heartbeat_v3.0.4安装以及配置

CentOS_6.7高可用服务Heartbeat_v3.0.4安装以及配置


集群系统主要就2种:

  高可用(High Availability)HA集群: 使用Heartbeat/keepalived等软硬件实现;也会称为”双机热备”, “双机互备”, “双机”。
  负载均衡群集(Load Balance Cluster):使用LinuxVirtual Server(LVS)/haproxy/nginx等软硬件实现;

Heartbeat项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。

  高可用集群是指一组通过硬件和软件连接起来的独立计算机,它们在用户面前表现为一个单一系统,在这样的一组计算机系统内部的一个或者多个节点停止工作,服务会从故障节点切换到正常工作的节点上运行,不会引起服务中断。从这个定义可以看出,集群必须检测节点和服务何时失效,何时恢复为可用。这个任务通常由一组被称为“心 跳”的代码完成。在Linux-HA里这个功能由一个叫做heartbeat的程序完成。

  heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未受到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。


消息通信模型

Heartbeat包括以下几个组件:

heartbeat � 节点间通信校验模块

CRM - 集群资源管理模块

CCM - 维护集群成员的一致性

LRM - 本地资源管理模块

StonithDaemon - 提供节点重启服务

logd - 非阻塞的日志记录

apphbd - 提供应用程序级的看门狗计时器

Recovery Manager - 应用故障恢复

底层结构�包括插件接口、进程间通信

CTS � 集群测试系统,集群压力测试

这里主要分析的是Heartbeat的集群通信机制,所以这里主要关注的是heartbeat模块


heartbeat模块由以下几个进程构成:

master进程(masterprocess)

FIFO子进程(fifochild)

read子进程(readchild)

write子进程(writechild)

  在heartbeat里,master进程把自己的数据或者是客户端发送来的数据,通过IPC发送到write子进程,write子进程把数据发送到网络;同时read子进程从网络读取数据,通过IPC发送到master进程,由master进程处理或者由master进程转发给其客户端处理。

  Heartbeat启动的时候,由master进程来启动FIFO子进程、write子进程和read子进程,最后再启动client进程。

 

系统:CentOS 6.7 x86_64(两台虚拟机)

安全:SElinux disabled

      Iptables disabled

Heartbeat版本:v3.0.4

Cluster Gule版本:v1.0.5

Resource Agents版本:v3.9.5

软件包安装方式:yum安装

Heartbeat3.0以后是由 gule、heartbeat、agents 三部分组成。因此,需要分别安装。


一、准备工作

1. 配置hosts文件(vim /etc/hosts):

10.0.0.50 db1

192.168.0.205 db1

10.0.0.52 db2

192.168.0.201 db2

注:

1)hostname带后缀的域名(HA25pxdschool.org)会出报错。


2. 安装依赖:

# yum installgcc gcc-c++ autoconfautomake libtool glib2-devel libxml2-devel bzip2-devel e2fsprogs-devellibxslt-devel libtool-ltdl-devel make  wget docbook-dtds docbook-style-xsl  #源码安装时必须安装的依赖


3. 添加运行 heartbeat的用户和组 (源码安装,在主备服务器上同时操作)

# groupadd -r haclient

# useradd -r -g haclient -M -s /sbin/nologin hacluster


4. 换yum源

# mv /etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup

# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo


5. 调整时区并对时

# ntpdate 10.0.0.254  #db1与db2上分别对时

 7 May 22:33:02 ntpdate[2729]: adjust timeserver 10.0.0.254 offset -0.001976 sec


二、安装

# yum -y installheartbeat* httpd #最小化安装的系统大约有26个左右的包要安装


三、配置并启动Heartbeat

1. 主上(db1)的配置:

cd /usr/share/doc/heartbeat-3.0.4/

cp  authkeys  ha.cf    haresources   /etc/ha.d/

cd /etc/ha.d

vi authkeys #打开下面两项:一共有三种认证方式供选择,第一种是CRC循环冗余校验,第二种是SHA1哈希算法,第三种是MD3哈希算法,其中他们的密码可以任意设置,但是两边密码必须保持一致。  

auth 3 

3 md5 Hello!

chmod 600 authkeys   #给认证文件授权为600

vi  haresources    #编辑资源文件,加入如下语句

db1 10.0.0.210/24/eth0 httpd #设定虚拟IP和对应的接口,并且指定启动虚拟IP时启动httpd服务,这里的httpd服务必须是能够直接在/etc/init.d/目录下启动的服务。

注意:主节点和备节点中资源文件haresources要完全一样。

 

# ha.cf文件主要参数注释:

debugfile /var/log/ha-debug   #设定debug文件目录

logfile /var/log/ha-log     #设定日志文件目录

logfacility     local0    #利用系统日志打印日志

keepalive 1           #设定检查时间间隔为1s

deadtime 10           #设定在10s内没有心跳信号,则立即切换服务

warntime 5            #设定告警时间为5s(5s内没有收到对方的回应就报警)

initdead 60           #设定初始化时间为60s

udpport 694           #设定集群节点间的通信协议及端口为udp694监听端口(该端口可以修改)

ucast eth1  192.168.0.201    #设定心跳方式使用单播方式,并且是在eth1接口上进行单播,ip地址为对方心跳端口的IP

auto_failback on/off       #当主节点恢复后,是否自动切回,一般都设为off

node    db1          #指定两个节点

node    db2

ping 192.168.0.1         #指定一个第三方的仲裁节点

respawn hacluster /usr/lib64/heartbeat/ipfail  #使用这个脚本去侦听对方是否还活着(使用的是ICMP报文检测)


# egrep -v "^#|^$"ha.cf   //此次试验的配置文件

debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility     local0

keepalive 2

deadtime 30

warntime 10

initdead 120

udpport 694

ucast eth1 192.168.0.201

auto_failback off

node    db1

node    db2

ping 192.168.0.1

respawn hacluster /usr/lib64/heartbeat/ipfail

 

2. 把主上的三个配置拷贝到从(db2)上:

cd /etc/ha.d/

scp �P52668 -p authkeys  ha.cf   haresources   root@db2:/etc/ha.d/

 

3. 到从上(db2) 编辑ha.cf

vi  /etc/ha.d/ha.cf  #只需要更改一个地方, IP修改为对端主机的IP地址(192.168.0.205)

ucast eth1 192.168.0.201  改为  ucast eth1 192.168.0.205

 

4. 启动heartbeat

先主,后从

service heartbeat start

 

5. 测试高可用

db1:

[root@db1 ha.d]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu65536 qdisc noqueue state UNKNOWN

   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

   inet 127.0.0.1/8 scope host lo

   inet6 ::1/128 scope host

      valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc pfifo_fast state UP qlen 1000

   link/ether 00:0c:29:db:31:f7 brd ff:ff:ff:ff:ff:ff

   inet 10.0.0.50/24 brd 10.0.0.255 scope global eth0

    inet 10.0.0.210/24 brd 10.0.0.255 scopeglobal secondary eth0

   inet6 fe80::20c:29ff:fedb:31f7/64 scope link

      valid_lft forever preferred_lft forever

3: eth1:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWNqlen 1000

   link/ether 00:0c:29:db:31:01 brd ff:ff:ff:ff:ff:ff

   inet 191.168.0.205/24 brd 191.168.0.255 scope global eth1

   inet6 fe80::20c:29ff:fedb:3101/64 scope link

         valid_lft forever preferred_lft forever

db2:

[root@db1 ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu65536 qdisc noqueue state UNKNOWN

   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

   inet 127.0.0.1/8 scope host lo

   inet6 ::1/128 scope host

      valid_lft forever preferred_lft forever

2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen1000

   link/ether 00:0c:29:db:31:f7 brd ff:ff:ff:ff:ff:ff

   inet 10.0.0.52/24 brd 10.0.0.255 scope global eth0

   inet6 fe80::20c:29ff:fedb:31f7/64 scope link

      valid_lft forever preferred_lft forever

3: eth1:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWNqlen 1000

   link/ether 00:0c:29:db:31:01 brd ff:ff:ff:ff:ff:ff

   inet 191.168.0.201/24 brd 191.168.0.255 scope global eth1

   inet6 fe80::20c:29ff:fedb:3101/64 scope link

      valid_lft forever preferred_lft forever

[root@db1 ~]# curl 10.0.0.210  

web1 page

 

# 停掉db1上的网卡服务或关机后,再次在db2上查看VIP和服务是否切换成功

[root@db1 ~]# service heartbeat stop

Stopping High-Availability services: Done.

db2:

CentOS_6.7高可用服务Heartbeat_v3.0.4安装以及配置_第1张图片

[root@db1 ~]# curl 10.0.0.210      

web2 page



你可能感兴趣的:(heartbeat)