GlusterFSStoragePool高可用及负载均衡配置v091402.docx
《GlusterFSStoragePool高可用及负载均衡配置v091402.docx》由会员分享,可在线阅读,更多相关《GlusterFSStoragePool高可用及负载均衡配置v091402.docx(17页珍藏版)》请在冰豆网上搜索。
GlusterFSStoragePool高可用及负载均衡配置v091402
GlusterFSStoragePool高可用及负载均衡配置
1.概述
通过为GlusterFS存储池配置CTDB以及RRDNS,实现CIFS、NFS、GlusterNative输出的高可用和负载均衡。
2.GlusterFS安装配置
GlusterFS安装:
略。
GlusterFS卷必须配置为副本模式,确保底层集群文件系统是高可用的。
3.CTDB简介
CTDBisaclusterimplementationoftheTDBdatabaseusedbySambaandotherprojectstostoretemporarydata.IfanapplicationisalreadyusingTDBfortemporarydataitisveryeasytoconvertthatapplicationtobeclusterawareanduseCTDBinstead.
Featuresinclude:
CTDBprovidesaTDBthathasconsistentdataandconsistentlockingacrossallnodesinacluster.
CTDBisveryfast.
Incaseofnodefailures,CTDBwillautomaticallyrecoverandrepairallTDBdatabasesthatitmanages.
CTDBisthecorecomponentthatprovides pCIFS ("parallelCIFS")withSamba3/4.
CTDBprovidesHAfeaturessuchasnodemonitoring,nodefailover,andIPtakeover.
CTDBprovidesareliablemessagingtransporttoallowapplicationslinkedwithCTDBtocommunicatetootherinstancesoftheapplicationrunningondifferentnodesinthecluster.
CTDBhaspluggabletransportbackends.CurrentlyimplementedbackendsareTCPandInfiniband.
CTDBsupportsasystemofapplicationspecificmanagementscripts,allowingapplicationsthatdependonnetworkorfilesystemresourcestobemanagedinahighlyavailablemanneronacluster.
4.CTDB安装配置
4.1.通过源码编译安装
4.2.通过yum安装
yuminstallctdb
4.3.CTDB配置
在GlusterFS存储池中创建一个副本卷conf,用来存放CTDB的lockfile。
停止samba服务,修改/etc/samba/smb.conf配置文件。
创建CTDB的主配置文件ctdb。
在这里指定其他文件的位置及名称。
创建public_addresses文件,在这里指定虚拟IP。
创建nodes文件,在这里指定CTDB各个节点的真实IP。
启动ctdb服务。
并设置为自动启动。
验证ctdb是否已经启动。
至此,CTDB配置完成。
相关配置文件如下所示。
每个CTDB节点均挂载这个存储CTDB锁文件,以及配置文件的GlusterFS卷conf,在/etc/sysconfig/下创建一个软连接ctdb指向/gluster/lock/ctdb/ctdb文件即可。
5.CTDB高可用测试
测试环境:
共三台服务器,其中两台在GlusterFS存储池内,另外一台作为客户端。
Gluster存储池内的两台服务器IP和MAC的对应如下,通过arp命令,用MAC地址作为判断客户端连接了哪台服务器的依据。
inetaddr:
192.168.0.6HWaddr00:
1C:
C4:
A5:
8A:
8C
inetaddr:
192.168.0.5HWaddr00:
18:
FE:
FA:
C2:
EC
测试案例一:
停止当前客户端正在连接的CTDB集群内一台服务器上的cifs服务,测试其能否成功切换到其他服务器。
在客户端通过虚拟IP连接CIFS服务。
通过arp我们确定,虚拟IP192.168.0.220对应的物理服务器是192.168.0.6。
在cifs挂载点下,通过一个脚本不停的给hello文件中追加内容,同时通过tail实时查看文件的内容。
然后停止192.168.0.6服务器上的cifs服务。
此时查看文件内容是否依然被更新。
上层的应用丝毫没有受到影响,打开的文件依然可以正常读写。
也就是说CTDB对上层应用是完全透明的,而且能够保持CIFS的session。
测试案例二:
停止当前客户端正在连接的CTDB集群内一台服务器上的Gluster客户端,测试其能否成功切换到其他服务器。
根据当前arp可看到,当前CIFS客户端通过虚拟IP192.168.0.220挂载的CIFS服务对应的真实IP是192.168.0.5这台服务器。
接下就卸载192.168.0.5这台服务器上的gluster客户端挂载点。
成功卸载后,查看客户端的CIFS是否成功切换到其他服务器。
5.1.关于CTDB虚拟IP和CTDB集群内节点的实IP之间的关系
我们先看下虚拟IP和CTDB节点实IP相关的配置文件内容:
[root@localhost~]#cat/gluster/lock/ctdb/public_addresses
192.168.0.220/24eth0
192.168.0.221/24eth0
192.168.0.222/24eth0
192.168.0.223/24eth0
这是虚拟IP的配置文件,这里我们配置了4个虚拟IP,以及相对应的网卡。
[root@localhost~]#cat/gluster/lock/ctdb/nodes
192.168.0.5
192.168.0.6
这是CTDB节点实IP的配置文件,在CTDB集群内有两个节点。
通过CTDB提供的工具,我们可以清楚的看到,虚拟IP和实IP之间的关系。
4个虚拟ip被平分到了两个节点上了。
见上图。
这是CTDB集群内另一个节点上看到的情况。
见上图。
如果CTDB集群内有两个节点,只配置一个虚拟IP,则这个虚拟IP只在其中一个节点上。
只有该节点出现问题,才会被另一个节点接管。
见上图。
多个客户端连接不同的虚拟IP时,可以对应到CTDB集群内不同的服务器实IP上。
多个客户端连接同一个虚拟IP时,只对应到同一服务器真实IP上。
基于此,我们还需要一个基于IP负载均衡的工具,在不同虚拟IP上轮询。
以达到负载均衡的效果。
这就是RRDNS。
另外,因为CTDB虚拟IP正常时只会对应到一个实IP上,所以虚拟IP数量应该等于或大于实际IP数量,以便所有实IP被轮询上。
6.RRDNS简介
RR-DNS(Round-RobinDomainNameSystem),顾名思义,轮询的DNS服务。
他响应DNS请求不是仅仅返回一个固定的IP,而是从一个IP列表中轮询,返回IP。
具体实现的套件是BIND(BerkeleyInternetNameDomain)。
接下来即安装BIND。
7.RRDNSmaster/slave安装配置
7.1.通过yum安装
yuminstallbind
7.2.通过源码安装
源码下载地址:
ftp:
//ftp.isc.org/isc/bind9/9.8.1/bind-9.8.1.tar.gz
7.3.Master/Slave配置
BIND的主要配置文件为/etc/named.conf。
,各种针对主机的设定值都在这个档案中设定,包括zone的名称,以及对应的文件。
7.3.1.BINDMaster的配置
Master的named.conf配置文件如下:
相关zone的配置文件;
至此,BINDMaster的配置就完成了。
启动named服务:
servicenamedstart
Zone配置文件中关键字说明
$TTL
定义出向外查询的数据可以记录在DNS的cache当中多久,单位:
秒。
@
代表named.conf中定义的对应的zone。
SOA
StartofAuthority开始设定的内容的意思
NS
表示nameserver的意思
A
将DNS域名对应到IPv4地址
AAAA
将DNS域名对应到IPv6地址
.
加上了.表示这个『完整的主机名称,亦即是hostname+domainname』了,如果没有加上.的话,表示该名称仅为『hostname』而已
PTR
这是反解的符号
CNAME
设定主机别名
7.3.2.BINDSlave的配置
Slave的配置跟master配置文件除了named.conf不同,其他都相同,其中自定义的zone的配置文件会自动同步。
这里只需要手动从master拷贝localhost.rev,named.root,name.localhost三个配置文件。
zone.gluster,zone.gluster.rev会自动从master同步过来。
Slave的named.conf配置文件:
启动named服务:
servicenamedstart
8.RRDNS负载均衡测试
通过pinggluster.local来测试RRDNS。
根据其每次返回的IP地址是否相同来判断负载均衡的效果。
从同一客户端多次pinggluster.local,CTDB配置的4个虚拟IP被轮询。
依次从不同客户端pinggluster.local也会得到轮询的效果。
参考资料
●CTDB-http:
//ctdb.samba.org
●TroubleshootingCTDB-http:
//ctdb.samba.org/testing.html
●Round-robinDNS-
●DNSConfigure-http:
//linux-vbird.bluedata.org/linux_server/0350dns.htm#DNS_settings
●BIND-http:
//zh.wikipedia.org/wiki/BIND