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两个节点启用ssh互信机制,在ansible的配置文件中把node1和node2加入webservers组。

安装软件:

在两台主机上安装corosync和pacemaker,在管理主机上使用ansible命令的yum模块安装,安装过程会要有一段时间。

# ansible webservers -m yum  -a ‘name=corosync,pacemaker state=installed‘

这里显示corosync和pacemaker已经安装过了,在这里pacemaker是做为corosync的一个插件来运行的,在rhel7以后的版本中,pacemaker将做为一个独立的守护进程来运行。

配置corosync:

安装完corosync后会在/etc/corosync目录下有个默认的corosync.config.example,改为corosync.config

在corosync.config配置文件加添回pacemaker做为corosync的插件。添加如下内容

service {
  ver:  0
  name: pacemaker
  # use_mgmtd: yes
}

aisexec {
  user: root
  group:  root
}

并设定此配置文件中bindnetaddr后面的ip地址为我主机所在的网络地址,节点的网段在10.204.80网段,设为10.204.80.0网段   bindnetaddr:10.204.80.0,配置文件如下

# Please read the corosync.conf.5 manual page
compatibility: whitetank

totem {
	version: 2
	secauth: on
	threads: 0
	interface {
		ringnumber: 0
		bindnetaddr: 10.204.80.0
		mcastaddr: 226.94.13.10
		mcastport: 5405
		ttl: 1
	}
}

logging {
	fileline: off
	to_stderr: no
	to_logfile: yes
	to_syslog: yes
	logfile: /var/log/cluster/corosync.log
	debug: off
	timestamp: on
	logger_subsys {
		subsys: AMF
		debug: off
	}
}

amf {
	mode: disabled
}
service {
      ver: 0
      name: pacemaker
       # use_mgmtd:yes
}
aisexec {
     user: root
     group: root
}

这里要注意的是bindnetaddr的地址只设本地网络的网段,否则有可能会报错 corosync [TOTEM ] The network interface is down,以至节点心跳传递不过来。参考官方文档,说得很明白。

bindnetaddr

This  specifies  the  network  address  the  corosync  executive  should bind to.  For example, if the local interface is 192.168.5.92 with netmask

255.255.255.0, set bindnetaddr to 192.168.5.0.   If  the  local  interface  is  192.168.5.92  with  netmask  255.255.255.192,  set  bindnetaddr  to

192.168.5.64, and so forth.

生成节点间通信时的认证密钥文件:

#corosync-kegen 按几个回车,就会生成authkey的密钥文件

把corosync.conf和authkey拷到node2结点的/etc/corosync/目录下

配置接口:

在rhel6.3以前常用的版本是crmsh, 是一个资源管理器的配置接口,在rhel6.4以后用的是pcs,这里可以两种都用,对比一下。因此crmsh在centos6.5的yum库中没有,所以要去下载安装crmsh或自己编译安装crmsh。

下载地址:http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/x86_64/

需要下载的有三个文件crmsh-2.1-1.6.x86_64.rpm , pssh-2.3.1-4.1.x86_64.rpm ,python-pssh-2.3.1-4.1.x86_64.rpm;因为crmsh需要依赖pssh,所以也需要下载

安装配置接口:安装crmssh除了下载的几个文件外,还有其他的python的依赖关系,所以用yum localinstall来安装解决依赖关系。把这三个文件放在/root目录下,然后安装

# yum --nogpgcheck localinstall  crmsh-2.1-1.6.x86_64.rpm  pssh-2.3.1-4.1.x86_64.rpm  python-pssh-2.3.1-4.1.x86_64.rpm

安装完成,输入crm 进入crm shell

在node1上启动corosync

在节点1上启动节点2

启动完成,使用命令 # crm status 查看节点状态

节点1和节点2 都已经正常启动,并且集群处于正常工作状态。

执行ps auxf 命令可以查看corosync启动的各相关进程

配置集群的工作属性:

corosync默认启用了stonith,当前这个集群没有相应的stonith设备,于是首先要禁用stonith

#crm configure show  显示当前集群的配置信息,可以看到stonith已经禁用了

给集群添加资源:

corosync支持的资源代理有lsb和ocf等,lsb就是一些服务的启动脚本类的,如/etc/init.d/目录下的一些脚本。查看当前集群系统所支持的类型:

#crm ra classes

stonith是专门为配置stonith设备而用

查看某种类型下的所有资源代理的列表,可以用#crm ra list lsb | ocf (heartbeat | pacmemaker) | stonith 来查看。

一个web集群所需要的资源有 vip,web服务,

我这两个节点的vip为:10.204.80.88   web服务为 http24

crm的配置命令的语法:

primitive <rsc> [<class>:[<provider>:]]<type>

[params attr_list]

[operations id_spec]

[op op_type [<attribute>=<value>...] ...]

op_type :: start | stop | monitor

primitive        主资源

格式  primitive  ID (资源名称)  资源代理

参数  params

meta  元属性信息

utilization   使用信息

operations       操作信息       操作类型  start |stop | monitor(监控,定义资源如果停止了是否会被发现,而且传递给集群并且是否重新启运它的)

添加一个IP=10.204.80.88为主资源

把httpd24资源做为web服务资源。检测服务 verify,并提交commit

查看资源状态

显示有两个节点,两个资源设置,

因为没有把资源定义为组,并且没有定义约束,所以默认两个资源分别运行在两个节点上。

把这两个资源定义到同一个组

在#crm 然后 输入configure 进入配置模式,然后输入 help group

可以查看帮助文档,有group命令的详细说明和示例

group语法

group <name> <rsc> [<rsc>...]

[description=<description>]

[meta attr_list]

[params attr_list]

attr_list :: [$id=<id>] <attr>=<val> [<attr>=<val>...] | $id-ref=<id>

把webip 和webserverf定义到同一个组webgroup里面,然后查看集群状态

两个资源都运行在同一个节点node1上面,访问测试

把node1关机后,发现资源没有转移到node2节点上,查看集群状态#crm status

发现在集群状态已经 是“WITHOUT quorum”已经失去法定票数,已经不是处于集群状态,但我这里只有两个节点,这样是不合理的,可以以下命令忽略quorum不能满足的集群状态检查;

# crm configure property no-quorum-policy=ignore

查看集群状态

集群状态已经在节点2上运行了

web页面访问正常

把node1节点启动起来

node1和node2都在线,但资源并没有转移回到node1节点上,因为这里并没有定义资源粘性

定义资源的约束有三种:

location             位置约束 :定义资源可以、不可以或尽可能在哪些节点上运行

order                  次序约束:约束定义集群资源在节点上的启动顺序

colocation         排列约束:排列约束用以定义集群资源或以或不可以在某个节点上同时运行

我这里定义webgroup默认运行在node1节点上

#crm  configure  prefer_node1  webserver 200:  node1.mylinux.com

这里要注意的是: 后面跟节点的时候必须要有究竟间隔,否则会报错,

查看配置文件

顺序约束,要定义强制要求先启动webip 然后再启动http服务,命令如下

#crm configure order  httpd-after-ip  mandatory: webip webserver

corosync和pacemaker还有其他的功能强大功能,如果说健康状态检查,每隔多久检查一下,等等,这里先说到这

时间: 2024-10-20 05:04:04

corosync+pacemaker做高可用web集群的相关文章

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.编辑/

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

corosync+pacemaker实现高可用(HA)集群(一) ????重要概念 在准备部署HA集群前,需要对其涉及的大量的概念有一个初步的了解,这样在实际部署配置时,才不至于不知所云 资源.服务与主机(又称节点)的关系: 资源包括vip,httpd,filesystem等: 可整合多个资源形成一个服务: 服务必运行在某个主机上,主机上也可不运行服务(此为空闲主机): 服务里的所有资源应该同时运行在同一个节点上,实现方式有2种: 资源组: 排列约束 资源类型 primitive(或native

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

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

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置 LB集群是locd balance集群的简称.翻译成中文是:负载均衡集群的意思:集群是一组相互独立的.通过高速网络互联的计算机相互之间构成一个组合,并以单一的系统的模式加以管理.LVS是Linux Virtual Server的简写,翻译中文是Linux虚拟服务器,是一个虚拟的服务器集群系统. 负载均衡集群:是为了企业提供更为实用,性价比更高的系统机构解决方案.负载均衡集群把用户的请求尽可能的平均分发到集群的各

heartbeat httpd nfs 实现高可用web集群

一 环境准备 二 拓扑结构 三 前提条件 四 安装相关软件 五 配置heartbeat 六 测试web集群 七 问题汇总 八 共享存储 一 环境准备 操作系统 centos 6.4 x86_64 最小化安装 如使用yum 安装的方式 centos5.5 安装的是V2.X ,centos 6.4 安装的是V3.X YUM 安装 Vim man ntp "development tools" "server platform development" "des

Nginx+Tomcat+Keepalived实现高可用web集群

Nginx+Tomcat+Keepalived实现高可用web集群: 环境:CenOS 6.5Nginx-Master:10.10.10.128Nginx-Backup:10.10.10.129Tomcat1:10.10.10.130Tomcat2:10.10.10.131VIP:10.10.10.100 一.环境基础配置1.更换国内yum源2.关闭防火墙.SELinux3.时间同步 二.Web端安装Web服务 1.查看是否安装JDK [[email protected] ~]# java -v

Keepalived+Nginx+Tomcat 实现高可用Web集群(转)

Keepalived+Nginx+Tomcat 实现高可用Web集群 溯水心生 关注 2018.01.08 20:28* 字数 1382 阅读 965评论 1喜欢 9 集群规划图片 一.Nginx的安装过程 1.下载Nginx安装包,安装依赖环境包 (1)安装 C++编译环境 yum -y install gcc #C++ (2)安装pcre yum -y install pcre-devel (3)安装zlib yum -y install zlib-devel (4)安装Nginx 定位到n

nginx结合keepalived做高可用负载集群服务

一.概述 前面几篇介绍了nginx做web网站以及https网站,反向代理,LVS的NAT与DR调度负载,但由于nginx本身负载是七层,需要套接字,即使基于upstream模块模拟成四层代理也是瓶颈,因此本文介绍nginx基于keepalived做高可用负载均衡集群服务,目标就是两台keepalived对nginx反向代理负载服务做检查与调度,做成双主模式,nginx负载调度后端的httpd网站,任何一台调度器(nginx或keepalived服务)故障,不影响业务;后端任何一台web故障也不

corosync+pacemaker+crmsh的高可用web集群的实现

网络规划: node1:eth0:172.16.31.10/16 node2: eth0: 172.16.31.11/16 nfs:   eth0: 172.16.31.12/15 注: nfs在提供NFS服务的同时是一台NTP服务器,可以让node1和node2同步时间的. node1和node2之间心跳信息传递依靠eth0传递 web服务器的VIP是172.16.31.166/16 架构图:跟前文的架构一样,只是节点上安装的高可用软件不一致: 一.高可用集群构建的前提条件 1.主机名互相解析