CentOS linux 高可用集群之heartbeat

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

CentOS linux 高可用集群之heartbeat

 

Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。

 

HeartbeatLinux-HA工程的一个组件,自1999年开始到现在,发布了众多版本,是目前开源Linux-HA项目最成功的一个例子,在行业内得到了广泛的应用.

随着Linux在关键行业应用的逐渐增多,它必将提供一些原来由IBMSUN这样的大型商业公司所提供的服务,这些商业公司所提供的服务都有一个关键特性,就是高可用集群。

 

heartbeat Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。

 

高可用集群是指一组通过硬件和软件连接起来的独立计算机,它们在用户面前表现为一个单一系统,在这样的一组计算机系统内部的一个或者多个节点停止工作,服务会从故障节点切换到正常工作的节点上运行,不会引起服务中断。从这个定义可以看出,集群必须检测节点和服务何时失效,何时恢复为可用。这个任务通常由一组被称为“心跳”的代码完成。在Linux-HA里这个功能由一个叫做heartbeat的程序完成。

 

 

下面使用hearbeat做高可用集群HAnginx服务作为高可用集群HA的服务对象,即主服务器的nginx宕机或者无法提供服务,就切换到从服务上对外提供服务。

 

 

系统环境:

Master(主服务器):

hostnamemasternginxeth0:192.168.171.50  eth1:192.168.17.50

 

Slave(从服务器)

hostnameslavenginxeth0:192.168.171.51eth1192.168.17.51

 

流动的IP(Virtual IP)192.168.171.100(即对外提供服务的IP

 

nginx在系统安装的时候安装或者后期自行安装。

 

1)、安装前的准备工作:

1)分别设置主从服务器的hostname

  主服务器:vim/etc/sysconfig/network 修改:HOSTNAME=masternginx

  从服务器:vim/etc/sysconfig/network 修改:HOSTNAME=slavenginx

 

2)、分别在主从服务器上关闭SELinux

   sed–I ‘s/SELINUXE=enforcing/SELINUX=disabled/’ /etc/selinux/config

 

3)、分别在主从的服务器上配置/etc/hosts对应的ip和主机名:

    192.168.17.51   slavenginx

    192.168.17.50   masternginx

 

2)、分别在主服务器和从服务器上安装heartbeat软件,同时需要安装libnet

yum install libnet heartbeat    #yum安装可以解决依赖关系

 

源码下载:

libnethttp://libnet.sourceforge.net/  

heartbeathttp://www.linux-ha.org/wiki/Downloads

 

3)、修改heartbeat的配置

1)首先在主服务器上修改配置,主要是以下三个文件:

heartbeat的安装样例目录下/usr/share/doc/beartbeat-*

 authkeys:用于验证通信的,看对方是否还存活

 haresources:用于配置流动IP的服务信息和需要做HA的服务

 ha.cfheartbeat的配置文件

 

2)在主服务器上,从heartbeat的安装样例目录下/usr/share/doc/beartbeat拷贝三个文件到 /etc/ha.d目录下

  cd /usr/share/doc/heartbeat-3.0.4/

cp     authkeys  ha.cf  haresources /etc/ha.d/

 

3)修改配置文件

 

主服务上修改:

 

 vim/etc/ha.d/authkeys            #编辑验证通信方式

        

         auth3                                            #默认都是有 # 号注释,用哪一张认证方式

#1 crc

#2 sha1 HI!

3 md5 Hello!                            #去掉#号,

        

  保存退出,修改权限:chmod600 /etc/ha.d/authkeys

 

 vim/etc/ha.d/haresources   #用于配置流动IP的服务信息和需要做HA的服务,默认是全部注释

  masternginx192.168.171.100/24/eth0:0 nginx              

 

 vim/etc/ha.d/ha.cf                         #heartbeat主配置文件

 

 

debugfile /var/log/ha-debug           #排查故障的日志

logfile /var/log/ha-log          #日志的存放位置

logfacility     local0        #日志的级别

keepalive 2               #2秒的周期探测一次

deadtime 30             #.30秒没有回应,就认为死亡了

warntime 10          #如果超过10秒没有回应会发生警告

initdead 60         #.重启的预留时间

udpport 694              #心跳线通信端口

ucast eth1 192.168.17.51        #..心跳线接口和对方IP

auto_failback on          #.主切换到从,或者主恢复是,会自动切换

node   masternginx      #.主服务器的主机名

node   slavenginx       #.从服务器的主机名

ping 192.168.17.1          #用于仲裁的服务器IP

respawn hacluster/usr/lib64/heartbeat/ipfail    #hacluster运行脚本,检查网络的连通性。

 

 

把刚刚修改的三个配置文件复制到从服务器上的同一目录。做一下修改:

cd /etc/ha.d/

scp authkeys haresources ha.cfslavenginx:/etc/ha.d/

 

 

从服务器上修改:

authkeysharesources的配置内容不需要更改,只需要修改ha.cf配置文件

 

 vim/etc/ha.d/ha.cf                     #heartbeat主配置文件

 

 

debugfile /var/log/ha-debug            #排查故障的日志

logfile /var/log/ha-log            #日志的存放位置

logfacility     local0        #日志的级别

keepalive 2                #2秒的周期探测一次

deadtime 30              #.30秒没有回应,就认为死亡了

warntime 10               #如果超过10秒没有回应会发生警告

initdead 60            #.重启的预留时间

udpport 694            #心跳线通信端口

ucast eth1 192.168.17.50      #..心跳线接口和对方IP

auto_failback on          #.主切换到从,或者主恢复是,会自动切换

node   masternginx       #.主服务器的主机名

node   slavenginx      #.从服务器的主机名

ping 192.168.17.1           #用于仲裁的服务器IP

respawn hacluster/usr/lib64/heartbeat/ipfail   #hacluster运行脚本,检查网络的连通性。

 

里面的内容基本都不需要更改,只是要修改心跳的IIP地址修改为对方的IP

ucast eth1 192.168.171.50

 

 

测试:

 

如果开启了防火墙需要对udp 694端口放行。

-A INPUT -m state --state NEW -m udp -p udp--dport 694 -j ACCEPT

 

 

1)、启动heartbeat服务,但是必须要先在主服务器上开启了,然后才能在从服务器上开启。

 

service heartbeat start

 

2)、检查测试:

ifconfig 查看是否有eth0:0

ps aux |grep nginx  看是否有nginx进程

 

3)、模拟故障测试

为了测试方便,我们在主服务器和从服务器的nginx服务的默认网站下建立一个测试网页:

 

主服务器的内容:

echo “1111111111111master server” >/usr/share/nginx/html/index.html

 

从服务器的内容:

echo “222222222222 slave server” >/usr/share/nginx/html/index.html

 

 

模拟故障

测试1:在主服务器上禁止ping

iptables -I INPUT -p icmp -j DROP          #拒绝icmp包,模拟故障

 

iptables -D INPUT -p icmp -j DROP         #解除故障

 

测试是否主服务器上发生故障,从服务器是否接管服务;主服务器恢复工作了,从服务器是否释放接管权。

 

测试2:主服务器直接停止heartbeat服务,模拟heartbeat发生故障

service heartbeat stop            

service heartbeat start

 

测试3:在主从上都模拟心跳线线段了

ifdown eth1

 本文转自 巴利奇 51CTO博客,原文链接:http://blog.51cto.com/balich/1714434




相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
6月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
2202 57
|
6月前
|
分布式计算 Hadoop Java
CentOS中构建高可用Hadoop 3集群
这个过程像是在一个未知的森林中探索。但当你抵达终点,看到那个熟悉的Hadoop管理界面时,所有的艰辛都会化为乌有。仔细观察,尽全力,这就是构建高可用Hadoop 3集群的挑战之旅。
262 21
|
6月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
197 4
|
6月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
400 3
|
7月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
623 25
|
7月前
|
Java Linux
CentOS环境搭建Elasticsearch集群
至此,您已成功在CentOS环境下搭建了Elasticsearch集群。通过以上介绍和步骤,相信您对部署Elasticsearch集群有了充分的了解。最后祝您在使用Elasticsearch集群的过程中顺利开展工作!
451 22
|
5月前
|
Oracle 关系型数据库 Linux
MyEMS开源系统安装之CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux
本指南介绍如何在CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux服务器上部署MyEMS开源能源管理系统。内容涵盖系统准备、数据库配置、多个MyEMS服务(如myems-api、myems-admin、myems-modbus-tcp等)的安装与配置,以及Nginx服务器设置和防火墙规则调整。通过完成所有步骤,您将能够访问MyEMS Admin UI和Web UI,默认端口分别为8001和80,初始登录凭据已提供。
295 0
|
8月前
|
存储 IDE Linux
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
本文详细介绍了在VMware虚拟机中安装CentOS 6.8的全过程。首先,需确保已安装VMware并开启V-CPU虚拟化功能,可通过BIOS设置或使用LeoMoon CPU-V工具检测。接着,下载CentOS镜像文件,并在VMware中新建虚拟机,配置CPU、内存、硬盘等参数。最后,加载ISO镜像启动虚拟机,按照提示完成CentOS的安装,包括语言、键盘、存储方式、地区、密码设置及硬盘分区等步骤。安装完成后,以root用户登录即可进入系统桌面,开始学习Linux命令和操作。
890 12
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
|
7月前
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
322 10
|
9月前
|
缓存 Ubuntu Linux
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
1053 25