
一、导言
高可用集群是指旨在减少服务中断时间(如服务器宕机导致的服务中断)的服务器集群技术。简单来说,集群就是一组计算机,它们作为一个整体为用户提供一组网络资源。这些单独的计算机系统是集群的节点。
高可用性集群的出现是为了减少计算机硬件和软件的不可靠性造成的损失。可以保障用户业务程序提供的不间断服务,将软件/硬件/人为故障对业务的影响降到最低。如果一个节点出现故障,其备用节点将在几秒钟内接管其职责。所以对于用户来说,集群永远不会宕机。高可用性集群软件的主要功能是实现故障检查和业务切换的自动化。
高可用性集群框架图:
架构总体描述:
随着互联网技术的飞速发展,许多大、中、小公司已经离不开互联网办公及其服务。比如淘宝、美团等网站的宕机是致命的,很多网站的可用性越来越高,这就意味着运维人员需要从硬件和软件两方面保证降低服务器的平均无故障时间,提高其可用性。Corosync是集群管理套件的一部分。在传递信息时,它可以通过简单的配置来定义信息传递的方式和协议,从而实现资源之间的高可用性。目前corosync的功能和特性已经非常完善,所以独立后通常会结合corosync使用pacmaker。corosync没有通用的资源管理器,所以pacemaker是作为corosync的插件使用的,所以你只需要在corosync的配置文件中启动pacemaker插件即可;但是真正启动corosync并配置它需要命令行界面来调用。如果pcs没有配置,那么在这里我们只能使用crm工具来管理它的资源。
架构详图:
Corosync集群的常用组合方式和配置接口:
心跳v1+有一个源
heartbeatv2+crm
心跳v3+起搏器+crmsh(Corosyncv1版本没有投票系统,但corosyncv2有投票系统。当系统有网络分区和裂脑时,所有的资源都会转移到其他可用的主机上)
corosyncv1+起搏器corosyncv2+起搏器
cman+rgmanagercorosyncv1+cman+起搏器
CRM:群集资源管理
资源类型:
原语:基础资源,主资源,只能运行一个节点。
组:集合了形成高可用性服务所需的所有资源的组。
克隆:克隆,同一资源部分的多个副本可以在多个节点上运行。
多状态(主/从):一种多状态类型,是克隆资源的一种特殊表达。副本之间可以存在主从关系。
RA:资源代理
资源代理类别:
LSB:位于/etc/rc.d/init.d/*中,支持启动、停止、重启、重载、状态、强制重载
注意:使用LSB资源类型的不能自动启动和运行。
OCF(OpenClusterFramework):/usr/lib/ocf/resource.d/provider/,类似于LSB脚本,但是只支持启动、停止、状态、监控、元数据
Stonith:调用STONITH设备的函数,systemd:uniteifle,/usr/lib/systemd/system/
注意:必须设置enable,设置为开机时自动启动。
资源约束模式:
位置约束:定义资源对节点的倾向
排序:定义资源是否可以在同一个节点上运行的趋势
顺序:多个资源起始顺序的依赖关系
高可用性集群的常见工作模式:
A/P:两个节点,主动/被动,以主动-备用模式工作。
答:两个节点,主动/主动,在主-主模式下工作。
N-M:N>;M,N个节点,M个服务,假设每个节点运行一个服务,活动节点数为N,备用节点数为N-M。
当集群是裂脑时,需要资源隔离,有两个隔离级别:
STONITH:节点级别的隔离,通过断开节点的电源或重启节点。
冯:资源层面的隔离类似于把隔离信号隔离到交换机,让数据无法通过这个接口。
当簇分裂时,即分裂簇的合法票数少于总票数的一半时,采用资源控制策略。
二。corosync安装和配置
安装:
要求:1。基于主机名的相互解析;2.节点之间的时间同步。
设置:yum-y安装打包机(centos7)
corosync配置详细说明:corosync的主要配置分为totem、logging、quorum和nodelist配置段
密码:corosync-kegen-l
需要在上诉合作完成后生成。
将上诉配置文件和密钥文件复制到另一个集群。
启动服务:
systemctl启动协同同步
systemctl启动起搏器
安装crmsh接口工具管理集群资源及其配置:yum-yinstallCRMSH-2.1.4-1.1.x86_64.rpmPSSH-2.3.1-4.2.x86_64.rpmPython-PSSH-2.3.1-4.2.x86_64.rpm
三。Corosync+packermaker+NFS的高可用性案例
这个实验需要另一个服务器启动nfs服务,并使用相同的页面文件将其挂载到两个节点上
node 167840321: node1.alren.com \ #默认设置,此在corosync配置文件中定义 attributes standby=on node 167840322: node2.alren.com \ attributes standby=off primitive webip IPaddr \ #定义webip params ip=10.1.10.80 \ meta target-role=Started primitive webserver systemd:httpd #定义webserver primitive webstore Filesystem \ #定义webstore params device="10.1.10.67:/www/html" directory="/var/www/html" fstype=nfs \ op start timeout=60s interval=0 \ #附加选项为超时时间、时间间隔 op stop timeout=60s interval=0 group webservice webip webstore webserver #将webip、webserver、webstore加入到webservice组 location cli-prefer-webservice webservice role=Started inf: node1.alren.com property cib-bootstrap-options: \ have-watchdog=false \ dc-version=1.1.13-10.el7-44eb2dd \ cluster-infrastructure=corosync \ cluster-name=myclusters \ stonith-enabled=false \ symmetric-cluster=true # vim: set filetype=pcmk:实验测试图:
如果节点一被手动设置为待机模式,资源将自动转移到节点二。
通过排列约束和顺序约束实现配置,实现节点间的粘性和启动顺序。
crm(live)configure# show node 167840321: node1.alren.com \ attributes standby=on node 167840322: node2.alren.com \ attributes standby=off primitive webip IPaddr \ params ip=10.1.10.80 \ meta target-role=Started primitive webserver systemd:httpd primitive webstore Filesystem \ params device="10.1.10.67:/www/html" directory="/var/www/html" fstype=nfs \ op start timeout=60s interval=0 \ op stop timeout=60s interval=0 colocation webip_webserver_with_webstore inf: webip webserver webstore #设定排列约束 order webip_before_webstore_before_webserver Mandatory: webip webstore webserver #设定顺序约束,此时启动顺序为:webip,webstore,webserver property cib-bootstrap-options: \ have-watchdog=false \ dc-version=1.1.13-10.el7-44eb2dd \ cluster-infrastructure=corosync \ cluster-name=myclusters \ stonith-enabled=false \ symmetric-cluster=true \ default-resource-stickiness=200资源监控配置定义如下:httpd服务停止时,httpd会自动重启,如果重启失败,资源会转移到可用节点。
crm(live)configure# show node 167840321: node1.alren.com \ attributes standby=off node 167840322: node2.alren.com \ attributes standby=on primitive webip IPaddr \ params ip=10.1.10.80 \ meta target-role=Started primitive webserver systemd:httpd \ op start timeout=15s interval=0 \ #定义资源启动间隔及其超时时间 op stop timeout=15s interval=0 \ #定义资源停止时间间隔及其超时时间 op monitor interval=15s timeout=15s #定义资源监控的时间间隔及其超时时间 primitive webstore Filesystem \ params device="10.1.10.67:/www/html" directory="/var/www/html" fstype=nfs \ op start timeout=60s interval=0 \ op stop timeout=60s interval=0 colocation webip_webserver_with_webstore inf: webstore webip webserver order webip_before_webstore_before_webserver Mandatory: webip webstore webserver property cib-bootstrap-options: \ have-watchdog=false \ dc-version=1.1.13-10.el7-44eb2dd \ cluster-infrastructure=corosync \ cluster-name=myclusters \ stonith-enabled=false \ symmetric-cluster=true \ default-resource-stickiness=200 \ no-quorum-policy=ignore \ last-lrm-refresh=1479180221
总结:综合诉求配置感觉corosync+起搏器的方法比lvs稍微复杂一点。corosync还可以检测RS的健康状态,并在ldirectory的帮助下自动生成ipvs规则。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)