LINUX集群学习二——pacemaker+corosync+pcs实验

实验目的:使用corosync作为集群消息事务层(Massage Layer),pacemaker作为集群资源管理器(Cluster Resource Management),pcs作为CRM的管理接口工具。要求实现httpd的高可用功能。
环境:centos 6.9
Pacemaker: 1.1.15
Corosync:1.47
Pcs: 0.9.155
准备工作:

  1. 配置SSH双机互信;
  2. 配置主机名解析/etc/hosts文件;
  3. 关闭防火墙:service iptables stop
  4. 关闭selunux:setenforce 0
  5. 关闭networkmanager: chkconfig NetworkManager off 、service NetworkManager stop
    一、 软件安装
    使用yum源可以直接安装corosync pacemaker以及pcs软件:
    yum install corosync pacemaker pcs -y

二、 开启pcsd服务,两台都要开启
Service pcsd start

[[email protected] ~]# service pcsd start
Starting pcsd: [ OK ]
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]# ssh node2 "service pcsd start"
Starting pcsd: [ OK ]
[[email protected] ~]#

三、 设置hacluster账号的密码,两台都要设置
为hacluster设置一个密码,用于pcs与pcsd通信
[[email protected] ~]# grep "hacluster" /etc/passwd
hacluster:x:496:493:heartbeat user:/var/lib/heartbeat/cores/hacluster:/sbin/nologin
[[email protected] ~]# passwd hacluster
Changing password for user hacluster.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[[email protected] ~]#

四、 配置corosync,生成/etc/cluster/cluster.conf文件,在指定的节点上给pcs与pcsd完成认证。
[[email protected] ~]# pcs cluster auth node1 node2
Username: hacluster //输入上面设置的帐户及密码
Password:
node1: Authorized
Error: Unable to communicate with node2

[[email protected] ~]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]# getenforce
Disabled

[[email protected] ~]# pcs cluster auth node1 node2
Username: hacluster
Password:
node1: Authorized
node2: Authorized
tcp 0 0 :::2224 :::* LISTEN 2303/ruby
备注:务必要关闭防火墙,或者配置iptables放行tcp 2224端口。

pcs cluster setup --name mycluster node1 node2 设置集群相关的参数
只有两台服务器pcsd服务、networkmanager关闭等基础条件准备好后才能够成功配置集群的参数,并且生成cluster.conf文件
[[email protected] corosync]# pcs cluster setup --name webcluster node1 node2 --force
Destroying cluster on nodes: node1, node2...
node1: Stopping Cluster (pacemaker)...
node2: Stopping Cluster (pacemaker)...
node1: Successfully destroyed cluster
node2: Successfully destroyed cluster

Sending cluster config files to the nodes...
node1: Updated cluster.conf...
node2: Updated cluster.conf...

Synchronizing pcsd certificates on nodes node1, node2...
node1: Success
node2: Success

Restarting pcsd on the nodes in order to reload the certificates...
node1: Success
node2: Success

[[email protected] corosync]# cat /etc/cluster/cluster.conf //生成的配置文件
<cluster config_version="9" name="webcluster">
<fence_daemon/>
<clusternodes>
<clusternode name="node1" nodeid="1">
<fence>
<method name="pcmk-method">
<device name="pcmk-redirect" port="node1"/>
</method>
</fence>
</clusternode>
<clusternode name="node2" nodeid="2">
<fence>
<method name="pcmk-method">
<device name="pcmk-redirect" port="node2"/>
</method>
</fence>
</clusternode>
</clusternodes>
<cman broadcast="no" expected_votes="1" transport="udp" two_node="1"/>
<fencedevices>
<fencedevice agent="fence_pcmk" name="pcmk-redirect"/>
</fencedevices>
<rm>
<failoverdomains/>
<resources/>
</rm>

五、 启动集群服务
pcs cluster start --all //注意关闭NetworkManager服务
可以使用pcs --debug cluster start --all 打开调试模式,检查其中的错误,提示需要关闭NetworkManager服务

六、 查看集群节点状态:
Pcs status
Pcs status corosync
Pcs status cluster
[[email protected] corosync]# pcs status
Cluster name: webcluster
WARNING: no stonith devices and stonith-enabled is not false
Stack: cman
Current DC: node1 (version 1.1.15-5.el6-e174ec8) - partition with quorum
Last updated: Mon Apr 30 10:06:42 2018 Last change: Mon Apr 30 09:26:32 2018 by root via crmd on node2

2 nodes and 0 resources configured

Online: [ node1 node2 ]

No resources

Daemon Status:
cman: active/disabled
corosync: active/disabled
pacemaker: active/disabled
pcsd: active/disabled
[[email protected] corosync]# pcs status corosync
Nodeid Name
1 node1
2 node2

检查一下是有配置错误,可以看到都是和stonith相关
Crm_verify –L –V
使用下面的命令关闭这些错误:
pcs property set stonith-enabled=false #关掉这些错误

七、 配置服务

  1. 配置VIP服务
    pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.110.150 cidr_netmask=24 op monitor interval=30s
    pcs status 查看资源是否启动,注意这里测试发现掩码需要配置为与网卡同掩码,否则资源启动不了
  2. 配置httpd服务
    这里有两种方式,使用ocf:heartbeat:apache或者使用lsb:httpd方式,前者需要手工在两台服务器上将httpd服务启动,而后者服务由pacemaker集群启动。
    pcs resource create web lsb:httpd op monitor interval=20s
    pcs status 可以看到资源已经启动。

同时,可以在对应的节点上面直接service httpd status查看服务是否启动,以及ip addr 查看VIP是否获取到。

八、 资源约束配置

  1. 配置资源的启动顺序:order,要求vip先启动,web后启动。
    pcs constraint order vip then web
  2. 配置位置约束,希望资源优先在node1节点上运行,设置vip/web对node1节点的优先级为150,对node2节点的优先级为50:
    pcs constraint location web prefers node1=150
    pcs constraint location vip prefers node1=150
    pcs constraint location web prefers node2=50
    pcs constraint location vip prefers node2=50
    [[email protected] ~]# pcs constraint

Location Constraints:
Resource: vip
Enabled on: node1 (score:100)
Enabled on: node2 (score:50)
Resource: web
Enabled on: node1 (score:100)
Enabled on: node2 (score:50)

注意:如果多个资源分布在不同的设备上,而这些资源又必须共同在同一个设备上才能够正常的对外提供服务,那么这个集群将不能正常工作。
可以看到只有web以及vip对node1的优先级都调整为150后,集群才能够正常对外提供服务,否则会出现两个资源分布在不同的设备而导致不能对外提供服务

  1. 配置资源组,只有两者对节点的位置优先级调整为一样后,资源组同时切换:
    pcs resource group add mygroup vip web
    [[email protected] ~]# pcs status groups
    mygroup: vip web
    [[email protected] ~]# pcs resource
    Resource Group: httpgroup
    vip (ocf::heartbeat:IPaddr2): Started node1
    web (lsb:httpd): Started node1

[[email protected] ~]# crm_simulate -sL

Current cluster status:
Online: [ node1 node2 ]

Resource Group: httpgroup
vip (ocf::heartbeat:IPaddr2): Started node1
web (lsb:httpd): Started node1

Allocation scores:
group_color: httpgroup allocation score on node1: 0
group_color: httpgroup allocation score on node2: 0
group_color: vip allocation score on node1: 100
group_color: vip allocation score on node2: 50
group_color: web allocation score on node1: 100
group_color: web allocation score on node2: 50
native_color: web allocation score on node1: 200
native_color: web allocation score on node2: 100
native_color: vip allocation score on node1: 400
native_color: vip allocation score on node2: 150

也可以将整个资源组作为整体调整优先级,如下:
pcs constraint location httpgroup prefers node2=100
pcs constraint location httpgroup prefers node1=200

[[email protected] ~]# pcs constraint
Location Constraints:
Resource: httpgroup
Enabled on: node1 (score:200)
Enabled on: node2 (score:100)
Resource: vip
Enabled on: node1 (score:100)
Enabled on: node2 (score:50)
Resource: web
Enabled on: node1 (score:100)
Enabled on: node2 (score:50)
Ordering Constraints:
start vip then start web (kind:Mandatory)

  1. 配置排列约束,让vip与web 资源运行在一起,分数为100
    [[email protected] ~]# pcs constraint colocation add vip with web 100
    [[email protected] ~]# pcs constraint show
    Location Constraints:
    Resource: httpgroup
    Enabled on: node1 (score:200)
    Enabled on: node2 (score:100)
    Resource: vip
    Enabled on: node1 (score:100)
    Enabled on: node2 (score:50)
    Resource: web
    Enabled on: node1 (score:100)
    Enabled on: node2 (score:50)
    Ordering Constraints:
    start vip then start web (kind:Mandatory)
    Colocation Constraints:
    vip with web (score:100)
    Ticket Constraints:

九、 将资源切换到node2上面
pcs constraint location web prefers node1=100 //将web资源对node1的位置优先级调整为100,可以看到资源从node2转换到node1,注意可以调整httpgroup,也可以同时调整web以及vip对node2的优先级。
May 1 09:43:02 node1 crmd[2965]: notice: State transition S_IDLE -> S_POLICY_ENGINE | input=I_PE_CALC cause=C_FSA_INTERNAL origin=abort_transition_graph
May 1 09:43:02 node1 pengine[2964]: warning: Processing failed op monitor for web on node2: not running (7)
May 1 09:43:02 node1 pengine[2964]: notice: Move web#011(Started node2 -> node1)
May 1 09:43:02 node1 pengine[2964]: notice: Calculated transition 4, saving inputs in /var/lib/pacemaker/pengine/pe-input-57.bz2
May 1 09:43:02 node1 crmd[2965]: notice: Initiating stop operation web_stop_0 on node2 | action 6
May 1 09:43:02 node1 crmd[2965]: notice: Initiating start operation web_start_0 locally on node1 | action 7
May 1 09:43:03 node1 lrmd[2962]: notice: web_start_0:3682:stderr [ httpd: Could not reliably determine the server‘s fully qualified domain name, using node1.yang.com for ServerName ]
May 1 09:43:03 node1 crmd[2965]: notice: Result of start operation for web on node1: 0 (ok) | call=12 key=web_start_0 confirmed=true cib-update=42
May 1 09:43:03 node1 crmd[2965]: notice: Initiating monitor operation web_monitor_20000 locally on node1 | action 8
May 1 09:43:03 node1 crmd[2965]: notice: Transition 4 (Complete=4, Pending=0, Fired=0, Skipped=0, Incomplete=0, Source=/var/lib/pacemaker/pengine/pe-input-57.bz2): Complete
May 1 09:43:03 node1 crmd[2965]: notice: State transition S_TRANSITION_ENGINE -> S_IDLE | input=I_TE_SUCCESS cause=C_FSA_INTERNAL origin=notify_crmd

十、 遗留问题:
节点配置web资源后,始终有一个报错未能解决,如下:
[[email protected] ~]# pcs status
Cluster name: mycluster
Stack: cman
Current DC: node1 (version 1.1.15-5.el6-e174ec8) - partition with quorum
Last updated: Tue May 1 11:13:00 2018 Last change: Tue May 1 11:04:20 2018 by root via cibadmin on node1

2 nodes and 2 resources configured

Online: [ node1 node2 ]

Full list of resources:

Resource Group: httpgroup
vip (ocf::heartbeat:IPaddr2): Started node1
web (lsb:httpd): Started node1

    Failed Actions:                                     //看着像和监控有关,但一直未能弄明白原因
* web_monitor_20000 on node2 ‘not running‘ (7): call=11, status=complete, exitreason=‘none‘,
    last-rc-change=‘Tue May  1 09:41:09 2018‘, queued=0ms, exec=16ms

Daemon Status:
cman: active/disabled
corosync: active/disabled
pacemaker: active/disabled
pcsd: active/disabled

命令:
pcs cluster 设备集群的pcsd认证、集群参数、启动集群节点、删除节点等功能。

pcs cluster stop node1 // 关闭集群中的node1
[[email protected] ~]# pcs status
Cluster name: mycluster
Stack: cman
Current DC: node2 (version 1.1.15-5.el6-e174ec8) - partition with quorum
Last updated: Sat Apr 28 02:23:00 2018 Last change: Sat Apr 28 02:16:12 2018 by root via cibadmin on node2

2 nodes and 2 resources configured

Online: [ node2 ]
OFFLINE: [ node1 ]

Full list of resources:

Resource Group: mygroup
vip (ocf::heartbeat:IPaddr2): Started node2
web (lsb:httpd): Started node2

Daemon Status:
cman: active/disabled
corosync: active/disabled
pacemaker: active/disabled
pcsd: active/disabled
此时由于node1上的集群功能已经关闭,无法在node2上直接开启,需要在node1上开启:
[[email protected] ~]# pcs status
Error: cluster is not currently running on this node
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]# pcs cluster start node1
node1: Starting Cluster...
pcs resource :资源相关的命令,包括资源创建、资源删除、资源使能、描述等。
Pcs constraint:资源约束相关的配置命令
Pcs status :资源状态查看相关的命令。

原文地址:http://blog.51cto.com/9652359/2109398

时间: 2024-10-12 16:00:57

LINUX集群学习二——pacemaker+corosync+pcs实验的相关文章

LINUX 集群学习一

服务器中的集群与网络中的集群虽然都是为了提供冗余的服务能力,但是在实现上有一定的差异,主要原因为网络冗余只需要实现流量有冗余路径,当主的链路故障后,流量可以通过备的链路通行即可.对于有状态的如TCP协议,某些设备如防火墙需要对其进行状态检测,那么只需要在主备设备之间开启会话同步功能即可.但是对于服务器而言较为复杂,主要原因是因为服务器作为流量的终结点,是需要直接对外提供服务的,其上存储的数据则需要被服务访问,不再是流量穿越就可以.本人一起从事网络相关的工作,在第一次接触服务器集群时,对其实现原理

[ Openstack ] Openstack-Mitaka 高可用之 Pacemaker+corosync+pcs 高可用集群

目录 Openstack-Mitaka 高可用之 概述    Openstack-Mitaka 高可用之 环境初始化    Openstack-Mitaka 高可用之 Mariadb-Galera集群部署    Openstack-Mitaka 高可用之 memcache    Openstack-Mitaka 高可用之 Pacemaker+corosync+pcs高可用集群    Openstack-Mitaka 高可用之 认证服务(keystone)    Openstack-Mitaka

Linux集群系列——高可用集群之corosync基础概念及安装配置.

高可用衡量标准 :corosync : 集群管理引擎 SA Forum -->OpenAIS-->Wilson-->corosync 向后延伸为衍生出来的版本REHL 6.x RHCS :corosyncREHL 5.x RHCS :OpenAIS , cman ,rgmanager corosync : Messaging Layer 需要CRM (+ pacemaker)SUSE Linux Enterprise server Hawk WEB GUILCMC : Linux Clu

Linux相关运维集群学习视频资料分享(自取)

前言:很多童鞋在百度知道上给我留言要马哥Linux视频,问的人有点太多了忙不过来,因此我将我收集到的一些Linux学习资料都分享到本页面,供需要的童鞋自取.特别申明:本页面分享的视频资源都收集至互联网,仅供学习使用不得用于商业用途.如有侵权,请联系我删除 马哥Linux运维2014(2013?)  http://pan.baidu.com/s/1pJ05kb5 燕十八linux    链接:http://pan.baidu.com/s/1pLF5FeF 密码: k4v6 老男孩Shell高级编程

【免费下载】全套最新 6.Linux集群 视频教程+教学资料+学习课件+源代码+软件开发工具

6.Linux集群视频教程 网盘地址: 链接:https://pan.baidu.com/s/1roYoSM0jHqa3PrCfaaaqUQ 提取码:41py 加公众号 获取更多新教程 教程目录大纲 ./6.Linux集群 └── 集群视频 └── 视频 ├── 1.集群概念 │?? ├── 01.-Linux云计算-集群- 集群概述 │?? │?? ├── 01.-Linux云计算-集群-集群概述.mp4 │?? │?? ├── 02.-Linux云计算-集群-集群分类.mp4 │?? │??

新书《Linux集群和自动化运维》目录

推荐序一 在全球"互联网+"的大背景下,互联网创业企业的数量如雨后春笋般大量产生并得到了快速发展!对"互联网+"最有力的支撑就是Linux运维架构师.云计算和大数据工程师,以及自动化开发工程师等! 但是,随着计算机技术的发展,企业对Linux运维人员的能力要求越来越高,这就使得很多想入门运维的新手不知所措,望而却步,甚至努力了很久却仍然徘徊在运维岗位的边缘:而有些已经工作了的运维人员也往往是疲于奔命,没有时间和精力去学习企业所需的新知识和新技能,从而使得个人的职业发

keepalived高可用集群学习以及实验总结

HA Cluster实现方案:vrrp协议的实现keepalivedais: 完备HA集群RHCS(cman)heartbeatcorosync + pacemaker :corosync是集群框架引擎程序,pacemaker是集群资源管理器,crmsh是pacemaker命令行管理工具 stonish : shooting the other node in the header 节点爆头,比如硬件设备方面的电源交换机,代理调度器节点都可以向其发送信号切断故障一方的电源,从而使得明确退出服务,

Linux集群系列之一——集群基础概念

PHP高级工程师之LInux集群(多态主机组合起来,完成一个任务) 在这里和大家分享一下多数网络黑客常用的攻击方式及预防措施. 如有不善,多提意见(QQ:1595068971-邮箱:[email protected]) 负载均衡集群LB(提高服务的病发处理能力为根本)增加处理能力 衡量标准: 病发处理能力(一次性能够处理多少个请求) 高可用集群HA(提升服务的始终在线能力为根本,不会因为宕机而导致服务不可用)增加服务可用性 衡量标准:在线时间 / (在线时间+故障处理时间) 99%,99.9%,

linux集群系列(1) --- Linux集群系统基础

一.简介     1.1. Linux集群系统包括集群节点和集群管理器两部分. 集群节点有时简称为节点.服务器或服务器节点,是提供处理资源的系统,它进行集群的实际工作.一般来讲,它必须进行配置才能成为集群的一部分,也必须运行集群的应用软件.应用软件可以是专用于集群的软件,也可以是设计用于分布式系统的标准软件. Linux集群管理器则是将节点捆绑在一起,以构成单一系统外观的逻辑结构,它用于将任务分解到所有的节点.集群因多种不同的原因而有着不同的类型,建立Linux集群的最直接原因是共享CPU资源,