最近几年来,有一种趋向是数据中间优先选择商用的硬件和软件而非采取专利的处理计划的商品。他们为何不克不及如许做呢?这类做法具有十分低的本钱而且可以以更有益的方法来灵敏地构建生态系统。独一的限制是***想象的空间有多大。但是,一个问题要问:“与专利的和更昂贵的处理计划比拟较,如许的定制处理计划表示怎么呢?”
开放源码项目曾经开展成熟到了具有足够的竞争力,并供给类似的功用丰厚的处理计划,包含卷治理,数据快照,反复数据删除等。固然常常被无视的,长久支撑的观点是高可用性。
其它翻译版本 (1) 加载中高可用性的设法很容易:消弭任何单点毛病。这包管了假如一个Server节点或一个底层存储途径中止任务了(方案或非方案的),还仍然可以供给数据恳求办事。如今存储安排的处理计划都是多层构造的,而且是可认为高可用性实行设置装备摆设的,这就是为何本文严厉存眷HA-LVM。
高可用性的逻辑卷治理器(HA-LVM)曾经集成了LVM的套件。它供给同享卷一个毛病转移的设置装备摆设,也就是说假如集群中的一台Server呈现毛病或实行保护,同享存储设置装备摆设将毛病转移到辅佐Server上,一切I / O恳求将恢复,不连续的。HA-LVM设置装备摆设是一个主/从设置装备摆设。这意味着在任何一个工夫只要一个Server拜访同享存储。在很多状况下,这是一种幻想的办法,由于一些进步前辈的LVM的功用,如快照和反复数据删除,在主/从情况下是不支撑的(当多个Server拜访同享存储)。
CLVM(LVM集群的守护过程)是HA-LVM一个十分主要的组件。当启动HA-LVM后,CLVM守护过程会避免有多台机械同时对同享存储做修 改,不然对LVM的元数据和逻辑卷会形成毁坏。虽然在采取主从设置装备摆设时,如许的问题其实不需求太多担忧。要做到这一点,守护过程得依靠于散布锁治理器 (DLM). DLM的目标也是协助CLVM拜访磁盘。
下面会举一个2台Server的集群拜访一个内部存储的例子(图一)。 这个内部存储可所以采取磁盘阵列情势的(RAID-enabled) 或许磁盘簇(JBOD)方式的磁盘驱动器,可所以经过光纤信道(Fibre Channel),串行衔接(SAS),iSCSI或许其他的存储区域收集及其协定(SAN)接入到Server的。这个设置装备摆设是与协定有关的,只需求集群中的Server能拜访到统一同享数据块装备。
图一.举例两台Server拜访统一个同享存储的设置装备摆设
MD RAID还不支撑集群,一切也就不克不及兼容CLVM.
CLVM 守护过程会将LVM元数据的更新分发到全部集群中,条件是集群中的每一个节点都必需运转守护过程。
磁盘簇(就是一堆磁盘)是一种运用多个磁盘驱动器的架构,可是不支撑具有冗余才能的设置装备摆设。
简直一切的Linux刊行套件都供给需要的Tools包。可是,Tools包的名字可能各有差别。你需求装置lvm2-clumster(在部分刊行套件中,可能定名为clvm),Corosync集群引擎,红帽集群治理器(cman),资本组治理过程(rgmanager),另有一切其他运转在Server上的自力的Tools。虽然红帽集群治理器的描绘中就包括了“红帽”的刊行套件的名字,可是其他与红帽有关的大大多数Linux的刊行套件还在会把cman列在他们的资本库中。
当集群中一切的Server都装置好适宜的集群Tools包后,必需修正集群设置装备摆设文件来启动集群。创立文件/etc/cluster/cluster.conf,以下编辑内容就能够了:
<cluster name="lvm-cluster" config_version="1"> <cman two_node="1" expected_votes="1" /> <clusternodes> <clusternode name="serv-0001" nodeid="1"> <fence> </fence> </clusternode> <clusternode name="serv-0002" nodeid="2"> <fence> </fence> </clusternode> </clusternodes> <logging debug="on"> </logging> <dlm protocol="tcp" timewarn="500"> </dlm> <fencedevices> </fencedevices> <rm> </rm> </cluster>
夸大一下clusternode的名字是主机名(按需修正),并且务必包管一切集群中的Server上的cluster.conf文件是一致的。
启动红帽集群治理器(cman):
$ sudo /etc/rc.d/init.d/cman start Starting cluster: Checking if cluster has been disabled at boot... [ OK ] Checking Network Manager... [ OK ] Global setup... [ OK ] Loading kernel modules... [ OK ] Mounting configfs... [ OK ] Starting cman... [ OK ] Waiting for quorum... [ OK ] Starting fenced... [ OK ] Starting dlm_controld... [ OK ] Tuning DLM kernel config... [ OK ] Starting gfs_controld... [ OK ] Unfencing self... [ OK ] Joining fence domain... [ OK ]
假如集群中的某个节目没有激活,它的形态显示为离线:
$ sudo clustat Cluster Status for lvm-cluster @ Sun Aug 3 11:31:51 2014 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ serv-0001 1 Online, Local serv-0002 2 Offline
假如一切Server都设置装备摆设好了,cman办事也启动了,一切节点显示形态为在线:
$ sudo clustat Cluster Status for lvm-cluster @ Sun Aug 3 11:36:43 2014 Member Status: Quorate Member Name ID Status ------ ---- ---- ------ serv-0001 1 Online serv-0002 2 Online, Local
如今你就有一个集群的任务情况了。下一步就是启动CLVM的高可用形式。以后场景中,你只要2台Server同享的存储中的一个卷,这2台Server都可以监督和拜访/dev/sdb中的数据。
/etc/lvm/lvm.conf 也需求被修正。在全局参数 locking_type 的值默许为 1,必需改成 3:
# Type of locking to use. Defaults to local file-based # locking (1). # Turn locking off by setting to 0 (dangerous: risks metadata # corruption if LVM2 commands get run concurrently). # Type 2 uses the external shared library locking_library. # Type 3 uses built-in clustered locking. # Type 4 uses read-only locking which forbids any operations # that might change metadata. locking_type = 3
找一台集群中的Server,在指定的同享卷上面创立一个卷组,一个逻辑卷和一个文件系统:
$ sudo pvcreate /dev/sdb $ sudo vgcreate -cy shared_vg /dev/sdb $ sudo lvcreate -L 50G -n ha_lv shared_vg $ sudo mkfs.ext4 /dev/shared_vg/ha_lv $ sudo lvchange -an shared_vg/ha_lv
上例中耗费卷组中的50GB的来创立逻辑卷,然后用其创立4个拓展的文件文件系统。vgcreate (创立卷组号令)的 -cy 选项 用于启动,并在集群中锁定卷组。lvchange (逻辑卷修正号令)的 -an 选项用来停用逻辑组。可是你必需依靠CLVM和资本治理器的过程,按上面创立的/etc/cluster/cluster.conf的设置装备摆设中的毛病转移的战略来激活他们。一旦逻辑卷被激活,你就能够从/dev/shared_vg/ha_lv拜访同享的卷了。
在 cluster.conf 文件中添加毛病转移的具体设置装备摆设信息:
<rm> <failoverdomains> <failoverdomain name="FD" ordered="1" restricted="0"> <failoverdomainnode name="serv-0001" priority="1"/> <failoverdomainnode name="serv-0002" priority="2"/> </failoverdomain> </failoverdomains> <resources> <lvm name="lvm" vg_name="shared_vg" lv_name="ha-lv"/> <fs name="FS" device="/dev/shared_vg/ha-lv" ?force_fsck="0" force_unmount="1" fsid="64050" ?fstype="ext4" mountpoint="/mnt" options="" ?self_fence="0"/> </resources> <service autostart="1" domain="FD" name="serv" ?recovery="relocate"> <lvm ref="lvm"/> <fs ref="FS"/> </service> </rm>
"rm"中的内容会感化到资本治理器上(rgmanager)。这部分的设置装备摆设告诉集群治理器,serv-0001优先独有拜访同享卷。数据会挂载在/mnt 这个绝对目次下面。 假如serv-0001由于某些缘由当机了,资本治理器就会做毛病转移处置,使serv-0002独有拜访同享卷,数据会挂载在serv-0002的/mnt的这个目次下。一切发送到serv-0001的处于等候的I/O恳求会由serv-0002呼应。
在一切Server中,重启cman办事是设置装备摆设修正生效:
$ sudo /etc/rc.d/init.d/cman restart
异样,还需求再一切Server中重启 rgmanager 和 clvmd 办事:
$ sudo /etc/rc.d/init.d/rgmanager start Starting Cluster Service Manager: [ OK ] $ sudo /etc/rc.d/init.d/clvmd start Starting clvmd: [ OK ]
假如都没问题,那末你就设置装备摆设好了一个主/从的集群设置装备摆设。你可以经过检查Server对同享卷的拜访权限来校验设置装备摆设能否生效。试验应当可以发明,serv-0001 可以挂在同享卷,可是 serv-0002 不成以。接着就是查验真谛的时辰了——那就是测试毛病转移。手动对 serv-0001 断电,你可以发明rgmanager 影子,而且 serv-0002 可以拜访/挂在同享卷了。
为了使一切的相干办事在开机的时分主动启动,用chkconfig号令在适宜的运转品级(runlevels)中启动这些办事.
对应一个幻想的设置装备摆设,fencing相干的设置装备摆设必需呈现在/etc/cluster/cluster.conf文件中。fencing的目标是在有问题的节点对集群形成不言而喻的问题之前就对其实行处置。比方,某台Server发作Kernel panic,或许没法与集群中的其他Server通讯,再或许碰到其他各类灾害性的解体等状况下,可以设置装备摆设IPMI来重启问题Server:
<clusternode name="serv-0001" nodeid="1"> <fence> <method name="1"> <device name="ipmirecover1"/> </method> </fence> </clusternode> <clusternode name="serv-0002" nodeid="2"> <fence> <method name="1"> <device name="ipmirecover2"/> </method> </fence> </clusternode> [ ... ] <fencedevices> <fencedevice agent="fence_ipmilan" ipaddr="192.168.1.50" ?login="ADMIN" passwd="ADMIN" name="ipmirecover1"/> <fencedevice agent="fence_ipmilan" ipaddr="192.168.10" ?login="ADMIN" passwd="ADMIN" name="ipmirecover2"/> </fencedevices>
HA-LVM的设计初志是为数据中间供给便宜的容错处置机制。没有人盼望Server当机,话说回来,只要设置装备摆设妥当,当机也不是一定的。从数据中间抵家庭办公,简直任何场景都可以施行这套计划。
clvmd(8): Linux man page
Appendix F. High Availability LVM (HA-LVM): https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Cluster_Administration/ap-ha-halvm-CA.html
本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协定,假如我们的任务有进犯到您的权益,请实时联络我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务