码迷,mamicode.com
首页 > 其他好文 > 详细

RHCS(一)之原理、搭建

时间:2014-09-26 00:34:18      阅读:576      评论:0      收藏:0      [点我收藏+]

标签:rhcs 搭建 配置

前言

    最近在学习集群高可用,集群的高可用可以让平台架构实现服务在线时间接近7X24X365。实现高可用技术有HeartbeatKeepaliveCorosync等等,我们这里介绍的是RedHat Cluster Suite (RHCS)。本实验通过cman+rgmanager+system-config-cluster+gfs2+iscsi+clvm+qdisk来实现前端高可用web服务。

 

原理

    其实高可用技术无非就是实现了这三层的功能:最低层的信息交换层、中间的集群资源管理层、上层的资源管理脚本层。

    在信息层,openais是实现了节点之间的通讯,而cman是在openais的基础上,实现了负责投票以及加入退出集群;在某一节点进行了配置,可以通过ccsCluster Configure System)来同步到其他节点上。

    在集群资源管理层,rgmanager实现了对集群资源(iphttpdmysql等服务、文件系统等等)的管理,下面有几点要理解的:

Failover Domain

    当一个节点挂了,会自动转移资源到在Failover Domain中的其他节点,在Failover Domain中,我们可以定义节点的优先级,当优先级数字越低,表示越优先,资源会偏向转移到高优先级的节点上。

Quorum

    但是这种资源转移是有条件的:半数以上的节点可用;在这点,RHCS提供了仲裁的方法quorum(法定票数),每个节点可用的情况下进行投票(vote),当投票数大于总票数的一半,即视为集群可用。

Quorum=Expected vote / 2 + 1

总票数(Total vote)=所有节点投票数vote的总和+qdisk vote票数。

如果Total vote > =Quorum 集群可用

Qdisk

    如果集群还有节点可以工作,但是由于quorum的机制,当导致了集群挂起,这不是工作环境想要的,而且剩下一台,他也应该为客户工作。再者,这里就需要qdisk了,qdisk是表决磁盘。是用于投票

Fence、脑裂、GFSclvmDLM

    在节点挂掉的情况下,转移之前,要进行fence隔离掉挂掉的节点,否则无法进行资源转移。这是防止集群节点脑裂的机制,所谓脑裂,就是由于节点之间的heartbeat信息无法传达,双方都认为对放挂掉了,自己要接管资源,如果发生脑裂,双方都有对应的资源,如果都接管了,也就是都启动了相关的资源,会导致数据的破坏。GFS(Global FileSystem)可以解决这个问题。通过clvm,其他节点可以看到共享的lv卷。而GFSCLVM都依赖于DLM(Distributed lock manager,分布式锁管理器)工作,DLM 为集群提供了一个公用的锁运行机制。DLM不需要设定锁管理服务器,它采用对等的锁管理方式,大大提高了处理性能。通过分层机制,可以实现多个锁空间的并行锁模式。

 

配置

一、平台及拓扑

虚拟机Centos 5.5 kernel2.6.18-371.8.1.el5五台

网络环境:桥接

fence设备:手动fence

拓扑如下:

bubuko.com,布布扣

 

二、实验前的安装

    配置集群可以通过congaLuci安装在跳板机,ricci安装在集群机,基于web页面来配置)、system-config-cluster(基于软件界面配置)、cman_tool(这个安装cman就有,基于命令行配置)。任选其一,这里选择system-config-cluster

 

web节点:

httpd(自行安装和配置,这里不介绍)

cman

rgmanager

iscsi-initiator-utils

system-config-cluster(只要在一个集群节点安装即刻,这里在web1安装了)

gfs2-utils-0.1.62-39.el5_10.3.i386.rpm

lvm2-cluster

 

storage_serve节点:

iscsi-target-utils(或者iscsitarget企业版)

 

三、初始化、开启集群

1.设置集群,以及定义集群资源

1.1web1上启动system-config-cluster

web1#system-config-cluster &

 

1.2创建新配置

bubuko.com,布布扣

 

1.3设置集群名字,选择组播地址,设置qdisk选项。

bubuko.com,布布扣

Interval:表示间隔多长时间执行一次检查评估,单位是秒。

Votes:指定qdisk分区投票值是多少。

TKO:表示允许检查失败的次数。一个节点在TKO*Interval时间内如果还连接不上qdisk分区,那么就认为此节点失败,会从集群中隔离。

Minimum Score:指定最小投票值是多少。

LabelQdisk分区对应的卷标名,也就是在创建qdisk时指定的“myqdisk”,这里建议用卷标名,因为设备名有可能会在系统重启后发生变化,但卷标名称是不会发生改变的。

Device:指定共享存储在节点中的设备名是什么。

Path to program配置第三方应用程序来扩展对节点状态检测的精度,这里配置的是ping命令

Score:设定ping命令的投票值。

interval:设定多长时间执行ping命令一次。

 

1.4新建节点

bubuko.com,布布扣

 

1.5填写节点域名、以及票数

bubuko.com,布布扣

 

1.6新建fence设备

bubuko.com,布布扣

 

1.7选择fence设备

bubuko.com,布布扣

这里的manual fencing是实验用的,安装了cman自带的,当需要fence的时候系统会提示你手动去fence

 

1.8新建Failover Domain

bubuko.com,布布扣

 

1.9设置Failover Domains名称

bubuko.com,布布扣

 

1.10设置Failover Domain

bubuko.com,布布扣

注意,Failover Domains可以设置多个。

 

1.11新建资源

bubuko.com,布布扣

 

1.12设置IP资源

bubuko.com,布布扣

 

1.13设置脚本资源

bubuko.com,布布扣

 

1.14新建服务(相当于资源组)

bubuko.com,布布扣

 

1.15设置资源组名称

bubuko.com,布布扣

 

1.16设置资源组

bubuko.com,布布扣

如果在资源组里面没有加入资源,则集群尚不使用资源。

 

1.17保存配置

bubuko.com,布布扣

bubuko.com,布布扣

 

 

2.开启cman服务

(不能用for循环实现,只能每个节点手动去启动)

[root@web1 ~]# alias rocker=”for i in web1 web2 web3web4;do”

[root@web1 ~]# service cman start

Starting cluster:

   Loadingmodules... done

   Mountingconfigfs... done

   Startingccsd... done          #开启cman之前开启ccs同步配置文件

   Startingcman... done

   Startingdaemons... done

   Startingfencing... done

   Tuning DLM...done

                                                          [  OK  ]

 

[root@web2 ~]# service cman start

[root@web3 ~]# service cman start

[root@web4 ~]# service cman start

 

web1日志提示:

Sep 22 19:38:52 web1 openais[4555]: [CLM  ]    r(0) ip(192.168.1.202) 

Sep 22 19:38:52 web1 openais[4555]: [CLM  ]    r(0) ip(192.168.1.203) 

Sep 22 19:38:52 web1 openais[4555]: [CLM  ]    r(0) ip(192.168.1.204) 

Sep 22 19:38:52 web1 openais[4555]: [CLM  ] Members Left:

Sep 22 19:38:52 web1 openais[4555]: [CLM  ] Members Joined:

Sep 22 19:38:52 web1 openais[4555]: [CLM  ]    r(0) ip(192.168.1.204) 

Sep 22 19:38:52 web1 fenced[4574]: fencing deferred toprior member

Sep 22 19:38:52 web1 openais[4555]: [SYNC ] This nodeis within the primary component and will provide service.

Sep 22 19:38:52 web1 openais[4555]: [TOTEM] enteringOPERATIONAL state.

Sep 22 19:38:52 web1 openais[4555]: [CLM  ] got nodejoin message 192.168.1.201

Sep 22 19:38:52 web1 openais[4555]: [CLM  ] got nodejoin message 192.168.1.202

Sep 22 19:38:52 web1 openais[4555]: [CLM  ] got nodejoin message 192.168.1.203

Sep 22 19:38:52 web1 openais[4555]: [CLM  ] got nodejoin message 192.168.1.204

Sep 2219:38:52 web1 openais[4555]: [CPG  ] gotjoinlist message from node 3

Sep 2219:38:52 web1 openais[4555]: [CPG  ] gotjoinlist message from node 1

Sep 2219:38:52 web1 openais[4555]: [CPG  ] gotjoinlist message from node 2

#表示节点加入成功

 

3.开启rgmanager服务

[root@web1 ~]# rocker ssh root@$i ‘service rgmanagerstart’;done

Starting Cluster Service Manager:                          [  OK  ]

Starting Cluster Service Manager:                          [  OK  ]

Starting Cluster Service Manager:                          [  OK  ]

Starting Cluster Service Manager:                          [  OK  ]

 

web2日志:

Sep 22 20:03:08 web2 clurgmgrd[4516]: <notice>Service service:myservice started

Sep 22 20:03:08 web2 clurgmgrd[4516]: <notice>Relocating service:myservice to better node web3.rocker.com

#web3的优先级比web2的高,所以relocatebetter node

 

web3日志:

Sep 22 20:03:19 web3 clurgmgrd[4483]: <notice>Starting stopped service service:myservice

Sep 22 20:03:21 web3 avahi-daemon[3942]: Registeringnew address record for 192.168.1.200 on eth0.

Sep 22 20:03:23 web3 clurgmgrd[4483]: <notice>Service service:myservice started

#因为web3优先级最高

测试web资源:

bubuko.com,布布扣

OK!


##########测试见下文##########

本文出自 “Rocker” 博客,请务必保留此出处http://rocker.blog.51cto.com/6314218/1558144

RHCS(一)之原理、搭建

标签:rhcs 搭建 配置

原文地址:http://rocker.blog.51cto.com/6314218/1558144

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!