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. 编译putty 源码去掉 Are you sure you want to close this session? 提示

    0, 为什么要编译 putty ?在关闭窗口的时候,会弹出一个 Are you sure you want to close this session?要把这个去掉.当然也可以用 OD 之类的来修改. ...

  2. django 从零开始 3认识url解析

    在视图函数中定义一个函数abc 接受得到的参数 并显示在页面上 urls中设置 在页面会显示出错误  找不到该url ,原因是django1版本中使用的是url和re_path ,突然django2变 ...

  3. windows 安装 jenkins 自动化构建部署至linux服务器上

    一.环境准备 1.git安装环境 参考链接 https://www.cnblogs.com/yuarvin/p/12500038.html 2.maven安装环境,包括jdk环境安装 参考链接 htt ...

  4. 阿里AI芯片:12nm工艺、709平方毫米大核心

    含光出自<列子·汤问>篇有“上古三剑”一章,寓意含而不露,光而不耀,象征含光 800 无形却强劲的算力. 含光 800 是一款 AI 芯片,偏重推理.据介绍,1 颗含光 800 的算力相当 ...

  5. 五分钟用Docker快速搭建Go开发环境

    挺早以前在我写过一篇用 `Docker`搭建LNMP开发环境的文章:[用Docker搭建Laravel开发环境](http://mp.weixin.qq.com/s?__biz=MzUzNTY5MzU ...

  6. 双列集合Map相关面试题

    一.了解Map集合吗?Map集合都有哪些实现 HashMap HashTable LinkedHashMap TreeMap ConcurrentHashMap 二.HashMap和HashTable ...

  7. 大数据存储利器 - Hbase 基础图解

    由于疫情原因在家办公,导致很长一段时间没有更新内容,这次终于带来一篇干货,是一篇关于 Hbase架构原理 的分享. Hbase 作为实时存储框架在大数据业务下承担着举足轻重的地位,可以说目前绝大多数大 ...

  8. jenkins-gitlab-harbor-ceph基于Kubernetes的CI/CD运用(四)

    前景提要 jenkins与gitlab结合,实现代码自动拉取:https://www.cnblogs.com/zisefeizhu/p/12548662.html jenkins与kubernetes ...

  9. Mysql - 删除表时出现: Cannot delete or update a parent row: a foreign key constraint fails

    现象 MySQL在删除一张表时出现 ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint ...

  10. cmdb autoserver端表数据分析

    目录: 1.后台目录规划 autoserver: api: 接收数据并进行二次分析入库 API验证 backend : 负责后台管理 repository:负责管理模型类 (数据表) autoserv ...