RHCS 实现高可用 HA(一)

简介

RHCS即 RedHat Cluster Suite ,中文意思即红帽集群套件。
红帽集群套件(RedHat Cluter Suite, RHCS)是一套综合的软件组件,可以通过在部署时采用不同的配置,以满足你的对高可用性,负载均衡,可扩展性,文件共享和节约成本的需要。

它提供有如下两种不同类型的集群:

  • 1、高可用性:应用/服务故障切换-通过创建n个节点的服务器集群来实现关键应用和服务的故障切换
  • 2、负载均衡:IP 负载均衡-对一群服务器上收到的 IP 网络请求进行负载均衡

特点

  • 1、最多支持128个节点(红帽企业Linux 3 和红帽企业Linux 4 支持 16 个节点)。
  • 2、可同时为多个应用提供高可用性。
  • 3、NFS/CIFS 故障切换:支持 Unix 和 Windows 环境下使用的高可用性文件。
  • 4、完全共享的存储子系统:所有集群成员都可以访问同一个存储子系统。
  • 5、综合数据完整性:使用最新的 I/O 屏障(barrier)技术,如可编程的嵌入式和外部电源开关装置(power switches)。
  • 6、服务故障切换:红帽集群套件可以确保及时发现硬件停止运行或故障的发生并自动恢复系统,同时,它还可以通过监控应用来确保应用的正确运行并在其发生故障时进行自动重启。

集群中的相关术语

  • 1.节点(node)
    运行集群进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和集群软件服务,在集群中,节点有主次之分,分别称为主节点和备用/备份节点,每个节点拥有唯一的主机名,并且拥有属于自己的一组资源,例如,磁盘、文件系统、网络地址和应用服务等。主节点上一般运行着一个或多个应用服务。而备用节点一般处于监控状态。

  • 2.资源(resource)
    资源是一个节点可以控制的实体,并且当节点发生故障时,这些资源能够被其它节点接管

  • 3.事件(event)
    也就是集群中可能发生的事情,例如节点系统故障、网络连通故障、网卡故障、应用程序故障等。这些事件都会导致节点的资源发生转移,HA的测试也是基于这些事件来进行的。

  • 4.动作(action)
    事件发生时HA的响应方式,动作是由shell脚步控制的,例如,当某个节点发生故障后,备份节点将通过事先设定好的执行脚本进行服务的关闭或启动。进而接管故障节点的资源


集群大致结构

这是本人简单制作的集群的大致结构,先有一个大致的思想:

RHCS 实现高可用 HA(一)_第1张图片
//最上层是LVS负载均衡层,中间一层是Real Server层,就是服务节点部分,最后一层是共享存储层,主要用于给GFS文件系统提供共享存储空间。

下面就来一一实现相应的服务:


首先搭建RHCS环境:

基本环境搭建:

1、操作系统:rhel6.5

2、准备四台主机:

  • 主机:172.25.32.250,后面作fence,暂时不用
    server1: 172.25.32.1 下载ricci,luci(为了提供Conga配置用户界面),作主节点
    server4:172.25.32.4 下载ricci,作副节点
    server3:172.25.32.3 ,后面作iscci共享存储,暂时不用

注:
从红帽企业版 Linux 6.1 开始,您在任意节点中使用 ricci 推广更新的集群配置时要求输入密码。所以在前面两台主机安装完成ricci后需要修改ricci用户的密码,这个是后面节点设置的密码,并且要作时间同步;然后启动安装的服务

3、为了避免其他因素影响实验,关闭所有的防火墙,禁用selinux

4、 server1,server4上配置高可用的yum源

RHCS 实现高可用 HA(一)_第2张图片

执行yum repolist ,出现以下提示即为成功:
RHCS 实现高可用 HA(一)_第3张图片

创建集群:

1、浏览器输入 https://172.25.32.1:8084

在网页浏览器的地址栏中输入 cman 服务器的 URL
luci服务器的URL语法为https://172.25.32.1:luci_server_port。luci_server_port 的默认值为 8084 。

首次访问 luci 时,网页浏览器会根据显示的自我签名 SSL 证书( luci 服务器的证书)给出具体提示。确认一个或者多个对话框后,您的网页显示器会显示 luci 登录页面。
RHCS 实现高可用 HA(一)_第4张图片

2、登陆进入后点击管理集群开始添加集群(注用户密码是服务器的用户名密码,这里以root身份)

虽然所有可以在托管 luci 的系统中认证的用户都可以登录 luci,但从红帽企业版 Linux 6.2 开始,只 有运行 luci 的系统中的 root 可以访问所有 luci 组件,除非管理员(root 用户或者有管理员权限的用 户)为那个用户设置权限。

RHCS 实现高可用 HA(一)_第5张图片
//最下面两个是加入节点自动重启支持共享存储

  • 注意:
    1、在「集群名称」 文本框中输入集群名称。集群名称不能超过 15 个字符。
    如果集群中的每个节点都有同样的 ricci 密码,您可以选择「在所有 节 点中使用相同的密 码 」 ,这样就可在添加的节点中自动填写「密 码 」 字段。
    2、在「 节 点名称」 栏中输入集群中节点的名称,并在「密 码 」 栏中为该节点输入 ricci 密码。
    3、如果要在 ricci 代理中使用不同的端口,而不是默认的 11111 端口,可以更改那个参数。
    4、如果不想要在创建集群时升级已经在节点中安装的集群软件软件包,请选择「使用本地安装的软 件包」 选项。如果要升级所有集群软件软件包,请选择「下 载软 件包」 选项
    *5、添加完成后会发现一直在等待状态,这时查看服务器,会发现server1已经重启,这时只需要启动后再开启服务就成功添加节点了。

如果缺少任意基本集群组件(cm an、rgm anager、m odcluster 及其所有相依性软件 包),无论是选择「使用本地安装的 软 件包」 ,还是「下 载软 件包」 选项,都会安装它 们。如果没有安装它们,则创建节点会失败

此时,在两个主机中的任一个上执行clustat,或者cat /etc/cluster/cluster.conf ,都可以查看到集群的信息。

[root@server1 ~]# clustat 
Cluster Status for today1 @ Thu Sep 28 15:19:35 2017
Member Status: Quorate

 Member Name                             ID   Status
 ------ ----                             ---- ------
 server1                                     1 Online, Local
 server4                                     2 Online

配置故障切换

RHCS的一个很重要概念:Failover Domain故障转移域,更准确地说应该是服务故障转移域(一个服务包括多个资源如VIP FileSystem…)key当i定义一个节点故障后,此节点上的资源能够转移的目标节点,进而限制了资源转移的范围

FENCE设备是RHCS集群中必不可少的一个组成部分,通过FENCE设备可以避免因出现不可预知的情况而造成的“脑裂”现象,FENCE设备的出现,就是为了解决类似这些问题,Fence设备主要就是通过服务器或存储本身的硬件管理接口,或者外部电源管理设备,来对服务器或存储直接发出硬件管理指令, 将服务器重启或关机,或者与网络断开连接。

  • FENCE的工作原理:

    当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资源。这样通过FENCE设备,将异常节点占据的资 源进行了释放,保证了资源和服务始终运行在一个节点上。

一、向集群添加fence

这里作为fence的是我们的主机,172.25.32.250

  • 安装软件fence-virtd-multicast、fence-virtd、fence-virtd-libvirt;
  • fence_virtd -c编写新的fence信息
    安装fence,选择工作模式”multicast”,地址”225.0.0.12”,端口”1229”,family”ipv4”,网络interface”br0”,Backend module “libvirt”;
    • 注:这里br0是因为虚拟服务器受主机控制的网卡是br0
      RHCS 实现高可用 HA(一)_第6张图片
  • 执行命令:dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
    • 生成128位的key,可以file查看这个key类型是数据(data),并将key发送到套件集群服务器(server1,server4)的/etc/cluster目录下,
    • 完成后可以通过文件 /etc/fence_virt.conf 查看fence的信息;
  • 重新启动fence_virtd;

  • 在luci(https://172.25.32.1:8084)上的配置:

    • 登陆luci选择集群,点击Fence Devices
      RHCS 实现高可用 HA(一)_第7张图片
    • 点击Add,选择模式为”Fence virt (Multicast Mode)”,输入一个自动以的Fence名称,点击Submit;
      __注:此时查看server1的集群信息文件/etc/cluster/cluster.conf,会发现vmfence
      RHCS 实现高可用 HA(一)_第8张图片
    • 点击Nodes,选择server1,点击界面下的”Add Fence Method”,输入一个自定义的server1的Fence名称,例如fence1;
      RHCS 实现高可用 HA(一)_第9张图片
    • 点击Add Fence Instance,选择之前设置好的vmfence,输入Domain(虚拟服务器的UUID),在另一个server4上做同样操作,名称fence2,Domain为server4的;
      RHCS 实现高可用 HA(一)_第10张图片
      //重新查看cluster.conf文件,配置已经更改
  • 测试,输入fence_node server4,可以让server4跳电,即直接断掉电源,即为成功;

删 除 Fence 设备

注意:
无法删除使用中的 fence 设备。要删除某个节点目前正在使用的 fence 设备,请首先为使用该设备的 所有节点更新节点 fence 配置,然后删除该设备。
要删除 fence 设备,请按照以下步骤执行:
1. 在「 Fence 设备 」 配置页面中选择 fence 设备左侧的复选框选择要删除的设备。
2. 点击 删 除 并等待配置更新。此时会出现一条信息说明已经删除了该设备。 当更新配置后,显示中不再会出现删除的 fence 设备。

二、添加服务

HA 服务是一组在统一实体中配置的集群资源,可为客户端提供指定的服务。HA 服务在集群配置文件/etc/cluster/cluster.conf(在每个集群节点中)中以资源树的形式出现。在集群配置文件中,每个 资源树都使用一个 XML 代表,它指定每个资源及其属性,以及在资源树中与其他资源的关系(上级、下级和平级关系)。

在资源树的上/下级关系中采用以下规则:

  • 上级资源在下级资源之前启动。
    在停止上级资源前必须停止全部下级资源。
    对于正常工作的资源,其下级资源必须全部正常工作。

添加一个服务,这里以httpd为例:

  • 在server1和server4上均配置好httpd,编写各自的网页(index.html文件);
  • 启动启动Apache服务检测是否正常显示网页,检测完成后server1和server4均关闭httpd服务;
    • 注 : 交给集群的资源一定是屏蔽掉的,因为要交给集群去开启
  • 进入luci的集群,点击Faliover Domains,点击Add,输入Name,例如webfile,选中Prioritized、Restricted(只在指定节点跑)、No Failback(资源故障回切),选中下方的server1和server4的Member并输入优先级,这里server1输入1,server4输入2,就是以server1为主节点,数字越小优先级越高
    RHCS 实现高可用 HA(一)_第11张图片
  • 点击Resources,点击Add,选择模式IP Address,输入IP和NETMASK,IP不能被占用,这个IP就是VIP,点击Submit;
    RHCS 实现高可用 HA(一)_第12张图片
    • 注意:子网掩码要匹配,不一定都是24
  • 点击Resources,点击Add,选择模式Script,输入Name”apache“,并输入脚本路径”/etc/init.d/httpd“,点击Submit;
  • 点击Service Groups,点击Add,输入一个自定义名称,例如”web“,选中”Automatically Start This Service“(集群自动开启)和”Run Exclusive“,选中”Failover Domain”下刚才创建的”webfile“,”Recovery Policy”选择”Relocate“,点击下方Add Resource,选择之前创建的Resources,因为有两个,所以需要添加两次,完成后点击Submit;
    • 节点资源添加的顺序,就是启动的顺序,所以先开启VIP,然后再启动httpd,要注意!!

三、测试:

1、在浏览器中输入域名(VIP),查看页面是否显示;


//访问的是主节点上的apache

命令行的显示:
RHCS 实现高可用 HA(一)_第13张图片

也可以用命令行进行更改:clusvcadm -r weblb -m server4

RHCS 实现高可用 HA(一)_第14张图片

2、在server1中关闭httpd服务用clustat命令查看效果

正确的效果为刚开始server1的状态是started,当关闭后,等5秒钟(这个5是在故障域中设置的时间),started的主机跳到server4;

3、两个命令:

clusvcadm -s weblb //关闭httpd服务

RHCS 实现高可用 HA(一)_第15张图片
//一旦关闭,另一端自动开启

clusvcadm -e weblb //打开httpd服务

RHCS 实现高可用 HA(一)_第16张图片

3、或者使用命令”echo c > /proc/sysrq-trigger“崩溃server1的内核(b,h…都有对应的操作项),并观察server1

发现server1崩溃后自动转换到server4的界面,并且server1重新启动,clustat查看server1重新started
RHCS 实现高可用 HA(一)_第17张图片
其实server1不止是重新启动,还会自动添加到fence中,并且VIP也会自动飘过来;
在server1重新启动之后不做操作,直接将server4内核崩溃测试,发现网页自动调转到server1的界面了。
RHCS 实现高可用 HA(一)_第18张图片

这就是故障切换

篇幅问题,下一篇将继续讲解RHCS实现HA的存储共享。

你可能感兴趣的:(linux企业篇)