Linux高可用软件之Heartbeat

本文详细介绍如何使用Heartbeat在两台CentOS 6.5机器上搭建一个高可用集群,包括机器准备、IP规划、Heartbeat安装配置及验证过程。通过本教程,读者可以了解到如何实现虚拟IP的自动漂移以及服务的自动接管。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1    准备机器

准备两台CentOS 6.5机器,每台机器两个网卡或一个网卡一个空闲串口。网卡用于连接公用网络,串口电线传输Heartbeat信号相对较好用于心跳监控,如果没有条件,也可以使用以太网交叉线连接两台机器的网卡。

2    IP规划

节点类型

IP地址规划

主机名

类型

主节点(Master)

eth0

192.168.88.134

node1

公用IP

eth1

10.1.1.1

priv1

私用IP

eth0:0

192.168.80.200

 

虚拟IP

备用节点(Backup)

eth0

192.168.88.135

node1

公用IP

eth1

10.1.1.2

priv1

私用IP

3    安装

由于yum源中没有Heartbeat安装包,因此,必须先安装epel包,才能使用yum安装Heartbeat包。

[root@localhost local]# cd /usr/local
[root@localhost local]# wget http://mirrors.ustc.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@localhost local]# rpm -ivh epel-release-6-8.noarch.rpm
[root@localhost local]# rpm -qa|grep epel
epel-release-6-8.noarch

安装Heartbeat。

[root@localhost local]# yum -y install heartbeat

将/usr/share/doc.heartbeat-3.0.4/下的模板配置文件复制到/etc/ha.d/下。

[root@localhost local]# cd /usr/share/doc/heartbeat-3.0.4
[root@localhost local]# cp ha.cf haresources authkeys /etc/ha.d/

修改主配置文件(ha.cf)。

# heartbeat的调试日志存放位置
debugfile /var/log/ha-debug
# heartbeat的日志存放位置
logfile /var/log/ha-log
# 如果未定义上述日志文件,那么日志信息送入local0(/var/log/messages)
# 如果这三个日志配置都没有定义,默认情况下, 
# 将在/var/log下创建ha-debug和ha-log文件记录日志信息
logfacility local0
# 发送心跳报文的间隔,默认单位为秒,如果要设置为毫秒,需要在后面加ms
keepalive 2
# 备用节点在指定时间内没有收到心跳信息,则立即接管主节点的服务资源
deadtime 30
# 备用节点在指定时间内没有收到心跳信息,则写入警告日志到日志文件中,
# 此时不会切换服务
warntime 10
# 系统启动或重启需要经过一段时间才能正常工作,至少是deadtime两倍
initdead 120
# 在eth1接口进行以太网心跳广播
#bcast eth1
# 在eth1接口进行以太网心跳单播
#ucast eth1 <对方IP地址>
# 单播和广播使用的端口,默认端口为694
#udpport 694
# 在eth1接口进行以太网心跳组播
# 格式:mcast <接口> <组播IP地址> <端口> <经过路由跳数> <是否允许回环>
# 组播IP地址范围224.0.0.0~239.255.255.255,默认端口为694
# 单播、组播、广播任选一种方式
mcast eth1 255.0.0.1 694 1 0
# 主节点恢复后,是否自动切回服务,默认为on。
auto_failback off
# 主节点主机名,通过uname -n查看
node node1
# 备用点主机名
node node2

修改认证配置文件(authkeys)配置文件。

# authkeys文件用于设置Heartbeat的认证方式,
# 共有3种认证方式,安全性大小依次增强,占用资源依次增加
# crc<md5<sha1(推荐使用)
auth 2
# 1 crc
2 sha1 82fc19ed6e84905eb92364ccae8d86d20ade523e
# 3 md5 6fa337cce1383f9416ec05b17664c185

修改认证配置文件(authkeys)的权限为600。

[root@localhost local]# chmod 600 /etc/ha.d/authkeys

修改资源配置文件(haresouce)。

# haresouce文件中每一行可以包含一个货多个资源脚本名,
# 资源之间使用空格隔开,参数之间使用两个冒号隔开,
# 格式:node-name network <resource-group>
# node-name为主节点主机名
# network用于设定集群IP地址(虚拟IP地址)、子网掩码和网络设备标识等。
# <resource-group>指定Heartbeat托管的服务,
# 也就是这些服务可以由Heartbeat来启动和关闭
# 这些服务必须写成通过start/stop来启动和关闭的脚本
# 放置在/etc/init.d/或者/etc/ha.d/resource.d/目录下
# Heartbeat会根据脚本名称自动调用
node1 IPaddr::192.168.88.200/24/eth0/

设置IP地址。

Master

  • eth0:

DEVICE=eth0

BOOTPROTO=dhcp

HWADDR=00:0c:29:99:c4:d6

IPV6INIT=no

NM_CONTROLLED=yes

ONBOOT=yes

TYPE=Ethernet

UUID="dfdaee22-a458-4e54-a862-f68447926fe1"

USERCTL=no

PEERDNS=yes

  • eth1:

DEVICE=eth1

BOOTPROTO=none

NETMASK=255.255.255.0

TYPE=Ethernet

IPADDR=10.1.1.1

IPV6INIT=no

ONBOOT=yes

USERCTL=no

 

Slave

  • eth0:

DEVICE=eth0

BOOTPROTO=dhcp

HWADDR=00:0c:29:7d:75:c5

IPV6INIT=yes

NM_CONTROLLED=yes

ONBOOT=yes

TYPE=Ethernet

UUID="45b7addb-834d-40c0-804f-cc6b1d03001c"

USERCTL=no

IPADDR=192.168.88.135

NETMASK=255.255.255.0

  • eth1:

DEVICE=eth1

BOOTPROTO=none

NETMASK=255.255.255.0

TYPE=Ethernet

IPADDR=10.1.1.2

IPV6INIT=no

ONBOOT=yes

USERCTL=no

设置主机名(/etc/sysconfig/network)。

Master:

HOSTNAME=node1

Slave:

HOSTNAME=node2

设置hosts文件(/etc/hosts)。

192.168.88.134   node1
192.168.88.135   node2

重启服务器。

[root@localhost local]# reboot

关闭iptables。

# service iptables stop

启动heartbeat服务。

# service heartbeat start

查看虚拟IP的绑定情况。

# ip add | grep -i 192.168.88

Master输出:

inet 192.168.88.134/24 brd 192.168.88.255 scope global eth0

inet 192.168.88.200/24 brd 192.168.88.255 scope global secondary eth0

Slave输出:

# ip add | grep -i 192.168.88

inet 192.168.88.135/24 brd 192.168.88.255 scope global eth0

 关闭Master的Heartbeat服务后查看虚拟IP的绑定情况。

Master输出:

inet 192.168.88.134/24 brd 192.168.88.255 scope global eth0

Slave输出:

# ip add | grep -i 192.168.88

inet 192.168.88.135/24 brd 192.168.88.255 scope global eth0

inet 192.168.88.200/24 brd 192.168.88.255 scope global secondary eth0

 重启Master的Heartbeat服务后查看虚拟IP的绑定情况。

Master输出:

inet 192.168.88.134/24 brd 192.168.88.255 scope global eth0

inet 192.168.88.200/24 brd 192.168.88.255 scope global secondary eth0

Slave输出:

# ip add | grep -i 192.168.88

inet 192.168.88.135/24 brd 192.168.88.255 scope global eth0

4    备注

如果除了漂移虚拟IP,还要管理类似于Apache的启动和停止,可以使用修改haresouce的内容为:

node1 IPaddr::192.168.88.200/24/eth0/ httpd

httpd脚本必须在/etc/ha.d/resource.d/或/etc/init.d/目录下。

 

转载于:https://my.oschina.net/leeck/blog/1547334

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值