Linux集群HA略谈.docx
《Linux集群HA略谈.docx》由会员分享,可在线阅读,更多相关《Linux集群HA略谈.docx(19页珍藏版)》请在冰点文库上搜索。
![Linux集群HA略谈.docx](https://file1.bingdoc.com/fileroot1/2023-5/23/cbb719bc-b0b0-437c-93df-0284748d44b3/cbb719bc-b0b0-437c-93df-0284748d44b31.gif)
Linux集群HA略谈
Linux集群--HA略谈
版权声明:
原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。
否则将追究法律责任。
版权声明:
本文遵循“署名非商业性使用相同方式共享2.5中国大陆”协议
您可以自由复制、发行、展览、表演、放映、广播或通过信息网络传播本作品
您可以根据本作品演义自己的作品
您必须按照作者或者许可人指定的方式对作品进行署名。
您不得将本作品用于商业目的。
如果您改变、转换本作品或者以本作品为基础进行创作,您只能采用与本协议相同的许
可协议发布基于本作品的演绎作品。
对任何再使用或者发行,您都必须向他人清楚地展示本作品使用的许可协议条款。
如果得到著作权人的许可,您可以不受任何这些条件的限制。
asram
通过特殊的软件将若干服务器连接在一起并提供故障切换功能的实体我们称之为高可用集群。
可用性是指系统的uptime,在7x24x365的工作环境中,99%的可用性指在一年中可以有87小时36分钟的DOWN机时间,通常在关键服务中这种一天多的故障时间是无法接受的,所以提出了前面提到的错误恢复概念,以满足99.999%的高可用性需求。
这里我们先说一下几个概念:
1.服务(Service),是HA集群中提供的资源,包括FloatIP,共享的存储,apache等等。
2.成员服务器(MemberServer)也叫节点(Node),是HA中实际运行服务提供资源的服务器。
3.失效域(FailoverDomain),是HA中提供资源的服务器的集合,当内部某个成员出现故障时,可以将服务切换到其他正常的成员服务器上。
在HA中一个失效域一般包含2台成员服务器(未应用虚拟技术)。
4.心跳(HeartBeat)是HA中监控成员服务器状态的方法,一般心跳是通过网线和串口线来传输的。
5.单一故障点(SinglePointOfFailuer,SPOF)是指一个系统的这样的一个部件,当它失效或者停止运行,将导致整个系统不能工作。
在HA中通常使用双电源,多网卡,双交换机等来避免SPOF。
6.仲裁(Quorum)是HA中为了准确的判断服务器及其提供的服务是否正常而采用的在共享磁盘中保存成员服务器信息的方法。
共享的状态信息包括群集是否活跃。
服务状态信息包括服务是否在运行以及哪个成员正在运行该服务。
每个成员都检查这些信息来保证其它成员处于最新状态。
在一个只有两个成员的群集中,每个成员都定期把一个时间戳和群集状态信息写入位于共享磁盘贮存区的两个共享群集分区上。
要保证正确的群集操作,如果某成员无法在启动时写入主共享群集分区和屏蔽共享群集分区,它将不会被允许加入群集。
此外,如果某群集成员不更新其时间戳,或者到系统的"heartbeats"(心跳)失败了,该成员就会从群集中删除。
7.Fence设备,Fence设备的作用时在一个节点出现问题时,另一个节点通过fence设备把出现问题的节点重新启动,这样做到了非人工的干预和防止出现问题的节点访问共享存储,造成文件系统的冲突,关于Fence设备,有外置的比如APC的电源管理器.很多服务器都是内置的,只不过不同厂家的叫法不同而已。
比如HP的称为iLo,IBM的称为BMC,Dell的称为DRAC。
下面我们以RedHatClusterSuite为例来简要说一下HA的搭建。
RedHatClusterSuite简称RHCS,RHCS目前的版本有v3,v4和v5,各版本之间不能通用。
RedHatEnterpriseLinux3.0和4.0中对应的的RHCSv3/v4支持的最大节点数为16,RedHatEnterpriseLinux5.0对应的RHCSv5支持的最大节点数为128。
RedHat高可用集群组成:
1.ClusterConfigurationSystem(CCS):
集群配置系统,以管理cluster.conf档案
2.ClusterManager(CMAN):
集群管理器
3.DistributedLockManager(DLM):
分布式锁管理器
4.Fence:
输入/输出系统围栏系统(栅设备)
5.ResourceGroupManage(rgmanager):
资源组管理器,用来监督、启动和停止应用、服务和资源
6.QuorumDisk:
仲裁磁盘
7.Conga:
RHCM的Web控制套件。
包括luci和ricci
8.system-configure-cluster:
图形化工具来管理集群中的多个机器
下图为一HA集群环境:
从防火墙到服务器网卡都是HA模式。
这里交换机我是以Cisco为例的,开启HSRP。
环境描述:
2台服务器为IBMBladeHS21(2*2.5G以上4核处理器,8G内存,2*146G硬盘,集成冗余双口网卡 )
Fence设备:
AdvancedManagementModule(AMM)此次利用IBM提供的免费午餐来作为Fence设备(貌似给过钱了=.=!
)。
IP是192.168.110.47,用户名是USERID,密码是PASSW0RD
OS:
RedHatEnterpriseLinuxAdvanceServer4update6
准备工作:
1.配置bonding:
∙新建/etc/sysconfig/network-config/ifcfg-bond0,内容如下:
DEVICE=bond0
BOOTPROTO=static
BROADCAST=192.168.100.255
IPADDR=192.168.100.21
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
∙编辑要绑定的真实网卡eth0
#vi/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes
∙编辑要绑定的真实网卡eth1
#vi/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes
∙配置绑定模式:
编辑/etc/modules.conf文件,加入如下一行内容以使系统在启动时加载bonding模块,对外虚拟网络接口设备为bond0加入下列两行
#vi/etc/modules.conf
aliasbond0bonding
optionsbond0miimon=100mode=1primary=eth0
说明:
miimon是用来进行链路监测的。
比如:
miimon=100,那么系统每100ms监测一次路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,共有0、1、2、3四种模式,常用的为0,1两种:
mode=0表示loadbalancing(round-robin)为负载均衡方式,两块网卡都工作。
mode=1表示fault-tolerance(active-backup)提供冗余功能,工作方式是主备的工作方式,默认情况下只有一块网卡工作,另一块做备份,primary指定启动后active的网卡。
∙修改默认路由
由环境描述可知192.168.100.0网段是跑业务的,所以我们需要指定默认路由
#more/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=am1
GATEWAY=192.168.100.2
∙重新启动网络服务应用刚才的配置
#/etc/init.d/networkrestart
Bringingupinterfacebond0OK
Bringingupinterfaceeth0OK
Bringingupinterfaceeth1OK
#cat/proc/net/bonding/bond0
EthernetChannelBondingDriver:
v2.6.3-rh(June8,2005)
BondingMode:
fault-tolerance(active-backup)
PrimarySlave:
None
CurrentlyActiveSlave:
eth0
MIIStatus:
up
MIIPollingInterval(ms):
100
UpDelay(ms):
0
DownDelay(ms):
0
SlaveInterface:
eth0
MIIStatus:
up
LinkFailureCount:
1
PermanentHWaddr:
xx:
xx:
xx:
xx:
xx:
xx
SlaveInterface:
eth1
MIIStatus:
up
LinkFailureCount:
1
PermanentHWaddr:
xx:
xx:
xx:
xx:
xx:
xx
∙bond1的配置同上,am2服务器配置同am1。
2.修改/etc/hosts文件,添加节点的主机名和IP地址。
在两台刀片机上该文件必须一致。
#vi/etc/hosts
127.0.0.1localhost.localdomainlocalhost
192.168.110.21amcluster1
192.168.100.21am1
192.168.110.22amcluster2
192.168.100.22am2
3.安装RHCS套件
#mount–olooprhel-4-u6-rhcs-i386-disc1.iso/mnt
#cd/mnt
#./autorun
弹出安装cluster软件对话框,选择需要安装的软件,所有有关Xen、large、huge、luci、ricci字样的软件包都不选择,点下一步,如果没有错误信息,则安装成功。
如果多选了一些软件包的话,
可能需要插入RedHat安装盘。
注意:
必须关掉RedHat的Selinux和Iptables,当然你要是知道cluster软件的端口在防火墙上打开也是可以的^_^。
4.停掉两台机器上cluster的所有服务
#/etc/init.d/rgmanagerstop
#/etc/init.d/fencedstop
#/etc/init.d/cmanstop
#/etc/init.d/ccsdstop
修改/usr/share/system-config-cluster/FaildomController.py文件,第213行少一个“=”,该问题为cluser自身bug。
5.编写集群启动和关闭脚本:
#more/root/cluster.sh
#!
/bin/sh
start(){
/etc/init.d/ccsdstart
/etc/init.d/cmanstart
/etc/init.d/fencedstart
/etc/init.d/rgmanagerstart
}
stop(){
/etc/init.d/rgmanagerstop
/etc/init.d/fencedstop
/etc/init.d/cmanstop
/etc/init.d/ccsdstop
}
status(){
/etc/init.d/rgmanagerstatus
/etc/init.d/fencedstatus
/etc/init.d/cmanstatus
/etc/init.d/ccsdstatus
}
case"$1"in
start)
start$1
;;
stop)
stop$1
exit0
;;
restart|reload)
stop$1
start$1
RETVAL=$?
;;
status)
status
;;
*)
echo$"Usage:
$0{start|stop|restart|status}"
exit1
esac
修改权限
#chmod700/root/cluster.sh
开始配置Cluster:
(使用的是RHCSV5版本的system-config-cluster工具)
1.在Xwindow下运行
#system-config-cluser
打开图形化配置工具:
2.选择CreateNewConfiguration按钮,然后输入文件名点和多播地址,然后点击“确定”。
再选择左边的Cluster,并选择右下"EditClusterProperties"调出"clusterProperies"配置Cluster的名称和相关属性。
"PostJoinDelay"栅进程接收新节点的加入请求后等待节点确认加入的延迟秒数,默认值为3,典型的设置为20至30,这个根据你的网路和集群的实际情况而定。
"PostFailDelay"栅进程发现节点失效后将节点踢出错误恢复域的等待延迟时间,默认值为0代表立即踢出不延时,这个值要按你集群网络的实际情况而定。
3.选中ClusterNodes,这里就是加入成员节点的,点击AddaClusterNode,输入amcluster1点OK,如下图,NodeName需要和/etc/hosts文件中配置的机器名相同
同理加入amcluster2。
4.选中FenceDevices,点击AddaFenceDevice,如下图,Fence设备需要根据实际情况进行选择配置,这次安装中IBM刀片服务器使用IBMBladeCenter管理,修改后的IP是192.168.110.47,用户名是USERID,密码是PASSW0RD,点OK。
5.选中刚添加的节点amcluster1,点ManageFencingForThisNode,弹出对话框,点AddaNewFenceLevel,再选中左侧的Fence-Level-1,点AddaNewFencetothisLevel,弹出下面对话框,输入刀片所在的槽位,点OK
同样方式配置amcluster2的fence设备。
6.创建失效域,添加对应节点,如图,选中FailoverDomains,点击右下角的CreateaFailoverDomain。
在弹出的对话框中输入失效域的名称,这里我们输入AMHA保存后。
7.将失效域成员节点添加进去
右边的两个打勾选向分别是"RestrictFailoverDomainsmembers"以及"PriotitzedList"。
如果妳只有两台,打勾第一项“RestrictFailoverDomainsmembers”就可以了,这项是只允许这两台做轮替。
另外一项"PriotitzedList"则是在你有两台以上的服务器,需要分别设定轮替的优先级时需要的。
当你打钩"PriotitzedList"后可以使用"AdjustPriority"调整多节点的替换优先级
8.创建资源组
选中Resources,点击右下角的CreateaResources,这里选择CreateaResource,然后选择IPAddress,填写FloatIP进去。
然后将tomcat的启动脚本添加进去,如下图所示:
9.创建服务
选中Service,点击右下角的CreateaService,在弹出的对话框中创建Service,如下图
点击OK后,做如下配置
注意:
1.红色圈出的下拉框要选择我们刚才创建的失效域名称AMHA
2.蓝色圈出的部分,若选择Restart,则服务发生异常时,cluster尝试把该服务重启;若选择Relocate,则服务发生异常时,cluster直接尝试切换服务至另一个节点上。
配置完这两步,点击左下角的
弹出如下对话框
依次增加要切换的服务即可。
在这里需要提醒各位最好将服务脚本放置在IP下面,只有网卡起来了才
能服务,逻辑上才正确。
操作流程:
选择Createanewresourceforthisservice然后选择IPAddress,这样地址资源就加载好了,选中刚建立的地址,再在下面选择AttachanewPrivateResourcetotheSelection,这里选择Script并添加我们需要服务的脚本。
10.保存配置并同步到备机
最终的cluster.conf文件内容应该如下结构:
xmlversion="1.0"?
>
可以通过
#scp/etc/cluster/cluster.confroot@amcluster2:
/etc/cluster
也可以通过systemconfigcluster图形集群配置工具中可以简单的点一下”Sendto”按钮来传。
也可以通过RHCS提供的工具:
1.#ccs_toolupdate/etc/cluster/cluster.conf,告知ccs升级配置文件版本。
2.#cman_toolstatus|grep“Configversion”,首先查出你cluster.conf文件的版本。
观察返回的东东是否和你的新版本一样,否的话就需要通过下面的命令来更新。
#cman_toolversion-rnew_version_number
3