环境
- 环境配置:节点服务器两台,管理和存储服务器一台。
节点1:192.168.100.40
节点2:192.168.100.50
管理与存储:192.168.100.30
VIP:192.168.100.100
- 三台服务器都添加hosts记录
127.0.0.1 localhost
192.168.100.30 test0.com
192.168.100.40 test1.com
192.168.100.50 test2.com
GFS
- 配置iSCSI
==管理服务器:== > a.安装target端
yum install scsi-target-utils.x86_64
b.替换配置
cat /etc/tgt/targets.conf |grep -v '#'|tr -s '\\n'
default-driver iscsi
<target iqn.2016-03.test:test0>
backing-store /dev/sdb
</target>
说明:
iqn = iSCSI Qualified Name
iSCSI target的名称规则如下:
iqn.iqn.2016-03.test:test0
iqn.年份-月份.域名反写.设备识别
每个在同一个target上的backing-store 称为逻辑单元号(Logical Unit Number,LUN)c.启动iSCSI target
/etc/init.d/tgtd start
chkconfig tgtd on
netstat -tulnp|grep tgt
d.查看iSCSI target
tgt-admin --show
tgtadm -m target -o show
==两台节点服务器:==
a.安装initiator
yum install iscsi-initiator-utils.x86_64
b.设置开机启动
chkconfig iscsid on
chkconfig iscsi on
c.配置initiator
/etc/iscsi/iscsid.conf #因为在target里面,我们并没有设置访问限制,所以配置文件iscsid.conf 文件并不需要修改。
vi /etc/iscsi/initiatorname.iscsi #分别填写两台initiator的名称
InitiatorName=iqn.2016-03.test1:test1
d.侦测target
#iscsiadm -m discovery -t sendtargets -p 192.168.100.30
192.168.100.30:3260,1 iqn.2016-03.test:test0
说明:
-m discovery //侦测target
-t sendtargets //通过iscsi协议
-p IP:port //指定target的IP和port,不写port的话,默认为3260
e.查看nodes
iscsiadm 侦测到的结果会写入/var/lib/iscsi/nodes/ 中,因此只需启动/etc/init.d/iscsi 就能够在下次开机时,自动连接到正确的target了。
ll -R /var/lib/iscsi/nodes/
侦测信息都写入了/var/lib/iscsi/nodes/iqn.2016-03.test:test0/192.168.100.30,3260,1/default文件中了。
f.连接target
查看目前系统上面所有的target
iscsiadm -m node
g.登录target
iscsiadm -m node -T iqn.2016-03.test:test0 --login
h.查看磁盘情况
fdisk -cul
==其中一台节点服务器:==
a.分区
将磁盘分2个区,/dev/sda1做GFS分区500G,/dev/sda2做表决磁盘10G。
Device Boot Start End Blocks Id System
/dev/sda1 1 65272 524297308+ 83 Linux
/dev/sda2 65273 66578 10490445 83 Linux
配置GFS(两台节点服务器)
# lvmconf --enable-cluster
# service clvmd start
# chkconfig clvmd on
b.创建LVM
pvcreate /dev/sda1
vgcreate lvmvg /dev/sda1
lvcreate -L 60G -n lvmlv lvmvg
c.格式化GFS
mkfs.gfs2 -p lock_dlm -t ttttest:oracle -j 2 /dev/lvmvg/lvmlv
其中:
-p lock_dlm
定义为DLM锁方式,如果不加此参数,当在两个系统中同时挂载此分区时就会像EXT3格式一样,两个系统的信息不能同步。
-t ttttest:oracle
指定DLM锁所在的表名称,ttttest就是RHCS集群的名称,必须与cluster.conf文件中Cluster标签的name值相同,oracle是自定义的名字标签。
-j 2
设定GFS2文件系统最多支持多少个节点同时挂载,这个值可以通gfs2_jadd命令在使用中动态调整。
/dev/lvmvg/lvmlv
指定要格式化的分区设备标识。
所有操作完成后,重启集群所有节点,保证划分的磁盘分区能够被所有节点识别。
d.查看磁盘id
blkid /dev/lvmvg/lvmlv
e.手动挂载
mount -t gfs2 /dev/lvmvg/lvmlv /u01/oradata –v
f.配置表决磁盘 - 使用表决磁盘的必要性 在一个多节点的RHCS集群系统中,一个节点失败后,集群的服务和资源可以自动转移到其它节点上,但是这种转移是有条件的,例如,在一个四节点的集群中,一旦有两个节点发生故障,整个集群系统将会挂起,集群服务也随即停止,而如果配置了存储集群GFS文件系统,那么只要有一个节点发生故障,所有节点挂载的GFS文件系统将hung住。此时共享存储将无法使用,这种情况的出现,对于高可用的集群系统来说是绝对不允许的,解决这种问题就要通过表决磁盘来实现了。 - 表决磁盘运行机制 表决磁盘,即Quorum Disk,在RHCS里简称qdisk,是基于磁盘的Cluster仲裁服务程序,为了解决小规模集群中投票问题,RHCS引入了Quorum机制机制,Quorum表示集群法定的节点数,和Quorum对应的是Quorate,Quorate是一种状态,表示达到法定节点数。在正常状态下,Quorum的值是每个节点投票值再加上 QDisk分区的投票值之和。QDisk是一个小于10MB的共享磁盘分区,Qdiskd进程运行在集群的所有节点上,通过Qdiskd进程,集群节点定期评估自身的健康情况,并且把自身的状态信息写到指定的共享磁盘分区中,同时Qdiskd还可以查看其它节点的状态信息,并传递信息给其它节点。 - RHCS中表决磁盘的概念 和qdisk相关的几个工具有mkdisk、Heuristics。 mkdisk是一个集群仲裁磁盘工具集,可以用来创建一个qdisk共享磁盘也可以查看共享磁盘的状态信息。mkqdisk操作只能创建16个节点的投票空间,因此目前qdisk最多可以支持16个节点的RHCS高可用集群。有时候仅靠检测Qdisk分区来判断节点状态还是不够的,还可以通过应用程序来扩展对节点状态检测的精度,Heuristics就是这么一个扩充选项,它允许通过第三方应用程序来辅助定位节点状态,常用的有ping网关或路由,或者通过脚本程序等,如果试探失败,qdiskd会认为此节点失败,进而试图重启此节点,以使节点进入正常状态。 - 创建一个表决磁盘 在上面章节中,已经划分了多个共享磁盘分区,这里将共享磁盘分区/dev/sdb7作为qdisk分区,下面是创建一个qdisk分区:
mkqdisk -c /dev/sda2 -l myqdisk
mkqdisk -L #查看表决磁盘信息
RHCS
Conga是新的基于网络的集群配置工具。它是web界面管理的,由luci和ricci组成,luci可以安装在一台独立的计算机上,也可安装在节点上,用于配置和管理集群,ricci是一个代理,安装在每个集群节点上,luci通过ricci和集群中的每个节点通信。
GFS是RHCS为集群系统提供的一个存储解决方案,它允许集群的多个节点在块级别上共享 存储,多个节点同时挂载一个文件系统分区,而使文件系统数据不受破坏,单一的ext2或ext3无法做到。
为了实现多个节点对一个文件系统同时进行读写操作,GFS使用锁管理器(DLM)来管理I/O操作:当一个写进程操作一个文件时,此文件被锁定,其它进程无法进行读写操作,操作完成后,RHCS底层机制会把此操作在其它节点上可见。
有GFS就有RHCS,但建立RHCS时,如果不用共享存储,就没有必要用GFS。 4. 管理服务器安装luci
yum -y install luci
service luci start
chkconfig luci on
访问:https://localhost:8084 (系统账号登陆)
- 两台节点服务器安装RHCS
yum -y install cman odcluster ricci gfs2-utils rgmanager lvm2-cluster
service ricci start
service rgmanager start
/etc/init.d/NetworkManager stop
chkconfig NetworkManager off
service cman start
chkconfig ricci on
chkconfig rgmanager on
chkconfig cman on
设置ricci的密码,在Management上添加node 时需要用上
echo "123456" | passwd --stdin ricci
- 登陆lici配置集群。 > https://localhost:8084
- 创建集群,加入节点。
- 添加转移域
FailOver Domains -> Add ,添加转移域
Prioritized:故障转移时选择优先级高
Restricted:服务只运行在指定的节点上
No Failback:故障节点恢复后,服务不用切换回去
- 添加资源
Resource -> Add 1. 虚拟IP 2. NFS存储(自动挂载存储,不需要在/etc/fstab里面开机加载. 3. oracle实例(名字要填SID(实例ID) 不是Service ID (服务ID)) 4. oracle监听 (注意 listener name 要和/u01/product/network/admin/listener.ora里面的一样) - 创建资源组 1. Service Groups -> Add 将Recovery Policy 属性设置为Relocate[转移] 2. Add Resource (按顺序添加,从上往下启动) - Qdisk 资源切换到node1上,按oracle正常步骤安装,node2上,只需安装数据库软件,然后同步ORACLE_BASE目录、pfile、spfile、owapw文件即可,然后再新增各自的listener.ora、tnsnames.ora
clustat 查看当前节点
clusvcadm -r all -m test2.com 切换节点(节点服务器运行。)
/var/log/message 日志
ccs_sync 同步配置
没有Fence设备无法自动切换。