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  #源码安装时必须安装的依赖

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 installheartbeat* 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   [email protected]:/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:

[[email protected] 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:

[[email protected] ~]# 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

[[email protected] ~]# curl 10.0.0.210

web1 page

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

[[email protected] ~]# service heartbeat stop

Stopping High-Availability services: Done.

db2:

[[email protected] ~]# curl 10.0.0.210

web2 page

时间: 2024-10-25 16:36:09

CentOS_6.7高可用服务Heartbeat_v3.0.4安装以及配置的相关文章

分布式架构高可用架构篇_02_activemq高可用集群(zookeeper+leveldb)安装、配置、高可用测试

从 ActiveMQ 5.9 开始,ActiveMQ 的集群实现方式取消了传统的Master-Slave 方式,增加了基于ZooKeeper + LevelDB的 Master-Slave实现方式,其他两种方式目录共享和数据库共享依然存在. 三种集群方式的对比: (1)基于共享文件系统(KahaDB,默认): <persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb"/> </persi

Windows Azure下Apache高可用服务配置介绍

pWindows Azure下Apache高可用服务配置介绍/p  pAzure现在不是一个什么新鲜话题了,但可以说Azure的功能还在逐渐增加,包括性能上的优化,具体就不多介绍了,近期呢闲着没事,就尝试在Azure上部署Apache服务的高可用性部署,如果在本地部署Apache服务的高可用性的话,会用到LVS+Keepalived等服务来实现Apache的高可用性配置,如果我们将Apache服务部署到windows azure上的话,就省去了LVS+Keepalived的配置,所以相对比较简单

Linux基于heartbeat配置httpd高可用服务

Heartbeat是一个基于Linux开源的,被广泛使用的高可用集群系统.我们可以基于Heartbeat构建web高可用服务环境.本文在CentOS 6.5下做了一个简单示例,并对其日志进行了初步分析,供大家参考. 有关Heartbeat的相关知识,可以参考: Heartbeat 集群组件概述 Heartbeat 安装及配置 一.配置host解析及网络 ###主机名配置,与/etc/hosts中的解析两者配置保持一致 [[email protected] ~]# more /etc/syscon

Nginx (三) 使用Keepalived搭建高可用服务

Nginx可以实现高并发反向代理,实现负载均衡,但是有个问题就是Nginx是单点的.如果Nginx故障,则整个服务将会处于不可用状态.所以我们就需要想办法让nginx高可用,即使一个Nginx宕机,还可以有其他的Nginx来支持服务.现在我们通过Keepalived的就可以实现多台Nginx作为主备机,当主机宕机时,可以让备机切换成主机继续提供服务,对整个用户服务几乎没有影响. 1. Keepalived介绍 Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP

HAproxy结合keepalived实现httpd的高可用服务

实验前提: 1.本次实验实验的是RHEL6.4(64bit)的系统 2.确保每台服务器时间同步 3.本次实验共有4台服务器,其相关的地址为: haproxy1:192.168.108.230 haproxy2:192.168.108.231 web1:192.168.108.199 web2:192.168.108.201 VIP:192.168.108.111 实验拓扑结构为: 一.编译安装keepalived 1.在两台haproxy(1和2上)上编译安装keepalived # tar x

Corosync部署MySQL+DRBD高可用服务

介绍篇 高可用集群主要是有两个或者多个节点进行工作,ha基本组成部分包括四个部分:1.位于最底层的信息和基础架构层(Messaging Layer),主要用于节点之间传递心跳信息,故也称为心跳层.节点之间传递心跳信息可以通过广播,组播,单播等方式.2.第二层为成员关系(Membership)层,这层最重要的作用是主节点通过cluster consensus menbership service(CCM或者CCS)这种服务由第一层提供的信息,来生产一个完整的成员关系.这层主要实现承上启下的作用,承

十一.keepalived高可用服务实践部署

期中集群架构-第十一章-keepalived高可用集群章节======================================================================01. 作业题一说明: 先进行企业案例需求梳理:? 当用户请求www.etiantian.org/upload/xx 地址时,实现由upload上传服务器池处理请求.? 当用户请求www.etiantian.org/static/xx 地址时,实现由静态服务器池处理请求.? 除此以外,对于其他访问请求

Keepalived高可用服务

第1章 Keepalived高可用服务 1.1 Keepalived介绍     Keepalived软件起初是专为LVS负载均衡软件设计的, 用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能 Keepalived软件主要是通过VRRP协议实现高可用功能的.VRRP是Virtual Router Redundancy   Protocol(虚拟路由器冗余协议)的缩写, VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个

部署keepalived高可用服务

keepalived服务概念说明 keepalived软件能干什么?Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能 Keepalived软件主要是通过VRRP协议实现高可用功能的. VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写, VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时, 整个网络可以不间断地