Centos7编译安装Heartbeat与配置

操作系统的版本为Centos7.7,做HA需要用到三个软件包

软件名 版本
Heartbeat 3.0.6
Cluster Glue 1.0.12
Resource Agents 3.9.6

配置步骤

  • 配置两台服务器的IP地址
  • 配置两台服务器的计算机名和hosts文件
  • 获取三个rpm包并编译安装
  • 仅安装并启动apache服务
  • 配置Heartbeat并测试

IP地址配置

STEP1:server1地址配置

ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.5.101  netmask 255.255.255.0  broadcast 192.168.5.255
        inet6 fe80::20c:29ff:fe8c:5445  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:8c:54:45  txqueuelen 1000  (Ethernet)
        RX packets 3090  bytes 251941 (246.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4541  bytes 1524995 (1.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

STEP2:server2地址配置

ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.5.102  netmask 255.255.255.0  broadcast 192.168.5.255
        inet6 fe80::20c:29ff:fe87:6fd7  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:87:6f:d7  txqueuelen 1000  (Ethernet)
        RX packets 2664  bytes 207443 (202.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4273  bytes 1487525 (1.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

修改hosts文件与计算机名

STEP1:server1计算机名配置

echo "server1" > /etc/hostname

STEP2:server1配置hosts文件

echo -e '192.168.5.101 server1\n192.168.5.102 server2' >> /etc/hosts

STEP3:server2计算机名配置

echo "server1" > /etc/hostname

STEP4:server2配置hosts文件

echo -e '192.168.5.101 server1\n192.168.5.102 server2' >> /etc/hosts

获取RPM包并编译安装

STEP1:下载软件包,如果下载有302错误就使用windows下载,完成后在上传到Linux

wget -O ~/Heartbeat-3.0.6 https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz
wget -O ~/ClusterGlue-1.0.12 http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2
wget -O ~/ResourceAgents-3.9.6 http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2

STEP2:安装基础环境

yum install -y gcc gcc-c++ autoconf automake \
libtool glib2-devel libxml2-devel bzip2 bzip2-devel \
e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc

STEP3:解压软件包,并将解压出的目录改为方便看的名字

tar -xf Heartbeat-3-0-958e11be8686.bz2
tar -xf resource-agents-3.9.6.tar.gz
tar -xf Reusable-Cluster-Components-glue--0a7add1d9996.bz2
mv Heartbeat-3-0-958e11be8686/ Heartbeat
mv resource-agents-3.9.6/ resource-agents
mv Reusable-Cluster-Components-glue--0a7add1d9996/ Reusable-Cluster
rm -rf Reusable-Cluster-Components-glue--0a7add1d9996.bz2
rm -rf Heartbeat-3-0-958e11be8686.bz2
rm -rf resource-agents-3.9.6.tar.gz

STEP4:创建组并将用户归纳

groupadd haclient

useradd -g haclient hacluster

STEP5:编译安装Reusabli-Cluster

  • 进入家目录下的Reusable-Cluster目录
cd ~/Reusable-Cluster/
  • 执行Reusable-Cluster目录下的autogen.sh脚本
./autogen.sh
lib/stonith/Makefile.am:22: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
logd/Makefile.am:23: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
lrm/admin/Makefile.am:36: warning: '%'-style pattern rules are a GNU make extension
lrm/admin/Makefile.am:21: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
lrm/lrmd/Makefile.am:21: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
lrm/test/Makefile.am:23: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
replace/Makefile.am:20: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
autoconf
Now run ./configure
  • 看到“Now run ./configure”后,执行configure脚本,后面的参数别忘了
./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
cluster-glue configuration:
  Version                  = 1.0.12 (Build: unknown)
  Features                 =

  Prefix                   = /usr/local/heartbeat
  Executables              = /usr/local/heartbeat/sbin
  Man pages                = /usr/local/heartbeat/share/man
  Libraries                = /usr/local/heartbeat/lib
  Header files             = /usr/local/heartbeat/include
  Arch-independent files   = /usr/local/heartbeat/share
  Documentation            = /usr/local/heartbeat/share/doc/cluster-glue
  State information        = /usr/local/heartbeat/var
  System configuration     = /usr/local/heartbeat/etc

  Use system LTDL          = yes

  HA group name            = haclient
  HA user name             = hacluster
  • 进行编译并安装
make && make install
  • 使用echo命令查看执行结果,为零正常
echo $?
0

STEP6:编译安装resource-agents

  • 进入家目录下的resource-agents目录
cd ~/resource-agents/
  • 执行Reusable-Cluster目录下的autogen.sh脚本
./autogen.sh
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal 
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/bin/autoconf
autoreconf: running: /usr/bin/autoheader
autoreconf: running: automake --add-missing --copy --no-force
configure.ac:102: installing './compile'
configure.ac:33: installing './config.guess'
configure.ac:33: installing './config.sub'
configure.ac:83: installing './install-sh'
configure.ac:83: installing './missing'
heartbeat/Makefile.am: installing './depcomp'
autoreconf: Leaving directory `.'
Now run ./configure and make
  • 看到“Now run ./configure”后,执行configure脚本
./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
resource-agents configuration:
  Version                  = UNKNOWN
  Build Version            = 02beac55c1da0ad99a5a19bd3b2333bcff7e916c
  Features                 =

  Prefix                   = /usr/local/heartbeat
  Executables              = /usr/local/heartbeat/sbin
  Man pages                = /usr/local/heartbeat/share/man
  Libraries                = /usr/local/heartbeat/lib
  Header files             = /usr/local/heartbeat/include
  Arch-independent files   = /usr/local/heartbeat/share
  Documentation            = /usr/local/heartbeat/share/doc/resource-agents
  State information        = /usr/local/heartbeat/var
  System configuration     = /usr/local/heartbeat/etc
  HA_BIN directory prefix  = /usr/local/heartbeat/libexec
  RA state files           = /usr/local/heartbeat/var/run/resource-agents
  AIS Plugins              = 
  • 编译并安装
make && make install
  • 使用echo命令查看执行结果,为零正常
echo $?
0

STEP7:编译安装Heartbeat

  • 进入家目录下的Heartbeat目录
 cd ~/Heartbeat/
  • 执行Heartbeat目录下的bootstrap脚本
./bootstrap
configure.ac:260: installing './compile'
configure.ac:15: installing './config.guess'
configure.ac:15: installing './config.sub'
configure.ac:44: installing './install-sh'
configure.ac:44: installing './missing'
buildtools/Makefile.am: installing './depcomp'
cts/Makefile.am:24: installing './py-compile'
autoconf
Now run ./configure.
  • 导入环境变量(必须,否则在下一步执行configure脚本时会报错)
export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
  • 执行configure脚本
./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
heartbeat configuration:
  Version                  = "3.0.6"
  Executables              = "/usr/local/heartbeat/sbin"
  Man pages                = "/usr/local/heartbeat/share/man"
  Libraries                = "/usr/local/heartbeat/lib64"
  Header files             = "/usr/local/heartbeat/include"
  Arch-independent files   = "/usr/local/heartbeat/share"
  Documentation files      = "/usr/local/heartbeat/share/doc/heartbeat"
  State information        = "/usr/local/heartbeat/var"
  System configuration     = "/usr/local/heartbeat/etc"
  Init (rc) scripts        = "/etc/rc.d/init.d"
  Init (rc) defaults       = "/etc/sysconfig"
  Use system LTDL          = "yes"
  HA group name            = "haclient"
  HA group id              = "1000"
  HA user name             = "hacluster"
  HA user user id          = "1000"
  Build dopd plugin        = "yes"
  Enable times kludge      = "yes"
  • 编译并安装
make && make install
  • 使用echo命令查看执行结果
echo $?
0

STEP7:配置网卡支持文件

mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
cp /usr/lib/ocf/lib/heartbeat/ocf-* /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
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/

安装Apache

STEP1:两台服务器安装Apache

yum install -y httpd

STEP2:启动apache并设置为开机自启动

systemctl start httpd
systemctl enable httpd

STEP3:server1配置

echo "This is server1" > /var/www/html/index.html

STEP4:server2配置

echo "This is server2" > /var/www/html/index.html

开始配置Heartbeat

STEP1:将三个配置文件的模版,复制到Heartbeat的主目录下

cp ~/Heartbeat/doc/{authkeys,haresources,ha.cf} /usr/local/heartbeat/etc/ha.d/

STEP2:编辑ha.cf配置文件

debugfile /var/log/ha-debug  #调试的日志文件,一般测试建议开启
logfile /var/log/ha-log      #表示系统的的日志文件所在路径
logfacility    local0        #利用系统的日志系统打印日志
keepalive 2                  #心跳时间间隔为2秒,既每两秒发送一次广播
deadtime 30                  #在30秒内未收到对方的心跳信号,啧立即切换服务
warntime 10                  #如果10秒内备份机联系不上主机则写入警告日志
initdead 120                 #在某些情况下,重启网络后需一定时间后才能工作,等待系统初始化
ucast ens33 192.168.5.102    #单播发送心跳报文,语法为:ucast INTERFACENAME REMOTE_ADDRESS
udpport 694                  #制定集群节点间通信用的udp端口号
auto_failback on             #当主节点恢复后,是否自动切换
node    server1              #集群中的计算机名,需要与uname -n的输出一致
node    server2              #同上

STEP3:编辑authkeys配置文件,第一行的auth后面跟使用算法序号,第三行的sha1后面跟自定义密码

auth AUTH_NUMBER
#1 crc
2 sha1 AUTH_PASSWORD
#3 md5 Hello!
auth 2
#1 crc
2 sha1 abc.123
#3 md5 Hello!

STEP4:对authkeys文件赋予权限

chmod 600 authkeys

STEP5:编辑haresources配置文件,添加如下内容即可

server1 192.168.5.200 apache::/etc/httpd/conf/httpd.conf

语法为

MASTER_SERVER Virtual_IP ServerName::mainconfigurePATH

STEP6:将这三个配置文件使用scp工具发送到server2即可

scp {authkeys,ha.cf,haresources} [email protected]:/usr/local/heartbeat/etc/ha.d/

STEP7:在Server2编辑/usr/local/heartbeat/etc/ha.d/ha.cf文件,做出如下修改

ucast ens33 192.168.5.102     ----->     ucast ens33 192.168.5.101

启动服务并测试

STEP1:启动服务并设置开机自启动

systemctl start heartbeat
systemctl enable heartbeat

STEP2:查看服务运行状态,一定要看,因为Heartbeat服务计算你做错,启动失败,都不会报错,一定要手动查看

systemctl status heartbeat
● heartbeat.service - Heartbeat High Availability Cluster Communication and Membership
   Loaded: loaded (/usr/lib/systemd/system/heartbeat.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2019-11-10 06:39:12 EST; 2s ago
 Main PID: 99213 (heartbeat)
   CGroup: /system.slice/heartbeat.service
           ├─99213 heartbeat: master control process
           ├─99215 heartbeat: FIFO reader
           ├─99216 heartbeat: write: ucast ens33
           └─99217 heartbeat: read: ucast ens33

STEP3:ping虚拟地址测试

ping 192.168.5.200

PING 192.168.5.200 (192.168.5.200) 56(84) bytes of data.
64 bytes from 192.168.5.200: icmp_seq=1 ttl=64 time=0.012 ms
^C
--- 192.168.5.200 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.012/0.012/0.012/0.000 ms

STEP4:使用curl测试apache集群

curl 192.168.5.200
This is server1

STEP5:使用heartbeat自带脚本切换节点

/usr/local/heartbeat/share/heartbeat/hb_standby 
Going standby [all].

STEP6:在此使用curl测试

curl 192.168.5.200
This is server2

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章