图片 6

Pacemaker实现DRBD主从剧中人物的机动切换,LNMP达成Web服务器高可用集群

前提:

实验系统:CentOS
6.6_x86_64

大纲
一、前言
二、环境准备
三、Corosync 安装与配置
四、Pacemaker 安装与配置
五、DRBD 安装与配置
六、MySQL 安装与配置
七、crmsh 资源管理

drbd设备名,以及drbd设备的挂载点都要与对端节点保持一致;

实验前提:

推荐阅读:

因为我们

  1)提前准备好编译环境,防火墙和selinux都关闭;

Linux 高可用(HA)集群基本概念详解
http://www.linuxidc.com/Linux/2013-08/88522.htm

定义资源,使用到设备名及挂载点,所以两端的drbd设备名和设备的挂载点都必须保持一致;

  2)本配置共有两个测试节点,分别coro1和coro2,对应的IP地址分别为192.168.19.55和192.168.19.98;

Linux 高可用(HA)集群之Heartbeat详解
http://www.linuxidc.com/Linux/2013-08/88521.htm

 

  3)集群服务为nginx服务;

一、前言
     
前几篇博文中我们讲解了,heartbeat、corosync、pacemaker,也讲解了高可用的Web集群、高可用的Mysql集群,这一篇博文进行小小的总结,heartbeat与corosync是流行的Messaging
Layer
(集群信息层),非要在这两个当中选一个我选择corosync,至于理由是仁者见仁,智者见智啦,用过的人都知道。Pacemaker是最流行的CRM(集群资源管理器),是从heartbeat
v3中独立出来的资源管理器,同时Corosync+Pacemaker是最流行的高可用集群的套件,前面我们讲解的高可用的Mysql集群是heartbaet+mysql+nfs组合,其有点令人不满意的是得要三台服务器,其中一台为共享存储,可是这对于中小型公司来说,花个好几万来买台服务器,会不会有点浪费了,在这篇博文中我们将讲解,只用两台服务器来实现,高可用的Mysql数据库。在上一篇博文中我们已经详细讲解过了DRBD,这里就不在重复说明,想看的博友可以参考一下这篇博文 http://www.linuxidc.com/Linux/2013-08/89035.htm 
(Linux 高可用(HA)集群之DRBD详解),下面我们就来具体演示一下配置过程。
二、环境准备
1.操作系统
CentOS 6.4
X86_64位系统

如何定义主从资源?

  4)提供web服务的地址为192.168.19.150,即VIP;

2.软件环境

主从资源是一类特殊的克隆资源;

实验软件:corosync-0:1.4.7-1.el6 pacemaker-0:1.1.12-4.el6 crmsh-2.1-1.6 drbd-8.4.4 php-5.6.11 mariadb-10.0.20 tengine-2.1.0

  • corosync-1.4.1-15.el6_4.1.x86_64
  • pacemaker-1.1.8-7.el6.x86_64
  • crmsh-1.2.6-0.rc2.2.1.x86_64
  • kmod-drbd84-8.4.2-1.el6_3.elrepo.x86_64
  • drbd84-utils-8.4.2-1.el6.elrepo.x86_64
  • mysql-5.5.33

要成为克隆资源,首先必须定义成主资源;

软件下载

3.拓扑环境

因此,要想定义成主从资源,首先必须定义成主资源。为保证成为主资源的同时,drdb设备可以同时挂载,还需定义Filesystem

——————————————分割线——————————————

图片 1

————————————–分割线

 

相关阅读

Linux 高可用(HA)集群之DRBD详解
http://www.linuxidc.com/Linux/2013-08/89035.htm

DRBD中文应用指南 PDF
http://www.linuxidc.com/Linux/2013-08/89034.htm

CentOS
6.3下DRBD安装配置笔记
http://www.linuxidc.com/Linux/2013-06/85600.htm

基于DRBD+Corosync实现高可用MySQL
http://www.linuxidc.com/Linux/2013-05/84471.htm

CentOS 6.4下DRBD 安装配置
http://www.linuxidc.com/Linux/2013-09/90536.htm

免费下载地址在

4.配置各节点互相解析
node1:
[root@node1 ~]# uname -n 
node1.test.com 
[root@node1 ~]# cat /etc/hosts 
127.0.0.1  localhost localhost.localdomain localhost4
localhost4.localdomain4 
::1        localhost localhost.localdomain localhost6
localhost6.localdomain6 
192.168.1.201    node1.test.com    node1 
192.168.1.202    node2.test.com    node2

————————————–分割线

clone-max: 在集群中最多能运行多少份克隆资源,默认和集群中的节点数相同;

clone-node-max:每个节点上最多能运行多少份克隆资源,默认是1;

notify:当成功启动或关闭一份克隆资源,要不要通知给其它的克隆资源,可用值为false,true;默认值是true;

globally-unique:
是否为集群中各节点的克隆资源取一个全局唯一名称,用来描述不同的功能,默认为true;

ordered:克隆资源是否按顺序(order)启动,而非一起(parallel)启动,可用值为false,true;默认值是true;

interleave:当对端的实例有了interleave,就可以改变克隆资源或主资源中的顺序约束;

 

master-max:最多有多少份克隆资源可以被定义成主资源,默认是1;

master-node-max:每个节点上最多有多少份克隆资源可以被提升为主资源,默认是1;

检查node1,node2是否安装了corosync,pacemaker,crmsh,pssh

[root@node1 ~]# rpm -q corosync pacemaker crmsh pssh

corosync-1.4.1-17.el6.x86_64

pacemaker-1.1.10-14.el6.x86_64

crmsh-1.2.6-4.el6.x86_64

pssh-2.3.1-2.el6.x86_64

[root@node1 ~]# ssh node2.ja.com ‘rpm -q corosync pacemaker crmsh
pssh’

corosync-1.4.1-17.el6.x86_64

pacemaker-1.1.10-14.el6.x86_64

crmsh-1.2.6-4.el6.x86_64

pssh-2.3.1-2.el6.x86_64

 

若未安装,则执行yum -y install corosync pacemaker crmsh pssh

 

一旦配置成集群资源,就不能让他们自动启动

[root@node1 ~]# umount /drbd/

[root@node1 ~]# drbdadm secondary mystore1

[root@node1 ~]# service drbd stop

[root@node1 ~]# chkconfig drbd off

[root@node1 ~]# ssh node2.ja.com ‘service drbd stop;chkconfig drbd
off’

 

 

 

[root@node1 ~]# cd /etc/corosync/

[root@node1 corosync]# cp corosync.conf.example corosync.conf

 

corosync.conf修改后的内容如下所示:

[root@node1 corosync]# egrep -v ‘^$|^[[:space:]]*#’
/etc/corosync/corosync.conf

compatibility: whitetank

totem {

version: 2

secauth: on

threads: 0

interface {

ringnumber: 0

bindnetaddr: 172.16.16.0

mcastaddr: 226.94.16.15

mcastport: 5405

ttl: 1

}

}

logging {

fileline: off

to_stderr: no

to_logfile: yes

to_syslog: no

logfile: /var/log/cluster/corosync.log

debug: off

timestamp: on

logger_subsys {

subsys: AMF

debug: off

}

}

amf {

mode: disabled

}

 

service {

name: pacemaker

ver:  0

}

aisexec {

user:  root

group: root

}

更多详情见请继续阅读下一页的精彩内容
http://www.linuxidc.com/Linux/2014-05/101304p2.htm

DRBD
的详细介绍
:请点这里
DRBD
的下载地址
:请点这里

图片 2

用户名与密码都是www.linuxidc.com

node2:
[root@node2 ~]# uname -n 
node2.test.com 
[root@node2 ~]# cat /etc/hosts 
127.0.0.1  localhost localhost.localdomain localhost4
localhost4.localdomain4 
::1        localhost localhost.localdomain localhost6
localhost6.localdomain6 
192.168.1.201    node1.test.com    node1 
192.168.1.202    node2.test.com    node2

具体下载目录在
/2015年资料/7月/25日/基于Corosync+Pacemaker+DRBD+LNMP实现Web服务器高可用集群/

5.配置各节点ssh互信
node1:
[root@node1 ~]# ssh-keygen  -t rsa -f ~/.ssh/id_rsa  -P ” 
[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2.test.com

下载方法见
http://www.linuxidc.com/Linux/2013-07/87684.htm

node2:
[root@node2 ~]# ssh-keygen  -t rsa -f ~/.ssh/id_rsa  -P ”
[root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1.test.com

——————————————分割线——————————————

6.配置各节点时间同步
node1:
[root@node1 ~]# ntpdate 202.120.2.101

注意事项:单主机操作会有标注,除此之外的是两台主机都要完成的

node2:
[root@node2 ~]# ntpdate 202.120.2.101

实验拓扑:

7.各节点关闭防火墙与SELinux
node1:
[root@node1 ~]# service iptables stop 
[root@node1 ~]# chkconfig iptables off 
[root@node1 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system. 
# SELINUX= can take one of these three values: 
#    enforcing – SELinux security policy is enforced. 
#    permissive – SELinux prints warnings instead of enforcing. 
#    disabled – No SELinux policy is loaded. 
SELINUX=disabled

 图片 3

node2:
[root@node2 ~]# service iptables stop 
[root@node2 ~]# chkconfig iptables off 
[root@node2 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system. 
# SELINUX= can take one of these three values: 
#    enforcing – SELinux security policy is enforced. 
#    permissive – SELinux prints warnings instead of enforcing. 
#    disabled – No SELinux policy is loaded. 
SELINUX=disabled

MySQL+Corosync+Pacemaker+DRBD构建高可用MySQL
http://www.linuxidc.com/Linux/2013-09/90408.htm

8.各节点安装yum源
node1:
[root@node1 src]# wget

[root@node1 src]# rpm -ivh epel-release-6-8.noarch.rpm
warning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256Signature, key
ID 0608b895: NOKEY
Preparing…               
###########################################
[100%]
1:epel-release         
###########################################
[100%]
[root@node1 src]# rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
[root@node1 ~]# rpm -ivh

[root@node1 ~]# yum list

搭建基于Corosync+DRBD的高可用MySQL集群
http://www.linuxidc.com/Linux/2013-10/91386.htm

node2:
[root@node2 src]# wget

[root@node2 src]# rpm -ivh epel-release-6-8.noarch.rpm
warning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256Signature, key
ID 0608b895: NOKEY
Preparing…               
###########################################
[100%]
1:epel-release         
###########################################
[100%]
[root@node2 src]# rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
[root@node2 ~]# rpm -ivh

[root@node2 ~]# yum list

分别基于NFS服务和DRBD服务利用Corosync配置高可用集群
http://www.linuxidc.com/Linux/2013-09/90410.htm

三、Corosync
安装与配置(参考博文:http://www.linuxidc.com/Linux/2013-08/88733.htm )
1.安装Corosync
node1:
[root@node1 ~]# yum install -y corosync

Linux 高可用(HA)集群之Corosync详解
http://www.linuxidc.com/Linux/2013-08/88733.htm

node2:
[root@node2 ~]# yum install -y corosync

pacemaker + Corosync 搭建高可用集群
http://www.linuxidc.com/Linux/2013-06/85972.htm

2.配置Corosync(注,所有的配置说明我就不详细说明了,因为前面的博文全部讲解过)
[root@node1 ~]# cd /etc/corosync/ 
[root@node1 corosync]# ll 
总用量 16 
-rw-r–r– 1 root root  445 5月  15 05:09 corosync.conf.example 
-rw-r–r– 1 root root 1084 5月  15 05:09 corosync.conf.example.udpu 
drwxr-xr-x 2 root root 4096 5月  15 05:09 service.d 
drwxr-xr-x 2 root root 4096 5月  15 05:09 uidgid.d 
[root@node1 corosync]# cp corosync.conf.example corosync.conf 
[root@node1 corosync]# vim corosync.conf 
[root@node1 corosync]# cat corosync.conf 
# Please read the corosync.conf.5 manual page 
compatibility: whitetank
totem { 
    version: 2 
    secauth: on 
    threads: 0 
    interface { 
        ringnumber: 0 
        bindnetaddr: 192.168.1.0 
        mcastaddr: 226.94.10.10 
        mcastport: 5405 
        ttl: 1 
    } 
}
logging { 
    fileline: off 
    to_stderr: no 
    to_logfile: yes 
    to_syslog: no 
    logfile: /var/log/cluster/corosync.log 
    debug: off 
    timestamp: on 
    logger_subsys { 
        subsys: AMF 
        debug: off 
    } 
}
amf { 
    mode: disabled 
}
service { 
    ver: 0
    name: pacemaker

aisexec {   
    user: root
    group: root
}

Corosync+pacemaker+RA实现MySQL高可用
http://www.linuxidc.com/Linux/2012-08/67949.htm

3.生成密钥文件
[root@node1 corosync]# mv /dev/{random,random.bak} 
[root@node1 corosync]# ln -s /dev/urandom /dev/random 
[root@node1 corosync]# corosync-keygen   
Corosync Cluster Engine Authentication key generator. 
Gathering 1024 bits for key from /dev/random. 
Press keys on your keyboard to generate entropy. 
Writing corosync key to /etc/corosync/authkey.
[root@node1 corosync]# ll 
总用量 24 
-r——– 1 root root  128 8月  17 17:17 authkey 
-rw-r–r– 1 root root  544 8月  17 17:14 corosync.conf 
-rw-r–r– 1 root root  445 5月  15 05:09 corosync.conf.example 
-rw-r–r– 1 root root 1084 5月  15 05:09 corosync.conf.example.udpu 
drwxr-xr-x 2 root root 4096 5月  15 05:09 service.d 
drwxr-xr-x 2 root root 4096 5月  15 05:09 uidgid.d

Corosync部署MySQL+DRBD高可用服务 
 http://www.linuxidc.com/Linux/2014-07/104694.htm

4.将node1上配置文件复制到node2上
[root@node1 corosync]# scp authkey corosync.conf
node2:/etc/corosync/ 
authkey                                                                 
              100%  128    0.1KB/s  00:00 
corosync.conf                                                           
              100%  542    0.5KB/s  00:00

一、准备工作

好了,到这里corosync配置完成,下面我们配置pacemaker

  1.所有节点的主机名称和对应的IP地址解析服务可以正常工作,且每个节点的主机名称需要跟“uname
-n”命令的结果保持一致。因此,需要保证两个节点上的/etc/hosts文件均添加了下面的内容:

接下来请看第2页精彩内容:
http://www.linuxidc.com/Linux/2013-08/89036p2.htm

     图片 4

图片 5

  2.为了使得重新启动系统后仍能保持如上的主机名称,还分别需要在各节点执行类似如下的命令:

    coro1上:

1 sed -i 's@\(HOSTNAME=\).*@\1coro1@g'  /etc/sysconfig/network
2 hostname coro1

    coro2上:

1 sed -i 's@\(HOSTNAME=\).*@\1coro2@g'  /etc/sysconfig/network
2 hostname coro2

  3.设定两个节点可以基于密钥进行ssh通信,并测试:

    coro1上:

1 ssh-keygen -t rsa
2 ssh-copy-id -i ~/.ssh/id_rsa.pub root@coro2

    coro2上:

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@coro1

    图片 6

  4.两个节点时间必须同步:一般使用ntpdate进行操作,这里不再演示。

二、安装corosync和pacemaker并配置