设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 查看内容

使用HA-LVM实现高可用存储

2015-3-10 21:39| 发布者: joejoe0332| 查看: 2828| 评论: 0|原作者: theboy, 吴利明|来自: oschina

摘要: 近年来,有一种趋势是数据中心优先选择商用的硬件和软件而非采用专利的解决方案的商品。他们为什么不能这样做呢?这种做法具有非常低的成本并且可以以更有 利的方式来灵活地构建生态系统。唯一的限制是管理员想象的 ...


  /etc/lvm/lvm.conf 也需要被修改。在全局参数 locking_type 的值默认为 1,必须改为 3:

1
2
3
4
5
6
7
8
9
# 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


  找一台集群中的服务器,在指定的共享卷上面创建一个卷组,一个逻辑卷和一个文件系统:

1
2
3
4
5
6
7
8
9
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 文件中添加故障转移的详细配置信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<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响应。


  在所有服务器中,重启cman服务是配置修改生效:

1
sudo /etc/rc.d/init.d/cman restart


  同样,还需要再所有服务器中重启 rgmanager 和 clvmd 服务:

1
2
3
4
5
sudo /etc/rc.d/init.d/rgmanager start
Starting Cluster Service Manager:           [  OK  ]
 
sudo /etc/rc.d/init.d/clvmd start
Starting clvmd:                             [  OK  ]


  如果都没问题,那么你就配置好了一个主/从的集群配置。你可以通过查看服务器对共享卷的访问权限来校验配置是否生效。实验应该可以发现,serv-0001 可以挂在共享卷,但是 serv-0002 不可以。接着就是检验真理的时刻了——那就是测试故障转移。手动对 serv-0001 断电,你可以发现rgmanager 影子,并且 serv-0002 可以访问/挂在共享卷了。



注意:

  为了使所有的相关服务在开机的时候自动启动,用chkconfig命令在合适的运行等级(runlevels)中启动这些服务.


总结

  对应一个理想的配置,fencing相关的配置必须出现在/etc/cluster/cluster.conf文件中。fencing的目的是在有问题的节点对集群造成显而易见的问题之前就对其进行处理。比如,某台服务器发生Kernel panic,或者无法与集群中的其他服务器通信,再或者遇到其他各种灾难性的崩溃等情况下,可以配置IPMI来重启问题服务器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<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的设计初衷是为数据中心提供廉价的容错处理机制。没有人希望服务器当机,话说回来,只有配置得当,当机也不是肯定的。从数据中心到家庭办公,几乎任何场景都可以实施这套方案。


资源链接

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


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部