RHCS(一)之原理、搭建

前言

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

原理

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

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

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

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、脑裂、GFS、clvm、DLM

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

配置

一、平台及拓扑

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

网络环境:桥接

fence设备:手动fence

拓扑如下:

二、实验前的安装

配置集群可以通过conga(Luci安装在跳板机,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.1在web1上启动system-config-cluster

web1#system-config-cluster &

1.2创建新配置

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

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

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

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

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

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

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

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

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

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

1.4新建节点

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

1.6新建fence设备

1.7选择fence设备

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

1.8新建Failover Domain

1.9设置Failover Domains名称

1.10设置Failover Domain

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

1.11新建资源

1.12设置IP资源

1.13设置脚本资源

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

1.15设置资源组名称

1.16设置资源组

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

1.17保存配置

2.开启cman服务

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

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

[[email protected] ~]# service cman start

Starting cluster:

Loadingmodules... done

Mountingconfigfs... done

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

Startingcman... done

Startingdaemons... done

Startingfencing... done

Tuning DLM...done

[  OK  ]

[[email protected] ~]# service cman start

[[email protected] ~]# service cman start

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

[[email protected] ~]# rocker ssh [email protected]$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的高,所以relocate去better 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资源:

OK!

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

时间: 2024-10-12 17:16:33

RHCS(一)之原理、搭建的相关文章

RHCS集群原理概述

一. 什么是RHCS RHCS是Red Hat Cluster Suite的缩写,也就是红帽集群套件,RHCS是一个能够提供高可用性.高可靠性.负载均衡.存储共享且经济廉价的集群工具集合,它将集群系统中三大集群架构融合一体,可以给web应用.数据库应用等提供安全.稳定的运行环境. 更确切的说,RHCS是一个功能完备的集群应用解决方案,它从应用的前端访问到后端的数据存储都提供了一个行之有效的集群架构实现,通过RHCS提供的这种解决方案,不但能保证前端应用持久.稳定的提供服务,同时也保证了后端数据存

高可用,多路冗余GFS2集群文件系统搭建详解

2014.06 标签:GFS2 multipath 集群文件系统 cmirror 实验拓扑图: 实验原理: 实验目的:通过RHCS集群套件搭建GFS2集群文件系统,保证不同节点能够同时对GFS2集群文件系统进行读取和写入,其次通过multipath实现node和FC,FC和Share Storage之间的多路冗余,最后实现存储的mirror复制达到高可用. GFS2:全局文件系统第二版,GFS2是应用最广泛的集群文件系统.它是由红帽公司开发出来的,允许所有集群节点并行访问.元数据通常会保存在共享

微信公众平台开发(一)——环境搭建与开发接入

一. 初始微信公众平台 微信公众平台,即我们平时所说的“公众号”,曾用名“官方平台”.“媒体平台”,但最终命名为“公众平台”.从微信的命名我可以发现,公众平台不只是官方.媒体使用的平台,而是对所有公众都开放的统一平台. 微信公众平台地址:https://mp.weixin.qq.com/ 微信公众平台公分4大板块:订阅号.服务号.小程序.企业号.企业号后续将与企业微信合并,因此主要针对前三部分开始了解: 1. 订阅号和服务号均为传统意义的“公众号”,具有消息群发能力,详细区别可在官方平台查看:h

RHCS图形界面建立GFS共享上

一.环境 主机: 四台linux Centos6.5主机 网络: Openstack.storage:IP1:152.55.249.64    RHCS管理和存储节点 IP2:192.168.249.64 Openstack.node1:IP1:152.55.249.65     业务1 IP2:192.168.249.65 Openstack.node2: IP1:152.55.249.66     业务2 IP2:192.168.249.65 Openstack.node2: IP1:152

搭建一个DNS服务器群

本节索引 DNS简介 DNS解析过程 DNS资源记录 DNS主从原理 搭建完整的DNS架构 调试结果 错误分析 本篇小结 DNS简介 DNS(Domain Name System,域名系统),是Internet上作为域名和IP地址相互映射的一个分布式数据库,在这个解析库中定义了某个域名和IP的对应关系.通过DNS的解析,我们不用去记住那些难记的IP地址(数串),我们只要能记住其对应的主机名即可,像www.baidu.com.这中字符串就显得好记多了.DNS协议运行在TCP和UDP的上,对应端口号

postfix+mysql+courier-authlib+extmail+extman搭建企业邮箱

因为公司规模要扩大,然后经理要求公司应该有自己的邮件系统.然后主动请命说我来搭建,因为以前没有搭建过,或者学过原理搭建起来很费劲,看着人家的文档做,也是不知道什么意思,还还常出错.在纠结两天之后,开始静下心来学习一下邮件服务器的工作原理: 1.mail服务器是遵循c/s架构的模型.我们先来了解一下mail这个的工作过程(MTA要开启中继): (1)本地客户端(MUA)编写邮件地址.然后发送到哪个域名, (2)发送到邮件服务器(MTA).邮件服务器判断是否是本地的主机.是的话就投递本地(MDA).

使用JAVA开发微信公众平台(一)——环境搭建与开发接入

一. 初始微信公众平台 微信公众平台,即我们平时所说的“公众号”,曾用名“官方平台”.“媒体平台”,但最终命名为“公众平台”.从微信的命名我可以发现,公众平台不只是官方.媒体使用的平台,而是对所有公众都开放的统一平台. 微信公众平台地址:https://mp.weixin.qq.com/ 微信公众平台公分4大板块:订阅号.服务号.小程序.企业号.按照微信2016年公开课规划,企业号后续将与企业微信合并,因此我们主要针对前三部分开始讲解: 简单的对比一下前三者的区别以及本次课程即后续课程的讲解重点

springcloud-eureka高可用集群搭建

一 前言 eureka作为注册中心,其充当着服务注册与发现功能,加载负载均衡:若在项目运行中eureka挂了,那么整个服务整体都会暂停,所以为服务运行的安全性,有必要搭建eureka集群:当其中一个eureka节点挂了,我们还有另外的节点可用:本篇文章的核心是如何在idea上运行eureka集群,和项目部署:需注意的jdk版本是1.8,高于jdk1.8打包部署会出问题,需要引入其他依赖: 二 eureka-server配置文件改造 之前的配置文件如下,这是单个eureka-server的配置,并

架构设计:负载均衡层设计方案之负载均衡技术总结篇

前言 1.概述 通过前面文章的介绍,并不能覆盖负载均衡层的所有技术,但是可以作为一个引子,告诉各位读者一个学习和使用负载均衡技术的思路.虽然后面我们将转向"业务层"和"业务通信"层的介绍,但是对负载均衡层的介绍也不会停止.在后续的时间我们将穿插进行负载均衡层的新文章的发布,包括Nginx技术的再介绍.HaProxy.LVS新的使用场景等等. 这篇文章我们对前面的知识点进行总结,并有意进行一些扩展,以便于各位读者找到新的学习思路. 2.负载均衡层的核心思想 2-1.一

计算机的实现的理论基础

计算机的实现 作者:佳嵌工作室(交流QQ群:528495258) 网站:http://www.plusembed.com 转载请说明源地址. 1.1 计算机理论提出 1.1.1 图林机理 1936年,阿兰.图灵提出了一种数学上的抽象的计算机模型,这个模型被称为图灵机,并在数学上验证了其理论上的可能性,现在所有的计算机运行原理都符合图林机的运作原理,图灵也因为在计算机上巨大成就,计算机科学界的最高奖也被称为"图灵奖",这个奖有计算机科学界的"诺贝尔奖"之称. 1.1.