heartbeat 怎么地方性法规制定报备案主备

9370人阅读
MySql 学习(250)
MySql 高可用(16)
Mysql 主从复制(25)
一:搭建主主复制环境
1.1实验环境
两台机器事先都已经装好了单实例。&
IP: 10.192.203.201
10.192.203.202
端口都是3307.
二者的端口号需要保持一致,否则在最后用vip连接的时候,不能使用相同端口号连接。&&
1.2实验步骤&
1.2.1修改配置文件
修改master1:
在[mysqld]下面添加:
server-id = 1
relay-log=/data/server/mysql_3307/binlog/ZabbixServer-relay-bin
relay-log-index=/data/server/mysql_3307/binlog/ZabbixServer-relay-bin.index
auto-increment-offset= 1
auto-increment-increment= 2
log-slave-updates=true
修改master2:
在[mysqld]下面添加:
server-id = 3
relay-log=/data/server/mysql/binlog/single-relay-bin
relay-log-index=/data/server/mysql/binlog/single-relay-bin.index
auto-increment-offset= 2
auto-increment-increment= 2
log-slave-updates=true
添加auto-increment-offset那两项,是为了避免在MySQLINSERT时主键冲突。&
修改完后记得重启mysql&
1.2.2建复制用户
分别在两台mysql上执行
GRANT REPLICATION SLAVE ON *.* TO 'RepUser'@'%'identified by 'beijing';
1.2.3指向master
两台服务器均为新建立,且无其它写入操作,各服务器只需记录当前自己二进制日志文件及事件位置,以之作为另外的服务器复制起始位置即可。否则,需要先备份主库,在备库进行恢复,从而保持数据一致,然后再指向master。
+------------------+----------+--------------+------------------+-------------------+
|File&&&&&&&&&&&&|Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
|mysql-bin.000001 |&&&&&302|&&&&&&&&&&&&&|&&&&&&&&&&&&&&&&&|&&&&&&&&&&&&&&&&&&|
+------------------+----------+--------------+------------------+-------------------+
1 row inset (0.00 sec)
+------------------+----------+--------------+------------------+-------------------+
|File&&&&&&&&&&&&|Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
|mysql-bin.000001 |&&&&& 120|&&&&&&&&&&&&&|&&&&&&&&&&&&&&&&&|&&&&&&&&&&&&&&&&&&|
+------------------+----------+--------------+------------------+-------------------+
1 row inset (0.00 sec)
#Master1指向Master2
1.&CHANGE&MASTER&TO&MASTER_USER='RepUser',MASTER_HOST='10.192.203.202',MASTER_PASSWORD='beijing',MASTER_PORT=3307,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=120;
#Master2指向Master1
[1.&CHANGE&MASTER&TO&MASTER_USER='RepUser',MASTER_HOST='10.192.203.201',MASTER_PASSWORD='beijing',&MASTER_PORT=3307,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=302;
1.2.4分别启动slave
确保show slave status
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
测试两边是否同步,略。
每个主机分别带有两块以太网卡,其中一块用于网络通信,另一块用于心跳功能。
本实验都是在Oracle virtualbox虚拟机里做的,故添加一块儿用于内部连接的网卡,用于心跳测试,请参考:
三:安装部署heartbeat
在两台机器上分别做以下操作:
3.1 安装依赖包
yum&install&PyXML&cluster-glue&cluster-glue-libs&resource-agents -y&
3.2 安装heartbeat
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/heartbeat-3.0.4-2.el6.x86_64.rpm
wget&http://dl.fedoraproject.org/pub/epel/6/x86_64/heartbeat-libs-3.0.4-2.el6.x86_64.rpm&
&rpm -ivh heartbeat-*
3.3 配置heartbeat
复制配置文件&
cp /usr/share/doc/heartbeat-3.0.4/authkeys &/etc/ha.d/
cp /usr/share/doc/heartbeat-3.0.4/haresources &/etc/ha.d/
cp /usr/share/doc/heartbeat-3.0.4/ha.cf& &/etc/ha.d/
3.3.1 配置心跳的加密方式:authkeys
vi /etc/ha.d/authkeys
#如果使用双机对联线(双绞线),可以配置如下:
#存盘退出,然后
chmod 600 /etc/ha.d/authkeys&
需要配置的第三个文件authkeys决定了您的认证密钥。共有三种认证方式:crc,md5,和sha1。您可能会问:“我应该用哪个方法呢?”简而言之: 如果您的Heartbeat运行于安全网络之上,如本例中的交叉线,可以使用crc,从资源的角度来看,这是代价最低的方法。如果网络并不安全,但您也希望降低CPU使用,则使用md5。最后,如果您想得到最好的认证,而不考虑CPU使用情况,则使用sha1,它在三者之中最难破解。
文件格式如下:
因此,对于sha1,示例的/etc/ha.d/authkeys可能是
1 sha1 key-for-sha1-any-text-you-want
对于md5,只要将上面内容中的sha1换成md5就可以了。 对于crc,可作如下配置:
不论您在关键字auth后面指定的是什么索引值,在后面必须要作为键值再次出现。如果您指定“auth 4”,则在后面一定要有一行的内容为“4&”。
3.3.2 配置心跳的监控:haresources
vi /etc/ha.d/haresources
#各主机这部分应完全相同。
PC IPaddr::10.192.203.203
#注意,PC这写你的master的主机名,Ipaddr写的是你的VIP地址。
也可设置heartbeat管理的资源或服务:在该目录下存放服务启动脚本(例如:mysql),将相同脚本名称添到/etc/ha.d/haresources内容中,从而跟随heartbeat启动而启动该脚本。
如:PC IPaddr::10.192.203.203 mysql #
但是,这样当heartbeat关闭的时候,也会关闭mysql,所以这里我就不添加了。
3.3.3 配置心跳的配置文件:ha.cf
主和从机器除了ucast eth1 10.0.0.2这一行不同外,其他都一样。
vi /etc/ha.d/ha.cf
logfile /var/log/ha_log/ha-log.log
## ha的日志文件记录位置。如没有该目录,则需要手动添加
bcast eth1
##使用eht1做心跳监测
ucast eth1 10.0.0.2
##心跳网卡连接对方心跳地址
keepalive 2
##设定心跳(监测)时间时间为2秒
warntime 10
deadtime 30
initdead 120
hopfudge 1
udpport 694
##使用udp端口694 进行心跳监测
auto_failback off
##节点1,必须要与 uname -n 指令得到的结果一致。
node slave2
ping 10.192.203.254
##通过ping 网关来监测心跳是否正常。
3.3.4 创建日志文件路径
mkdir -p /var/log/ha_log
chmod 777 /var/log/ha_log/&
3.4 开放防火墙端口
heartbeat&默认使用udp 694端口进行心跳监测。&如果系统有使用iptables&做防火墙,应记住把这个端口打开。
vi /etc/sysconfig/iptables
添加:-A INPUT -pudp --dport 694 -j ACCEPT
service iptables restart
3.5 HA服务的启动、关闭以及测试
启动HA: service heartbeat start&
在主从都启动heartbeat&
[root@PC init.d]# service heartbeat start
Starting High-Availability services:INFO:& Resource is stopped
[root@PC ha_log]# service heartbeat status
heartbeat OK [pid 17943 et al] is runningon pc [pc]...&
[root@slave2 ha_log]# service heartbeat status
heartbeat OK [pid 6536 et al] is running onslave2 [slave2]...&
在主上看到虚拟IP了:
[root@PC ha_log]# ip addr
1: lo: &LOOPBACK,UP,LOWER_UP& mtu16436 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 08:00:27:04:05:16 brd ff:ff:ff:ff:ff:ff
inet 10.192.203.201/24 brd 10.192.203.255 scope global eth0
inet 10.192.203.203/24 brd 10.192.203.255 scope global secondary eth0
inet6 fe80::a00:27ff:fe04:516/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
3: eth1:&BROADCAST,MULTICAST,UP,LOWER_UP& mtu 1500 qdisc pfifo_fast state UP qlen1000
link/ether 08:00:27:3a:ec:3c brd ff:ff:ff:ff:ff:ff
inet 10.0.0.1/24 brd 10.0.0.255 scope global eth1
inet6 fe80::a00:27ff:fe3a:ec3c/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
在/var/log/ha_log下的日志文件或者/var/log/messages 都可以看到相关信息。
[root@PC network-scripts]# tail -f /var/log/messages
May 19 01:34:59 PCResourceManager(default)[17985]: info: Running /etc/ha.d/resource.d/IPaddr10.192.203.203 start
May 19 01:35:00 PCIPaddr(IPaddr_10.192.203.203)[18103]: INFO: Adding inet address10.192.203.203/24 with broadcast address 10.192.203.255 to device eth0
May 19 01:35:00 PCIPaddr(IPaddr_10.192.203.203)[18103]: INFO: Bringing device eth0 up
May 19 01:35:00 PCIPaddr(IPaddr_10.192.203.203)[18103]: INFO: /usr/libexec/heartbeat/send_arp -i200 -r 5 -p /var/run/resource-agents/send_arp-10.192.203.203 eth010.192.203.203 auto not_used not_used
May 19 01:35:00 PC/usr/lib/ocf/resource.d//heartbeat/IPaddr(IPaddr_10.192.203.203)[18089]:INFO:
May 19 01:35:00 PCResourceManager(default)[17985]: info: Running /etc/init.d/mysql
May 19 01:35:03 PC heartbeat: [17972]:info: local HA resource acquisition completed (standby).
May 19 01:35:03 PC heartbeat: [17943]:info: Standby resource acquisition done [foreign].
May 19 01:35:03 PC heartbeat: [17943]:info: Initial resource acquisition complete (auto_failback)
May 19 01:35:03 PC heartbeat: [17943]:info: remote resource transition completed.
将主201上的心跳关闭
[root@PC ha_log]# service heartbeat stop
Stopping High-Availability services: Done.&
查看日志:
May 19 01:46:57 PC heartbeat: [18561]: info:Giving up all HA resources.
May 19 01:46:58 PCResourceManager(default)[18574]: info: Releasing resource group: pcIPaddr::10.192.203.203 mysql
May 19 01:46:58 PCResourceManager(default)[18574]: info: Running /etc/init.d/mysql
May 19 01:46:59 PC ResourceManager(default)[18574]:info: Running /etc/ha.d/resource.d/IPaddr 10.192.203.203 stop
May 19 01:46:59 PCIPaddr(IPaddr_10.192.203.203)[18652]: INFO: IP status = ok, IP_CIP=
May 19 01:46:59 PC/usr/lib/ocf/resource.d//heartbeat/IPaddr(IPaddr_10.192.203.203)[18638]:INFO:
May 19 01:46:59 PC heartbeat: [18561]:info: All HA resources relinquished.
May 19 01:47:00 PC heartbeat: [17943]:WARN: 1 lost packet(s) for [slave2] []
May 19 01:47:00 PC heartbeat: [17943]:info: No pkts missing from slave2!
May 19 01:47:01 PC heartbeat: [17943]:info: killing HBWRITE process 17949 with signal 15
May 19 01:47:01 PC heartbeat: [17943]:info: killing HBREAD process 17950 with signal 15
May 19 01:47:01 PC heartbeat: [17943]:info: killing HBWRITE process 17951 with signal 15
May 19 01:47:01 PC heartbeat: [17943]:info: killing HBREAD process 17952 with signal 15
May 19 01:47:01 PC heartbeat: [17943]:info: killing HBFIFO process 17946 with signal 15
May 19 01:47:01 PC heartbeat: [17943]:info: killing HBWRITE process 17947 with signal 15
May 19 01:47:01 PC heartbeat: [17943]:info: killing HBREAD process 17948 with signal 15
May 19 01:47:01 PC heartbeat: [17943]:info: Core process 17951 exited. 7 remaining
May 19 01:47:02 PC heartbeat: [17943]:info: Core process 17946 exited. 6 remaining
May 19 01:47:02 PC heartbeat: [17943]:info: Core process 17947 exited. 5 remaining
May 19 01:47:02 PC heartbeat: [17943]:info: Core process 17948 exited. 4 remaining
May 19 01:47:02 PC heartbeat: [17943]:info: Core process 17949 exited. 3 remaining
May 19 01:47:02 PC heartbeat: [17943]:info: Core process 17950 exited. 2 remaining
May 19 01:47:02 PC heartbeat: [17943]:info: Core process 17952 exited. 1 remaining
May 19 01:47:02 PC heartbeat: [17943]:info: pc Heartbeat shutdown complete.
查看从202的日志:
harc(default)[8578]:
_01:47:00 info: Running /etc/ha.d//rc.d/statusstatus
mach_down(default)[8595]:
_01:47:00 info: Taking overresource group IPaddr::10.192.203.203
ResourceManager(default)[8622]: _01:47:00 info: Acquiring resourcegroup: pc IPaddr::10.192.203.203 mysql
/usr/lib/ocf/resource.d//heartbeat/IPaddr(IPaddr_10.192.203.203)[8650]: _01:47:01 INFO:
Resource is stopped
ResourceManager(default)[8622]: _01:47:01 info: Running/etc/ha.d/resource.d/IPaddr 10.192.203.203 start
IPaddr(IPaddr_10.192.203.203)[8746]:
_01:47:01 INFO: Adding inet address10.192.203.203/24 with broadcast address 10.192.203.255 to device eth0
IPaddr(IPaddr_10.192.203.203)[8746]:
_01:47:01 INFO: Bringing device eth0up
IPaddr(IPaddr_10.192.203.203)[8746]:
_01:47:01 INFO:/usr/libexec/heartbeat/send_arp -i 200 -r 5 -p/var/run/resource-agents/send_arp-10.192.203.203 eth0 10.192.203.203 autonot_used not_used
/usr/lib/ocf/resource.d//heartbeat/IPaddr(IPaddr_10.192.203.203)[8732]: _01:47:01 INFO:
ResourceManager(default)[8622]: _01:47:02 info: Running/etc/init.d/mysql
mach_down(default)[8595]:
_01:47:05 info: /usr/share/heartbeat/mach_down:nice_failback: foreign resources acquired
mach_down(default)[8595]:
_01:47:05 info: mach_down takeovercomplete for node pc.
May 19 01:47:05 slave2 heartbeat: [6536]:info: mach_down takeover complete.
May 19 01:47:31 slave2 heartbeat: [6536]:WARN: node pc: is dead
May 19 01:47:31 slave2 heartbeat: [6536]:info: Dead node pc gave up resources.
May 19 01:47:31 slave2 heartbeat: [6536]:info: Link pc:eth1 dead.
显示202接管成功了。
&在202上能看到vip已经漂移过来:
[root@slave2 ha_log]# ip addr
1: lo: &LOOPBACK,UP,LOWER_UP& mtu16436 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 08:00:27:04:05:16 brd ff:ff:ff:ff:ff:ff
inet 10.192.203.202/24 brd 10.192.203.255 scope global eth0
inet 10.192.203.203/24 brd 10.192.203.255 scope global secondary eth0
inet6 fe80::a00:27ff:fe04:516/64 scope link
valid_lft forever preferred_lft forever
3: eth1:&BROADCAST,MULTICAST,UP,LOWER_UP& mtu 1500 qdisc pfifo_fast state UP qlen1000
link/ether 08:00:27:3a:ec:3c brd ff:ff:ff:ff:ff:ff
inet 10.0.0.2/24 brd 10.0.0.255 scope global eth1
inet6 fe80::a00:27ff:fe3a:ec3c/64 scope link
valid_lft forever preferred_lft forever
201已经没有vip
[root@PC ha_log]# ip addr
1: lo: &LOOPBACK,UP,LOWER_UP& mtu16436 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/ether08:00:27:04:05:16 brd ff:ff:ff:ff:ff:ff
inet 10.192.203.201/24 brd 10.192.203.255 scope global eth0
inet6 fe80::a00:27ff:fe04:516/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
3: eth1: &BROADCAST,MULTICAST,UP,LOWER_UP&mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:3a:ec:3c brd ff:ff:ff:ff:ff:ff
inet 10.0.0.1/24 brd 10.0.0.255 scope global eth1
inet6 fe80::a00:27ff:fe3a:ec3c/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
四:heartbeat+mysql实现高可用
heartbeat只检测心跳也就是只检测设备是否宕机,不会检测MySQL服务,所以我们同样要有一个脚本来检测MySQL服务,如果mysql服务宕掉,则kill掉heartbeat进程实现故障转移(和nginx+keepalived原理一致),脚本内容如下:
&分别在master1,master2上新建检查mysql脚本&
vi /root/check_mysql.sh&
MYSQL=/usr/local/mysql/bin/mysql
MYSQL_HOST=localhost
MYSQL_USER=root
MYSQL_PASSWORD=system@123
$MYSQL -h $MYSQL_HOST -u $MYSQL_USER-p$MYSQL_PASSWORD -e && &/dev/null 2&&1
#$mysqlclient --host=$host --port=$port--user=$user --password=$password
-e&& & /dev/null 2&&1
if [ $? == 0 ]
echo & $host mysql login successfully &
#echo & $host mysql login faild&
/etc/init.d/heartbeat stop
这个脚本待写一些邮件通知的操作。
&chmod +x /root/check_mysql.sh&
设置成定时任务,每分钟检查一次:
*/1 * * * * /root/check_mysql.sh &&/root/check_mysql.log
&关闭当前主的mysql,验证下vip是否漂移到了从。
写好的shell脚本:
--安装heartbeat
[root@slave2 shell_script]# cat install_heartbeat.sh
#配置好两台服务器的心跳后,开始安装
#确保先在/download目录下上传所需安装包PyXML-0.8.4-19.el6.x86_64.rpm,cluster-glue-libs-1.0.5-6.el6.x86_64.rpm,cluster-glue-1.0.5-6.el6.x86_64.rpm,resource-agents-3.9.5-24.el6_7.1.x86_64.rpm
#heartbeat-libs-3.0.4-2.el6.x86_64.rpm,heartbeat-3.0.4-2.el6.x86_64.rpm
#执行该脚本时,请传入你选定的虚拟IP及mysql用户名密码,形如:sh install_heartbeat.sh '10.192.203.203' '1234'
#注意,执行完该脚本后,需要手动修改下配置心跳的文件:/etc/ha.d/ha.cf,然后手动启动heartbeat:service heartbeat start,然后用ip addr观察下两台机器的vi是否配置成功,是否能实现自动故障转移。
#设置待传的参数
arg1=$(echo $1)
arg2=$(echo $2)
if [ &$#& -ne &2& ];then
echo &Error:&
You provided $# parameters,but 2 are required.&
echo '
please provide the vip and password of mysql root account!'
#安装所需安装包
mkdir -p /download
cd /download
rpm -ivh PyXML-0.8.4-19.el6.x86_64.rpm
rpm -ivh cluster-glue-libs-1.0.5-6.el6.x86_64.rpm
rpm -ivh cluster-glue-1.0.5-6.el6.x86_64.rpm
rpm -ivh resource-agents-3.9.5-24.el6_7.1.x86_64.rpm
rpm -ivh heartbeat-libs-3.0.4-2.el6.x86_64.rpm
rpm -ivh heartbeat-3.0.4-2.el6.x86_64.rpm
#复制配置文件
cp /usr/share/doc/heartbeat-3.0.4/authkeys
/etc/ha.d/
cp /usr/share/doc/heartbeat-3.0.4/haresources
/etc/ha.d/
cp /usr/share/doc/heartbeat-3.0.4/ha.cf
/etc/ha.d/
#配置心跳的加密方式
echo -e 'auth 2\n2 sha1 hi!' && /etc/ha.d/authkeys
chmod 600 /etc/ha.d/authkeys
#配置心跳的监控
echo -e 'PC IPaddr::'$arg1 && /etc/ha.d/haresources
vi /etc/ha.d/ha.cf
这个文件内容需要结合实际情况,填写。这里就不写了。需要手动修改该文件。形如:
logfile /var/log/ha_log/ha-log.log
## ha的日志文件记录位置。如没有该目录,则需要手动添加
bcast eth1
##使用eht1做心跳监测
ucast eth1 10.0.0.2
##心跳网卡连接对方心跳地址
keepalive 2
##设定心跳(监测)时间时间为2秒
warntime 10
deadtime 30
initdead 120
hopfudge 1
udpport 694
##使用udp端口694 进行心跳监测
auto_failback off
##节点1,必须要与 uname -n 指令得到的结果一致。
node slave2
ping 10.192.203.254
##通过ping 网关来监测心跳是否正常。
logfile /var/log/ha-log
keepalive 2
deadtime 30
warntime 10
initdead 120
mcast bond0 239.0.1.1
bcast bond0
auto_failback off
basicOS-01
basicOS-06
#创建日志文件路径
mkdir -p /var/log/ha_log
chmod 777 /var/log/ha_log/
#创建监控Mysql脚本,当主库mysql宕机后,关闭其heartbeat,从而实现故障转移
echo -e 'MYSQL=/usr/local/mysql/bin/mysql\nMYSQL_HOST=localhost\nMYSQL_USER=root\nMYSQL_PASSWORD='$arg2'\n\n$MYSQL -h $MYSQL_HOST -u $MYSQL_USER-p$MYSQL_PASSWORD -e && &/dev/null 2&&1\nif [ $? == 0 ]\nthen\n
exit 0\nelse\n
/etc/init.d/heartbeat stop\n
exit 2\nfi' && /root/check_mysql.sh
chmod +x /root/check_mysql.sh
#添加定时任务
echo -e '*/1 * * * * /root/check_mysql.sh &&/root/check_mysql.log' && /var/spool/cron/root
echo -e '请手动修改下配置心跳的文件:/etc/ha.d/ha.cf,内容如何填写,请参考该shell脚本。\n请手动启动heartbeat:service heartbeat start,然后用ip addr观察下两台机器的vi是否配置成功,是否能实现mysql自动故障转移。'
--相应的卸载heartbeat脚本:
[root@slave2 shell_script]# cat deinstall_heartbeat.sh
service heartbeat stop
cd /etc/ha.d
rm -rf authkeys
rm -rf haresources
rm -rf ha.cf
rm -rf /var/log/ha_log
rm -rf /root/check_mysql.sh
rm -rf /root/check_mysql.log
#删除之前设置的定时任务
sed -i /check_mysql.sh/d '/var/spool/cron/root'
&本篇文章参考了以下文章:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:554825次
积分:9457
积分:9457
排名:第1494名
原创:306篇
转载:599篇
评论:71条
(5)(26)(15)(17)(12)(25)(30)(28)(27)(32)(34)(14)(5)(27)(13)(2)(25)(33)(41)(37)(3)(19)(16)(10)(7)(13)(23)(14)(23)(9)(14)(18)(24)(10)(16)(12)(4)(12)(15)(23)(23)(18)(7)(31)(25)(17)(9)(6)(8)(5)(8)(2)(1)(11)(7)linux上的heartbeat双击热备配置及测试_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
linux上的heartbeat双击热备配置及测试
上传于||暂无简介
阅读已结束,如果下载本文需要使用5下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩16页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢>> HA-heartbeat高可用双击热备安装配置详解
前期准备工作
& & *两台节点必须是双网卡,一个口外网,一个口内网心跳
& 三块网卡,设置一个外网网卡的网关为外网地址的网关
& 心跳网卡,设置外网网卡的IP为网关
& 内网网卡,设置外网网卡的IP为网关 &#此实验没有用到内网网卡,所以不做阐述。
& 注意MAC地址,UUID不要冲突
外网网卡是eth0 & & & & & & & &心跳网卡是eth1
主节点的外网IP:10.2.16.250 & 心跳IP是:
备节点的外网IP:10.2.16.249&&心跳IP是:192.168.1.2
网卡配置文件修改项:
DEVICE=eth0
HWADDR=00:E0:ED:35:2A:4E
TYPE=Ethernet
UUID=fe0114cf-03bc-4384-8ffb-cbff289f0020
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=10.2.16.250
NETMASK=255.255.255.0
GATEWAY=10.2.16.1
DNS1=202.106.0.20
DNS2=8.8.8.8
心跳网卡:
DEVICE=eth1
HWADDR=00:E0:ED:35:2A:4F
TYPE=Ethernet
UUID=0c8ef60d-dbcf-42f8-b383-5bddfbb46f0b
ONBOOT=YES
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.1
NETMASK=255.255.255.0
GATEWAY=10.2.16.250
DNS1=202.106.0.20
DNS2=8.8.8.8
备份节点也如此设置
1.设置主机名:
& &主节点:
& &vi /etc/sysconfig/network
& & NETWORKING=yes
& & HOSTNAME= & & & & #主机名(master)
& &备节点:
& & vi /etc/sysconfig/network
& & NETWORKING=yes
& & HOSTNAME=
2、防火墙设置
vim /etc/selinux/config
selinux=disabled
service iptables stop
chkconfig iptables off
3 、配置完成后重启,init 6
安装heartbeat:
1、首先创建用户和组
groupadd -g 2000 haclient
useradd -u 2000 -g haclient hacluster
装heartbeat所需的软件包:
yum -y &install &pkgconfig glib2-devel &e2fsprogs libnet* &libxml2* &PyXML &ntp*
再编译安装libnet
tar -zxvf libnet-1.1.2.1.tar.gz -C ./
./configure
make && make install
安装heartbeat
tar -zxvf heartbeat-2.1.2.tar.gz -C ./
./ConfigureMe configure & & &
make&& make install & & & #make报错处理,请查看文末,有详细的解决方法,每次解决之后,不要make clean all ,直接继续执行make && make install
配置heartbeat
需要的配置文件有三个:ha.cf、haresources、authkeys。
这三个配置文件需要在/etc/ha.d 目录下面,但是默认是没有这三个文件的,所以你要:
copy 存放路径/heartbeat-2.1.2/doc/ha.cf & & & & /etc/ha.d/
copy 存放路径/ heartbeat-2.1.2/doc/haresources &/etc/ha.d/
copy 存放路径/ heartbeat-2.1.2/doc/authkeys & & /etc/ha.d/
然后对这些配置文件进行修改。
注意:如果使用的是2.0 的模式则资源配置文件为/var/lib/heartbeat/crm/cib.xml。
修改heartbeat主配置文件ha.cf
logfile & &/var/log/ha-log & & #指名heartbeat的日志存放位置。 &
logfacilitylocal0
#crm yes & & & & & & & & & & & #是否开启Cluster Resource Manager(集群资源管理)功能。 &
bcast eth1 & & & & & & & & & & #指明心跳使用以太网广播方式,并且是在eth1接口上进行广播。 &
keepalive 1 & & & & & & & & & &#指定心跳间隔时间为1秒(即每1秒钟在eth1上发送一次广播)。 & & & &
deadtime 10 & & & & & & & & & &#指定若备用节点在10秒内没有收到主节点的心跳信号,则立即接管主节点的服务资源。 &
warntime 5 & & & & & & & & & & #指定心跳延迟的时间为5秒。当5秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务。 &
initdead 30 & & & & & & & & & &#在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。 &
udpport 694 & & & & & & & & & &#设置广播通信使用的端口,694为默认使用的端口号。 &
baud 19200 & & & & & & &&& & & #设置串行通信的波特率。 &
#serial /dev/ttyS0 & &&& & & & #选择串行通信设备,用于双机使用串口线连接的情况。如果双机使用以太网连接,则应该关闭该选项。 &
ucast eth1 192.168.1.2&& & & #采用网卡eth0的udp单播来组织心跳,后面跟的IP地址应为双机对方的IP地址。 &
#mcast eth0 225.0.0.1 694 1 0 &#采用网卡eth0的Udp多播来组织心跳,一般在备用节点不止一台时使用。Bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的三种方式,任选其一即可。 &
auto_failback on & & & & & &&& #用来定义当主节点恢复后,是否将服务自动切回。heartbeat的两台主机分别为主节点和备份节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给备份节点并由备份节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代备份节点;如果该选项设置为off,那么当主节点恢复后,将变为备份节点,而原来的备份节点成为主节点。 &
#stonith baytech /etc/ha.d/conf/stonith.baytech & & # stonith的主要作用是使出现问题的节点从集群环境中脱离,进而释放集群资源,避免两个节点争用一个资源的情形发生。保证共享数据的安全性和完整性。 &
#watchdog /dev/watchdog & & & &#该选项是可选配置,是通过Heartbeat来监控系统的运行状态。使用该特性,需要在内核中载入&softdog&内核模块,用来生成实际的设备文件,如果系统中没有这个内核模块,就需要指定此模块,重新编译内核。编译完成输入&insmod softdog&加载该模块。然后输入&grep misc /proc/devices&(应为10),输入&cat /proc/misc |grep watchdog&(应为130)。最后,生成设备文件:&mknod /dev/watchdog c 10 130& 。即可使用此功能。 &
& & & & & &#主节点主机名,可以通过命令&uanme -n&查看。 &
& & & & & &#备用节点主机名。 &
ping 10.2.16.1 & & & & & & & & #选择ping的节点,ping节点选择的越好,HA集群就越强壮,可以选择固定的作为ping节点,但是最好不要选择集群中的成员作为ping节点,ping节点仅仅用来测试网络连接。 &
#respawn hacluster /usr/lib/heartbeat/ipfail #该选项是可选配置,列出与heartbeat一起启动和关闭的进程,该进程一般是和heartbeat集成的插件,这些进程遇到故障可以自动重新启动。最常用的进程是ipfail,此进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络的连通性。其中hacluster表示启动ipfail进程的身份。
修改资源配置文件 haresources & & & &两台HA的haresources文件必须一样
haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等集群资源,文件每一行可以包含一个或多个资源脚本名,资源之间使用空格隔开,参数之间使用两个冒号隔开,在两个HA节点上该文件必须完全一致,此文件的一般格式为:
格式为:node-name network &&resource-group&
& &本例中的配置:
&IPaddr::10.2.16.240/24/eth0/ &# Filesystem::/dev/sda1::/data::ext3 & httpd
#本例中只启用heartbeat的宕机替换服务,所以只设置IP,不启用服务和网络硬盘等。
& & & & & & & & &&意为设置node1为主节点(也就是250IP的服务器),此处填写的是250的主机名
10.2.16.240/24/eth0/ & & & & & & &设置对外提供服务的IP地址为 240,运行在eth0网卡上(配置好后会出现一个eth0:0的虚拟网卡)
Filesystem::/dev/sdb1::/data::ext3 httpd & & &相当于在命令行下执行mount操作,即&mount -t ext3 /dev/sdb5 /webdata&,然后启动httpd服务。
修改认证文件 &authkeys  authkeys文件用于设定Heartbeat的认证方式,共有3种可用的认证方式,即crc、md5和sha1。3种认证方式的安全性依次提高,但是占用的系统资源也依次增加。如果Heartbeat集群运行在安全的网络上,可以使用crc方式;如果HA每个节点的硬件配置很高,建议使用sha1,这种认证方式安全级别最高;如果是处于网络安全和系统资源之间,可以使用md5认证方式。这里我们使用sha1认证方式,设置如下:
& 本例中的配置:/etc/ha.d/authkeys
2 sha1 sysconfig@!# &
无论auth后面指定的是什么数字,在下一行必须作为关键字再次出现,例如指定了&auth 2&,下面一定要有一行&2 认证类型&
&两台节点的authkeys文件必需一样,最后确保这个文件的权限是600(即-rw-------)
配置备份节点的Heartbeat
  在备份节点上也需要安装Heartbeat,安装方式与在主节点安装过程一样,这里不再重述。安装完毕,在备份节点上使用scp命令把主节点配置文件传输到备份节点。
[ ~]#scp &/etc/ha.d/* & &:/etc/ha.d/ &
备份节点需要修改ha.cf中的ucast 选项为主节点的Ip,其他无需设置。
设置主节点和备份节点时间同步
  在双机高可用集群中,主节点和备份节点的系统时间也非常重要,因为节点之间的监控都是通过设定时间来实现的。主备节点之间的系统时间相差在10秒以内是正常的,如果节点之间时间相差太大,就有可能造成HA环境的故障。解决时间同步的办法有两个:一个办法是找一个时间服务器,两个节点通过ntpdate命令定时与时间服务器进行时间校准;另一个办法是让集群中的主节点作为ntp时间服务器,让备份节点定时去主节点进行时间校验。
本文中将备份节点搭建为NTP服务器,主节点通过ntpdate来进行时间同步。ntp安装配置不再阐述。
两台节点启动heartbeat :
[ ~]#service heartbeat start
Starting High-Availability services:
_11:19:28 INFO: &Resource is stopped
显示上述信息则意为启动成功。
[ ~]#chkconfig heartbeat on & &
加入开机启动
启动heartbeat成功之后,查看主节点的ifconfig 网卡信息,能看到自动多了一块虚拟网卡 eth0:0 ,ip地址是在haresource里设置的10.2.16.240
关闭不必要的服务
&chkconfig rpcgssd off
&chkconfig portreserve off
&chkconfig postfix off
&chkconfig ip6tables off
&chkconfig cups off
&chkconfig rpcbind off
&chkconfig auditd off
&chkconfig certmonger off
&chkconfig netfs off
&chkconfig nfslock off
优化后,系统默认开启的服务列表
chkconfig --list
atd & & & & & &0:关闭1:关闭2:关闭3:启用4:启用5:启用6:关闭
crond & & & & &0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
heartbeat & & &0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
httpd & & & & &0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
iptables & & &&0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
messagebus & &&0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
mysqld & & & &&0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
network & & & &0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
ntpdate & & & &0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
openfire & & &&0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
rsyslog & & & &0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
sshd & & & & &&0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
udev-post & & &0:关闭1:启用2:启用3:启用4:启用5:启用6:关闭
xinetd & & & &&0:关闭1:关闭2:关闭3:启用4:启用5:启用6:关闭
heartbeat安装过程中 make报错处理:
cc1: warnings being treated as errors
client_lib.c:1850: error: 'display_orderQ'defined but not used
gmake[2]: *** [client_lib.lo] 错误 1
gmake[2]: Leaving directory`/root/heartbeat-2.0.7/lib/hbclient'
gmake[1]: *** [all-recursive] 错误 1
gmake[1]: Leaving directory`/root/heartbeat-2.0.7/lib'
make: *** [all-recursive] 错误 1
则将/root/heartbeat-2.0.7/lib/hbclient里的makefile中的所有-Werror删除
cc1: warnings being treated as errors
pils.c:245: error: initialization fromincompatible pointer type
pils.c:246: error: initialization fromincompatible pointer type
gmake[2]: *** [pils.lo] 错误 1
gmake[2]: Leaving directory`/root/heartbeat-2.0.7/lib/pils'
gmake[1]: *** [all-recursive]错误 1
gmake[1]: Leaving directory`/root/heartbeat-2.0.7/lib'
make: *** [all-recursive] 错误 1
则将/root/heartbeat-2.0.7/lib/pils里的makefile中的所有-Werror删除
cc1: warnings being treated as errors
client_lib.c:1850: error: 'display_orderQ'defined but not used
gmake[2]: *** [client_lib.lo]错误 1
gmake[2]: Leaving directory`/root/heartbeat-2.0.7/lib/hbclient'
gmake[1]: *** [all-recursive]错误 1
gmake[1]: Leaving directory`/root/heartbeat-2.0.7/lib'
make: *** [all-recursive] 错误 1
则将/root/heartbeat-2.0.7/lib/hbclient里的makefile中的所有-Werror删除
cc1: warnings being treated as errors
stonith_signal.h:34: error:'stonith_signal_set_simple_handler' defined but not used
gmake[4]: *** [apcmaster.lo]错误 1
gmake[4]: Leaving directory`/root/heartbeat-2.0.7/lib/plugins/stonith'
gmake[3]: *** [all-recursive]错误 1
gmake[3]: Leaving directory`/root/heartbeat-2.0.7/lib/plugins/stonith'
gmake[2]: *** [all-recursive]错误 1
gmake[2]: Leaving directory`/root/heartbeat-2.0.7/lib/plugins'
gmake[1]: *** [all-recursive]错误 1
gmake[1]: Leaving directory`/root/heartbeat-2.0.7/lib'
make: *** [all-recursive] 错误 1
则将/root/heartbeat-2.0.7/lib/plugins/stonith里的makefile中的所有-Werror删除
cc1: warnings being treated as errors
conf_lex.c:1195: 错误:&input&定义后未使用
gmake[2]: *** [recoverymgrd-conf_lex.o]错误 1
gmake[2]: Leaving directory`/root/heartbeat-2.0.7/telecom/recoverymgrd'
gmake[1]: *** [all-recursive]错误 1
gmake[1]: Leaving directory `/root/heartbeat-2.0.7/telecom'
make: *** [all-recursive] 错误 1
则将/root/heartbeat-2.0.7/telecom/recoverymgrd里的makefile中的所有-Werror删除
chown hacluster/var/lib/heartbeat/cores/hacluster
chown: 无效的用户:&hacluster&
gmake[2]: [install-exec-local]错误 1 (忽略)
chmod 700/var/lib/heartbeat/cores/hacluster
gmake[2]: Nothing to be done for`install-data-am'.
gmake[2]: Leaving directory`/root/heartbeat-2.0.7'
gmake[1]: Leaving directory`/root/heartbeat-2.0.7'
则证明没添加用户及组,按照上面的添加用户及组后再编译安装。
最新图文资讯
相关文章列表:
推荐文章:
随机资讯:

我要回帖

更多关于 设备检修计划制定 的文章

 

随机推荐