分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

学习heartbeat-05 实现web服务高可用

发布时间:2023-09-06 02:20责任编辑:傅花花关键词:暂无标签

一、环境介绍

说明:所有案例在虚拟机(VMware)上完成

操作系统:centos 6.5 64bit

高可用软件:heartbeat 3.0.4

Web应用服务器:apache httpd 2.2.15

二、heartbeat服务主机资源规划

主机名称接口IP用途
heartbeat-mastereth0172.18.10.227外网管理IP,用于WAN数据转发
 eth1172.18.0.227心跳线,用于服务器间心跳连接(直连)
  172.18.10.200提供应用服务A的虚拟IP(VIP)
heartbeat-slaveeth0172.18.10.228外网管理IP,用于WAN数据转发
 eth1172.18.0.228心跳线,用于服务器间心跳连接(直连)
  172.18.10.201提供应用服务B的虚拟IP(VIP)

三、安装配置(主、备服务器相同配置)

1 配置主机名称和hosts文件

  1.1 将主机名替换为heartbeat-master

[root@Base ~]# sed -i ‘s#HOSTNAME=Base#HOSTNAME=heartbeat-master#g‘ /etc/sysconfig/network[root@Base ~]# hostname heartbeat-master
 

 退出重新登录系统(ctrl+d)

[root@heartbeat-master ~]#
 

  1.2 配置hosts文件

[root@heartbeat-master ~]# cat >>/etc/hosts<<eof> 172.18.0.227 heartbeat-master # 将主机名称与心跳线进行绑定> 172.18.0.228 heartbeat-slave # 将主机名称与心跳线进行绑定> eof[root@heartbeat-master ~]# tail -2 /etc/hosts172.18.0.227 heartbeat-master172.18.0.228 heartbeat-slave
 

  1.3 检查配置是否正确

[root@heartbeat-master ~]# tail -2 /etc/hosts172.18.0.227 heartbeat-master172.18.0.228 heartbeat-slave[root@heartbeat-master ~]# ping heartbeat-master[root@heartbeat-master ~]# ping heartbeat-slave
 

2 增加主机路由

 2.1 在heartbeat-master主机上配置如下:

[root@heartbeat-master ~]# route add -host 172.18.0.228 dev eth1[root@heartbeat-master ~]# echo "/sbin/route add -host 172.18.0.228 dev eth1" >> /etc/rc.local[root@heartbeat-master ~]# tail -1 /etc/rc.local/sbin/route add -host 172.18.0.228 dev eth1[root@heartbeat-master ~]# route -nKernel IP routing tableDestination ????Gateway ????????Genmask ????????Flags Metric Ref ???Use Iface172.18.0.228 ???0.0.0.0 ????????255.255.255.255 UH ???0 ?????0 ???????0 eth1172.18.0.0 ?????0.0.0.0 ????????255.255.255.0 ??U ????0 ?????0 ???????0 eth1172.18.10.0 ????0.0.0.0 ????????255.255.255.0 ??U ????0 ?????0 ???????0 eth0......省略
 

  2.2 在heartbeat-slave主机上配置如下:

[root@heartbeat-slave ~]# route add -host 172.18.0.227 dev eth1[root@heartbeat-slave ~]# echo "/sbin/route add -host 172.18.0.227 dev eth1" >> /etc/rc.local [root@heartbeat-slave ~]# tail -1 /etc/rc.local /sbin/route add -host 172.18.0.227 dev eth1[root@heartbeat-slave ~]# route -n #检查路由是否配置正确Kernel IP routing tableDestination ????Gateway ????????Genmask ????????Flags Metric Ref ???Use Iface172.18.0.227 ???0.0.0.0 ????????255.255.255.255 UH ???0 ?????0 ???????0 eth1172.18.0.0 ?????0.0.0.0 ????????255.255.255.0 ??U ????0 ?????0 ???????0 eth1172.18.10.0 ????0.0.0.0 ????????255.255.255.0 ??U ????0 ?????0 ???????0 eth0......省略
 

四、安装Heartbeat软件(主、备服务器相同配置)

    需要说明,CentOS5.8系统自带heartbeat软件,通过yum方式直接可以安装,但是CentOS6版本之后就不再支持通过yum方式安装heartbeat了,需要首先安装epel包,通过epel包安装heartbeat软件。

1 创建软件存放目录(良好的习惯)

[root@heartbeat-master ~]# mkdir -p /home/oldcat/tools[root@heartbeat-master ~]# cd /home/oldcat/tools/
 

2 下载并安装epel包

[root@heartbeat-master tools]# wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm--2016-01-08 00:16:00-- ?http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm正在解析主机 mirrors.ustc.edu.cn... 202.141.160.110, 2001:da8:d800:95::110正在连接 mirrors.ustc.edu.cn|202.141.160.110|:80... 已连接。已发出 HTTP 请求,正在等待回应... 200 OK......省略[root@heartbeat-master tools]# rpm -ivh epel-release-6-8.noarch.rpm warning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEYPreparing... ???????????????########################################### [100%] ??1:epel-release ??????????########################################### [100%][root@heartbeat-master tools]# rpm -qa|grep epelepel-release-6-8.noarch
 

3 yum安装heartbeat

[root@heartbeat-master tools]# yum install heartbeat -yLoaded plugins: fastestmirror, securitybase ??????????????????????????????????????????????????????????????????| 3.7 kB ????00:00 ????base/primary_db ???????????????????????????????????????????????????????| 4.6 MB ????00:00 ????epel/metalink ?????????????????????????????????????????????????????????| 4.5 kB ????00:00 ????epel......省略
 

五、安装Apache httpd软件(主、备服务器相同配置)

1 yum安装httpd

[root@heartbeat-master ~]# yum install httpd -y
 

六、配置高可用服务(主、备服务器相同配置)

1 配置heartbeat

  1.1 heartbeat通过yum方式安装后默认配置文件目录为/etc/ha.d/,但是默认不包含配置文件,需要将

 /usr/share/doc/heartbeat-3.0.4/目录下的ha.cf、authkeys和haresources拷贝到/etc/ha.d/目录

[root@heartbeat-master heartbeat-3.0.4]# cp authkeys ha.cf haresources /etc/ha.d/[root@heartbeat-master heartbeat-3.0.4]# cd /etc/ha.d/[root@heartbeat-master ha.d]# ll总用量 44-rw-r--r--. 1 root root ??645 1月 ??8 01:03 authkeys-rw-r--r--. 1 root root 10502 1月 ??8 01:03 ha.cf-rwxr-xr-x. 1 root root ??745 12月 ?3 2013 harc-rw-r--r--. 1 root root ?5905 1月 ??8 01:03 haresourcesdrwxr-xr-x. 2 root root ?4096 1月 ??8 00:30 rc.d-rw-r--r--. 1 root root ??692 12月 ?3 2013 README.configdrwxr-xr-x. 2 root root ?4096 1月 ??8 00:30 resource.d-rw-r--r--. 1 root root ?2082 11月 10 19:00 shellfuncs
 

   1.2 编辑authkeys文件

[root@heartbeat-master ha.d]# cat authkeys auth 11 sha1 49234s43k345lkj3lk239sljdf23478cxj90s8lwe5rll # 密钥串为自定义,尽量长即可配置说明:sha1为加密方式,可选的加密方式还有crc及md5,但是官方并不建议使用crc方式。## ??????Authentication file. ?Must be mode 600### ??????Must have exactly one auth directive at the front.# ??????auth ???send authentication using this method-id## ??????Then, list the method and key that go with that method-id## ??????Available methods: crc sha1, md5. ?Crc doesn‘t need/want a key.## ??????You normally only have one authentication method-id listed in this file## ??????Put more than one to make a smooth transition when changing auth# ??????methods and/or keys.### ??????sha1 is believed to be the "best", md5 next best.## ??????crc adds no security, except from packet corruption.# ??????????????Use only on physically secure networks.[root@heartbeat-master ha.d]# chmod 600 authkeys ?# authkeys文件的权限必须为600!![root@heartbeat-master ha.d]# ll总用量 40-rw-------. 1 root root ???60 1月 ??8 01:09 authkeys-rw-r--r--. 1 root root 10502 1月 ??8 01:03 ha.cf-rwxr-xr-x. 1 root root ??745 12月 ?3 2013 harc-rw-r--r--. 1 root root ???99 1月 ??8 01:13 haresourcesdrwxr-xr-x. 2 root root ?4096 1月 ??8 00:30 rc.d-rw-r--r--. 1 root root ??692 12月 ?3 2013 README.configdrwxr-xr-x. 2 root root ?4096 1月 ??8 00:30 resource.d-rw-r--r--. 1 root root ?2082 11月 10 19:00 shellfuncs
 

  1.3 编辑haresources文件

[root@heartbeat-master ha.d]# cat >> haresources <<eof> heartbeat-master IPaddr::172.18.10.200/24/eth0 httpd> heartbeat-slave IPaddr::172.18.10.201/24/eth0> eof[root@heartbeat-master ha.d]# cat haresources heartbeat-master IPaddr::172.18.10.200/24/eth0 httpdheartbeat-slave IPaddr::172.18.10.201/24/eth0
 

  配置说明:
  a.172.18.10.200为初始绑定在heartbeat-master主机上的vip,同理172.18.10.201为初始绑定
  在heartbeat-slave主机上的vip。
  b.虽然同时配置了master和slave的vip,但是初始绑定只会绑定属于本机的vip,只有在配置的时间内
  接收不到对端服务器的心跳数据才会接管对端主机的vip及所有资源。
  c.httpd参数是将httpd服务的启动停止操作委托给heartbeat负责。

  1.4 编辑ha.cf文件

[root@heartbeat-master ha.d]# cat ha.cfdebugfile /var/log/ha-debug.loglogfile /var/log/ha.loglogfacility local1keepalive 2deadtime 30warntime 10initdead 90mcast eth1 225.0.0.100 694 1 0auto_failback onnode heartbeat-masternode heartbeat-slavecrm no
 

  配置说明:

参数说明
debugfile /var/log/ha-debug.logheartbeat记录调试日志文件,文件名自定义
logfile /var/log/ha.logheartbeat记录日志文件,文件名自定义
logfacility local1在syslog服务中配置通过local1设备接收日志
keepalive 2心跳间隔时间为2秒(每2秒在eth1上发送一次广播)
deadtime 30当前主机节点在30秒内没有接收到对端主机节点的心跳数据,则立即接管对端节点的所有资源
warntime 10心跳延迟时间为10秒,当10秒内当前主机节点未能接收到对端主机节点的心跳数据后,就会向日志中写入一个警告信息,但是此时不会接管
initdead 90指定当前主机节点首次启动heartbeat需要等待90秒才会启动当前主机节点上的所有配置的资源,包括vip绑定,取值范围至少为deadtime的2倍
mcast eth1 225.0.0.100 694 1 0广播通信地址,694为默认广播端口,参数含义是在当前主机节点上的eth1设备的694端口进行广播
auto_failback on当前主机节点故障恢复后是否从对端切回所有被接管的服务资源
node heartbeat-master主机节点,可以通过uname -n命令查看,这里的主机节点名称必须与通过uname -n命令查看的名称一致
node heartbeat-slave备机节点,可以通过uname -n命令查看,这里的备机节点名称必须与通过uname -n命令查看的名称一致
crm no是否开启Cluster Resource Manager(集群资源管理)功能

  1.5 关闭防火墙(测试环境直接关闭,生产环境需要配置通过策略)

[root@heartbeat-master ~]# chkconfig iptables off[root@heartbeat-master ~]# chkconfig|grep iptablesiptables ??????????0:关闭 ???1:关闭 ???2:关闭 ???3:关闭 ???4:关闭 ???5:关闭 ???6:关闭
 

  1.6 将authkeys、ha.cf和haresource文件通过scp方式拷贝到备服务器节点的/etc/ha.d目录下

[root@heartbeat-master ha.d]# scp authkeys ha.cf haresources root@172.18.10.228:/etc/ha.d/The authenticity of host ‘172.18.10.228 (172.18.10.228)‘ can‘t be established.RSA key fingerprint is a6:39:fd:12:73:0e:da:07:e6:7b:4c:77:9d:1f:de:5e.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added ‘172.18.10.228‘ (RSA) to the list of known hosts.root@172.18.10.228‘s password: authkeys ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????100% ??60 ????0.1KB/s ??00:00 ???ha.cf ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????100% ?221 ????0.2KB/s ??00:00 ???haresources
 

  1.7 启动heartbeat并查看是否正确绑定vip

主服务器 heartbeat-master[root@heartbeat-master ha.d]# /etc/init.d/heartbeat startStarting High-Availability services: INFO: ?Resource is stoppedINFO: ?Resource is stoppedDone.[root@heartbeat-master ha.d]# ip add|grep 172.18.10 ???inet 172.18.10.227/24 brd 172.18.10.255 scope global eth0 ???inet 172.18.10.200/24 brd 172.18.10.255 scope global secondary eth0备服务器 heartbeat-slave[root@heartbeat-slave ha.d]# /etc/init.d/heartbeat startStarting High-Availability services: INFO: ?Resource is stoppedINFO: ?Resource is stoppedDone.[root@heartbeat-slave ha.d]# ip add|grep 172.18.10 ???inet 172.18.10.228/24 brd 172.18.10.255 scope global eth0 ???inet 172.18.10.201/24 brd 172.18.10.255 scope global secondary eth0
 

  1.8 模拟主服务器宕机(以停止heartbeat服务为例)

主服务器 heartbeat-master[root@heartbeat-master ha.d]# /etc/init.d/heartbeat stopStopping High-Availability services: Done.[root@heartbeat-master ha.d]# ip add|grep 172.18.10 ???inet 172.18.10.227/24 brd 172.18.10.255 scope global eth0 ???备服务器 heartbeat-slave[root@heartbeat-slave ha.d]# ip add|grep 172.18.10 ???inet 172.18.10.228/24 brd 172.18.10.255 scope global eth0 ???inet 172.18.10.201/24 brd 172.18.10.255 scope global secondary eth0 ???inet 172.18.10.200/24 brd 172.18.10.255 scope global secondary eth0
 

 说明:当主服务器heartbeat-master宕机后,备服务器heartbeat-slave负责接管原主服务器节点上的 vip(172.18.10.200)及服务资源(httpd),继续提供服务

  1.9 模拟恢复主服务器(以启动heartbeat服务为例)

主服务器 heartbeat-master[root@heartbeat-master ha.d]# /etc/init.d/heartbeat startStarting High-Availability services: INFO: ?Resource is stoppedINFO: ?Resource is stoppedDone.[root@heartbeat-master ha.d]# ip add|grep 172.18.10 ???inet 172.18.10.227/24 brd 172.18.10.255 scope global eth0 ???inet 172.18.10.200/24 brd 172.18.10.255 scope global secondary eth0 ???备服务器heartbeat-slave[root@heartbeat-slave ha.d]# ip add|grep 172.18.10 ???inet 172.18.10.228/24 brd 172.18.10.255 scope global eth0 ???inet 172.18.10.201/24 brd 172.18.10.255 scope global secondary eth0
 

 说明:当主服务器heartbeat-master恢复后正常切回vip 172.18.10.200并启动本端服务资源(httpd),备服务器heartbeat-slave停止虚拟ip的绑定及停止服务资源(httpd)

2 配置httpd(简单配置,只实现高可用效果)

  2.1 初始化httpd主页面

主服务器 heartbeat-master[root@heartbeat-master ~]# echo "The current host IP address is : 172.18.10.227" > /var/www/html/index.html[root@heartbeat-master ~]# curl 172.18.10.227The current host IP address is : 172.18.10.227备服务器 heartbeat-slave[root@heartbeat-slave ~]# echo "The current host IP address is : 172.18.10.228" > /var/www/html/index.html[root@heartbeat-slave ~]# curl 172.18.10.228The current host IP address is : 172.18.10.228
 

  2.2 模拟客户端浏览器访问web应用

  浏览器中输入172.18.10.200(可配置本地域名解析)访问web应用

 

  说明:此时虚拟ip 172.18.10.200绑定在主服务器heartbeat-master节点上

  模拟主服务器heartbeat-master宕机,继续访问web应用

 

  说明:此时页面显示为备服务器heartbeat-slave节点上的ip地址

  模拟主服务器heartbeat-master恢复,继续访问web应用

 

   说明:此时页面显示主服务器heartbeat-master节点上的ip地址

至此一个简单的高可用web应用配置完成。

学习heartbeat-05 实现web服务高可用

原文地址:https://www.cnblogs.com/wuhg/p/9870662.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved