RHCS概述
RHCS概述
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源,注意所有的虚拟主机均需要挂载安装光盘。
- [root@node1 ~]# mount /dev/cdrom /media
- [root@node1 ~]# rm -rf /etc/yum.repos.d/*
- [root@node1 ~]# vim /etc/yum.repos.d/dvd.repo
- [dvd]
- name=red hat
- baseurl=file:///media/
- enabled=1
- gpgcheck=0
- [HighAvailability]
- name=HighAvailability
- baseurl=file:///media/HighAvailability
- enabled=1
- gpgcheck=0
- [LoadBalancer]
- name=LoadBalancer
- baseurl=file:///media/LoadBalancer
- enabled=1
- gpgcheck=0
- [ResilientStorage]
- name=ResilientStorage
- baseurl=file:///media/ResilientStorage
- enabled=1
- gpgcheck=0
- [ScalableFileSystem]
- name=ScalableFileSystem
- baseurl=file:///media/ScalableFileSystem
- enabled=1
- gpgcheck=0
- [root@node1 ~]# yum clean all
- [root@node2 ~]# mount /dev/cdrom /media
- [root@node2 ~]# rm –rf /etc/yum.repos.d/*
- [root@node2 ~]# vim /etc/yum.repos.d/dvd.repo
- [dvd]
- name=red hat
- baseurl=file:///media/
- enabled=1
- gpgcheck=0
- [HighAvailability]
- name=HighAvailability
- baseurl=file:///media/HighAvailability
- enabled=1
- gpgcheck=0
- [LoadBalancer]
- name=LoadBalancer
- baseurl=file:///media/LoadBalancer
- enabled=1
- gpgcheck=0
- [ResilientStorage]
- name=ResilientStorage
- baseurl=file:///media/ResilientStorage
- enabled=1
- gpgcheck=0
- [ScalableFileSystem]
- name=ScalableFileSystem
- baseurl=file:///media/ScalableFileSystem
- enabled=1
- gpgcheck=0
- [root@node2 ~]# yum clean all
- [root@node3 ~]# mount /dev/cdrom /media
- [root@node3 ~]# rm -rf /etc/yum.repos.d/*
- [root@node3 ~]# vim /etc/yum.repos.d/dvd.repo
- [dvd]
- name=red hat
- baseurl=file:///media/
- enabled=1
- gpgcheck=0
- [HighAvailability]
- name=HighAvailability
- baseurl=file:///media/HighAvailability
- enabled=1
- gpgcheck=0
- [LoadBalancer]
- name=LoadBalancer
- baseurl=file:///media/LoadBalancer
- enabled=1
- gpgcheck=0
- [ResilientStorage]
- name=ResilientStorage
- baseurl=file:///media/ResilientStorage
- enabled=1
- gpgcheck=0
- [ScalableFileSystem]
- name=ScalableFileSystem
- baseurl=file:///media/ScalableFileSystem
- enabled=1
- gpgcheck=0
- [root@node3 ~]# yum clean all
- [root@luci ~]# mount /dev/cdrom /media
- [root@luci ~]# rm -rf /etc/yum.repos.d/*
- [root@luci ~]# vim /etc/yum.repos.d/dvd.repo
- [dvd]
- name=red hat
- baseurl=file:///media/
- enabled=1
- gpgcheck=0
- [HighAvailability]
- name=HighAvailability
- baseurl=file:///media/HighAvailability
- enabled=1
- gpgcheck=0
- [LoadBalancer]
- name=LoadBalancer
- baseurl=file:///media/LoadBalancer
- enabled=1
- gpgcheck=0
- [ResilientStorage]
- name=ResilientStorage
- baseurl=file:///media/ResilientStorage
- enabled=1
- gpgcheck=0
- [ScalableFileSystem]
- name=ScalableFileSystem
- baseurl=file:///media/ScalableFileSystem
- enabled=1
- gpgcheck=0
- [root@luci ~]# yum clean all
2)修改/etc/hosts并同步到所有主机。
- [root@luci ~]# vim /etc/hosts
- 192.168.4.1 node1.example.com
- 192.168.4.2 node2.example.com
- 192.168.4.3 node3.example.com
- 192.168.4.4 luci.example.com
- [root@luci ~]# for i in {1..3};do scp /etc/hosts 192.168.4.$i:/etc/;done
3)所有节点关闭NetworkManager、SELinux服务。
- [root@luci ~]# service NetworkManager stop
- [root@luci ~]# chkconfig NetworkManager off
- [root@luci ~]# sed -i '/SELINUX=/s/enforcing/permissive/' /etc/sysconfig/selinux
- [root@luci ~]# setenforce 0
- [root@luci ~]# iptables -F; service iptables save
- [root@node1 ~]# service NetworkManager stop
- [root@node1 ~]# chkconfig NetworkManager off
- [root@node1 ~]# sed -i '/SELINUX=/s/enforcing/permissive/' /etc/sysconfig/selinux
- [root@node1 ~]# setenforce 0
- [root@node1 ~]# iptables -F; service iptables save
- [root@node2 ~]# service NetworkManager stop
- [root@node2 ~]# chkconfig NetworkManager off
- [root@node2 ~]# sed -i '/SELINUX=/s/enforcing/permissive/' /etc/sysconfig/selinux
- [root@node2 ~]# setenforce 0
- [root@node2 ~]# iptables -F; service iptables save
- [root@node3 ~]# service NetworkManager stop
- [root@node3 ~]# chkconfig NetworkManager off
- [root@node3 ~]# sed -i '/SELINUX=/s/enforcing/permissive/' /etc/sysconfig/selinux
- [root@node3 ~]# setenforce 0
- [root@node3 ~]# iptables -F; service iptables save
步骤二:部署iSCSI服务
1)在luci主机上部署iSCSI服务器,将/dev/sdb使用iSCSI服务共享。
提示:服务器IQN名称为: iqn.2015-06.com.example.luci:cluster。
- [root@luci ~]# yum -y install scsi-target-utils //安装软件
- .. ..
- [root@luci ~]# rpm -q scsi-target-utils
- scsi-target-utils-1.0.24-10.el6.x86_64
- [root@luci ~]# vim /etc/tgt/targets.conf
- <target iqn.2015-06.com.example.luci:cluster>
- # List of files to export as LUNs
- backing-store /dev/sdb //定义存储设备
- initiator-address 192.168.4.0/24 //定义ACL
- </target>
- [root@luci ~]# service tgtd start //启动服务
- Starting SCSI target daemon: [ OK ]
- [root@luci ~]# chkconfig tgtd on
2)所有节点服务器挂载该iSCSI共享。
- [root@node1 ~]# yum -y install iscsi-initiator-utils //安装软件
- [root@node1 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.4.4:3260
- [root@node1 ~]# iscsiadm -m node -T \
- >iqn.2015-06.com.example.luci:cluster \
- >-p 192.168.4.4:3260 -l //挂载iSCSI共享
- [root@node1 ~]# iscsiadm -m node -T \
- >iqn.2015-06.com.example.luci:cluster \
- >-p 192.168.4.4:3260 -l
- [root@node2 ~]# yum -y install iscsi-initiator-utils //安装软件
- [root@node2 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.4.4:3260
- [root@node2 ~]# iscsiadm -m node -T \
- >iqn.2015-06.com.example.luci:cluster \
- >-p 192.168.4.4:3260 –l //挂载iSCSI共享
- [root@node2 ~]# iscsiadm -m node -T \
- >iqn.2015-06.com.example.luci:cluster \
- >-p 192.168.4.4:3260 -l
- [root@node3 ~]# yum -y install iscsi-initiator-utils //安装软件
- [root@node3 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.4.4:3260
- [root@node3 ~]# iscsiadm -m node -T \
- >iqn.2015-06.com.example.luci:cluster \
- >-p 192.168.4.4:3260 -l //挂载iSCSI共享
- [root@node3 ~]# iscsiadm -m node -T \
- >iqn.2015-06.com.example.luci:cluster \
- >-p 192.168.4.4:3260 –l
步骤三:安装集群软件
1)在luci.example.com主机上安装luci,并启动服务。
- [root@luci ~]# yum –y install luci
- [root@luci ~]# service luci start;chkconfig luci on
2)在所有的集群节点中安装ricci,并启动服务。
- [root@node1 ~]# yum -y install ricci
- [root@node1 ~]# echo "11111" |passwd --stdin ricci
- [root@node1 ~]# service ricci start;chkconfig ricci on
- [root@node2 ~]# yum -y install ricci
- [root@node2 ~]# echo "11111" |passwd --stdin ricci
- [root@node2 ~]# service ricci start;chkconfig ricci on
- [root@node3 ~]# yum -y install ricci
- [root@node3 ~]# echo "11111" |passwd --stdin ricci
- [root@node3 ~]# service ricci start;chkconfig ricci on
步骤四:配置集群
1)浏览器访问luci,任意主机使用浏览器访问即可。
- [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 方案
沿用练习一的拓扑架构,依次完成如下操作:
- 部署httpd服务
- 创建Fence设备
- 创建故障转移域
- 创建VIP资源
- 创建存储资源
- 创建Apache服务资源
- 创建服务组
2.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:准备存储资源,并在所有节点安装httpd软件
1)在任一集群节点将iSCSI磁盘分区并格式化。
- [root@node1 ~]# parted /dev/sdb mklabel msdos
- [root@node1 ~]# parted /dev/sdb mkpart primary 1 1000
- [root@node1 ~]# partprobe
- [root@node1 ~]# mkfs.ext4 /dev/sdb1
2)安装httpd软件
- [root@node1 ~]# yum –y install httpd
- [root@node2 ~]# yum –y install httpd
- [root@node2 ~]# yum –y install httpd
3)挂载共享存储并生成测试web页面
- [root@node1 ~]# mount /dev/sdb1 /var/www/html
- [root@node1 ~]# echo “test page for rhcs” > /var/www/html/index.html
步骤二:创建Fence设备
1)安装软件包,生成共享秘钥。
- [root@desktop1 ~]# yum -y install \
- >fence-virtd fence-virtd-libvirt fence-virtd-multicast
- [root@desktop1 ~]# mkdir /etc/cluster
- [root@desktop1 ~]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=4k count=1
- [root@desktop1 ~]# systemctl enable fence_virtd
2)拷贝秘钥
- [root@desktop1 ~]# for i in {1..3};do scp /etc/cluster/fence_xvm.key \
- > 192.168.4.$i:/etc/cluster/; done
3)配置Fence
注意:Interface项填写网络接口,Backend module项填写libvirt。
- [root@desktop1 ~]# fence_virtd –c
- [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概述的更多相关文章
- LVS概述
LVS原理概述: lvs是一个开源软件,是Linux virtual server的简写,即linux虚拟服务器,是一个虚拟的服务器集群系统,lvs集群采用ip负载均衡技术和基于内容的请求分发技术.将 ...
- redhat中的RHCS双机配置
1. 主机概述 主机名 主机IP 备注 node1 192.168.1.101 模拟fence设备 node2 192.168.1.102 rhcs双机节点 node3 192.168.1.103 r ...
- 【AR实验室】ARToolKit之概述篇
0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- .Net 大型分布式基础服务架构横向演变概述
一. 业务背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 二. 基础 ...
- [C#] 进阶 - LINQ 标准查询操作概述
LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- Java消息队列--JMS概述
1.什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...
随机推荐
- 【剑指Offer】简单部分每日五题 - Day 1
今天开始更新leetcode上<剑指Offer>的题解,先从简单难度开始.预计按下列顺序更新: 简单难度:每日5题 中等难度:每日3题 困难难度:每日1题 17 - 打印从1到最大的n位数 ...
- 【GTS-Fail】GtsSecurityHostTestCases#testNoExemptionsForSocketsBetweenCoreAndVendorBan
[GTS-Fail]GtsSecurityHostTestCases#testNoExemptionsForSocketsBetweenCoreAndVendorBan [问题描述] Gts-7.0- ...
- Simulink仿真入门到精通(七) Simulink的回调函数
7.1 什么是回调函数 Callback functions(回调函数)是因某种操作而除法对其调用的函数,如按下按钮或双击操作等. 常用的Simulink回调函数可应用在以下场合: 打开Simulin ...
- Drf(DjangoRestFramewok)
第一部分 问题 1.前后端分离? vue.js 后端给前段返回json数据 2.移动端盛行. app 后端给app返回json数据 3.PC端应用? crm项目,前段后端一起写,运行在浏览器上. 一般 ...
- 详解如何快速使用数据可视化BI软件创建医疗运营监控数据中心大屏
灯果数据可视化BI软件是新一代人工智能数据可视化大屏软件,内置丰富的大屏模板,可视化编辑操作,无需任何经验就可以创建属于你自己的大屏.大家可以在他们的官网下载软件. 本文以医疗运营监控数据中心大屏 ...
- H5新特性之语义化标签
一.为什么要增加新的语义化标签 在HTML 5出来之前,我们用div来表示章节,但是这些div都没有实际意义,这样的布局方式使我们的结构不够清晰,于是语义化标签应运而生. 二.何为语义化标签 顾名思义 ...
- TCP IP Socket In C, 2e-chapter 1 Introduction
本章是基础概念,建议补计算机网络基础,这里不全. 目录 1 网络,数据包,协议 2 关于地址(address) 2.1 IP地址格式 2.2 IPv4和IPv6共存 2.3 端口号 2.4 特殊地址 ...
- ADO.NET 的使用(一)
一.ADO.NET概要 ADO.NET 是一组向 .NET Framework 程序员公开数据访问服务的类. ADO.NET 为创建分布式数据共享应用程序提供了一组丰富的组件. 它提供了对关系数据.X ...
- macOS开发:调整NSImage尺寸大小
原文链接 extension NSImage { func resize(_ to: CGSize, isPixels: Bool = false) -> NSImage { var toSiz ...
- 五分钟学Java:一篇文章带你搞懂spring全家桶套餐
原创声明 本文首发于微信公众号[程序员黄小斜] 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 本文思维导图 什么是Spring,为什么你要学习spring? 你第一次接触spring框架是在 ...