corosync+pacemaker+nfs+pcs配置web服务的高可用

测试环境:

OS:rhel6.4

web1: 192.168.1.121  httpd heartbeat pacemaker  crmsh pcs

web2: 192.168.1.122  httpd heartbeat pacemaker

web3: 192.168.1.125  httpd nfs

VIP:192.168.1.160

PS:注意这里的测试环境是干净的,啥也没安装。。。go on !!

一、安装corosync和pacemaker之前的准备工作

1.节点名称(各个节点通过节点名称来通信的)确保集群的每个节点的名称都能互相解析

编辑/etc/sysconfig/network 文件

HOSTNAME=we1.luochen.com

编辑/etc/hosts 文件

192.168.1.121 web1.luochen.com web1

192.168.1.122 web2.luochen.com web2

# sysctl kernel.hostname=web1.luochen.com

PS:必须确保uname -n 命令查看的结果与/etc/hosts 文件中对应ip地址解析的名称一样

2.确保所有节点之间的时间一致(建议使用NTP服务器)

在所有节点里与同一个时间服务器进行时间同步

# ntpdate ntp-server-ip

3.基于ssh实现无密钥认证通信

# ssh-keygen -t rsa -P ‘‘    ####生成一对公钥和私钥,id_rsa 私钥id_rsa.pub 公钥

把公钥复制到其他节点上

# ssh-copy-id -i .ssh/id_rsa.pub [email protected]  (第一次需要输入密码)

# ssh web2.luochen.com ‘date‘;date      ####查看时间是否一致(同时在web1和web2上执行date命令)

PS:如果要实现在web2上实现与web1的无密钥认证通信,则要在web2上执行同样的操作

二、在web1和web2上安装corosync和pacemaker

# service httpd stop

# chkconfig httpd off

# yum -y install corosync*

# yum -y install pacemaker*

# rpm -ql corosync

# cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf  ###提供配置文件

在corosync配置文件中添加service (指定corosync来启动pacemaker)

compatibility: whitetanktotem {        version: 2      ###协议版本        secauth: on   ###开启安全认证功能        threads: 0     ###并行的线程数,0代表采用默认的        interface {     ###定义在哪个网卡接口发心跳检测信息                ringnumber: 0                     ###每块网卡都有独一无二的环号码                bindnetaddr: 192.168.1.0    ###绑定的网络地址                mcastaddr: 226.100.20.121 ###组播地址  224.0.1.0---238.255.255.255                mcastport: 5405                  ###组播端口                ttl: 1                                     ###只发一次        }}logging {        fileline: off               to_stderr: no        ###错误信息是否发往标准错误输出        to_logfile: yes       ###错误信息是否发往日志文件        logfile: /var/log/cluster/corosync.log  ###日志文件        to_syslog: no        ###错误信息是否发往syslog        debug: off            ###是否开启调错模式        timestamp: off     ####记录时间戳,如果写入日志文件就不用启用;这里使用no会出现错误,服务启动不了        logger_subsys {                subsys: AMF                debug: off        }}####配置corosync启动时自动启动pacemakerservice {        ver:  0        name: pacemaker        #use_mgmtd: yes}aisexec {        user: root        group:  root}

三、生成节点间通信时用到的认证密钥文件,会自动在/etc/corosync/目录下生成authkeys文件

# corosync-keygen

# scp -p /etc/corosync/{authkeys,corosync.conf} web2.luochen.com:/etc/corosync/

四、下载安装pcs

# wget  ftp://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/6.4/x86_64/updates/fastbugs/pcs-0.9.90-1.el6_4.noarch.rpm

# rpm -ivh pcs-0.9.90-1.el6_4.noarch.rpm

五,在web3上建立共享存储

建立一个共享目录:

# mkdir -pv /www/htdocs

#echo "<h1>nfs server page</h1>" > /www/htdocs/index.html

#vim /etc/exports

/www/htdocs  192.168.1.0/24(rw)

#setfacl -m u:apache:rwx /www/htdocs

#service nfs start

六、在web1上启动corosync

# service corosync start

# ssh web2.luchen.com ‘service corosync start‘

查看corosync引擎是否正常启动:

# grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/cluster/corosync.log

corosync [MAIN  ] Corosync Cluster Engine (‘1.4.7‘): started and ready to provide service.

corosync [MAIN  ] Successfully read main configuration file ‘/etc/corosync/corosync.conf‘.

查看初始化成员节点通知是否正常发出:

# grep  TOTEM  /var/log/cluster/corosync.log

检查启动过程中是否有错误产生。下面的错误信息表示pacemaker不久之后将不再作为corosync的插件运行,因此,建议使用集群基础构建服务;此处可安全忽略:

# grep ERROR: /var/log/cluster/corosync.log | grep -v unpack_resources

查看pacemaker是否正常启动:

# grep pcmk_startup /var/log/cluster/corosync.log

七、使用pcs定义web服务的资源(pcs命令只有一种模式:直接在命令行执行(批处理模式))

1,配置集群的工作属性,禁用stonith:

# pcs property set stonith-enable=false

2,配置集群的工作属性,no-quorum-policy(节点不具备法定票数时忽略):

# pcs property set no-quorum-policy=ignore

3,配置集群的工作属性,定义资源默认黏性值:

# pcs resource defaults resource-stickiness=100

4,先定义资源,再把他们加入到同一个资源组里(添加资源后会立即在某个节点上启动该资源):

定义一个webip(vip)的主资源:

# pcs resource create webip ocf:heartbeat:IPaddr ip=192.168.1.160 op monitor interval=30s timeout=20s

# pcs status   (立即生效,资源启动了)

5,定义一个webstore(共享存储)的主资源:

# pcs resource create webstore ocf:heartbeat:Filesystem device="192.168.1.125:/www/htdocs" directory="/var/www/html" fstype="nfs" op monitor interval=20s timeout=40s op start timeout=60s op stop timeout=60s

# pcs status

6,定义一个webserver的主资源:

# pcs create webserver lsb:httpd op monitor interval=30s timeout=20s on-fail=restart

# pcs status

7,定义webservice 资源组:

# pcs resource group add webservice webip webstore webserver

# pcs status

8,定义顺序约束(确保资源的启动和关闭顺序,这里每次只能定义两个资源的顺序约束 ):

# pcs constraint order webip then webstore

# pcs constraint order webstore then webserver

# pcs constraint order show

9,在宿主机上访问vip查看webservice是否正常运行

10,在crmsh命令行下切换web服务运行的节点(这里没有pcsd,所以只有用crm来操作)

# crm node standby web2.luochen.com

# crm status

11,再次让web2节点启动

# crm node online web2.luochen.com

12,pcs命令的其他用法示例:

显示默认属性配置

# pcs property list --all

# pcs property list --defaults

查看有哪些资源代理类别

# pcs resource standards

查看有哪些OCF的providers

# pcs resource providers

显示某个类别下的所有的RA

# pcs resource agents ocf:heartbeat

显示某RA的属性信息

# pcs resource describe ocf:heartbeat:IPaddr

查看所有约束

# pcs constraint list --full

定义位置约束

# pcs constraint location webservice prefers web1.luochen.com =500

# pcs config

定义排列约束

# pcs constraint colocation add webserver with webstore

# pcs config

时间: 2024-12-23 03:29:08

corosync+pacemaker+nfs+pcs配置web服务的高可用的相关文章

基于Corosync和Pacemaker实现Web服务的高可用

Corosync+Pacemaker+iscsi+Httpd实现web服务的高可用 一.软件介绍 Corosync实现的是membership和可靠组通信协议 Pacemaker则基于Corosync/Linux-HA实现服务的管理 Corosync包括如下组件:   Totem  protocol   EVS   CPG   CFG   Quorum Extended Virtual  Synchrony算法(EVS)提供两个功能:   组成员列表的同步:   组消息的可靠组播. Pacema

mysql运维管理-Heartbeat实现web服务的高可用案例及维护要点

1.DRBD介绍 Distributed Replicated Block Device (DRBD)是基于块设备在不同的高可用服务器对之间同步和镜像数据的软件,通过它可以实现在网络中的两台服务器之间基于块设备级别的实时或异步镜像或同步复制,类似于rsync+inotify这样的系统架构项目软件.只不过drbd是基于文件系统底层的,即block层级的同步,而rsync+inotify是在文件系统之上的实际物理文件同步.所以dbrd效率更高.块设备可以是磁盘分区,LVM逻辑卷,或整块磁盘. 2.D

heartbeat双机热备实现Web服务的高可用

防伪码:没有相当程度的孤独是不可能有内心的平和. 1.概述 Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能. 通过heartbeat,可以将资源从一台已经故障的计算机快速转移到另一台运转的机器上继续提供服务. 官网:http://www.linux-ha.org/wiki/Main_Page 1.1 工作原理 主备模式:通过修改

keepalived+httpd 做web服务的高可用

场景: 环境中有两台httpd服务器,一台做主,一台做备用:平时只用主向外提供http服务:当主宕机后,keepalived把vip绑定到备机上去,这样就由备机提供http服务了. **keepalvied 这个软件还是更新的比较快的,主要问题再于它的文档并没能跟上来,不同版本之间的差别比较大,我这里用的是1.2.13版 [0]环境说明 主机ip 系统版本 keepavlied版本192.168.80.131 centos6.6 keepalived-1.2.13192.168.80.132 c

Centos7+Nginx+Keepalived实现Apache服务的高可用&负载均衡

Centos7+Nginx+Keepalived实现Apache服务的高可用&负载均衡 今天是2017年的第一天,昨天也就是2016年的最后一天,我尝试部署了Centos7+Nginx+Keepalived实现WEB服务的高可用负载均衡服务,终于在2017年的第一天前完成了,所以在此分享给有需要的朋友:说到负载均衡,其实在linux下有很多服务可以实现,比如nginx.haproxy.lvs等服务,当前我们在前面的文章有介绍过了,但是对于高可用服务,我们在linux下最常见也是应用最多的是Kee

CentOS 6.5使用Corosync + pacemaker实现httpd服务的高可用

Corosync:它属于OpenAIS(开放式应用接口规范)中的一个项目corosync一版本中本身不具备投票功能,到了corosync 2.0之后引入了votequorum子系统也具备了投票功能了,如果我们用的是1版本的,又需要用到票数做决策时那该如何是好呢:当然,在红帽上把cman + corosync结合起来用,但是早期cman跟pacemaker没法结合起来,如果想用pacemaker又想用投票功能的话,那就把cman当成corosync的插件来用,把cman当成corodync的投票功

ceph对象存储(rgw)服务、高可用安装配置

ceph对象存储服务.高可用安装配置 简介:    Ceph本质上就是一个rados,利用命令rados就可以访问和使用ceph的对象存储,但作为一个真正产品机的对象存储服务,通常使用的是Restfulapi的方式进行访问和使用.而radosgw其实就是这个作用,安装完radosgw以后,就可以使用api来访问和使用ceph的对象存储服务了.    首先明白一下架构,radosgw其实名副其实,就是rados的一个网关,作用是对外提供对象存储服务.本质上radosgw(其实也是一个命令)和rbd

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

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

lvs+keepalived实现web负载及高可用

实验环境:lvs-master 192.168.1.236lvs-backup 192.168.1.237lvs-dr-vip 192.168.1.238web1       192.168.1.239web2       192.168.1.240 注:yum安装的软件包版本要一致 1.分别在两台服务器上安装lvs和keepalived[[email protected] ~]# yum -y install ipvsadm[[email protected] ~]# yum -y insta