RHCS概述

  1. 创建RHCS集群环境
  2. 创建高可用Apache服务

1 创建RHCS集群环境

1.1 问题

准备四台KVM虚拟机,其三台作为集群节点,一台安装luci并配置iSCSI存储服务,实现如下功能:

  • 使用RHCS创建一个名为tarena的集群
  • 集群中所有节点均需要挂载iSCSI共享存储
  • 使用集群中任意节点对iSCSI设置进行分区格式化
  • 安装luci的虚拟主机要求额外添加一块20G硬盘
  • 物理主机IP地址为192.168.4.1,主机名称为desktop1.example.com

1.2 方案

使用4台虚拟机,1台作为luci和iSCSI服务器、3台作为节点服务器,拓扑结构如图-1所示。

图-1

所有主机的主机名及对应的IP地址如表-1所示。

表-1 主机名称及对应IP地址表

1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:安装前准备

1)为所有节点配置yum源,注意所有的虚拟主机均需要挂载安装光盘。

  1. [root@node1 ~]# mount /dev/cdrom /media
  2. [root@node1 ~]# rm -rf /etc/yum.repos.d/*
  3. [root@node1 ~]# vim /etc/yum.repos.d/dvd.repo
  4. [dvd]
  5. name=red hat
  6. baseurl=file:///media/
  7. enabled=1
  8. gpgcheck=0
  9. [HighAvailability]
  10. name=HighAvailability
  11. baseurl=file:///media/HighAvailability
  12. enabled=1
  13. gpgcheck=0
  14. [LoadBalancer]
  15. name=LoadBalancer
  16. baseurl=file:///media/LoadBalancer
  17. enabled=1
  18. gpgcheck=0
  19. [ResilientStorage]
  20. name=ResilientStorage
  21. baseurl=file:///media/ResilientStorage
  22. enabled=1
  23. gpgcheck=0
  24. [ScalableFileSystem]
  25. name=ScalableFileSystem
  26. baseurl=file:///media/ScalableFileSystem
  27. enabled=1
  28. gpgcheck=0
  29. [root@node1 ~]# yum clean all
  30. [root@node2 ~]# mount /dev/cdrom /media
  31. [root@node2 ~]# rm –rf /etc/yum.repos.d/*
  32. [root@node2 ~]# vim /etc/yum.repos.d/dvd.repo
  33. [dvd]
  34. name=red hat
  35. baseurl=file:///media/
  36. enabled=1
  37. gpgcheck=0
  38. [HighAvailability]
  39. name=HighAvailability
  40. baseurl=file:///media/HighAvailability
  41. enabled=1
  42. gpgcheck=0
  43. [LoadBalancer]
  44. name=LoadBalancer
  45. baseurl=file:///media/LoadBalancer
  46. enabled=1
  47. gpgcheck=0
  48. [ResilientStorage]
  49. name=ResilientStorage
  50. baseurl=file:///media/ResilientStorage
  51. enabled=1
  52. gpgcheck=0
  53. [ScalableFileSystem]
  54. name=ScalableFileSystem
  55. baseurl=file:///media/ScalableFileSystem
  56. enabled=1
  57. gpgcheck=0
  58. [root@node2 ~]# yum clean all
  59. [root@node3 ~]# mount /dev/cdrom /media
  60. [root@node3 ~]# rm -rf /etc/yum.repos.d/*
  61. [root@node3 ~]# vim /etc/yum.repos.d/dvd.repo
  62. [dvd]
  63. name=red hat
  64. baseurl=file:///media/
  65. enabled=1
  66. gpgcheck=0
  67. [HighAvailability]
  68. name=HighAvailability
  69. baseurl=file:///media/HighAvailability
  70. enabled=1
  71. gpgcheck=0
  72. [LoadBalancer]
  73. name=LoadBalancer
  74. baseurl=file:///media/LoadBalancer
  75. enabled=1
  76. gpgcheck=0
  77. [ResilientStorage]
  78. name=ResilientStorage
  79. baseurl=file:///media/ResilientStorage
  80. enabled=1
  81. gpgcheck=0
  82. [ScalableFileSystem]
  83. name=ScalableFileSystem
  84. baseurl=file:///media/ScalableFileSystem
  85. enabled=1
  86. gpgcheck=0
  87. [root@node3 ~]# yum clean all
  88. [root@luci ~]# mount /dev/cdrom /media
  89. [root@luci ~]# rm -rf /etc/yum.repos.d/*
  90. [root@luci ~]# vim /etc/yum.repos.d/dvd.repo
  91. [dvd]
  92. name=red hat
  93. baseurl=file:///media/
  94. enabled=1
  95. gpgcheck=0
  96. [HighAvailability]
  97. name=HighAvailability
  98. baseurl=file:///media/HighAvailability
  99. enabled=1
  100. gpgcheck=0
  101. [LoadBalancer]
  102. name=LoadBalancer
  103. baseurl=file:///media/LoadBalancer
  104. enabled=1
  105. gpgcheck=0
  106. [ResilientStorage]
  107. name=ResilientStorage
  108. baseurl=file:///media/ResilientStorage
  109. enabled=1
  110. gpgcheck=0
  111. [ScalableFileSystem]
  112. name=ScalableFileSystem
  113. baseurl=file:///media/ScalableFileSystem
  114. enabled=1
  115. gpgcheck=0
  116. [root@luci ~]# yum clean all

2)修改/etc/hosts并同步到所有主机。

  1. [root@luci ~]# vim /etc/hosts
  2. 192.168.4.1        node1.example.com
  3. 192.168.4.2        node2.example.com
  4. 192.168.4.3        node3.example.com
  5. 192.168.4.4        luci.example.com
  6. [root@luci ~]# for i in {1..3};do scp /etc/hosts 192.168.4.$i:/etc/;done

3)所有节点关闭NetworkManager、SELinux服务。

  1. [root@luci ~]# service NetworkManager stop
  2. [root@luci ~]# chkconfig NetworkManager off
  3. [root@luci ~]# sed -i '/SELINUX=/s/enforcing/permissive/' /etc/sysconfig/selinux
  4. [root@luci ~]# setenforce 0
  5. [root@luci ~]# iptables -F; service iptables save
  6. [root@node1 ~]# service NetworkManager stop
  7. [root@node1 ~]# chkconfig NetworkManager off
  8. [root@node1 ~]# sed -i '/SELINUX=/s/enforcing/permissive/' /etc/sysconfig/selinux
  9. [root@node1 ~]# setenforce 0
  10. [root@node1 ~]# iptables -F; service iptables save
  11. [root@node2 ~]# service NetworkManager stop
  12. [root@node2 ~]# chkconfig NetworkManager off
  13. [root@node2 ~]# sed -i '/SELINUX=/s/enforcing/permissive/' /etc/sysconfig/selinux
  14. [root@node2 ~]# setenforce 0
  15. [root@node2 ~]# iptables -F; service iptables save
  16. [root@node3 ~]# service NetworkManager stop
  17. [root@node3 ~]# chkconfig NetworkManager off
  18. [root@node3 ~]# sed -i '/SELINUX=/s/enforcing/permissive/' /etc/sysconfig/selinux
  19. [root@node3 ~]# setenforce 0
  20. [root@node3 ~]# iptables -F; service iptables save

步骤二:部署iSCSI服务

1)在luci主机上部署iSCSI服务器,将/dev/sdb使用iSCSI服务共享。

提示:服务器IQN名称为: iqn.2015-06.com.example.luci:cluster。

  1. [root@luci ~]# yum  -y  install  scsi-target-utils        //安装软件
  2. .. ..
  3. [root@luci ~]# rpm  -q  scsi-target-utils
  4. scsi-target-utils-1.0.24-10.el6.x86_64
  5. [root@luci ~]# vim /etc/tgt/targets.conf
  6. <target iqn.2015-06.com.example.luci:cluster>
  7. # List of files to export as LUNs
  8. backing-store /dev/sdb                            //定义存储设备
  9. initiator-address 192.168.4.0/24                    //定义ACL
  10. </target>
  11. [root@luci ~]# service  tgtd  start                     //启动服务
  12. Starting SCSI target daemon:                               [  OK  ]
  13. [root@luci ~]# chkconfig  tgtd  on

2)所有节点服务器挂载该iSCSI共享。

  1. [root@node1 ~]# yum -y install iscsi-initiator-utils    //安装软件
  2. [root@node1 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.4.4:3260
  3. [root@node1 ~]# iscsiadm -m node -T \
  4. >iqn.2015-06.com.example.luci:cluster \
  5. >-p 192.168.4.4:3260 -l                                //挂载iSCSI共享
  6. [root@node1 ~]# iscsiadm -m node -T \
  7. >iqn.2015-06.com.example.luci:cluster \
  8. >-p 192.168.4.4:3260 -l
  9. [root@node2 ~]# yum -y install iscsi-initiator-utils    //安装软件
  10. [root@node2 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.4.4:3260
  11. [root@node2 ~]# iscsiadm -m node -T \
  12. >iqn.2015-06.com.example.luci:cluster \
  13. >-p 192.168.4.4:3260 –l                                //挂载iSCSI共享
  14. [root@node2 ~]# iscsiadm -m node -T \
  15. >iqn.2015-06.com.example.luci:cluster \
  16. >-p 192.168.4.4:3260 -l
  17. [root@node3 ~]# yum -y install iscsi-initiator-utils    //安装软件
  18. [root@node3 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.4.4:3260
  19. [root@node3 ~]# iscsiadm -m node -T \
  20. >iqn.2015-06.com.example.luci:cluster \
  21. >-p 192.168.4.4:3260 -l                                //挂载iSCSI共享
  22. [root@node3 ~]# iscsiadm -m node -T \
  23. >iqn.2015-06.com.example.luci:cluster \
  24. >-p 192.168.4.4:3260 –l

步骤三:安装集群软件

1)在luci.example.com主机上安装luci,并启动服务。

  1. [root@luci ~]# yum –y install luci
  2. [root@luci ~]# service luci start;chkconfig luci on

2)在所有的集群节点中安装ricci,并启动服务。

  1. [root@node1 ~]# yum -y install ricci
  2. [root@node1 ~]# echo "11111" |passwd --stdin ricci
  3. [root@node1 ~]# service ricci start;chkconfig ricci on
  4. [root@node2 ~]# yum -y install ricci
  5. [root@node2 ~]# echo "11111" |passwd --stdin ricci
  6. [root@node2 ~]# service ricci start;chkconfig ricci on
  7. [root@node3 ~]# yum -y install ricci
  8. [root@node3 ~]# echo "11111" |passwd --stdin ricci
  9. [root@node3 ~]# service ricci start;chkconfig ricci on

步骤四:配置集群

1)浏览器访问luci,任意主机使用浏览器访问即可。

  1. [root@luci ~]# firefox https://luci.example.com:8084

2)创建集群。

使用浏览器访问luici页面后,点击“Manage Clusters“页面,点击”Create“按钮创建一个新的集群,如图-2所示。

图-2

接下来,在弹出的回话框中,输入集群的名称“tarena“,勾选”Download Packages“、“Reboot Nodes Befor Joining Cluster”、“Enable Shared Storage Support”,效果如图-3所示。

图-3

等待所有的节点重启之后,在luci页面将显示如图-4所示的页面,代表所有节点以及加入到了tarena集群中。

图-4

提示:如果节点重启后,有部分节点无法自动加入集群中,可以将正常的节点系统中/etc/cluster/cluster.conf文件同步到其他失败的节点中,并确保失败节点的cman和rgmanager服务为启动状态即可。


 创建高可用Apache服务

2.1 问题

沿用练习一,使用集群中的节点创建高可用Apache服务,实现以下目标:

  • 在任意节点将练习一挂载的iSCSI磁盘分区并格式化
  • 为集群添加有效的Fence设备
  • 创建名为prefer_node1的故障转移域
  • Apache服务优先运行于node1节点
  • Apache服务提供的VIP地址为192.168.4.100
  • 客户端通过访问VIP地址访问Web页面

2.2 方案

沿用练习一的拓扑架构,依次完成如下操作:

  1. 部署httpd服务
  2. 创建Fence设备
  3. 创建故障转移域
  4. 创建VIP资源
  5. 创建存储资源
  6. 创建Apache服务资源
  7. 创建服务组

2.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:准备存储资源,并在所有节点安装httpd软件

1)在任一集群节点将iSCSI磁盘分区并格式化。

  1. [root@node1 ~]# parted /dev/sdb mklabel msdos
  2. [root@node1 ~]# parted /dev/sdb mkpart primary 1 1000
  3. [root@node1 ~]# partprobe
  4. [root@node1 ~]# mkfs.ext4  /dev/sdb1

2)安装httpd软件

  1. [root@node1 ~]# yum –y install httpd
  2. [root@node2 ~]# yum –y install httpd
  3. [root@node2 ~]# yum –y install httpd

3)挂载共享存储并生成测试web页面

  1. [root@node1 ~]# mount /dev/sdb1  /var/www/html
  2. [root@node1 ~]# echo “test page for rhcs”  > /var/www/html/index.html

步骤二:创建Fence设备

1)安装软件包,生成共享秘钥。

  1. [root@desktop1 ~]# yum -y install \
  2. >fence-virtd fence-virtd-libvirt fence-virtd-multicast
  3. [root@desktop1 ~]# mkdir /etc/cluster
  4. [root@desktop1 ~]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=4k count=1
  5. [root@desktop1 ~]# systemctl enable fence_virtd

2)拷贝秘钥

  1. [root@desktop1 ~]# for i in {1..3};do scp /etc/cluster/fence_xvm.key \
  2. > 192.168.4.$i:/etc/cluster/; done

3)配置Fence

注意:Interface项填写网络接口,Backend module项填写libvirt。

  1. [root@desktop1 ~]# fence_virtd –c
  2. [root@desktop1 ~]# systemctl start fence_virtd

4)登录luci为集群节点添加Fence

在任一使用浏览器访问https://luci.example.com:8084,配置Fence。首先选择“Fence Devices”菜单后,选择Add添加按钮,效果如图-5所示。

图-5

在弹出的回话框中选择Fence设备的类型为Fence virt(Multicast Mode),并给fence设备设置名称,效果如图-6所示。

图-6

创建完Fence设备后,接下来还需要给每个节点添加该Fence设备,首先在集群中点击“Nodes”菜单,依次选择所有节点,给每个节点添加Fence 设备。如图-7所示,选择node1准备给该节点添加Fence设备。

图-7

在节点列表中选择了某个节点后,通过点击“Add Fence Method”添加Fence设备,效果如图-8所示。

图-8

选择“Add Fence Method”后在弹出的回话框中输入名称,如图-9所示。

图-9

接下来,执行最后的操作,为Fence设备添加实例,选择“Add Fence Instance”,效果如图-10所示。

图-10

在弹出的回话框中,选择之前创建的Fence实例“fence_xvm”,并为每个节点填写对应的虚拟机域名称,注意名称必须与虚拟机名称一致,如图-11所说。

图-11

步骤三:创建高可用Apache服务

1)创建故障转移域

在任一节点使用浏览器访问https://luci.example.com:8084,点击“Failover Domains”菜单,通过下面的Add按钮创建故障转移域,如图-12所示。

图-12

在弹出的回话框中为故障转移域填写名称:prefer_node1,依次勾选“Prioritized”、“Restricted”、“No Failback”,并为每个节点设置优先级,为了确保服务优先运行在node1上,我们将node1的优先级设置为1,如图-13所示。

图-13

2)创建资源(VIP、共享存储、Apache服务)

创建资源,可以通过点击“Resources”菜单,使用“Add”按钮创建,如图-14所示。

图-14

在弹出的回话框中,我们选择IP Address这个资源,并为该资源设置具体的参数,VIP地址为192.168.4.100,效果如图-15所示。

图-15

使用相同的方法,创建共享存储,在资源列表中选择Filesystem,并设置具体的参数将共享iSCSI磁盘挂载到/var/www/html中,为了确保挂载点的唯一性,这里我们使用的是设备的UUID(请各位同学根据自己的实际情况填写具体的值),查看UUID的方法是blkid /dev/sdb1,最终的设置效果如图-16所示。

图-16

最后创建Apache服务资源,在资源列表中选择Apache,设置名称为web_service,如图-17所示。

图-17

3)创建服务组

在任意节点使用浏览器访问https://luci.example.com:8084,点击“Service Groups”菜单,通过下面的Add按钮创建服务组,如图-18所示。

图-18

在弹出的回话框中,输入具体的参数,设置服务名称为web_clu,选择故障域为prefre_node1,恢复策略为Relocate,并通过Add Resource给该服务组添加服务资源,将上一步中创建的3个资源添加到该服务组中,效果如图-19所示。

图-19

步骤四:验证测试

在任意集群节点中,输入clustat查看集群及高可用服务运行状态,如图-20所示。

图-20

 

RHCS概述的更多相关文章

  1. LVS概述

    LVS原理概述: lvs是一个开源软件,是Linux virtual server的简写,即linux虚拟服务器,是一个虚拟的服务器集群系统,lvs集群采用ip负载均衡技术和基于内容的请求分发技术.将 ...

  2. redhat中的RHCS双机配置

    1. 主机概述 主机名 主机IP 备注 node1 192.168.1.101 模拟fence设备 node2 192.168.1.102 rhcs双机节点 node3 192.168.1.103 r ...

  3. 【AR实验室】ARToolKit之概述篇

    0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...

  4. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  5. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  6. .Net 大型分布式基础服务架构横向演变概述

    一. 业务背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 二. 基础 ...

  7. [C#] 进阶 - LINQ 标准查询操作概述

    LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...

  8. 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  9. Java消息队列--JMS概述

    1.什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...

随机推荐

  1. $props, $attrs,$listeners的具体使用例子

    我在这使用属性重新render饿了么ui的tree: <el-tree ref="tree" icon-class="fa fa-caret-right" ...

  2. 题解 NOIP2018【赛道修建】—— 洛谷

    这道题有一点点树上dp的意思(大佬轻喷 我刚拿到这道题的时候毫无头绪,只知道这道题要二分答案 为什么是二分答案??? 题目: 目前赛道修建的方案尚未确定.你的任务是设计一 种赛道修建的方案,使得修建的 ...

  3. Python3学习之路~10.1 多进程、进程间通信、进程池

    一 多进程multiprocessing multiprocessing is a package that supports spawning processes using an API simi ...

  4. Jenkins分布式构建与并行构建

    Jenkins分布式构建与并行构建 jenkins的架构 Jenkins采用的是"master+agent(slave)"架构.Jenkins master负责提供界面.处理HTT ...

  5. 故事:走进JVM的世界(图文并茂)

    注意!本文较长,建议先收藏再阅读.更多文章可以关注作者公众号:码上实战 你也可以 star 我的 GitHub上本文所属仓库:https://github.com/flyhero/MarkNote 说 ...

  6. 补充《解析“60k”大佬的19道C#面试题(上)》

    [广州.NET技术俱乐部]微信群的周杰写了一篇文章<解析“60k”大佬的19道C#面试题(上)>https://www.cnblogs.com/sdflysha/p/20200325-19 ...

  7. 洛谷 P3870 [TJOI2009]开关 题解

    原题链接 前置知识: 线段树的单点.区间的修改与查询. 一看,我们需要维护两个操作: 区间取反: 区间求和. (因为区间 \(1\) 的个数,就是区间的和) 典型的 线段树 . 如果你只会线段树的 区 ...

  8. Linux上通过docker方式安装mysql

    centos版本信息: docker版本信息 mysql版本:5.7 1.docker方式安装 首先拉取mysql镜像:docker pull mysql:5.7     查看本地的mysql镜像 执 ...

  9. 03.第一个Go程序

    第一个Go程序 Hello World 现在我们来创建第一个Go项目--hello.在我们的GOPATH下的src目录中创建hello目录. 在该目录中创建一个main.go文件: package m ...

  10. Redis 缓存更新一致性

    当执行写操作后,需要保证从缓存读取到的数据与数据库中持久化的数据是一致的,因此需要对缓存进行更新. 因为涉及到数据库和缓存两步操作,难以保证更新的原子性. 在设计更新策略时,我们需要考虑多个方面的问题 ...