【 联网安装 】
安装基础工具及编译工具
yum install -y gcc gcc-c++ make glibc kernel-devel kernel-headers autoconf automake libtool glib2-devel libxml2 libxml2-devel libxslt-devel libtool-ltdl-devel wget asciidoc libuuid-devel bzip2 bzip2-devel e2fsprogs-devel net-snmp net-tools
添加运行heartbeat的用户和组
groupadd -r haclient
useradd -g haclient hacluster
安装Cluster Glue
tar -jxvf 0a7add1d9996.tar.bz2
cd Reusable-Cluster-Components-glue--0a7add1d9996/
./autogen.sh
./configure --prefix=/usr/local/heartbeat/
make && make install
[make时可能遇到的错误-1]
Making all in libltdl
gmake[1]: 进入目录“/root/Reusable-Cluster-Components-glue--0a7add1d9996/libltdl”
gmake[1]: *** 没有规则可以创建目标“all”。 停止。
gmake[1]: 离开目录“/root/Reusable-Cluster-Components-glue--0a7add1d9996/libltdl”
make: *** [all-recursive] 错误 1
解决:
yum install libtool-ltdl-devel
[make时可能遇到的错误-2]
collect2: error: ld returned 1 exit status
gmake[2]: *** [ipctest] 错误 1
gmake[2]: 离开目录“/root/Reusable-Cluster-Components-glue--0a7add1d9996/lib/clplumbing”
gmake[1]: *** [all-recursive] 错误 1
gmake[1]: 离开目录“/root/Reusable-Cluster-Components-glue--0a7add1d9996/lib”
make: *** [all-recursive] 错误 1
解决:
./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
注: 如使用32位系统时,将LIBS改为LIBS='/lib/libuuid.so.1'
[make时可能遇到的错误-3]
gmake[2]: a2x:命令未找到
gmake[2]: *** [hb_report.8] 错误 127
gmake[2]: 离开目录“/root/Reusable-Cluster-Components-glue--0a7add1d9996/doc”
gmake[1]: *** [all-recursive] 错误 1
gmake[1]: 离开目录“/root/Reusable-Cluster-Components-glue--0a7add1d9996/doc”
make: *** [all-recursive] 错误 1
解决:
yum install asciidoc
安装Resource Agents
tar -zxvf resource-agents-3.9.6.tar.gz
cd resource-agents-3.9.6
./autogen.sh
export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
./onfigure --prefix=/usr/local/heartbeat/ (这一步的时候报错:configure: error: C compiler cannot create executables。解决:export CFLAGS= )(究竟能不能有效解决,我也不知道,但我解决了)
vim /etc/ld.so.conf.d/heartbeat.conf
/usr/local/heartbeat/lib
ldconfig
make && make install
安装Heartbeat
tar xf 958e11be8686.tar.bz2
cd Heartbeat-3-0-958e11be8686
./bootstrap
export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
./configure --prefix=/usr/local/heartbeat/
vim /usr/local/heartbeat/include/heartbeat/glue_config.h
把这一行用/**/注释掉
define HA_HBCONF_DIR “/usr/local/heartbeat/etc/ha.d/”
make && make install
[可能遇到的错误-1]
checking heartbeat/glue_config.h usability... no
checking heartbeat/glue_config.h presence... no
checking for heartbeat/glue_config.h... no
configure: error: in `/root/Heartbeat-3-0-958e11be8686':
configure: error: Core development headers were not found
See `config.log' for more details
checking heartbeat/glue_config.h usability... no
checking heartbeat/glue_config.h presence... no
checking for heartbeat/glue_config.h... no
configure: error: in `/root/Heartbeat-3-0-958e11be8686':
configure: error: Core development headers were not found
See `config.log' for more details
解决:
export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
[可能遇到的错误-2]
In file included from ../include/lha_internal.h:41:0,from uuid_parse.c:25:
/usr/local/heartbeat/include/heartbeat/glue_config.h:105:0: error: "HA_HBCONF_DIR" redefined [-Werror]
#define HA_HBCONF_DIR "/usr/local/heartbeat/etc/ha.d/"
^
In file included from ../include/lha_internal.h:38:0,
from uuid_parse.c:25:
../include/config.h:390:0: note: this is the location of the previous definition
#define HA_HBCONF_DIR "/usr/local/heartbeat/etc/ha.d"
^
uuid_parse.c:36:26: fatal error: replace_uuid.h: No such file or directory
#include <replace_uuid.h>
^
cc1: all warnings being treated as errors
compilation terminated.
gmake[1]: *** [uuid_parse.lo] 错误 1
gmake[1]: 离开目录“/root/Heartbeat-3-0-958e11be8686/replace”
make: *** [all-recursive] 错误 1
解决:
./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
注: 如使用32位系统时,将LIBS改为LIBS='/lib/libuuid.so.1'
主备机配置心跳ip
我的配置:
虚拟IP(VIP):192.168.0.100
主服务器(master): 从服务器(slave):
enp3s0: 192.168.0.111 enp3s0: 192.168.0.222
NETMASK: NETMASK:
255.255.255.0 255.255.255.0
网关: 网关:
192.168.0.1 192.168.0.1
内网 IP: 内网 IP:
enp4s0: 192.168.30.11 enp4s0: 192.168.30.22
NETMASK: NETMASK:
255.255.255.0 255.255.255.0
修改主机名,添加服务器内网网段
hostnamectl set-hostname master
vim /etc/sysconfig/network-scripts/ifcfg-enp4s0
IPADDR=192.168.30.11
NETMASK=255.255.255.0
网关不用设置
重启服务
service network restart
主机配置
拷贝配置文件(System configuration = “/usr/local/heartbeat/etc” 默认的配置需要置于 /usr/local/heartbeat/etc目录下 默认该目录不存在配置文件
cp /usr/local/heartbeat/share/doc/heartbeat/ha.cf /usr/local/heartbeat/etc/ha.d
cp /usr/local/heartbeat/share/doc/heartbeat/authkeys /usr/local/heartbeat/etc/ha.d
cp /usr/local/heartbeat/share/doc/heartbeat/haresources /usr/local/heartbeat/etc/ha.d
【1.配置ha.cf----主配置文件】
vim /usr/local/heartbeat/etc/ha.d/ha.cf (下方配置如果存在,删除注释即可,不存在则添加)
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast enp4s0 192.168.30.22 (设置对方机器心跳检测的网卡和IP---内网ip)
auto_failback on
node master
node slave
ping 192.168.0.1
respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
*这里注意一点 一般启动时会报错因为 ping和ucast这些配置都需要插件支持 需要将lib64下面的插件软连接到lib目录 才不会抛出异常
ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/
ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/
配置文件解析:
cat /usr/local/heartbeat/etc/ha.d/ha.cf |grep ^[^#]
debugfile /var/log/ha-debug ##用于记录heartbeat的调试信息
logfile/var/log/ha-log ##用于记录heartbeat的日志信息
logfacilitylocal0 ##设置heartbeat的日志,这里用的是系统日志
keepalive 2 ##设定心跳(监测)时间时间为2秒
deadtime 30 ##指定若备用节点在30秒内未收到主节点心跳信号,则接管主服务器资源
warntime 10 ##指定心跳延迟的时间为10秒,10秒内备节点不能接收主节点心跳信号,即往日志写入警告日志,但不会切换服务
initdead 120 ##系统启动或重启后预留的忽略时间段,取值至少为deadtime的两倍
udpport 694 ##广播/单播通讯使用的Udp端口
bcast eno16777736 # Linux ##使用网卡enp4s0发送心跳检测
#mcast enp4s0 192.168.30.22 694 1 0 ##采用网卡enp4s0的Udp多播来组织心跳,一般在备用节点不止一台时使用。Bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的的方式,任选其一
ucast enp4s0 192.168.30.22 ##采用网卡enp4s0的udp单播来组织心跳,后面跟的IP地址为双机对方IP地址
auto_failback on ##定义当主节点恢复后,是否将服务自动切回
watchdog /dev/watchdog ##可选配置,通过Heartbeat监控系统运行状态。
node node1 ##主节点名称,与uname -n显示一致
node node2 ##备用节点名称
ping 192.168.0.1 ##通过ping网关检测心跳是否正常,仅用来测试网络
respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail ##指定和heartbeat一起启动、关闭的进程,可选
#apiauth ipfail gid=haclient uid=hacluster ##设置启动IPfail的用户和组
【2.配置haresources-----资源文件】
vim /usr/local/heartbeat/etc/ha.d/haresources
添加或修改:
master 192.168.0.100/24/enp3s0
(这里的192.168.0.100写自己配置的虚拟IP—VIP )
配置文件解析:
cat /usr/local/heartbeat/etc/ha.d/haresources |grep -v "#"
结果:
master IPaddr::192.168.0.100/24/enp3s0
Haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址及启动服务集群资源,文件每一行可包含一个或多个资源脚本名,
资源间使用空格隔开,参数间使用两个冒号隔开,主节点和备份节点中资源文件haresources要完全一样。
一般格式为:
node-name network <resource-group>
node-name表示主节点的主机名,必须和ha.cf文件中指定的节点名一致。network用于设定集群的IP地址、子网掩码和网络设备标识等。
resource-group用于指定需Heartbeat托管的服务(即这些服务可由Heartbeat来启动和关闭)。
**此服务可不写,此服务可为测试脚本或者是自定义服务(tomcat、mysqld、redis ...)
注意:这里指定的IP地址就是集群对外服务的IP地址;
如要托管这些服务,必须将服务写成可通过start/stop来启动或关闭的脚本,放到/etc/init.d/或/etc/ha.d/resource.d/目录下,
Heartbeat会根据脚本名称自动去/etc/init.d或者/etc/ha.d/resource.d目录下找到相应脚本进行启动或关闭操作。
【3.配置authkeys-----心跳密钥验证文件】
vim /usr/local/heartbeat/etc/ha.d/authkeys
增加或者修改:
auth 3
1 crc
2 sha1 HI!
3 MD5 Hello!
配置文件解析:
auth 3 表示使用id为3的验证 下边需要定义一个3的验证算法 #(这里要保持一致,输了2下面就对应2,输了3下面就对应3)
3 md5 Hello! #口令(Hello!)随便给 主从配置相同即可
注:auth后填序号,可任意填写,但第二行开头必须为序号名,然后为验证方式,支持三种( crc md5 sha1 )方式验证,最后面是自定义密钥。
修改权限:
chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys
修改备机名,添加服务器内网网段
hostnamectl set-hostname slave
在第二个网卡上添加内网
vim /etc/sysconfig/network-scripts/ifcfg-enp4s0
IPADDR=192.168.30.22
NETMASK=255.255.255.0
网关不用设置
保存并退出
重启服务
service network restart
备机配置
拷贝配置文件(System configuration = “/usr/local/heartbeat/etc” 默认的配置需要置于 /usr/local/heartbeat/etc目录下 默认该目录不存在配置文件
cp /usr/local/heartbeat/share/doc/heartbeat/ha.cf /usr/local/heartbeat/etc/ha.d
cp /usr/local/heartbeat/share/doc/heartbeat/authkeys /usr/local/heartbeat/etc/ha.d
cp /usr/local/heartbeat/share/doc/heartbeat/haresources /usr/local/heartbeat/etc/ha.d
【1.配置ha.cf----主配置文件】
vim /usr/local/heartbeat/etc/ha.d/ha.cf (下方配置如果存在,删除注释即可,不存在则添加)
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast enp4s0 192.168.30.11 (设置对方机器心跳检测的网卡和IP---内网ip)
auto_failback on
node master
node slave
ping 192.168.0.1
respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
*这里注意一点 一般启动时会报错因为 ping和ucast这些配置都需要插件支持 需要将lib64下面的插件软连接到lib目录 才不会抛出异常
ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/
ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/
【2.配置haresources-----资源文件】
vim /usr/local/heartbeat/etc/ha.d/haresources
添加或修改:
master 192.168.0.100/24/enp3s0
(这里的192.168.0.100写自己配置的虚拟IP---VIP )
【3.配置authkeys-----心跳密钥验证文件】
vim /usr/local/heartbeat/etc/ha.d/authkeys
增加或者修改:
auth 3
1 crc
2 sha1 HI!
3 MD5 Hello!
修改权限:
chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys