corosync+pacemaker实现高可用(HA)集群

corosync+pacemaker实现高可用(HA)集群(一)

????重要概念

在准备部署HA集群前,需要对其涉及的大量的概念有一个初步的了解,这样在实际部署配置时,才不至于不知所云

资源、服务与主机(又称节点)的关系

  • 资源包括vip,httpd,filesystem等;
  • 可整合多个资源形成一个服务;
  • 服务必运行在某个主机上,主机上也可不运行服务(此为空闲主机);
  • 服务里的所有资源应该同时运行在同一个节点上,实现方式有2种:

    • 资源组;
    • 排列约束

资源类型

  • primitive(或native):原生资源,只能运行于一个节点
  • group:组资源
  • clone:克隆资源,只能将原生资源定义为克隆属性;一般用于定义stonith设备的参数(可定义"总克隆数"和"每个节点最多可运行的克隆数"等参数)
  • master/slave:主从资源,也是克隆类型的,只能克隆2份;主的能读能写,从的不能读也不能写(如drbd的实现)

target-role:即资源刚配置完成时是否启动的属性

  • Stopped:资源不启动;
  • Started:选择合适节点启动;
  • Master:资源启动,并提升其启动在主节点上;

no-quorum-policy:当集群故障,分裂为多个部分(称为"集群分区"),当某一集群分区因无法满足"法定人数原则(即quorum)"而无法选举出主节点时,此分区中节点上的资源可作如下处理

  • stop:停止所有资源,默认值
  • ignore:继续管理所有资源,即忽略集群故障,在双节点实验环境中需要
  • freeze:继续管理资源,但不再接受来自其他集群分区下节点的资源
  • suicide:隔离集群分区下的所有节点

资源转移的方式

rgmanager

  • failover domain即故障转移域,利用优先级(priority)的机制决定主节点故障时,资源的转移流向;

pacemaker:利用资源约束的机制,有如下3种类型

  • 资源黏性:资源运行在当前节点上是否远离的倾向性,数值越大表示越倾向留在当前节点
  • 位置约束:资源更倾向于运行在哪个节点上,使用一个数值来表示约束的大小,数值越大越倾

    • inf:无穷大
    • n:整数值
    • -n:负数值
    • -inf:负无穷大
  • 排列约束:资源运行在同一节点的倾向性

    • inf:无穷大,表示2个资源一定要运行在一起
    • -inf:负无穷大,表示2个资源绝不运行在一起
  • 顺序次序:定义资源的启动次序及关闭次序

HA集群的工作模型

  • A/P:two nodes,工作于主备模型;
  • N-M:N>M,N个节点,M个服务;活动节点为M,空闲节点为N-M个;
  • N-N:N个节点,N个服务;没有空闲节点;
  • A/A:two nodes,双主模型,双主模型最适用的场景是对LVS做高可用;

?

?


配置部署HA集群

前期准备

各节点(即主机)的主机名与"uname -n"的结果保持一致


?

?

?

1


# Node1+Node2:

vi?/etc/hosts

172.16.21.16?? node1.lamp.com node1

172.16.21.17?? node2.lamp.com node2

# Node1:

sed?-i?‘[email protected]\(HOSTNAME=\).*@\[email protected]‘??/etc/sysconfig/network

hostname?node1.lamp.com

# Node2:

sed?-i?‘[email protected]\(HOSTNAME=\).*@\[email protected]‘?/etc/sysconfig/network

hostname?node2.lamp.com

各节点时间保持一致


?


# 添加计划任务,与NTP时间服务器保持一致即可

# Node1+Node2:

crontab?-e

# Dscrip: Time Sync

# CTime: 2014.04.19

*/3?* * * *?/usr/sbin/ntpdate?172.16.0.1 &>/dev/null

各节点间可基于密钥进行SSH通信,而无需密码

?
# Node1:

ssh-keygen -t rsa

ssh-copy-id?-i ~/.ssh/id_rsa.pub [email protected]

# Node2:

ssh-keygen -t rsa

ssh-copy-id?-i ~/.ssh/id_rsa.pub [email protected]

?

部署方案一:heartbeat v2

安装配置

?
yum -y?install?perl-TimeDate net-snmp-libs libnet PyXML

rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm heartbeat-gui-2.1.4-12.el6.x86_64.rpm

# heartbeat:主程序包

# heartbeat-pils:提供通用插件和接口加载库

# heartbeat-stonish:提供了屏蔽(又称"爆头")其他节点的接口

# heartbeat-gui:为管理集群提供的gui配置接口

cd?/usr/share/doc/heartbeat-2.1.4

cp?ha.cf haresources authkeys?/etc/ha.d??# 拷贝配置文件

vi?/etc/ha.d/ha.cf?# 配置主配置文件,添加节点信息

node node1.lamp.com

node node2.lamp.com

# 其它可参考配置:

# logfile /var/log/ha-log # 日志文件,可查看集群启动信息

# keepalive 2 # 心跳信息发送频率,此为2s一次

# deadtime 30 # 若此时间内未收到心跳信息,则判定节点死亡,此为30s

# initdead 120 # 主机刚启动时,可允许心跳信息的接收时间,至少需要是是deadtime的2倍

# udpport 694 # 监听端口,默认就是694

# bcast eth0 # 通过eth0接口广播心跳信息

# auto_failback on # 打开故障转回功能,即当故障主节点恢复后,资源仍将转移回主节点的过程

# ping 172.16.0.1 # 指定一个虚拟集群节点,用于生成quorum

# respawn hacluster /usr/lib/heartbeat/ipfail # 在heartbeat启动时随之启动的程序,如ipfail,可用于访问控制

# compression bz2 # 定义数据压缩格式

vi?/etc/ha.d/authkeys?# 配置使用sha1加密算法

auth 2

#1 crc

2 sha1 e3266a6f709a5c3e?# 密码可通过命令"openssl rand -hex 8"生成

#3 md5 Hello!

chmod?600?/etc/ha.d/authkeys?# 修改密钥文件权限

vi?/etc/ha.d/haresources?# 添加如下信息即可

node1 172.16.25.55 httpd?# 表示在集群的主节点(尽量是node1)上先配置服务IP(就是一个虚拟IP),然后启动httpd服务

/usr/share/heartbeat/ha_propagate?# 同步配置文件至其他节点

service heartbeat start?# 启动hearbeat服务

ss -antupl |grep?694?# 验证启动进程和端口

?

在heartbeat中HA集群的配置方式

主要有3种:haresources文件,crmsh接口和gui图形配置接口

haresources文件

?
格式:node-name resource1 resource2 ... resourceN

# 资源格式:

# 服务IP资源格式:IPaddr::IP地址/子网掩码/配置的网卡/广播地址,如IPaddr::135.9.8.7/24/eth0/135.9.8.210

# LSB资源格式:脚本名称,如httpd

# 共享文件系统资源格式:Filesystem::挂载源::本地挂载目录::挂载文件系统类型,如Filesystem::172.16.251.163:/www/phpwind.com::/www/phpwind.com::nfs

实例:

# 配置虚拟IP,NFS目录挂载及httpd服务,并按书写顺序在node1上依次启动

node1 172.16.25.51 Filesystem::172.16.251.163:/www/phpwind.com::/www/phpwind.com::nfs httpd

# 缺点:利用文件的进行进行资源的管理配置过于简陋,故不推荐使用

crmsh接口配置

?
vi?/etc/ha.d/ha.cf

crm on?# 添加此行,即打开crm配置接口

service heartbeat restart?# 重启heartbeat服务

ps?-ef |?grep?mgmtd; ss -antupl |grep?5560?# 检查mgmtd进程存在,且监听在5560端口上

crm_mon?# 查看集群状态信息

crm_sh?# 进入集群命令行配置界面

passwd?hacluster?# 为heartbeat生成的hacluster用户添加密码

hb_gui &?# 进入GUI图形配置界面,对集群进行相关配置,需要填写上述密码哦

  • crm_sh和hb_gui两种配置方式选其一即可;
  • crm_sh的使用可在内部使用help获得,但帮助信息很有限,不建议使用;
  • hb_gui的方式目前测试只在Xshell终端下可用,iTerm就不可以,具体配置自行摸索即可;

?


?

时间: 2024-10-26 21:24:48

corosync+pacemaker实现高可用(HA)集群的相关文章

drbd+corosync+pacemaker构建高可用MySQL集群

一.drbd简介 drbd全称Distributed Replicated Block Device,为分布式复制块设备,基于软件实现的,不共享任何东西的,通过复制的方式构建镜像模式工作的磁盘,类似于raid1,但不同于raid的是,drbd实现了跨主机镜像块数据.drbd工作原理:由工作于内核层次的drbd,将要写入本地磁盘的数据镜像一份发往本地网卡,由本地网卡发往另一台drbd主机的本地磁盘存储.因此,drbd的两个主机的,磁盘存储一模一样,从而实现分布式复制块设备的实现.drbd进程对磁盘

corosync+pacemaker做高可用web集群

实验环境: 两台主机:  centos6.5+httpd2.4+php5.5组成web的基本环境,并且web页面访问正常,并且确保httpd24服务不会开机启动. node1.mylinux.com      10.204.80.79 node2.mylinux.com      10.204.80.80 我这里启用ansible来方便对两个节点的管理,启用一台主机做为管理节点,IP:10.204.80.71,在三台主机的hosts里同都添加对应的名称解析,管理节点对node1,node2两个节

高可用(HA)集群原理概述

一.高可用集群(High Availability Cluster) 集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源.每一个单个的计算机系统都叫集群节点(node).随着业务的增长,集群通过添加新的节点,满足资源的高可扩展性. 计算机硬件和软件易错性不可避免,这样在节点上的服务会不可避免的中断.高可用集群的出现是为保证即使节点失效,而服务能不中断. 高可用集群在一组计算机中,采用主备模式,主节点提供服务,备节点等待:一旦,主节点失效,备节点无需人工的无缝取代主节点提

corosycn&pacemaker的高可用web集群

基本拓扑: 两台高可用节点: node1:192.168.191.112 node2:192.168.191.113 NFS服务器:192.168.191.111 web服务的流动IP:192.168.191.199 一.准备工作: 1).node1---node2 基于主机名通信 1.编辑/etc/hosts文件添加如下内容 192.168.191.112 node1.liaobin.com node1 192.168.191.113 node2.liaobin.com node2 2.编辑/

iscsI服务的配置+lvm逻辑卷 高可用(HA)集群铺设的业务Apache+iscsI服务的配置

主机环境 redhat6.5 64位 实验环境 服务端1 ip 172.25.29.1 主机名:server1.example.com ricci iscsi  apache     服务端2 ip 172.25.29.2  主机名:server2.example.com ricci iscsi  apache     管理端1 ip 172.25.29.3  主机名:server3.example.com  luci  scsi     管理端2 ip 172.25.29.250     fe

VMware8实现高可用(HA)集群

陈科肇 =========== 操作系统:中标麒麟高级操作系统V6 x86-64 实现软件:中标麒麟高可用集群软件 ======================== 1.环境的规划与配置 硬件要求 服务器 服务器至少需要 2 台,每台服务器至少需要 2 块网卡以做心跳与连接公网使用 存储环境 建议使用一台 SAN/NAS/ISCSI 存储作为数据共享存储空间 软件要求 1.需要在每台服务器上安装中标麒麟 Linux 服务器操作系统 V5.4 以上版本 2.需要将中标麒麟高可用集群软件分别安装在每

corosync+pacemaker的高可用集群

基于corosync+pacemaker的高可用集群 Pacemaker即Cluster Resource Manager (简称CRM),用来管理整个HA的控制中心,客户端通过pacemaker来配置管理监控整个集群.它不能提供底层心跳信息传递的功能,它要想与对方节点通信需要借助底层(新拆分的heartbeat或corosync)的心跳传递服务,将信息通告给对方. pacemaker管理资源的工具由命令行界面的crmsh.pcs和图形化界面pygui.hawk等进行管理. 因此,一般来说都是选

corosync+pacemaker实现高可用集群。

实验环境: 安装: yum install corosync pacemaker -y 复制配置文件 cp corosync.conf.example corosync.conf vim corosync.conf 编辑配置文件: compatibility: whitetank  是否兼容0.8版本的corosynctotem {定义集群之间心跳信息传递层   version: 2 ----版本号        secauth: on ---是否启用安全认证        threads: 0

Linux HA Cluster高可用服务器集群,所谓的高可用不是主机的高可用,而是服务的高可用。

什么叫高可用:一个服务器down掉的可能性多种多样,任何一个可能坏了都有可能带来风险,而服务器离线通常带来的代价是很大的,尤其是web站点,所以当某一台提供服务的的服务器down掉不至于服务终止的就叫高可用. 什么叫心跳:就是将多台服务器用网络连接起来,而后每一台服务器都不停的将自己依然在线的信息很简短很小的通告给同一个网络中的备用服务器的主机,告诉其实主机自己依然在线,其它服务器收到这个心跳信息就认为本机是在线的,尤其是主服务器. 心跳信息怎么发送,由谁来收,其实就是进程中的通信两台主机是没法