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

[经验分享] Linux高可用集群方案之配置heartbeat v2基于haresources配置文件的httpd高可用集群

[复制链接]

尚未签到

发表于 2019-1-7 12:59:43 | 显示全部楼层 |阅读模式
本章主要配置heartbeat v2基于haresources配置文件的httpd高可用集群。

  

ll 本文导航
  · 前期准备
  · 安装heartbeat v2
  · node1、node2主机安装httpd
  · shared主机安装nfs
  · 配置httpd高可用集群
  · 客户端访问测试
  · 基于nfs共享存储httpd高可用
  

ll 要求
完全掌握heartbeat v2基于haresources配置文件的httpd高可用服务。


  前期准备
1、heartbeat服务主机规划
主机接口ip服务用途
node1.chanedu.cometh0192.168.1.131  heartbeat
  httpd
LAN数据转发

eth1192.168.2.131心跳信息链路

vip192.168.1.180提供给外部访问httpd的ip
node1.chanedu.cometh0192.168.1.132  heartbeat
  httpd
LAN数据转发

eth1192.168.2.132心跳信息链路
shared.chanedu.cometh0192.168.1.150nfsLAN数据转发
2、架构图

3、配置yum源
rpm -ivh https://mirrors.ustc.edu.cn/epel/epel-release-latest-6.noarch.rpm4、同步时间
两个节点的时间必须一致,可以使用网络时间服务器或本地ntpd服务器同步事件,我这里直接同步网络时间服务器
ntpdate 202.120.2.1015、节点名称和IP地址必须能互相解析,保证/etc/hosts文件中主机名的正反解析结果与‘uname -n’的名称一致
分别在node1和node2中的/etc/hosts添加下面的名称解析
echo "192.168.1.131    node1.chanedu.com    node1" >> /etc/hosts
echo "192.168.1.132    node2.chanedu.com    node2" >> /etc/hosts6、配置节点心跳连接
node1和node2都使用eth1网卡互相连接,不经过交换机,直接用网线连接node1上的eth1和node2上的eth1,用作心跳检测
node1上的eth1:192.168.2.131
node2上的eth1:192.168.2.132在node1和node2两台主机上分别增加一条主机路由,实现两台主机检测对端时通过eth1网卡来实现心跳检测

在node1上添加:
route add -host 192.168.2.132 dev eth1
# 这条命令的意思是从node1访问192.168.2.132(node2),走eth1网卡出去
echo "route add -host 192.168.2.132 dev eth1" >> /etc/rc.local在node2上添加:
route add -host 192.168.2.131 dev eth1
# 这条命令的意思是从node1访问192.168.2.131(node1),走eth1网卡出去
echo "route add -host 192.168.2.131 dev eth1" >> /etc/rc.local7、为了保证通信安全,节点之间使用ssh密码的方式进行通信,可以使用“ssh-keygen -t  rsa”命令产生密钥。
ssh-keygen -t rsa
ssh-copy-id root@192.168.1.132  安装heartbeat v2
由于heartbeat-pils在CentOS-6.5后被cluster-glue取代了,所以需要手动解决依赖关系
1、解决依赖关系
yum install perl-TimeDate net-snmp-libs libnet PyXML
rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm注意:libnet在epel源中



node1、node2主机安装httpd
这里不演示




  shared主机安装nfs
这里不演示




配置httpd高可用集群
1、复制ha.cf、haresources、authkey这三个文件至/etc/ha.d文件中
cd /usr/share/doc/heartbeat-2.1.4/
cp ha.cf haresources authkeys /etc/ha.d/
cd /etc/ha.d/
ls
authkeys  ha.cf  harc  haresources  rc.d  README.config  resource.d  shellfuncs2、配置heartbeat的基本参数,直接编辑/etc/ha.d/ha.cf
vim /etc/ha.d/ha.cf
grep -v "#" /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile/var/log/ha-log
logfacilitylocal0
keepalive 1000ms
deadtime 8
warntime 4
initdead 60
udpport694
ucast eth1 192.168.1.132
auto_failback on
nodenode1.chanedu.com
nodenode2.chanedu.com
ping 192.168.1.1这里有一点要注意,上面的ha.cf配置是node1上的,node2上的配置要修改单播地址
ucast eth1 192.168.1.1313、配置heartbeat资源,定义node1为主节点,直接编辑/etc/ha.d/haresources

vim /etc/ha.d/haresources
node1.chanedu.com       192.168.1.180/24/eth0   httpd以上的ip地址即是vip,是向外提供httpd服务的地址,子网掩码为24位,从eth0接口配置别名


4、配置认证文件,编辑/etc/ha.d/authkeys
chmod 600 /etc/ha.d/authkeys
openssl hand -hex 12
6107510ab21f17a41d377135
vim /etc/ha.d/authkeys
auth 2
#1 crc
2 sha1 6107510ab21f17a41d377135
#3 md5 Hello!5、将ha.cf、haresources、authkeys这3各文件copy至node2的/etc/ha.d/目录下,并保留文件权限
rsync -p /etc/ha.d/{
ha.cf,haresources,authkeys} root@192.168.1.132:/etc/ha.d/6、设置node1和node2节点的httpd开机不自动启动,并停止httpd服务。

service httpd stop
chkconfig httpd off7、启动heartbeat服务

在node1节点上启动heartbeat服务并查看是否存在eth0:0
service heartbeat start
在node1上启动node2的heartbeat服务
[root@node1 ha.d]# ssh node2 'service heartbeat start'
Starting High-Availability services:
2017/05/08_23:46:22 INFO:  Resource is stopped
Done.
[root@node1 ha.d]# ssh node2 'ss -unl'
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port
UNCONN     0      0                         *:694                      *:*     
UNCONN     0      0                         *:45373                    *:*以上可以看到node2已经监听在UDP:694上了,正明node2已经成功启动。


  客户端访问测试
在客户端访问192.168.1.180

可以访问,表示heartbeat的基本配置没有问题。接下来模拟node1宕机,这里直接停掉node1的heartbeat服务,看下是否能直接跳转到node2
root@node1 ha.d]# service heartbeat stop
Stopping High-Availability services:
Done.查看node2的IP地址,发现VIP资源已经被node2接管了。

  再次访问客户端,httpd资源也已经转移到node2节点。

  

   基于nfs共享存储的httpd高可用
  配置集群服务中两个节点共享后端NFS文件系统资源,将shared主机添加一个共享文件夹并修改属主为apache用户

cat /etc/exports
  /www/htdocs    192.168.1.0/24(rw,no_root_squash,async)
setfacl -m u:apache:rwx /www/htdocs/
echo "Page in NFS Server." > /www/htdocs/index.html  修改node1的haresources资源配置文件,指定挂载共享NFS文件系统,并同步至node2节点的/etc/ha.d/目录下
vim /etc/ha.d/haresources
node1.chanedu.com       192.168.1.180/24/eth0   Filesystem::192.168.1.180:/www/var/shared::/var/www/html/::nfs httpd
rsync /etc/ha.d/haresources root@192.168.2.132:/etc/ha.d/
ssh node2 'service heartbeat stop'
service heartbeat stop
service network restart
ssh node2 'service network restart'
service heartbeat start
ssh node2 'service heartbeat start'  在客户端访问192.168.1.180,成功访问到了后端nfs共享存储的页面。
  这里有一点需要注意,请确保node1和node2节点能够成功挂载并shared主机的共享目录,而后要使用curl命令访问下本机的。这里最好测试下,如果你的CentOS或者Redhat是最小化安装,默认是没有安装nfs-client客户端的,mount.nfs命令也就没有,如果没有就不能成功挂载nfs共享目录,那么HA就无法生效。
  在node1和node2节点上挂载/www/htdocs目录至/var/www/html目录。
mount -t nfs 192.168.1.150:/www/htdocs /var/www/html
[root@node1 heartbeat]# curl http://192.168.1.131
Page in NFS Server.
[root@node2 heartbeat]# curl http://192.168.1.132
Page in NFS Server.


  停止node1的heartbeat服务
  ssh node1 'service heartbeat stop'
  
  在/usr/share/heartbeat/目录下,有很多脚本文件,其中:
  运行hb_standby脚本,指将自己变为备节点;比如在node1上运行hb_standby脚本,资源将被node2接管
  运行hb_takeover脚本,指重启对方节点;比如,node1已经是备节点,在node1上运行hb_takeover脚本将重启node2节点,此时,node1认为node2宕机,所以node1将重新接管资源。
  这里不演示了,很简单。
  
   总结
  1、基于haresources配置文件的heartbeat v2.x版本的httpd高可用集群实现起来是比较简单的,但是它的功能毕竟有限,如果需要更强大的功能,pacemaker无疑是比较好的选择。
  2、因为最小化安装centos的原因,node2节点没有安装nfs-client等软件,没有mount.nfs命令,导致测试到后面node1资源一致不能转移到node2节点,排查了很多原因,最终找到罪魁祸首是node2无法挂载nfs共享文件系统的缘故,自己不细心导致实验时间变长,如果是在生产环境中,这种情况是不允许发生的。
  

  





运维网声明 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-660367-1-1.html 上篇帖子: 15、 Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节 下篇帖子: 判断是否支持Heartbeat的NSE脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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