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. Spring Ioc 依赖查找

    Spring ioc 有依赖查找和依赖注入,之前不太明白依赖查找是什么意思,翻了一大堆博客看了好多定义也不太清楚 ,后来看了小马哥视频,他通过代码演示,清楚地讲解了什么是 依赖查找以及几种依赖查找的方 ...

  2. 通过locust进行性能测试

    首先我们需要准备好python环境 接口 安装python 插件 locust,网上有很多文章而且都很错,这里不再赘述 我是通过pycharm 编写的代码  导入 HttpLocust,TaskSet ...

  3. linux svn切换用户

    1. 临时切换 在所有命令下强制加上--username 和--password选项. 例如:svn up --username zhangsan --password 123456 2.永久切换 删 ...

  4. Swift:字符串(String)分割之Substring优雅转换

    认识Substring类型 这是一个全新的类型,看类名像是String的子类,但是大家千万别被误导了,Substring并不是String的子类,这是两个不同的类型,但是它们都继承了StringPro ...

  5. loadrunner-事务

    自从安装了loadrunner之后,就没怎么用过它了,项目之前也没做过性能测试,所以学习起来比较困难,而且性能测试远远不止使用工具这么简单.下面介绍一下最近学习的loadrunner添加事务. 事务是 ...

  6. 破解WIFI教程

    今日主题:如何破解WIFI 准备工具 笔记本一台 usb无线网卡[我用的是小米的] kali系统[可以在虚拟机里装,建议用2019年及以下版本] VMware Workstation15虚拟机安装 可 ...

  7. hdu2492树状数组

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/2492/ 题目大意:给定一个序列,求长度为三的子序列(a,b,c)使得a<b<c或a>b> ...

  8. 【HDU5934】Bomb——有向图强连通分量+重建图

    题目大意 二维平面上有 n 个爆炸桶,i−thi-thi−th爆炸桶位置为 (xi,yi)(x_i, y_i)(xi​,yi​) 爆炸范围为 rir_iri​ ,且需要 cic_ici​ 的价格引爆, ...

  9. [dp+博弈]棋盘的必胜策略

    链接:https://ac.nowcoder.com/acm/problem/21797来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...

  10. Java 访问修饰符大全详解

    鉴于笔试面试总会遇到,决心仔细认真梳理一下: 1:涉及的关键字:public,default(表示缺省),protected,private,static,final,abstract. 2:关键字含 ...