? \是stonith设备的类型。如果是在虚拟机上配置集群,因为virtualbox和vmware workstation其实没有支持的fence.虽然我们配置fence_scsi的时候显示的是start,但是看/var/messages里,fence的时候都是会报错的,显示/dev/mapper/fence不存在。只要stonith资源状态是start,这个错误不影响运行。
?
以上方法在REDHAT7上可以,在CENTOS7不稳定
2.2.2 基于ISCSI的stonith设备的创建
? 首先基于2.4.1.2章创建一个基于ISCSI的共享磁盘。假设在每个节点上运行\
-l\看到的该磁盘为/dev/sdb
? 然后运行 \查看该磁盘id,假设为
wwn-0x6001405189b893893594dffb3a2cb3e9
? 运行下面的命令创建stonith资源
pcs stonith create scsi-shooter fence_scsi
devices=/dev/disk/by-id/wwn-0x6001405189b893893594dffb3a2cb3e9
pcmk_monitor_action=metadata pcmk_reboot_action=off pcmk_host_list=\node2 node3\
2.2.3 基于IPMI接口的stonith设备的创建
pcs stonith create ipmi_node1 fence_ipmilan ipaddr=\login=\ 。。。。。。
pcs stonith create ipmi_node4fence_ipmilan ipaddr=\login=\
pcs constraint location ipmi_node1 avoids node1 pcs constraint location ipmi_node2 avoids node2 pcs constraint location ipmi_node3 avoids node3 pcs constraint location ipmi_node4 avoids node4
说明:
上述命令的ipaddr为每个节点fence设备的IP地址,pcmk_host_list为节点的私有节点名。
2.3 在pacemaker中加入DLM和CLVM资源
pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true;
pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true; pcs constraint order start dlm-clone then clvmd-clone; pcs constraint colocation add clvmd-clone with dlm-clone;
说明:
?
首先创建DLM资源,即锁管理资源。多个节点访问同一个共享磁盘需要加锁机制。参数clone表明该资源是ACTIVE/ACTIVE模式,即每个节点都有该资源的一个clone,他们的地位是平等的(我们的系统中dlm, clvm, gfs是active/active模式,pgsql是master/slave模式, stonith/vip只存在某一个节点上)。 ?
然后创建CLVM资源,即Cluster逻辑卷管理。是LVM的扩展,这种扩展允许cluster中的机器使用LVM来管理共享存储,但是配置之前需要开启lvm支持集群功能。因为我们限制了CLVM的启动要在DLM启动之后,所以如果interleave=false,则本节点的CLVM要受集群中所有节点的DLM的状态的影响。如果interleave=true,则CLVM只受本机的DLM状态影响,这才是我们期望的行为。对于ordered=true,这个ordered和下面constraint 的order不是一个东西,这个是控制CLVM自身clone之间的启动的,和其他resource没有关系,constraint里的order是控制不同resource顺序的。 ? ?
然后配置这两个资源的启动顺序。Order表明这是一个顺序约束,即先启动DLM,DLM启动成功后启动CLVM。
最后配置两个节点在同一台节点运行。Colocation表明这是一个资源捆绑约束。捆绑约束将不同的资源捆绑在一起作为一个逻辑整体,即资源 DLM位于 node1节点,则资源 CLVM也必须位于 node1节点,并且资源 DLM、 CLVM将会同时进行故障切换到相同的节点上。
2.4 在pacemaker中加入共享存储资源
在本节中首先介绍了三种创建共享存储设备的方式,我们可以根据情况任选一种。 设备创建后我们在节点上运行\可以看到该硬盘/dev/sdb。
2.4.1共享存储设备的类型
2.4.1.1 基于磁盘阵列的共享存储
将一个磁盘阵列物理连接到多个节点上,不需要配置。
2.4.1.2 基于ISCSI的网络共享存储资源
iSCSI:Internet 小型计算机系统接口(iSCSI:Internet Small Computer System Interface)。是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议。
下面的例子中,假设系统中有5台机器,node1,node2,node3,node4是集群的节点,node0 (192.168.199.190)是ISCSI的Target,即网络共享盘。所有节点安装CENTOS7/REDHAT7。
? 首先所有机器关闭防火墙保证网络互通。
? 所有机器的/etc/hosts加入IP地址映射
192.168.199.190 node0 192.168.199.191 node1 192.168.199.192 node2 192.168.199.193 node3 192.168.199.194 node4
? node0与其他节点node1,node2,node3,node4配置SSH互信.在每个节点上分别以root
和数据库用户(例如postgres)执行
ssh-keygen -t rsa;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node0; ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1; ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2; ssh-copy-id -i ~/.ssh/id_rsa.pub root@node3; ssh-copy-id -i ~/.ssh/id_rsa.pub root@node4; ssh-copy-id -i ~/.ssh/id_rsa.pub postgres@node0; ssh-copy-id -i ~/.ssh/id_rsa.pub postgres@node1; ssh-copy-id -i ~/.ssh/id_rsa.pub postgres@node2; ssh-copy-id -i ~/.ssh/id_rsa.pub postgres@node3; ssh-copy-id -i ~/.ssh/id_rsa.pub postgres@node4;
? 服务器端:
? 在node0上安装ISCSI:
yum -y install scsi-target-utils
? 编辑/etc/tgt/targets.conf,添加:(/dev/sdb是新添加的用来共享的磁盘,为原生
的未经过格式化的盘)
启动服务,并配置开机自启动:
service tgtd start;chkconfig tgtd on
? 客户端:在node1,node2,node3,node4中执行 ? 安装iscsi-initiator-utils
yum -y install iscsi-initiator-utils
? 编辑/etc/iscsi/initiatorname.iscsi,添加:
InitiatorName=iqn.201802.dev:server.target1
? 配置服务:
chkconfig iscsi on;chkconfig iscsid on service iscsi restart;service iscsid restart
? 连接共享盘:
iscsiadm -m discovery -t sendtargets -p 192.168.199.190:3260 iscsiadm -m node -T iqn.201802.dev:server.target1 -l
2.4.1.3 VirtualBox基于共享文件的共享存储资源
? 首先关闭虚拟机,然后安装共享磁盘。 ? 在第一台虚拟机node1上:
? ?
右键—设置—存储—控制器:SATA--此处选择后面的“+”
然后选择“创建新的虚拟盘(N)”进入下一步,选择VDI文件类型,必须为固定大小磁盘。
?
创建完成后点击“管理-虚拟机制管理V…”或者使用Ctrl+D打开虚拟介质管理器,选择刚创建的磁盘文件,右键—
修改—可共享—OK,如下
? 在其他虚拟机node2,node3,node4上:
右键—设置—存储—控制器:SATA--此处选择后面的“+”.点开后面的“+”后,选择“使用现有的虚拟盘(C)”,然后选择在第一台虚拟机上创建的磁盘文件。
2.4.2Pacemaker中共享存储资源的设置
Node1上执行:fdisk /dev/sdb;mkfs.gfs2 -j 8 -p lock_dlm -t cluster_pgsql:sdb1 /dev/sdb1;
在其他节点上执行:partprobe
在node1上执行:pcs resource create clusterfs Filesystem device=\directory=\fstype=\\op monitor interval=10s on-fail=fence clone interleave=true;
pcs constraint order start clvmd-clone then clusterfs-clone
说明:
?
首先在一个节点上将共享磁盘分区并格式化成gfs2文件系统。 ?
-j参数限定了该磁盘最多可以在多少个节点上mount此磁盘。例如我们设置-j 2,则在node1,node2上执行mount成功,在node3上再执行时会报错:disk failed: Too many users。如果要在当前的磁盘上增加一个journal,执行gfs2_jadd -j 1 /dev/sdb1 ? ? ?
-p 参数是锁协议。 如果是共享存储使用lock_dlm。如果是只有一个节点把他作为本地文件系统,则使用lock_nolock。
在其他节点上执行partprobe将磁盘分区表变化信息通知内核,请求操作系统重新加载分区表。 然后创建共享磁盘资源,例如起名为clusterfs。device是磁盘名,directory是磁盘要挂载的目录名,clusterfs启动时会自动执行\。因为目录要放置数据库的共享数据,所以要设置数据库用户(例如postgres)对该目录有读写权限。
? 最后设定资源的启动顺序,clusterfs资源必须在CLVM资源启动之后才启动。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于pacemaker的共享存储集群配置(2)在线全文阅读。
相关推荐: