系统管理 维护监控 简单生活
gfs
REDHAT CLUSTER SUIT WITH GFS
九 21st
一、redhat cluster suit 介绍
RHCS(REDHAT CLUSTER SUIT)是一款能够提供高性能、高可靠性、负载均衡、高可用性的集群工具集,一个集群通常有两个或两个以上的计算机(称为“节点”或”成员“)共同执行一个任务。其中有四种常见集群:
- 存储集群
存储集群在一个集群中为服务提供一个一致的文件系统映像,允许服务同时去读写一个单一的共享文件系统。存储集群通过将数据放到一个共享文件系统中从而消除了在应用程序间拷贝数据的麻烦,并提供一个单一的备份和故障恢复点。Red Hat Cluster Suite通过Red Hat GFS提供一个存储集群。
- 高可用性集群
高可用性集群通过消除单一故障点和节点故障转移功能(当一个集群节点失败后将服务转移到其他节点上)来提供高可用性。节点故障转移功能对客户端是透明的,当节点失败后客户端并不会看到节点之间的服务转移。Red Hat Cluster Suite通过高可用性服务管理组件来提供一个高可用性集群。
- 负载均衡
负载均衡集群将服务请求调度到集群中的多个节点上。负载均衡是一个低成本、高可用性的集群,因为你可以根据负载情 况灵活的添加和删除节点。在负载均衡集群中当一个节点失败后,调度器会发现这个失败并停止向此节点发送请求。节点的失败对于客户端是透明的。Red Hat Cluster Suite 通过LVS(Linux Virtual Server)来提供负载均衡集群。
- 高性能集群
高性能集群在节点上执行并行计算。高性能集群允许应用程序并行计算从而提高应用程序性能。
二、RHCS主要组件:
- 集群架构
提供一个基本功能使节点作为集群工作在一起:配置文件管理,成员关系管理,锁管理和栅设备。
- 高可用性服务管理
提供节点失败转移服务,当一个节点失败后将服务转移到另一个节点上。
- 集群管理工具
通过配置和管理工具来配置和管理Red Hat集群。
- Linux Virtual Server (LVS)
LVS提供一个基于IP的负载均衡功能,通过LVS可以将客户请求均匀的分配到集群节点上。
三、其它Red Hat集群组件:
- Red Hat GFS (Global File System)
GFS为Red Hat Cluster Suite提供一个集群文件系统,CFS允许多个节点在块级别上共享存储。
- Cluster Logical Volume Manager (CLVM)
提供逻辑卷管理集群存储。
- Global Network Block Device (GNBD)
GFS的一个补充组件用于将存储在块级别导出到以太网上。更参请参考:http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/en-US/RHEL510/Cluster_Suite_Overview/s1-rhcs-intro-CSO.html#fig-intro-cluster-CSO
四、集群管理器
- 布式集群管理器(CMAN/DLM)
CMAN是一个分布式集群管理器(DLM),它运行在每一个集群节点上,CMAN通过监视集群节点提供一个法定节点数(quorum),当集群中有多于一半的节点处于活跃状态时,此时符合法定节点数,集群继续可用,当只有有一半或少于一半的节点处于活跃状态是则已达到不到法定节点数,此时整个集群变得不可用。CMAN通过监控集群中节点来确定各节点的成员关系,当集群中的成员关系发生改变,CMAN会通架构中其它组件来进行相应的调整。
CMAN/DLM Overview

- DLM锁管理
分布式锁管理器,它运行在所有的集群节点上,锁管理是一个公共的基础结构,为集群提供一种共享集群资源的管理机制,GFS通过锁管理器使用锁机制来同步访问文件系统元数据,CLVM通过锁管理器来同步更新数据到LVM卷和卷组。详细参考:http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/en-US/RHEL510/Cluster_Suite_Overview/s2-clumembership-overview-CSO.html
- 数据的完整保证
RHCS 通过 Fence设备从共享存储切断失效节点的I/O以保证数据的完整性。当CMAN确定一个节点失败后,它在集群结构中通告这个失败的节点(组播),fenced进程会将失败的节点隔离,以保证失败节点不破坏共享数据。Fenced运行在每个节点上更多详细的介绍:http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/en-US/RHEL510/Cluster_Suite_Overview/s2-fencing-overview-CSO.html
- Rgmanger/gulm()
五、REDHAT集群配置及工具
集群配置系统(CCS)管理集群配置,并为其他集群结构提供配置信息。CCS运行在每个节点上并确保集群配置文件在每个节点上是最新的。举例,假如管理员在节点A上更新配置文件,CCS负责传播更新到其他节点上。
- 集群配置文件
集群配置文件:(/etc/cluster/cluster.conf) 是一个XML文件,用来描述下面的集群特性:
集群名称:列出集群名称、集群配置文件版本和一个隔离时间,隔离相应时间当一个新节点加入或从集群中隔离时。
集群:列出集群中的每一个节点,指定节点名称,节点ID,法定投票数,和栅模式。
fence设备:定义fence设备。
管理资源:定义创建集群服务需要的资源。管理资源包括失败转移域,资源(如IP)和服务。
更多详细:man cluster.conf
- 配置工具价绍
1、Cronga
是一个集中化的的集群管理器,主要用于管理集群中的节点和集群中的存储。主要特性如下:
1. 通过一个WEB 界面管理集群和存住储
2. 自动化部署集群节点和存储
3. 可以很容易的整合进已存在的集群
4. 合的的验证机制
5. 集中化的集群节点状态及日志管理
6. 细致化的权限控制
更多详细了解请参考:http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/4.8/html/Cluster_Administration/s1-conga-overview-CA.html
2、system-config-cluster
参考:http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/4.8/html/Cluster_Administration/s1-clumgmttools-overview-CA.html
3、命令行管理
- 配置工具的使用
在进行配置之前请阅读:Before Configuring a Red Hat Cluster
1、Cronga
安装及启动:http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/4.8/html/Cluster_Administration/s1-start-luci-ricci-conga-CA.html
2、命令行配置工具
参考以下连接
Starting and Stopping the Cluster Software
Managing High-Availability Services
Backing Up and Restoring the Cluster Database
Disabling the Cluster Software
Diagnosing and Correcting Problems in a Cluster
六、GFS 简要说明
GFS是GOOGLE实现的是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。更深入了解,请参考:http://www.codechina.org/doc/google/gfs-paper/introduction.html
Redhat 的GFS 可以根据对性能或是,可扩展性,或者以经济性多个原则进行不同方案的部署,参考:http://www.redhat.com/docs/manuals/csgfs/admin-guide/s1-ov-perform.html#S2-OV-SUPERIOR
GFS(Global File System)自己以本地文件系统的形式出现。多个Linux机器通过网络共享存储设备,每一台机器都可以将网络共享磁盘看作是本地磁盘,如果某台机器对某个文件执行了些操作,则后来访问此文件的机器就会读到写以后的结果。
GFS 主要组件,集群卷管理,锁管理,集群管理,围栏和恢复,集群配置管理

centos5 install gfs
八 31st
环境说明:
centos5.2+iscsi+gfs
1、安装centos5.2:
最小化安装系统三台
2、初始化三台系统:
1、关闭不必要的服务
turnseroff( )
{
for ser in `chkconfig --list |grep 3:on |awk '{print $1}'`
do
echo $ser
case $ser in
crond | irqbalance | microcode_ctl | network | random | sendmail \
| sshd | syslog | messagebus | haldaemon | readahead_early \
| apmd | readahead_later | readahead | iptables | lvm2-monitor | xinetd | auditd | cpuspeed )
echo "Base services, Skip"
;;
*)
echo "change $ser to off"
chkconfig --level 3 $ser off
service $ser stop
;;
esac
done
}
turnseroff
2、修改yum 源
#change the yum source
\cp -f /etc/yum.repos.d/CentOS-Base.repo ~/
cat </etc/yum.repos.d/CentOS-Base.repo
[lan]
name=LAN
baseurl=ftp://10.20.2.11/centos52
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5EOF
3、添加vi 语法高亮
aliasvi ()
{
sed -i "8 s/^/alias vi='vim'/" /root/.bashrcsource /root/.bashrc
}
aliasvi
4、关闭防火墙
service iptables stop
chkconfig iptables off
3、安装需要的软件包
yum install -y cman gfs-utils kmod-gfs kmod-dlm cluster-snmp iscsi-initiator-utils lvm2-cluster rgmanager
如查有报错,直接导入KEY 参考:
4、在每个节点上持载iscsi共享存储
有关iscis 相关请参考:
service iscsi restart
iscsiadm --mode discovery --type sendtargets --portal 10.20.15.249
service iscsi restart
fdisk -l 会多一个20.3GB 的sdb
5、在其中一个节点上上创建一个名为gfscg的 LVM 卷组
pvcreate -ff /dev/sdb
vgcreate gfsvg /dev/sdb
列出VG大小:
vgdisplay gfsvg |grep "Total PE "
Total PE 4847
创建lv
lvcreate -l 4847 -n gfs gfsvg
5、在其中一个节点上上创建一个GFS卷
1、确认cluster name
cman_tool status |grep "Cluster Name"
Cluster Name: gfs_cluster
2、创建GFS 文件系统
gfs_mkfs -j 5 -p lock_dlm -t gfs_cluster:gfs /dev/gfsvg/gfs
相关参数请参考:
6、配置节点做集群
1、分别在三台机器上添加主机名到ip的映设
echo "10.20.15.151 clustera" >>/etc/hosts
echo "10.20.15.152 clusterb" >>/etc/hosts
echo "10.20.15.153 clusterc" >>/etc/hosts
2、创建集群配置文件,并分别复制到每个节点上
cat <<EOF >/etc/cluster/cluster.conf
<?xml version="1.0"?>
<cluster alias="gfs_cluster" config_version="2" name="gfs_cluster">
<fence_daemon post_fail_delay="0" post_join_delay="3"/>
<clusternodes>
<clusternode name="clustera" nodeid="1" votes="1">
<fence>
<method name="1"/>
</fence>
</clusternode>
<clusternode name="clusterb" nodeid="2" votes="1">
<fence>
<method name="1"/>
</fence>
</clusternode>
<clusternode name="clusterc" nodeid="3" votes="1">
<fence/>
</clusternode>
</clusternodes>
<cman/>
<fencedevices>
<fencedevice agent="fence_manual" name="manual"/>
</fencedevices>
<rm>
<failoverdomains>
<failoverdomain name="failover" ordered="0" restricted="0"/>
</failoverdomains>
<resources>
<clusterfs device="/dev/gfsvg/gfs" force_unmount="0" fsid="32101" fstype="gfs" mountpoint="/opt/pgfsql" name="gfsmount" options="-t gfs"/>
</resources>
</rm>
</cluster>
EOF
7、在每一个节点上启动相关服务
以下命令在每个节点上执行
for ser in iscis gfs gfs2 cman clvmd
do
chkconfig $ser on
done
for ser in gfs gfs2 cman clvmd
do
service $ser restat
done
8、确认集群各节点的状态
1、clustat 如下图:
[root@pgsqla scripts]# clustat
Cluster Status for gfs_cluster @ Wed Sep 2 23:13:20 2009
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
clustera 1 Online, Local
clusterb 2 Online
clusterc 3 Online
[root@pgsqla scripts]#
Online 说明节点正常,反之为offlice ,可以通过cat /var/log/messages 得到相关信息
9、命令行集群管理工具
1、cman_tool
Usage:
cman_tool <join|leave|kill|expected|votes|version|wait|status|nodes|services|debug> [options]
2、ccs_tool
Usage::
ccs_tool [options] <command>
Options:
-h Print this usage and exit.
-V Print version information and exit.
Commands:
help Print this usage and exit.
update <xml file> Tells ccsd to upgrade to new config file.
upgrade <location> Upgrade old CCS format to new xml format.
addnode <node> Add a node
delnode <node> Delete a node
lsnode List nodes
lsfence List fence devices
addfence <fencedev> Add a new fence device
delfence <fencedev> Delete a fence device
create Create a skeleton config file
addnodeids Assign node ID numbers to all nodes
最新评论