推荐-Corosync + Pacemaker 搭建高可用Httpd服务

Corosync + Pacemaker 搭建高可用Httpd服务


实验描述

1.两个测试节点,分别为node5.redhat.comnode6.redhat.com地址分别为172.16.100.5172.16.100.6
2.集群服务为httpd,利用nfs做共享存储,NFS地址为172.16.0.254,NFS已经共享出了一个/www/htdocs目录并且里面有index.html文件。
3.VIP地址为172.16.100.100
4.两个节点系统全部为CentOS7.2
5.由于本人还需要上班,所以时间紧张,描述的有点马虎,请多见谅。如有错误的地方,还请提出改正。


配置步骤

1.在所有节点安装pcs,并启动相应的pcsd进程

[root@node5 ~]# yum install pcs -y
[root@node5 ~]# systemctl start pcsd.service

[root@node6 ~]# yum install pcs -y
[root@node6 ~]# systemctl start pcsd.service

2.给所有节点上的hacluster用户设置一个密码。

[root@node5 ~]# echo “redhat” | passwd –stdin hacluster

[root@node6 ~]# echo “redhat” | passwd –stdin hacluster

3.在一个节点上验证两个节点

[root@node5 ~]# pcs cluster auth node5.redhat.com node6.redhat.com
Username: hacluster
Password: 这里输入的密码默认不会显示
node5.redhat.com: Authorized
node6.redhat.com: Authorized

4.将两个节点加入集群

[root@node5 ~]# pcs cluster setup –name mycluster node5.redhat.com node6.redhat.com
添加节点的输出信息
Shutting down pacemaker/corosync services…
Redirecting to /bin/systemctl stop pacemaker.service
Redirecting to /bin/systemctl stop corosync.service
Killing any remaining services…
Removing all cluster configuration files…
node5.redhat.com: Succeeded
node6.redhat.com: Succeeded
Synchronizing pcsd certificates on nodes node5.redhat.com, node6.redhat.com…
node5.redhat.com: Success
node6.redhat.com: Success

Restaring pcsd on the nodes in order to reload the certificates…
node5.redhat.com: Success *显示添加成功*
node6.redhat.com: Success *显示添加成功*

5.两个节点同时启动corosyncpacemaker进程

[root@node5 ~]# systemctl start corosync.service
[root@node5 ~]# systemctl start pacemaker.service

[root@node6 ~]# systemctl start corosync.service
[root@node6 ~]# systemctl start pacemaker.service

6.在两个节点上安装httpd进程并设置为开机启动

root@node5 ~]# yum install httpd -y
systemctl enable httpd.service

root@node6 ~]# yum install httpd -y
systemctl enable httpd.service

7.在两个节点上安装nft-utils以实现支持挂载nfs共享

[root@node5 ~]# yum install nfs-utils

[root@node6 ~]# yum install nfs-utils

8.安装crmsh,CentOS7默认不带crmsh,需要去网上下载rpm包,我用的是crmsh-2.2.0-7.1.noarch.rpmcrmsh-scripts-2.2.0-7.1.noarch.rpmpython-parallax-1.0.1-10.1.noarch.rpm

[root@node5 ~]# yum install crmsh-2.2.0-7.1.noarch.rpm crmsh-scripts-2.2.0-7.1.noarch.rpm python-parallax-1.0.1-10.1.noarch.rpm -y

[root@node6 ~]# yum install crmsh-2.2.0-7.1.noarch.rpm crmsh-scripts-2.2.0-7.1.noarch.rpm python-parallax-1.0.1-10.1.noarch.rpm -y

9.利用crmsh配置资源

[root@node5 ~]# crm configure

配置VIP资源
crm(live)configure# primitive webip ocf:heartbeat:IPaddr ip=’172.16.100.100’ op monitor interval=20s timeout=40s

配置NFS资源
crm(live)configure# primitive webstore ocf:heartbeat:Filesystem params device=’172.16.0.254:/www/htdocs’ directory=’/var/www/html’ fstype=’nfs’ op start timeout=60s op stop timeout=60s op monitor interval=20s timeout=40s

配置WEB资源
crm(live)configure# primitive webserver systemd:httpd op start timeout=60s op stop timeout=60s op monitor interval=20s timeout=60s

因为是两节点集群,需要关闭stonith
crm(live)configure# property stonith-enabled=false

crm(live)configure# commit

10.设置这三个服务要同时在一个节点上运行,并且启动顺序一定为VIP -> NFS -> httpd

  设置三个服务在同一节点上运行有两种方法实现,一种是将所有资源设置到同一个组里面,或者设置排列约束。当然,即设置了组,又定义为了排列约束也是可以的。设置启动顺序那么必须使用顺序约束

设置组

crm(live)configure# group webservice webip webstore webserver

或排列约束

crm(live)configure# colocation webip_with_webstore inf: webip webstore
crm(live)configure# colocation webstore_with_webserver inf: webstore webserver

顺序约束

crm(live)configure# order webip_before_webstore Mandatory: webip webstore
crm(live)configure# order webstore_before_webserver Mandatory: webstore webserver
crm(live)configure# commit


验证配置

1.首先查看集群状态

crm(live)configure# cd 退出到crmsh的主配置界面
crm(live)#status 输出status查看集群状态

Alt text1.jpg

一切正常

2.打开浏览器,输入VIP地址进行查看。

Alt text2.jpg

测试也是正常的

3.将node5节点设置为standby状态,查看服务是否转移成功。

crm(live)# node standby node5.redhat.com
crm(live)# status

Alt text3.jpg

可以看到node服务转移到了node6节点上

4.再次打开浏览器进行测试。

2.jpg

服务依旧正常,这样就实现了我们高可用的目的。


原创文章,作者:张小凡,如若转载,请注明出处:http://www.178linux.com/14207

(0)
张小凡张小凡
上一篇 2016-04-05 20:47
下一篇 2016-04-05 22:39

相关推荐

  • centos6安装docker

    使用的操作系统是是centos6.3,按照官方的推荐的配置,把linux内核升级到3.8以上。安装步骤如下: 1、升级内核版本(包含aufs) cd /etc/yum.repos.d     wget http://www.hop5.in/yum/el6/hop5.repo   …

    Linux干货 2016-05-05
  • 设计模式(八)装饰器模式Decorator(结构型)

    1. 概述        若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。       通过继…

    Linux干货 2015-07-03
  • 第六周总结VIM编辑器的使用并完成练习题

    第六周 总结VIM编辑器的使用并完成练习题 1. VIM是什么? VIM(Vi IMproved)是从vi发展出来的一个文本编辑器。 2.为什么要使用VIM? VIM有代码补完,编译以及错误跳转等方便编程的功能,在程序员中广泛使用。对于大多数的用户来说,VIM有着比较陡峭的学习曲线,但是一旦掌握一些基本操作之后,能大幅度提高编辑效率。VIM是类Unix系统用…

    Linux干货 2017-09-02
  • xen虚拟机实时迁移

    前言:  xen虚拟机提供了一种类似于heartbeat高可用方案,在保证也不中断的业务情况下实现虚拟机迁移技术。在保证虚拟机上的服务正常的情况下将运行中的Domain迁移到其他机器上,实现xen虚拟机的高可用。 一、实验准备:  (1)各个测试机之间时间要同步  (2)node3提供iscsi网络共享存储  (4)n…

    Linux干货 2015-08-27
  • 信息论的熵

    1.  前言    熵的概念最早起源于物理学,用于度量一个热力学系统的无序程度。    在信息论里则叫信息量,即熵是对不确定性的度量。从控制论的角度来看,应叫不确定性。信息论的创始人香农在其著作《通信的数学理论》中提出了建立在概率统计模型上的信息度量。他把信息定义为“用来消除不确定性的东西”。在信息世界,熵越…

    Linux干货 2016-03-27
  • BASH编程基础之变量、条件判断

    一、前言 在linux中,通常我们所指的脚本编程,指的是bash的脚本编程。 bash作为一种过程式的编程语言来说,它应该具备编程语言所应该具备的基本元素,即:变量,流程,函数,数组。今天我们介绍变量以及流程之一的条件判断。 二、变量 1、初识变量 在编程语言中,编程语言有两大种,强类型语言和弱类型语言。强类型语言中,要求变量的使用要严格符合定义,所有变量都…

    Linux干货 2015-07-06

评论列表(1条)

  • stanley
    stanley 2016-04-05 22:27

    结构清晰明白,内容详略得当,赞