主机名 |
IP地址
|
主机用途
|
虚拟IP
|
所需软件
|
Manager
|
192.168.182.128
|
iSCSI-Target/RHCS管理端
|
无 |
scsi-target/luci
|
Agent1
|
192.168.182.131
|
iSCSI-Initiator/web服务 |
192.168.182.182
|
iscsi-initiator/rgmanager(包含cman/ricci)
/lvm2-cluster/gfs2
|
Agent2
|
192.168.182.132
|
iSCSI-Initiator/web服务 |
192.168.182.182
|
iscsi-initiator/rgmanager(包含cman/ricci)/
lvm2-cluster/
gfs2
|
一、基本配置
1.关闭Manager/Agent1/Agent2的iptables和selinux
#/etc/init.d/iptables stop
#vim /etc/selinux/config
把SELINUX=enforcing改成SELINUX=permissive,重启生效。如要立即生效输入#setenforce 0
2.配置Manager/Agent1/Agent2的hosts文件
#vim /etc/hosts
输入以下内容
192.168.182.128 Manager
192.168.182.131 Agent1
192.168.182.132 Agent2
3.配置Manager/Agent1/Agent2的ntp时间同步
4.配置好yum源
5.在agent1和agent2上安装httpd服务
#yum install -y httpd
#/etc/init.d/httpd start
#chkconfig httpd on
--基本配置完毕
二、iSCSI安装配置
1.安装target,在Manager上执行
用fdisk分一个10G的空间,然后partx重读分区
# fdisk /dev/sda
# partx /dev/sda -a
安装iscsi-target
# yum install -y scsi-target-utils
2.配置target,在Manager上执行
先备份一下配置文件
#cp /etc/tgt/targets.conf /etc/tgt/targets.conf.bak
在文件最后添加以下信息
#vim /etc/tgt/targets.conf
<target iqn.2014-01.Manager:ReedStorage>
backing-store /dev/sda5
initiator-address 192.168.182.0/24
incominguser reed password
write-cache off
</target>
启动并设置开机启动
#chkconfig tgtd on ; /etc/init.d/tgtd start
查看iscsi target相关信息
#tgt-admin �Cshow
3.安装initiator,在agent1和agent2上执行
#yum install -y iscsi-initiator-utils
设置开机启动
#chkconfig iscsi on
4.配置initiator,在agent1和agent2上执行
#vim /etc/iscsi/iscsid.conf
#在文件最后加入以下内容:
node.session.auth.username = reed
node.session.auth.password = password
discovery.sendtargets.auth.username = reed
discovery.sendtargets.auth.password = password
5.在initiator发现target盘,在agent1和agent2上执行
#iscsiadm -m dicovery -t sendtargets -p 192.168.182.128
6.显示所有target数据,在agent1和agent2上执行
#iscsiadm -m node
查看iscsi磁盘(成功的话会看到iscsi target分享的磁盘)
#fdisk -l
--iscsi配置完毕。
三、Conga管理工具(luci/ricci)、cman和rgmanager集群工具安装配置
1.安装luci工具,在Manager上执行
#yum install -y luci
#/etc/init.d/luci start
#chkconfig luci on
2.安装rgmanager(包含了ricci/cman),在agent1和agent2上执行
#yum install rgmanager -y 会自动安装ricci、cman等包
#chkconfig ricci on ; /etc/init.d/ricci start
#chkconfig NetworkManager off ; /etc/init.d/NetworkManager stop
#chkconfig cman on ; chkconfig rgmanager on
启动有先后顺序,先启动cman再启动rgmanager,关闭则相反。
#/etc/init.d/cman start ; /etc/init.d/rgmanager start
3.使用luci进行配置集群
3.1新建一个集群
1)先在agent1和agent2上为ricci用户设置一个密码
#echo 123456|passwd --stdin ricci
2)打开luci的web界面,https://ip:8084,用户密码为系统root用户和密码。在启动luci服务会有提示。
新建一个集群,名为clvm_cluster,添加两个节点,一个名为192.168.182.131,另一个名为192.168.182.132。node name和Riccihostname都是192.168.182.131和192.168.182.132,密码为刚才设置的,端口保持默认。因为之前在两个节点上都安装了ricci、cman等包,所以单选use locally installed packages,enable shared storage support选项其实就是指的gfs,我们在后面手动装包来实施,这里不勾选。
3.2设置Failover Domains
点击菜单中的Failover Domains,添加一个热备切换域,名为web,勾选no Failback和Prioritized,勾选192.168.182.131 ,192.168.182.132两个节点。
3.3设置Resources
点击菜单中的Resources,添加一个ip address资源,ip为192.168.182.182,这个ip就是提供服务的虚拟ip,再添加一个script,名为http,脚本路径/etc/init.d/httpd。
3.4设置ServiceGroups
点击菜单中的Services,添加一个服务,名为web_service,选择刚创建的热备切换域web,添加资源,把刚创建的ip资源和脚本资源添加进来,如果服务需要使用的资源具有先后关系,那么需要将前提资源以子资源(add a child resource)的形式添加。
4.测试
在两个节点上针对httpd写一个index.html的页面,agent1上# echo agent1 > /var/www/html/index.html,agent2上# echo agent2> /var/www/html/index.html。访问这个apache服务,可以通过访问到的内容来检测集群提供的服务是由哪个节点完成的。
在两个节点上都监控日志tail -f /var/log/message,启动这个apache服务,查看服务启动时节点的信息,有助于更好的理解rhcs和增加排错经验。如无意外,此时应该可以看到apache服务会在其中一个节点上启动,我的启动在agent1上,在Services菜单可以看到,在任意节点上用指令clustat查看更快更方便。
#clustat -l
5.配置fence设备
!!由于在虚拟机环境下,暂无法测试。
--集群配置完毕
四、CLVM的安装与配置
1.安装CLVM,在agent1和agent2上执行
#yum install -y lvm2-cluster
#chkconfig clvmd on
2.启用CLVM,在agent1和agent2上执行
#lvmconf --enable-cluster
3.查看一下启用的集群LVM,在agent1和agent2上执行
如果不是3,则改为3
#grep "locking_type = 3" /etc/lvm/lvm.conf
4.启动CLVM服务
因为暂没有可用卷组,所以启动时会有提示“Activating VG(s): No volume groups found “,但不影响正常启动。
#/etc/init.d/clvmd start
5.在节点上创建lvm,在agent1或者agent2其中一台执行即可
1)用fdisk -l查看共享的磁盘
#fdisk -l
2)创建逻辑卷lv
#pvcreate /dev/sdb
#vgcreate iscsivg /dev/sdb
#lvcreate -L 5G -n iscsilv01 iscsivg
查看
#pvdisplay
#lvs
--CLVM配置完毕
五、gfs2的安装与配置
1.安装gfs2,在agent1和agent2上执行
#yum install -y gfs2-utils
2.格式化为集群文件系统gfs2
格式化为gfs2,设定锁机制及2份journal,-t分两部分,集群名:设备名,格式化的时间有点长,耐心等待。
#mkfs.gfs2 -j 2 -p lock_dlm -t clvm_cluster:gfs2Storage /dev/iscsivg/iscsilv01
3.挂载并设置开机挂载gfs2,在agent1和agent2上执行
挂载到/var/www/html
#mount -t gfs2 /dev/iscsivg/iscsilv01 /var/www/html
设置开机挂载
#echo "/dev/iscsivg/iscsilv01 /var/www/html gfs2 defaults 0 0">>/etc/fstab
#mount -a
4.测试读写文件到gfs2,在任意一个agent上执行即可
#cd /var/www/html/
#echo "rhcs test">index.html
用浏览器访问http://vip测试
5.在luci的Resources菜单添加一个gfs2资源,name为web_gfs2,mount point为/var/www/html,Device为/dev/iscsivg/iscsilv01,filesystem type为gfs2。打开Services菜单,点击web_service服务,添加一个资源,选择刚创建的web_gfs2。
--gfs2配置完毕
六、查看cluster.conf文件
至此,全部配置完毕,附cluster.conf文件
<?xml version="1.0"?>
<cluster config_version="9" name="clvm_cluster">
<clusternodes>
<clusternode name="192.168.182.131" nodeid="1"/>
<clusternode name="192.168.182.132" nodeid="2"/>
</clusternodes>
<cman expected_votes="1" two_node="1"/>
<rm>
<failoverdomains>
<failoverdomain name="web" nofailback="1" ordered="1">
<failoverdomainnode name="192.168.182.131" priority="1"/>
<failoverdomainnode name="192.168.182.132" priority="2"/>
</failoverdomain>
</failoverdomains>
<resources>
<ip address="192.168.182.182" sleeptime="10"/>
<script file="/etc/init.d/httpd" name="httpd"/>
<clusterfs device="/dev/iscsivg/iscsilv01" fsid="53620" fstype="gfs2" mountpoint="/var/www/html" name="web_gfs2"/>
</resources>
<service domain="web" name="web_service" recovery="relocate">
<ip ref="192.168.182.182"/>
<script ref="httpd"/>
<clusterfs ref="web_gfs2"/>
</service>
</rm>
</cluster>
七、测试
任意把其中一台agent执行shutdown操作,查看web和日志确认RHCS是否正常。由于虚拟机环境无法正常fence,所以暂不测试异常状态。
八、后续
当节点超过两个的时候,比如说四节点,如果1、2节点通信正常,3、4节点通信正常,但是1、2和3、4之间通信不正常,那么1、2形成一个组,3、4形成一个组,互不相让,争夺服务和资源,形成split-brain,这是我们不希望出现的状况,我们怎么去解决这个问题呢?答案就是使用quorum disk仲裁磁盘。
正在测试中。
九、参考资料
http://ixdba.blog.51cto.com/2895551/589079
http://blog.csdn.net/dbvasp/article/details/8629370
http://freeloda.blog.51cto.com/2033581/1279063
本文出自 “[reed@卢伟开~]#rm -rf /” 博客,转载请与作者联系!