基于开源软件构建高性能集群NAS系统(2)

高可用集群NAS
诸如Glusterfs、Lustre、Ceph等集群文件系统,提供了统一命名空间、高性能、高可用、高扩展的非结构化数据解决方案。出于性能方面考虑,集群文件系统都设计了私有协议的客户端,通常是基于VFS或FUSE接口实现的与POSIX标准兼容的接口,但往往仅提供Linux/Unix系统客户端软件。对于Linux/Unix系统来说,只需要安装集群文件系统客户端内核模块或软件即可;而对于Windows/Mac等系统而言,因为没有客户端软件可用,就没法访问集群文件系统了。另外,一些特殊场合下,用户不希望在Linux/Unix/Windows/Mac系统上安装客户端软件,而是希望通过标准协议访问集群文件系统。因此,我们需要以集群文件系统为底层基础核心,构建使用标准协议访问的存储服务,目前主要就是使用NFS/CIFS标准协议的NAS。传统NAS系统具有单点性能瓶颈、扩展性差、应用规模和高负载支持有限等不足,无法满足大数据应用需求。集群NAS是一种横向扩展(Scale-out)存储架构,它协同多个节点(即通常所称的NAS机头)提供高性能、高可用或高负载均衡的NAS(NFS/CIFS)服务,具有容量和性能线性扩展的优势。

基于开源软件构建高性能集群NAS系统


图3 CTDB基本架构

这里我们基于CTDB实现高可用集群NAS。CTDB是一种轻量级的集群数据库实现,基于它可以实现很多应用集群,目前CTDB支持Samba, NFS, HTTPD, VSFTPD, ISCSI, WINBIND应用,集群共享数据存储支持GPFS,GFS(2),Glusterfs, Luster, OCFS(2)。CTDB本身不是HA解决方案,但与集群文件系统相结合,它可以提供一种简便高效的HA集群解决方案。集群配置两组IP,Private IP用于heartbeat和集群内部通信,Public IP用于提供外部服务访问。Public IP动态在所有集群节点上分配,当有节点发生故障,CTDB将调度其他可用节点接管其原先分配的Public IP,故障节点恢复后,漂移的Public IP会重新被接管。这个过程对客户端是透明的,保证应用不会中断,也就是我们这里所说的高可用HA。

高可用集群NAS的安装配置详细过程如下:
(1) IP配置
    Single  IP: 192.168.1.50  (后面由LVS使用,对外提供单一IP访问)
    Public  IP: 192.168.1.51, 192.168.1.52, 192.168.1.53  (用于外部访问,或提供给LVS进行负载均衡)
    Private IP: 192.168.1.54, 192.168.1.55, 192.168.1.56  (用于内部访问,heartbeat及集群内部通信)
    
(2) 挂载集群文件系统
    这里使用Glusterfs集群文件系统为所有节点提供共享存储空间,并为CTDB提供lock和status等共享存储空间。CTDB卷建议采用gluster replica volume,NAS卷可以根据实际需求选择distribute, stripe, replica及复合卷。如下创建两个卷,在IP: 192.168.1.54上进行:

gluster volume create nas  replica 2 192.168.1.54:/gluster/nas 192.168.1.55:/gluster/nas (replica卷)   gluster volume create ctdb 192.168.1.54:/gluster/ctdb 192.168.1.55:/gluster/ctdb 192.168.1.56:/gluster/ctdb (distribute卷)   gluster volume start  nas   gluster volume start  ctdb  

    
    在三个节点上同时mount以上创建的nas和ctdb卷:

mkdir /gluster/data   mkdir /gluster/lock   mount -t glusterfs 192.168.1.54:/ctdb /gluster/lock  (CTDB使用)   mount -t glusterfs 192.168.1.54:/nas  /gluster/data  (集群NAS使用)  

    
(2) 安装软件

yum install samba      (安装samba服务以及工具包)   yum install nfs-utils  (安装nfs工具包,服务已集成于内核中)   yum install ctdb       (安装CTDB软件包)  

    
(3) 配置Samba
    smb.conf文件默认位于/etc/samba/smb.conf,我们把smb.conf放在CTDB lock卷上,并为所有节点建立符号链接至/etc/samba/smb.conf。
    ln -s /glsuter/lock/smb.conf /etc/samba/smb.conf
    smb.conf配置内容如下:

[global]       workgroup = MYGROUP       server string = Samba Server Version %v       log file = /var/log/samba/log.%m          clustering = yes       idmap backend = tdb2       private dir = /gluster/lock       fileid:mapping = fsid       use mmap = no       nt acl support = yes       ea support = yes          security = user       passdb backend = tdbsam      [public]       comment = CTDB NAS       path = /gluster/data       public = yes       writable = yes      


(4) 配置NFS
    同样将/etc/sysconfig/nfs和/etc/export存放在CTDB lock卷上,并为所有节点建立符号链接。
    ln -s /gluster/lock/nfs /etc/sysconfig/nfs
    ln -s /gluster/lock/export /etc/export
    nfs配置内容如下:

CTDB_MANAGES_NFS=yes   NFS_TICKLE_SHARED_DIRECTORY=/gluster/lock/nfs-tickles   STATD_PORT=595   STATD_OUTGOING_PORT=596   MOUNTD_PORT=597   RQUOTAD_PORT=598   LOCKD_UDPPORT=599   LOCKD_TCPPORT=599   STATD_SHARED_DIRECTORY=/gluster/lock/nfs-state   NFS_HOSTNAME="ctdb"   STATD_HOSTNAME="$NFS_HOSTNAME -P "$STATD_SHARED_DIRECTORY/$PUBLIC_IP" -H /etc/ctdb/statd-callout -p 97"   RPCNFSDARGS="-N 4"  

    
    export配置内容如下:

/gluster/data   *(rw,fsid=1235)  


(5) 配置CTDB
    同样将/etc/sysconfig/ctdb, /etc/ctdb/public_addresses, /etc/ctdb/nodes存放于CTDB lock卷上,并为所有节点建立符号链接。
    ln -s /gluster/lock/ctdb /etc/sysconfig/ctdb
    ln -s /gluster/lock/public_addresses /etc/ctdb/public_addresses
    ln -s /glsuter/lock/nodes /etc/ctdb/nodes
    
    ctdb配置内容如下:

CTDB_RECOVERY_LOCK=/gluster/lock/lockfile   CTDB_PUBLIC_INTERFACE=eth0   CTDB_PUBLIC_ADDRESSES=/etc/ctdb/public_addresses   #CTDB_LVS_PUBLIC_IP=192.168.1.50  (这里启用LVS single IP不成功,后面单独配置LVS进行负载均衡)   CTDB_MANAGES_SAMBA=yes   CTDB_MANAGES_WINBIND=yes   CTDB_MANAGES_NFS=yes   CTDB_NODES=/etc/ctdb/nodes   CTDB_DEBUGLEVEL=ERR  

   
    public_addresses配置内容如下:

192.168.1.51/24 eth0   192.168.1.52/24 eth0   192.168.1.53/24 eth0  

    
    nodes配置内容如下:

192.168.1.54   192.168.1.55   192.168.1.56  

    
(6) 启动服务并查看状态

chkconfig ctdb on   chkconfig smb  off  (CTDB自动管理smb服务)   chkconfig nfs  off  (CTDB自动管理nfs服务)   /etc/init.d/ctdb start   ctdb status   ctdb ip   ctdb ping -n all  

    
(7) 访问测试
    Windows CIFS访问:
 

\\192.168.1.51\public   \\192.168.1.52\public   \\192.168.1.53\public   Linux NFS/CIFS访问:   mount -t nfs 192.168.1.51:/gluster/data /mnt/   mount -t nfs 192.168.1.52:/gluster/data /mnt/   mount -t nfs 192.168.1.53:/gluster/data /mnt/   mount -t cifs //192.168.1.51/public /mnt -o username=xxx    (xxx为使用smbpasswd创建的用户)   mount -t cifs //192.168.1.52/public /mnt -o username=xxx   mount -t cifs //192.168.1.51/public /mnt -o username=xxx  

    可以shutdown节点或者stop节点上的nfs/samba服务,然后使用如下命令测试HA工作是否正常。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/psdys.html