设为首页 收藏本站
查看: 1159|回复: 0

[经验分享] heartbeat 编译安装配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-17 08:42:49 | 显示全部楼层 |阅读模式
一、heartbeat介绍
    heartbeat是HA高可用集群的一个重要组件,heartbeat实现了资源转移和心跳信息传递。它的常用组合方式为heartbeat v1,heartbeat v2+crm,heartbeat v3 + pacemaker,目前版本为v3版本。

二、编译前准备
    heartbeat官方站点http://hg.linux-ha.org/
  Cluster Glue官方站点https://github.com/ClusterLabs/cluster-glue
Resource Agents官方站点 https://github.com/ClusterLabs/resource-agents

node1:192.168.0.15
node2:192.168.0.16
配置集群前提:
    (1)各节点时间一致,便于心跳信息传递,使用ntp实现

     (2)节点间需要通过主机名互相通信,必须解析主机至IP地址
        (a)建议名称解析功能使用hosts文件来实现
        (b)通信中使用的名字与节点名字必须保持一致 “uname -n” 或hostname展示出的名字保持一致
    (3)考虑仲裁设备是否会用到
    (4)建立各节点之间的root用户能够给予密钥认证
    (5)定义为集群中的资源,不能开机启动
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#使用ntpdate命令同步时间,并建立周期性任务
#可使用任意节点服务器作为ntp时间服务器,如各节点可上公网,可直接指定公网ntp服务器
  
1、安装ntp
[iyunv@node2 ~]# yum install -y ntp
[iyunv@node2 ~]# vim /etc/ntp.conf           #修改配置文件允许本网段客户端获取地址
将下面的语句
restrict default kod nomodify notrap nopeer noquery
修改为
restrict default nomodify
restrict 192.168.0.0 mask 255.255.255.0 nomodify
  
[iyunv@node2 ~]# service ntpd start
Starting ntpd:                                             [  OK  ]
  
查看同步过程
[iyunv@node2 ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*202.118.1.81    202.118.1.47     2 u   30   64    1   92.249    8.602   0.714
202.112.31.197  .INIT.          16 u    -   64    0    0.000    0.000   0.000
  
2、客户端创建周期任务,每3秒同步时间
[iyunv@node1 ~]# crontab -e
*/3 * * * * /usr/sbin/ntpdate 192.168.0.16 &> /dev/null
[iyunv@node1 ~]# service crond start
  
  
#手动同步成功,因ntp一般为自动,手动前kill掉所有ntp进程即可
[iyunv@node1 ~]# ntpdate 192.168.0.16
14 Nov 20:26:09 ntpdate[3786]: adjust time server 192.168.0.16 offset -0.004440 sec
  
3、时间同步
[iyunv@node2 ~]# date; ssh 192.168.0.15 'date'
Mon Nov 14 20:36:17 CST 2016
root@192.168.0.15's password:
Mon Nov 14 20:36:20 CST 2016

[iyunv@node2 ~]# vim /etc/hosts
192.168.0.15   node1
192.168.0.16   node2

1、生成密钥对
[iyunv@node1 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
a8:ad:2c:23:83:60:ff:36:73:9d:09:24:37:ae:da:c9 root@centfils
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|     . =         |
|      * S        |
|..   o o         |
|+ . . o o o      |
|+ ooo*.. +       |
| o +*E+          |
+-----------------+
  
2、把公钥传输至远程服务器对应用户的家目录
[iyunv@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.0.16
The authenticity of host '192.168.0.16 (192.168.0.16)' can't be established.
RSA key fingerprint is e5:84:6c:f7:c0:60:3d:0b:39:b6:1e:12:0d:48:8b:07.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.16' (RSA) to the list of known hosts.
root@192.168.0.16's password:
Now try logging into the machine, with "ssh 'root@192.168.0.16'", and check in:
  
  .ssh/authorized_keys
  
to make sure we haven't added extra keys that you weren't expecting.
  
3、测试
[iyunv@node2 ~]# date; ssh root@192.168.0.15 'date'
Mon Nov 14 21:02:30 CST 2016
Mon Nov 14 21:02:30 CST 2016





三、编译安装  
1、安装依赖包(node1和node2同步安装)
1
[iyunv@node2 ~]# yum -y install autoconf automake gcc-c++ asciidoc libxslt-devel libtool libtool-ltdl-devel libxml2 libxml2-devel bzip2-devel glib2-devel mercurial *openssl* net-snmp OpenIPMI flex bison e2fsprogs-devel



  2、源码编译安装
1
2
3
4
5
6
7
下载地址http://linux-ha.org/wiki/Download
#下载heartbeat
[iyunv@node2 ~]# wget http://hg.linux-ha.org/heartbeat ... 58e11be8686.tar.bz2
#下载cluster glue
[iyunv@node2 ~]# wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2
#下载cluster resource agents    注意:需要翻墙
[iyunv@node1 ~]# wget https://github.com/ClusterLabs/r ... chive/v3.9.6.tar.gz



3、创建用户与组
1
2
[iyunv@node1 ~]# groupadd haclient
[iyunv@node1 ~]# useradd -g haclient hacluster -M -s /sbin/nologin



  4、编译
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
cluster glue
[iyunv@node1 ~]# tar xf 0a7add1d9996.tar.bz2
[iyunv@node1 ~]# cd Reusable-Cluster-Components-glue--0a7add1d9996/
[iyunv@node1 Reusable-Cluster-Components-glue--0a7add1d9996]# ./autogen.sh
]# ./configure --prefix=/usr/local/heartbeat --sysconfdir=/etc/heartbeat libdir=/usr/local/heartbeat/lib64 LIBS='/lib64/libuuid.so.1' --with-daemon-user=hacluster --with-daemon-group=haclient
#LIBS如果是32位系统自行更改
]# make && make install

resource agents
[iyunv@node1 ~]# tar xf resource-agents-3.9.6.tar.gz
[iyunv@node1 ~]# cd resource-agents-3.9.6
[iyunv@node1 resource-agents-3.9.6]# ./autogen.sh
[iyunv@node1 resource-agents-3.9.6]# ./configure --prefix=/usr/local/heartbeat --sysconfdir=/etc/heartbeat libdir=/usr/local/heartbeat/lib64 CFLAGS=-I/usr/local/heartbeat/include LDFLAGS=-L/usr/local/heartbeat/lib64 LIBS='/lib64/libuuid.so.1' --with-daemon-user=hacluster --with-daemon-group=haclient
[iyunv@node1 resource-agents-3.9.6]# make && make install

heartbeat
[iyunv@node1 ~]# tar xf 958e11be8686.tar.bz2
[iyunv@node1 ~]# cd Heartbeat-3-0-958e11be8686/
[iyunv@node1 Heartbeat-3-0-958e11be8686]# ./bootstrap
]# ./configure --prefix=/usr/local/heartbeat --sysconfdir=/etc/heartbeat CFLAGS=-I/usr/local/heartbeat/include LDFLAGS=-L/usr/local/heartbeat/lib64 LIBS='/lib64/libuuid.so.1' --with-daemon-user=hacluster --with-daemon-group=haclient

#编译报错,路径重复,google后得出删除 glue_config.h 中配置文件路径即可
[iyunv@node1 Heartbeat-3-0-958e11be8686]# make && make install
../include/config.h:390:1: error: this is the location of the previous definition
gmake[1]: *** [strlcpy.lo] Error 1
gmake[1]: Leaving directory `/root/Heartbeat-3-0-958e11be8686/replace'
make: *** [all-recursive] Error 1

[iyunv@node1 Heartbeat-3-0-958e11be8686]# vim /usr/local/heartbeat/include/heartbeat/glue_config.h
define HA_HBCONF_DIR "/usr/local/heartbeat/etc/ha.d/"
#删除最后一行即上行内容



5、复制配置文件至/etc//heartbeat/ha.d中
1
2
3
[iyunv@node1 Heartbeat-3-0-958e11be8686]# cp doc/ha.cf /etc/heartbeat/ha.d/
[iyunv@node1 Heartbeat-3-0-958e11be8686]# cp doc/haresources /etc/heartbeat/ha.d/
[iyunv@node1 Heartbeat-3-0-958e11be8686]# cp doc/authkeys /etc/heartbeat/ha.d/



6、将heartbeat加入系统服务,并开机启动
1
2
3
[iyunv@node1 ~]# chkconfig --add heartbeat
#之后可以用service来进行start|stop操作了
[iyunv@node1 ~]# chkconfig heartbeat on



7、修改认证文件权限为600,不然heartbeat无法工作
1
[iyunv@node1 ~]# chmod 600  /etc/heartbeat/ha.d/authkeys



8、为resource-agents建立脚本软连接
1
[iyunv@node1 ~]# ln -s /usr/local/heartbeat/usr/lib/ocf /usr/lib/ocf




四、配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
1、配置authkeys文件,指明启用何种算法,使用何种密钥,本文件须更改权限为400
auth 2
#1 crc
2 sha1 2SIEok+gXAvB6G4seA8mhw
#3 md5 Hello!
  
生成随机字符串作为密钥
[iyunv@node2 ~]# openssl rand -base64 16
2SIEok+gXAvB6G4seA8mhw==
  
  
2、配置ha.cf文件,定义高可用集群的基本工作方式
  
定义日志文件位置(二选一) logfacility为将日志交由syslog管理     
logfile        /var/log/ha-log
#logfacility     local0
多长时间发送一次心跳信息,默认为2秒
#keepalive 2
多长时间宣布某节点死亡,默认30秒
#deadtime 30
多长时间警告对方心跳信息延迟了,默认10秒
#warntime 10
第一次死去时间,避免因网络问题导致宣布死亡
#initdead 120
使用udp694端口传递心跳,并选择哪种方式传递心跳
#udpport        694
串行线缆传递心跳
#serial /dev/ttyS0      # Linux
#serial /dev/cuaa0      # FreeBSD
#serial /dev/cuad0      # FreeBSD 6.x
#serial /dev/cua/a      # Solaris
串行线缆的工作频率
#baud   19200
广播传递心跳
#bcast  eth0            # Linux
#bcast  eth1 eth2       # Linux
#bcast  le0             # Solaris
#bcast  le1 le2         # Solaris
多播传递心跳,网卡必须支持多播,ifconfig | grep MULTICAST
mcast eth0 225.0.0.1 694 1 0          #端口694,TTL为1,不允许回传为0
#启用网卡支持多播
[iyunv@node1 ha.d]# ip link set eth0 multicast on
  
单薄传递心跳
#ucast eth0 192.168.1.2
自动故障转回
auto_failback on
指明节点
#node   ken3
#node   kathy
node    node1
node    node2
指明网关为ping node设备(仲裁设备)
#ping 10.10.10.254
ping 192.168.0.1
指明一个组为ping node设备(仲裁设备)
#ping_group group1 10.10.10.254 10.10.10.253
指明节点间传送的压缩算法
compression     bz2
指明节点间传送数据压缩的最小数据为2KB
compression_threshold 2

3、配置haresources文件,定义集群资源
直接加入资源
node1 192.168.0.17/24/eth0/192.168.0.255 httpd

4、将httpd设置为开机不启动
[iyunv@node1 ha.d]# chkconfig httpd off

5、启动服务
[iyunv@node1 ~]# service heartbeat start




以上所有配置均所有节点一致


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-301435-1-1.html 上篇帖子: Heartbeat+Haresources+NFS配置一个简单的HA高可用+资源共享集群 下篇帖子: heatbeat-gui实现基于nfs的mysql高可用集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表