利用Pacemaker集群管理让Apache最大可用性

实验环境:

系统版本:CentOS release 6.5 (Final)_x64

node1: ip :192.168.0.233 #写进/etc/hosts文件中

node2: ip :192.168.0.234

vip: 192.168.0.183

注意:1.两台机器务必写静态ip,切记莫用dhcp获取ip,确保两个机器互相能ping通

2. 先禁用防火墙和SELinux

一.配置SSH

SSH 是一个方便又安全的用来远程传输文件或运行命令的工具. 在这个文档中, 我们创建ssh key(用 -N 选项)来免去登入要输入密码的麻烦。

创建一个密钥并允许所有有这个密钥的用户登入

在node1上操作:

[root@node1 ~]# ssh-keygen -t dsa -f ~/.ssh/id_dsa -N ""

[root@node1 ~]# cp .ssh/id_dsa.pub .ssh/authorized_keys

[root@node1 ~]# scp -r .ssh node2:

ok,我们已经做好了双机认证

二.集群软件安装/配置(两台机器都要做同样的操作)

1.这里,我们用的rpm包安装的,建议使用163源或epel 源进行依赖关系解决:

epel-release-6-5.noarch #我用的是epel源,找不到源rpm包的话可以留言给我

rpm -ivh epel-release-6-5.noarch.rpm #安装

163源:

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

2.设置Pacemaker源:

vi /etc/yum.repos.d/centos.repo #贴入如下内容

[centos-6-base]

name=CentOS-$releasever - Base

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os

enabled=1

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

3.安装集群软件:

[root@node1 ~]# yum makecache #缓存一下

[root@node1 ~]# yum install lvm2-cluster corosync pacemaker pcs -y #安装请这样安装,官网文档有点坑,大概八十六个包

4.开始集群设置:

[root@node1 ~]# /etc/init.d/pcsd start

 

[root@node2 ~]# /etc/init.d/pcsd start

 

① 设置hacluster用户设置密码。两个节点设置一致

[root@node1 ~]# passwd hacluster

 

[root@node2 ~]# passwd hacluster

 

② 配置 Corosync

hacluster 这个我们之前用过的用户就是做统一的集群管理用的,这里配置corosync就是用到这个用户,配置完成后生成corosync.conf 发送到各个节点上hacluster在一个集群中的节点认证的的事情。

[root@node1 ~]# pcs cluster auth node1 node2

Username: hacluster

Password: #这里输入redhat

node1: Authorized

node2: Authorized

[root@node1 ~]# pcs cluster setup --name mycluster node1 node2

node1: Updated cluster.conf...

node2: Updated cluster.conf...

③ 启动我们的集群:

[root@node1 ~]# pcs cluster start --all #启动稍微有点慢,耐心等待

 

④ 查看我们创建的集群,节点状态:

[root@node1 ~]# pcs status

 

[root@node1 ~]# pcs status corosync

 

[root@node1 ~]# crm_verify -L -V #查看你会发现很多错误

[root@node1 ~]# pcs property set stonith-enabled=false #关掉这些错误

三.开始配置我们的Apache高可用(主/备)

①.添加vip

首先要做的是配置一个IP地址,不管集群服务在哪运行,我们要一个固定的地址来提供服务。在这里我选择 192.168.0.183作为浮动IP,给它取一个好记的名字 ClusterIP 并且告诉集群每30秒检查它一次。

[root@node1 ~]# pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=192.168.0.183 cidr_netmask=32 op monitor interval=30s

另外一个重要的信息是 ocf:heartbeat:IPaddr2。这告诉Pacemaker三件事情,第一个部分ocf,指明了这个资源采用的标准(类型)以及在哪能找到它。第二个部分标明这个资源脚本的在ocf中的名字空间,在这个例子中是heartbeat。最后一个部分指明了资源脚本的名称。

[root@node1 ~]# pcs status #查看我们已经创建好的资源,一个vip现在已经在node1 上运行

 

 

②安装Apace

在继续前,我们需要确保两个节点上都安装了Apache。

[root@node1 ~]# yum -y install httpd

[root@node2 ~]# yum -y install httpd

准备工作,给Apache,写个默认首页:

[root@node1 ~]# cat <<-END >/var/www/html/index.html

 

welcome to node 1

 

END

[root@node2 ~]# cat <<-END >/var/www/html/index.html

 

welcome to node 2

 

END

③开启 Apache status URL

为了监控Apache实例的健康状态,并在它挂掉的时候恢复Apache服务,pacemaker使用的资源agent会假设 server-status URL是可用的。查看/etc/httpd/conf/httpd.conf并确保下面的选项没有被禁用或注释掉。,在这里我们直接添加了,默认是注释的。

注意,两个node的Apache都要添加,切勿偷懒

vi /etc/httpd/conf/httpd.conf

SetHandler server-status

Order deny,allow

Deny from all

Allow from 127.0.0.1

 

⑤ Apache 添加进我们的集群中

[root@node1~]#pcs resource create Web ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="http://localhost/server-status" op monitor interval=1min

现在,Apache已经可以添加到集群中了。我们管这个资源叫Web。我们需要用一个叫做apache的OCF脚本,这个脚本在heartbeat这个名字空间里,唯一一个需要设定的参数就是Apache的主配置文件路径,并且我们告诉集群每一分钟检测一次Apache是否运行。

默认的,所有资源的start,stop和monitor操作的超时时间都是20秒。在很多情况下这个超时周期小于建议超时时间。在本教程中,我们将调整全局操作的超时时间为240秒。

[root@node1 ~]# pcs resource op defaults timeout=240s

[root@node1 ~]# pcs resource op defaults

timeout: 240s

⑥ 确保资源在同一个节点运行

(1)为了减少每个机器的负载,Pacemaker会智能地尝试将资源分散到各个节点上面。然而我们可以告诉集群某两个资源是有联系并且要在同一个节点运行(或不同的节点运行)。这里我们告诉集群WebSite只能在有ClusterIP的节点上运行。

(2)为此我们使用托管约束来强制性的表明WebS和ClusterIP运行在同一节点。“强制性”部分的托管约束使用分数INFINITY(无穷大)来表示。无穷大也表明了如果ClusterIP没有在任何节点运行,那么Web也不能运行。

[root@node1 ~]# pcs constraint colocation add Web ClusterIP INFINITY

 

在两个节点上启动Apache即可,用vip访问我们写的界面。

⑦ 控制资源的启动停止顺序

当Apache启动了,它跟可用的IP绑在了一起。它不知道我们后来添加的IP,所以我们不仅需要控制他们在相同的节点运行,也要确保ClusterIP 在Web之前就启动了。我们用添加ordering约束来达到这个效果。我们需要给这个order取个名字(apache-after-ip之类描述性的),并指出他是托管的(这样当ClusterIP恢复了,同时会触发Web的恢复) 并写明了这两个资源的启动顺序。

[root@node1 ~]# pcs constraint order ClusterIP then Web

 

[root@node1 ~]# pcs constraint #查看一下我们写的规则

 

⑧ .指定优先的 Location

(1)Pacemaker 并不要求你机器的硬件配置是相同的,可能某些机器比另外的机器配置要好。这种状况下我们会希望设置当某个节点可用时,资源就要跑在上面之类的规则。为了达到这个效果我们创建location约束。

(2)同样的,我们给他取一个描述性的名字(prefer-pcmk-1),指明我们想在上面跑WebSite这个服务,多想在上面跑(我们现在指定分值为50,但是在双节点的集群状态下,任何大于0的值都可以达到想要的效果),以及目标节点的名字:

[root@node1 ~]# pcs constraint #查看我们写好的规则

 

如果要看现在的分值,可以用crm_simulate这个命令

[root@node1 ~]# crm_simulate -sL

 

⑨在集群中手动迁移资源

[root@node1 ~]# pcs constraint location Web prefers node2=INFINITY

 

Pacemaker 还有许多强大的功能还未挖掘,请求期待!

时间: 2024-09-20 06:43:00

利用Pacemaker集群管理让Apache最大可用性的相关文章

思科又发紧急安全通告 IOS集群管理协议漏洞和Struts2漏洞 有影响产品列表及应对措施了

思科今天更新了两个"紧急"的安全通告,一个针对 Cisco互联网操作系统(IOS) 和Cisco IOS XE Software,另一个针对问题不断的 Apache Struts2 ,确认了两个漏洞对于思科产品的影响列表(密密麻麻数不清,大家点文末的官方文档,自己看吧),并给出了临时应对措施.在此之前,绿盟科技 曾就前一个漏洞 CVE-2017-3881 作出应对措施的整理 . 思科集群管理协议漏洞CVE-2017-3881 思科表示, IOS漏洞存在于Cisco IOS和Cisco

Hadoop 集群管理上的新“绝招”

Hadoop在一些企业部署时,往往会遇到多个用户各自创建的数据处理工作的情况.这些工作都运行在同一个Hadoop系统上时,他们之间可能会彼此冲突,争夺可用的处理器资源. David Clubb,在移动游戏平台和市场公司Chartboost的高级数据工程师,试图优化大数据技术,提升产品体验时,也遇到了Hadoop集群管理的问题."我们正在更新Hadoop软件,并试图将其迁移到新的集群,但并没有找到监控集群的好方法,"Clubb说道."你可以看到工作在运行,但你却不能看到其所使用

一步到位分布式开发Zookeeper实现集群管理

说到分布式开发Zookeeper是必须了解和掌握的,分布式消息服务kafka .hbase 到hadoop等分布式大数据处理都会用到Zookeeper,所以在此将Zookeeper作为基础来讲解.   Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等. Zookeeper 的核心是广播,这个机制保证了各个Server之间的同步.实现这个机制的协议叫做Zab协议. Zab协议有两种模式,

Spark集群管理器介绍

Spark可以运行在各种集群管理器上,并通过集群管理器访问集群中的其他机器. Spark主要有三种集群管理器,如果只是想让spark运行起来,可以采用spark自带的独立集群管理器,采用独立部署的模式:如果是想让Spark部署在其他集群上,各应用共享集群的话,可以采取两种集群管理器:Hadoop Yarn 或 Apache Mesos. 一.独立集群管理器 Spark独立集群管理器提供的在集群上运行应用的简单方法.要使用集群启动脚本,按照以下步骤执行即可: 1.将编译好的Spark发送到集群的其

DockOne微信分享( 九十五):树莓派上的Docker集群管理

本文讲的是DockOne微信分享( 九十五):树莓派上的Docker集群管理[编者的话]随着IOT市场的火热发展,Docker天然的轻量级以及帮助业务快速重构的特性,将会在IOT领域迎来巨大发展潜力,甚至有可能会比它在云端的潜力更大.本文将致力于构建一个利用Rancher&RancherOS来管理运行在树莓派上的容器集群. 目前业界主流基本都是在x86架构上使用Docker,除了因为Intel在服务器领域的绝对领导地位之外,x86 CPU的确在性能上有着卓越的表现.但是近些年来,随着云计算的迅猛

集群管理器和调度器 Nomad

Nomad 详细介绍 Nomad 是一个集群管理器和调度器,专为微服务和批量处理工作流设计.Nomad 是分布式,高可用,可扩展到跨数据中心和区域的数千个节点. Nomad 提供一个常规工作流跨基础设施部署应用.开发者使用一个声明式作业规范来定义应用该如何部署,资源有什么要求(CPU,内存,硬盘).Nomad 接收这些作业,查找可用的资源来运行应用.调度算法确保所有的约束都满足,尽量在一个主机部署尽可能多的应用,优化资源利用.此外,Nomad 支持在所有主流操作系统运行虚拟化,容器化或者是独立的

集群管理工具经得起考验吗?

如今集群设计遍地都是.最典型的例子包括软件定义存储.虚拟化架构.超级融合.公有云与私有云,以及众所周知的大数据.集群以横向扩展的方式来构建基础设施,使用商业产品,如服务器和JBOD.横向扩展的设计能够实现容量与性能递增,与大部分纵向扩展的基础架构相比,有着巨大的成本规模效益. 大集群因为其支持大规模融合与整合,可以协助优化整体资本支出,而不断吸引业内目光.那么为什么我们不把现在所有的IT基础设施都集群化呢?大规模集群管理和运维都相当复杂,尤其是在开始将工作负载和租户结合后.如果建造了一个大集群,

[喵咪Liunx(5)集群管理利器pssh

[喵咪Liunx(5)集群管理利器pssh 前言 哈喽大家好呀!大家在管理服务器的时候如果只是一两台还好,当你管理三台以上的服务器的时候,你安装任何一个软件更改任何一个配置文件就要无比麻烦的每一台机器都去执行命令(当然用docker等的请无视),pssh可以帮我们解决这些问题,可以吧准备好的脚本批量在所有机器上进行执行,帮助你批量管理服务器集群! 附上: 喵了个咪的博客:w-blog.cn pssh官网地址:http://www.theether.org/pssh/ 1. 安装 pssh和mon

pdsh、ClusterSSH和mussh集群管理软件

我是想把 /etc/hosts 文件 分发到 10.205.10.11至20机器上 安装命令 sudo yum -y install clusterssh pdsh pdsh-rcmd-ssh pdsh-rcmd-rsh mussh pdcp -w ssh:root@srv[11-20] /etc/hosts /etc/ pdsh软件包还包括一个pdcp命令,可以将文件拷贝到一组机器上,用法如下:pdsh -w [SSH_OR_RSH]:[USERNAME]@nodesrv[1,2-4,5] S