21、部署heartbeat
阅读原文时间:2023年07月08日阅读:3

21.1、heartbeat部署规划:

本文的实验环境是虚拟机设备;

名称

接口

ip

用途

master-db(主)

eth0

10.0.0.16/24

用于服务器之间的心跳连接(直连)

eth1

172.16.1.16/24

管理ip用于数据转发

vip

172.16.1.26/24

提供对外访问的ip

slave-db(从)

eth0

10.0.0.17/24

用于服务器之间的心跳连接(直连)

eth1

172.16.1.17/24

管理ip用于数据转发

vip

172.16.1.26/24

提供对外的访问的ip

21.2、关闭selinux和防火墙:

master-db和slave-db的操作相同;

1、关闭selinux:

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

grep "SELINUX=disabled" /etc/selinux/config

setenforce 0

2、关闭防火墙:

/etc/init.d/iptables stop

chkconfig iptables off

21.3、修改主机名:

1、master-db:

[root@master-db ~]#sed -i "s#HOSTNAME=.*#HOSTNAME=master-db#g" /etc/sysconfig/network

[root@master-db ~]#hostname master-db

[root@master-db ~]#hostname

master-db

2、slave-db:

[root@slave-db ~]#sed -i "s#HOSTNAME=.*#HOSTNAME=slave-db#g" /etc/sysconfig/network

[root@slave-db ~]#hostname slave-db

[root@slave-db ~]#hostname

slave-db

21.4、配置master-db和slave-db之间的直连心跳线路由:

主从之间的关系全靠心跳线进行联系;

1、master-db:

[root@master-db ~]#route add -host 10.0.0.17 dev eth0

[root@master-db ~]#route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

10.0.0.17 0.0.0.0 255.255.255.255 UH 0 0 0 eth0

[root@master-db ~]#echo '/sbin/route add -host 10.0.0.17 dev eth0' >>/etc/rc.local

2、slave-db:

[root@slave-db ~]#route add -host 10.0.0.16 dev eth0

[root@slave-db ~]#route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

10.0.0.16 0.0.0.0 255.255.255.255 UH 0 0 0 eth0

[root@slave-db ~]#echo '/sbin/route add -host 10.0.0.16 dev eth0' >>/etc/rc.local

21.5、修改域名解析文件:

master-db和slave-db的操作相同;

vim /etc/hosts

10.0.0.16 master-db

10.0.0.17 slave-db

ping域名看是否可以ping通;

21.6、安装heartbeat:

master-db和slave-db的操作相同;

1、安装:

yum install heartbeat -y

rpm -qa heartbeat

heartbeat-3.0.4-2.el6.x86_64

2、heartbeat配置模板拷贝:

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

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

21.7、heartbeat配置文件配置:

master-db和slave-db的操作相同;

1、ha.cf配置文件:

vim /etc/ha.d/ha.cf

debugfile /var/log/ha-debug

#heartbeat调试日志的存放位置;

logfile /var/log/ha-log

#heartbeat日志存放位置;

logfacility local0

#在syslog服务中配置通过local1设备接收日志;

keepalive 2

##############################################

#指定心跳间隔为2秒,即每2秒发送在监听的网

#卡上发送一次广播,单播或组播

##############################################

deadtime 30

##############################################

#指定备用节点在30秒内没有收到主节点的心跳信号,则

#立即接管主节点的服务资源;

##############################################

warntime 10

##############################################

#指定心跳延迟时间为10秒,当10秒钟内备份节点不能接收到

#主节点的心跳信号时,会网日志中写入一个警告日志,但此时

#不会切换服务;

##############################################

initdead 60

##############################################

#指定在heartbeat首次运行后,需要等待60秒才能启动主服务器

#的任何资源,取值至少为datatime时间的2倍;

##############################################

udpport 694

#heartbeat心跳通信端口;

mcast eth0 225.0.0.1 694 1 0

##############################################

#多播:直连网卡eth0,多播范围(224-239),udp通信端口,ttl值

#为1,关闭本地回环;

#单播:ucast eth0 10.0.0.17,包被发送到的对等的IP地址;

#广播:bcast eth0

##############################################

auto_failback on

#当主节点恢复后从备节点接管资源;

node master-db

#主节点主机名,通过命令uname -n进行查看;

node slave-db

#备用节点主机名,通过命令uname -n进行查看;

crm no

#不开启集群资源管理功能;

2、authkeys配置文件:

(1)生成sha1字符串;

echo heartbeat|sha1sum

1c81b56e0878d42e95064acfe07613edd5c6c29d

(2)修改参数:

vim /etc/ha.d/authkeys

auth 1

1 sha1 1c81b56e0878d42e95064acfe07613edd5c6c29d

(3)设置权限:

chmod 600 /etc/ha.d/authkeys

3、haresources配置文件:

vim /etc/ha.d/haresources

master-db IPaddr::172.16.1.26/24/eth1

#slave-db IPaddr::172.16.1.27/24/eth1

#master-db #表示主节点的主机名

#IPaddr::172.16.1.26/24/eth1#表示使用IPaddr脚本创建浮动ip在eth1网卡上;

21.8、测试:

[root@master-db ~]#/etc/init.d/heartbeat start

Starting High-Availability services: INFO: Resource is stopped

Done.

[root@slave-db ~]#/etc/init.d/heartbeat start

[root@master-db ~]#ip addr

3: eth1: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:5c:f0:d0 brd ff:ff:ff:ff:ff:ff

inet 172.16.1.16/24 brd 172.16.1.255 scope global eth1

inet 172.16.1.26/24 brd 172.16.1.255 scope global secondary eth1

inet6 fe80::20c:29ff:fe5c:f0d0/64 scope link

valid_lft forever preferred_lft forever

[root@slave-db ~]#ip addr

3: eth1: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:4a:99:4c brd ff:ff:ff:ff:ff:ff

inet 172.16.1.17/24 brd 172.16.1.255 scope global eth1

inet6 fe80::20c:29ff:fe4a:994c/64 scope link

valid_lft forever preferred_lft forever

[root@master-db ~]#/etc/init.d/heartbeat stop

[root@slave-db ~]#ip addr

3: eth1: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:4a:99:4c brd ff:ff:ff:ff:ff:ff

inet 172.16.1.17/24 brd 172.16.1.255 scope global eth1

inet 172.16.1.26/24 brd 172.16.1.255 scope global secondary eth1

inet6 fe80::20c:29ff:fe4a:994c/64 scope link

valid_lft forever preferred_lft forever

21.9、总结:

1、heartbeat安装后默认是自启动的;

chkconfig --list heartbeat

heartbeat 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

在生产环境中是不需要开机自启动的,进行手动启停,比较安全;

chkconfig heartbeat off

2、互为主备模式:

(1)配置参数;

cat /etc/ha.d/haresource

master-db IPaddr::172.16.1.26/24/eth1

slave-db IPaddr::172.16.1.27/24/eth1

(2)配置说明:

master-db和slave-db上的heartbeat启动后,各自都会配置一个vip地址,当其中一台宕机

后所有的vip都会漂移到一台服务器上;

个人认为实质是按照浮动ip前的主机名定义浮动ip的主从的;

(3)将本地置从的命令是(主):/usr/share/heartbeat/hb_standby

(4)接管自己的资源的命令是(主):/usr/share/heartbeat/hb_takeover local