CentOS_6.7高可用服务Heartbeat_v3.0.4安装以及配置

简介:

CentOS_6.7高可用服务Heartbeat_v3.0.4安装以及配置


集群系统主要就2种:

  高可用(High Availability)HA集群: 使用Heartbeat/keepalived等软硬件实现;也会称为”双机热备”, “双机互备”, “双机”。
  负载均衡群集(Load Balance Cluster):使用LinuxVirtual Server(LVS)/haproxy/nginx等软硬件实现;

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

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

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


消息通信模型

Heartbeat包括以下几个组件:

heartbeat – 节点间通信校验模块

CRM - 集群资源管理模块

CCM - 维护集群成员的一致性

LRM - 本地资源管理模块

StonithDaemon - 提供节点重启服务

logd - 非阻塞的日志记录

apphbd - 提供应用程序级的看门狗计时器

Recovery Manager - 应用故障恢复

底层结构–包括插件接口、进程间通信

CTS – 集群测试系统,集群压力测试

这里主要分析的是Heartbeat的集群通信机制,所以这里主要关注的是heartbeat模块


heartbeat模块由以下几个进程构成:

master进程(masterprocess)

FIFO子进程(fifochild)

read子进程(readchild)

write子进程(writechild)

  在heartbeat里,master进程把自己的数据或者是客户端发送来的数据,通过IPC发送到write子进程,write子进程把数据发送到网络;同时read子进程从网络读取数据,通过IPC发送到master进程,由master进程处理或者由master进程转发给其客户端处理。

  Heartbeat启动的时候,由master进程来启动FIFO子进程、write子进程和read子进程,最后再启动client进程。

 

系统:CentOS 6.7 x86_64(两台虚拟机)

安全:SElinux disabled

      Iptables disabled

Heartbeat版本:v3.0.4

Cluster Gule版本:v1.0.5

Resource Agents版本:v3.9.5

软件包安装方式:yum安装

Heartbeat3.0以后是由 gule、heartbeat、agents 三部分组成。因此,需要分别安装。


一、准备工作

1. 配置hosts文件(vim /etc/hosts):

10.0.0.50 db1

192.168.0.205 db1

10.0.0.52 db2

192.168.0.201 db2

注:

1)hostname带后缀的域名(HA25pxdschool.org)会出报错。


2. 安装依赖:

# yum installgcc gcc-c++ autoconfautomake libtool glib2-devel libxml2-devel bzip2-devel e2fsprogs-devellibxslt-devel libtool-ltdl-devel make  wget docbook-dtds docbook-style-xsl -y  #源码安装时必须安装的依赖


3. 添加运行 heartbeat的用户和组 (源码安装,在主备服务器上同时操作)

# groupadd -r haclient

# useradd -r -g haclient -M -s /sbin/nologin hacluster


4. 换yum源

# mv /etc/yum.repos.d/CentOS-Base.repo  /etc/yum.repos.d/CentOS-Base.repo.backup

# wget -O /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-6.repo


5. 调整时区并对时

# ntpdate 10.0.0.254  #db1与db2上分别对时

 7 May 22:33:02 ntpdate[2729]: adjust timeserver 10.0.0.254 offset -0.001976 sec


二、安装

# yum -y install heartbeat* httpd #最小化安装的系统大约有26个左右的包要安装


三、配置并启动Heartbeat

1. 主上(db1)的配置:

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

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

cd /etc/ha.d

vi authkeys #打开下面两项:一共有三种认证方式供选择,第一种是CRC循环冗余校验,第二种是SHA1哈希算法,第三种是MD3哈希算法,其中他们的密码可以任意设置,但是两边密码必须保持一致。  

auth 3 

3 md5 Hello!

chmod 600 authkeys   #给认证文件授权为600

vi  haresources    #编辑资源文件,加入如下语句

db1 10.0.0.210/24/eth0 httpd #设定虚拟IP和对应的接口,并且指定启动虚拟IP时启动httpd服务,这里的httpd服务必须是能够直接在/etc/init.d/目录下启动的服务。

注意:主节点和备节点中资源文件haresources要完全一样。

 

# ha.cf文件主要参数注释:

debugfile /var/log/ha-debug   #设定debug文件目录

logfile /var/log/ha-log     #设定日志文件目录

logfacility     local0    #利用系统日志打印日志

keepalive 1           #设定检查时间间隔为1s

deadtime 10           #设定在10s内没有心跳信号,则立即切换服务

warntime 5            #设定告警时间为5s(5s内没有收到对方的回应就报警)

initdead 60           #设定初始化时间为60s

udpport 694           #设定集群节点间的通信协议及端口为udp694监听端口(该端口可以修改)

ucast eth1  192.168.0.201    #设定心跳方式使用单播方式,并且是在eth1接口上进行单播,ip地址为对方心跳端口的IP

auto_failback on/off       #当主节点恢复后,是否自动切回,一般都设为off

node    db1          #指定两个节点

node    db2

ping 192.168.0.1         #指定一个第三方的仲裁节点

respawn hacluster /usr/lib64/heartbeat/ipfail  #使用这个脚本去侦听对方是否还活着(使用的是ICMP报文检测)


# egrep -v "^#|^$"ha.cf   //此次试验的配置文件

debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility     local0

keepalive 2

deadtime 30

warntime 10

initdead 120

udpport 694

ucast eth1 192.168.0.201

auto_failback off

node    db1

node    db2

ping 192.168.0.1

respawn hacluster /usr/lib64/heartbeat/ipfail

 

2. 把主上的三个配置拷贝到从(db2)上:

cd /etc/ha.d/

scp –P52668 -p authkeys  ha.cf   haresources   root@db2:/etc/ha.d/

 

3. 到从上(db2) 编辑ha.cf

vi  /etc/ha.d/ha.cf  #只需要更改一个地方, IP修改为对端主机的IP地址(192.168.0.205)

ucast eth1 192.168.0.201  改为  ucast eth1 192.168.0.205

 

4. 启动heartbeat

先主,后从

service heartbeat start

 

5. 测试高可用

db1:

[root@db1 ha.d]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu65536 qdisc noqueue state UNKNOWN

   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

   inet 127.0.0.1/8 scope host lo

   inet6 ::1/128 scope host

      valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc pfifo_fast state UP qlen 1000

   link/ether 00:0c:29:db:31:f7 brd ff:ff:ff:ff:ff:ff

   inet 10.0.0.50/24 brd 10.0.0.255 scope global eth0

    inet 10.0.0.210/24 brd 10.0.0.255 scopeglobal secondary eth0

   inet6 fe80::20c:29ff:fedb:31f7/64 scope link

      valid_lft forever preferred_lft forever

3: eth1:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWNqlen 1000

   link/ether 00:0c:29:db:31:01 brd ff:ff:ff:ff:ff:ff

   inet 191.168.0.205/24 brd 191.168.0.255 scope global eth1

   inet6 fe80::20c:29ff:fedb:3101/64 scope link

         valid_lft forever preferred_lft forever

db2:

[root@db1 ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu65536 qdisc noqueue state UNKNOWN

   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

   inet 127.0.0.1/8 scope host lo

   inet6 ::1/128 scope host

      valid_lft forever preferred_lft forever

2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen1000

   link/ether 00:0c:29:db:31:f7 brd ff:ff:ff:ff:ff:ff

   inet 10.0.0.52/24 brd 10.0.0.255 scope global eth0

   inet6 fe80::20c:29ff:fedb:31f7/64 scope link

      valid_lft forever preferred_lft forever

3: eth1:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWNqlen 1000

   link/ether 00:0c:29:db:31:01 brd ff:ff:ff:ff:ff:ff

   inet 191.168.0.201/24 brd 191.168.0.255 scope global eth1

   inet6 fe80::20c:29ff:fedb:3101/64 scope link

      valid_lft forever preferred_lft forever

[root@db1 ~]# curl 10.0.0.210  

web1 page

 

# 停掉db1上的网卡服务或关机后,再次在db2上查看VIP和服务是否切换成功

[root@db1 ~]# service heartbeat stop

Stopping High-Availability services: Done.

db2:

wKioL1cupi3j3AwxAABBCq0DpwE438.png

[root@db1 ~]# curl 10.0.0.210      

web2 page




本文转自 linuxzkq 51CTO博客,原文链接:http://blog.51cto.com/linuxzkq/1771152
相关文章
|
3月前
|
存储 Ubuntu Linux
VMware-安装CentOS系统教程及安装包
虚拟机相当于是一个独立于你电脑的环境,在这个环境上面,你可以安装Linux、Windows、Ubuntu等各个类型各个版本的系统,在这个系统里面你不用担心有病读等,不用担心文件误删导致系统崩溃。 虚拟机也和正常的电脑系统是一样的,也可以开关机,不用的时候,你关机就可以了,也不会占用你的系统资源,使用起来还是比较方便 这里也有已经做好的CentOS 7系统,下载下来解压后直接用VMware打开就可以使用
740 69
|
2月前
|
存储 分布式计算 Linux
安装篇--CentOS 7 虚拟机安装
VMware 装 CentOS 7 不知道从哪下手?这篇超详细图文教程手把手教你在 VMware Workstation 中完成 CentOS 7 桌面系统的完整安装流程。从 ISO 镜像下载、虚拟机配置,到安装图形界面、设置用户密码,每一步都有截图讲解,适合零基础新手快速上手。装好之后无论你是要搭 Hadoop 集群,还是练 Linux ,这个环境都够你折腾一整天!
933 2
|
6月前
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
710 87
|
3月前
|
Ubuntu Linux 索引
Centos 7、Debian及Ubuntu系统中安装和验证tree命令的指南。
通过上述步骤,我们可以在CentOS 7、Debian和Ubuntu系统中安装并验证 `tree`命令。在命令行界面中执行安装命令,然后通过版本检查确认安装成功。这保证了在多个平台上 `tree`命令的一致性和可用性,使得用户无论在哪种Linux发行版上都能使用此工具浏览目录结构。
346 78
|
2月前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
489 16
|
4月前
|
Linux 网络安全 Apache
针对在Centos/Linux安装Apache过程中出现的常见问题集锦
以上每个问题的解决方案应深入分析错误日志、系统消息和各种配置文件,以找到根本原因并加以解决。务必保持系统和Apache软件包更新到最新版本,以修复已知的bugs和安全漏洞。安装和管理Web服务器是一项需要细致关注和不断学习的任务。随着技术的发展,推荐定期查看官方文档和社区论坛,以保持知识的更新。
228 80
|
3月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
297 10
|
4月前
|
人工智能 数据挖掘 Linux
Centos安装Python3.7(亲测可用)
本指南详细介绍了在基于Linux(以CentOS系统为例,使用yum包管理器)的系统上安装Python 3.7版本的完整流程。Python是一种广泛使用的高级编程语言,在各种领域如软件开发、数据分析、人工智能和区块链开发等都有着重要的应用。
449 2
|
4月前
|
存储 Linux Apache
在CentOS上配置SVN至Web目录的自动同步
通过上述配置,每次当SVN仓库中提交新的更改时,`post-commit`钩子将被触发,SVN仓库的内容会自动同步到指定的Web目录,从而实现代码的连续部署。
181 16
|
5月前
|
机器人 Linux
CentOS 7系统中安装特定版本CMake 3.21.2的方法。
到这里,过程已经全部完成。如果你跟随上面的步骤来,那么你现在已经拥有了一个全新的CMake版本在你的CentOS 7系统上了。这个过程就像是你通过一系列仪式,唤醒了一个沉睡已久的古老机器人,它现在完全按照你的意愿来帮你构建和编译软件了。
451 18