heartbeat 高可用配置
本文最后更新于 2385 天前,其中的信息可能已经有所发展或是发生改变。

一、什么是 heartbeat

HA 即 (high available)高可用,又被叫做双机热备,用于关键性业务。 简单理解就是,有两台机器A和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B机器继续提供服务。

下面我们使用heartbeat来做HA集群,并且把nginx服务作为HA对应的服务。

二、试验准备

两个机器, 都是centos6.7,网卡eth0 ip如下:

centos 192.168.0.6
backup 192.168.0.12

hostname 设置好,分别为centos 和 backup

关闭防火墙

iptables -F

关闭selinux:

setenforce 0

vi /etc/hosts // 增加如下内容:

192.168.0.6 centos
192.168.0.12 backup

三、安装 heartbeat

两个机器都安装heartbeat / libnet

yum -y install epel-release heartbeat* libnet nginx

四、配置 heartbeat

三个主要的配置文件

1、authkeys // 节点之间认证的密匙key文件,权限为:600
2、ha.cf // 主配置文件
3、haresources // 集群资源管理配置文件

主上(centos)配置

cd /usr/share/doc/heartbeat-3.0.4/
cp authkeys ha.cf haresources /etc/ha.d/
cd /etc/ha.d

authkeys 有3种加密算法:

1、crc
2、sha1
3、md5

随便选择一种就可以了,这里就选择md5加密算法的,以下命令生成一个随机md5值

dd if=/dev/urandom bs=512 count=1 | openssl md5

vi /etc/ha.d/authkeys // 添加以下内容

auth 3

3 md5 9dba97e53862cf5873ff7297a2c4815a
chmod 600 authkeys // 更改权限

vi haresources // 加入

centos 192.168.0.100/24/eth0:0 nginx

192.168.0.100是一个虚拟IP即VIP,eth0:0是虚拟网卡,nginx是接管的服务,可写多个以空格隔开

既然nginx现在由heartbeat接管了,就不应该设置为开机启动

chkconfig --del ngninx
chconfig nginx off

为什么heartbeat能够启动nginx是因为heartbeat会在以下两个位置寻找nginx的启动脚本

1. /etc/ha.d/resource.d (根据不同的安装方式可能会有不同)
2. /etc/init.d/

vi ha.cf // 改为如下内容(去掉了不常用的)

debugfile /var/log/ha-debug          // heartbeat debug日志存放位置
logfile /var/log/ha-log              // heartbeat 日志存放位置
logfacility local0                   // 这个是设置heartbeat的日志,这里是用的系统日志
keepalive 2                          // 指定心跳间隔时间为2秒(即每两秒钟在eth1上发送一次广播)
deadtime 30                          // 指定备用节点在30秒内没有收到主节点的心跳信号后,则立即接管主节点的服务资源
warntime 10                          // 指定心跳延迟的时间为十秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务
initdead 60                          // 在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍
udpport 694                          // 监听端口
ucast eth0 192.168.0.12
auto_failback on                     // 主节点恢复后自动重新接管.
node centos                          // 主节点主机名,须和 uname -n命令的结果一样
node backup                          // 从节点主机名,须和 uname -n命令的结果一样
ping 192.168.0.1                     // 相当于仲裁,比如:主节点不能ping通从节点,那怎么确定是从节点的问题而不是主节点的问题呢?所以这时候需要一个裁判。
respawn hacluster /usr/lib/heartbeat/ipfail   // 用于检测和处理网络故障

把主上的三个配置拷贝到从上

cd /etc/ha.d/

scp authkeys ha.cf haresources backup:/etc/ha.d/

到从上(backup) 编辑 ha.cf

vi /etc/ha.d/ha.cf //只需要更改一个地方

ucast eth1 192.168.0.12

改为

ucast eth1 192.168.0.6

另外 authkeys haresources 都是需要不更改的

五、测试 heartbeat

启动heartbeat

先主,后从

service heartbeat start

检查测试

ifconfig 看是否有 eth0:0

ps aux |grep nginx 看是否有nginx进程

现在另外找台电脑ping 192.168.0.100 正常情况是一直都是ping通状态(除了防火墙禁ping)

其它比如 断电、停止heartbeat等等 ping 192.168.0.100 一直都应该是ping通状态

测试的几个方法:

主上故意禁ping:

iptables -I INPUT -p icmp -j DROP

主上停止heartbeat服务

service heartbeat stop

主上关机

poweroff

主上非正常结束heartbeat

killall -9 heartbeat

手动切换:

sh /usr/share/heartbeat/hb_standby

主动通知对方( 我 )已经待机,让对方接管。

还有就是 heartbeat 并不处理进程,比如主上的nginx挂了,但是 heartbeat没有问题,网络也没有问题,那么nginx不会自动重启,也不会切换到从上面去。

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇