【实验】corosync+pacemaker 搭建高可用集群

实验目的

使用corosync,体验高可用集群的使用

 

实验环境

VMWare 12.0

CentOS 6.10(三台)均设置host only

 

实验拓补

其中,

在CentOS A和B组成高可用集群,对外提供httpd服务。

CentOS Test主机用来访问服务,验证高可用特性。

VMnet1相当于交换机。

具体参数

VMWare虚拟交换机VMnet1:

从win10主机上查看VMnet1的参数: 

CentOS Test的eth0(修改配置脚本 /etc/sysconfig/network-scripts/ifcfg-eth0,内容如下)

1 DEVICE="eth0"
2 BOOTPROTO="static"
3 HWADDR="00:0C:29:F0:B8:F9"
4 IPADDR=192.168.64.128
5 NETMASK=255.255.255.0
6 ONBOOT="yes"

脚本生效方式:重启,或者service network restart

CentOS Test执行ifconfig的结果(仅供参考):

eth0      Link encap:Ethernet  HWaddr 00:0C:29:F0:B8:F9  
          inet addr:192.168.64.128  Bcast:192.168.64.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fef0:b8f9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1592 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1956 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:175828 (171.7 KiB)  TX bytes:174462 (170.3 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:960 (960.0 b)  TX bytes:960 (960.0 b)

CentOS A的eth2的配置(之所以不是eth0,是因为这个虚拟机拷贝自CentOS Test,并非重新创建,不过这个无关紧要)

DEVICE="eth2"
BOOTPROTO="static"
HWADDR="00:0C:29:BC:C2:B6"
IPADDR=192.168.64.11
NETMASK=255.255.255.0
ONBOOT="yes"

脚本生效方式:重启,或者service network restart

执行ifconfig查看到:

eth2      Link encap:Ethernet  HWaddr 00:0C:29:BC:C2:B6  
          inet addr:192.168.64.11  Bcast:192.168.64.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:febc:c2b6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:16725 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21993 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2367017 (2.2 MiB)  TX bytes:3073057 (2.9 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:5798 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5798 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:577869 (564.3 KiB)  TX bytes:577869 (564.3 KiB)

CentOS B的eth3的配置(之所以不是eth0,是因为这个虚拟机拷贝自CentOS A,并非重新创建,不过这个无关紧要)

DEVICE="eth3"
BOOTPROTO="static"
HWADDR="00:0C:29:1E:15:05"
IPADDR=192.168.64.12
NETMASK=255.255.255.0
ONBOOT="yes"

ifconfig可以看到:

eth3      Link encap:Ethernet  HWaddr 00:0C:29:1E:15:05  
          inet addr:192.168.64.12  Bcast:192.168.64.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe1e:1505/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21274 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22226 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2971438 (2.8 MiB)  TX bytes:3076462 (2.9 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:16178 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16178 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1586062 (1.5 MiB)  TX bytes:1586062 (1.5 MiB)

重要!! 

实验过程中,CentOS主机我都加了一张虚拟网卡,配置NAT,用于连接外网下载安装包。(host-only是上不了网的)。确认实验开始,不需要连接外网了,就把两张网卡删了。

 

实验步骤

安装必要的软件

CentOS A和CentOS B上面都要安装:

从网上找cluster的rpm安装包,通过yum的方式安装
cluster-glue
cluster-glue-libs

直接通过yum安装
corosync-1.2.7-1.1.el5.i386.rpm
corosynclib-1.2.7-1.1.el5.i386.rpm
libesmtp-1.0.4-5.el5.i386.rpm
openais-1.1.3-1.6.el5.i386.rpm
openaislib-1.1.3-1.6.el5.i386.rpm
pacemaker-1.0.11-1.2.el5.i386.rpm
pacemaker-libs-1.0.11-1.2.el5.i386.rpm
resource-agents-1.0.4-1.1.el5.i386.rpm
perl-TimeDate-1.16-5.el5.noarch.rpm
httpd

安装heartbeat比较麻烦,因为CentOS 6.10 默认没有对应的安装包。
wget http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm 
yum install heartbeat*

安装crmsh(也可以用pcs)比较麻烦,CentOS没有相应的源。
cd /etc/yum.repos.d/   
wget http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/network:ha-clustering:Stable.repo
yum -y install crmsh

 

 必要的前置准备

 

时间同步(很简单,不赘述)

关闭iptable(很简单,不赘述)

切换到root用户(我的CentOS普通用户很不方便,总是需要sudo;而且用普通用户在node1上面启动corosync,会出现两个node1,这个问题暂时不管了)

 

配置corosync双机互信 (参考[1])

开启corosync,代理httpd资源(参考[1])

 

以下步骤确保CentOS Test主机能通过192.168.64.1访问httpd资源

确保WebIP和WebSite运行于相同节点:colocation website-with-ip INFINITY: WebSite WebIP

确保WebIP先于WebSite启动:order httpd-after-ip mandatory: WebIP WebSite

 

以下步骤确保node1关闭之后,node2能接管资源,CentOS Test依然访问httpd资源

由于票数是偶数,当心跳出现问题(脑裂)时,两个节点都将达不到法定票数,默认quorum策略会关闭集群服务,于是CentOS Test无法访问192.168.64.1

为了避免这种情况,

可以配置忽略参数:property no-quorum-policy=ignore

  

以下步骤防止​资​源​在​节​点​恢​复​后​频繁切换​

 rsc_defaults resource-stickiness=100  ##设置资源粘性为100

 

测试

crm status查看,可见节点切换到了node2 

在测试主机CentOS Test上面访问 192.168.64.1。

---------------------

在node2上面将node1的corosync关掉,crm status查看,可见节点切换到了node2

在测试主机CentOS Test上面依然能访问 192.168.64.1。

  

延申

ip可以不是192.68.64.1(正好是交换机VMnet的ip)吗?

可以把web资源放在另一台服务器上吗(利用NFS)? https://blog.51cto.com/nmshuishui/1399811

 

参考

https://www.linuxidc.com/Linux/2011-12/49612p3.htm

https://blog.csdn.net/tantexian/article/details/44945281

posted @ 2019-08-01 00:38  小明583  阅读(458)  评论(0)    收藏  举报