大纲
一、环境准备
二、拓扑准备
三、前提条件
四、安装相关软件
五、配置 heartbeat(crm 资源管理器)
六、crm资源管理器
七、crm图形界面配置详解
八、高可用集群架构回顾
九、crm配置资源
十、crm资源约束
十一、crm资源配置总结
一、环境准备
1.操作系统
CentOS 5.5 X86_64 最小化安装
说明:一般Heartbeat v2.x 都安装在CentOS 5.x系列中,而CentOS 6.x中都用Heartbeat v3.x。
2.相关软件(软件下载)
Heartbeat 2.1.4
Heartbeat-gui 2.1.4
Apache 2.2.3
Xmanager Enterprise 4
3.配置epel YUM源(两节点都要配置)
node1,node2:
1
2
3
4
5
6
7
|
[root@node src]
# wget http://download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
[root@node src]
# rpm -ivh epel-release-5-4.noarch.rpm
warning: epel-release-5-4.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 217521f6
Preparing...
########################################### [100%]
1:epel-release
########################################### [100%]
[root@node src]
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
[root@node src]
# yum list
|
4.关闭防火墙与SELinux (两节点都要配置)
node1,node2:
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@node ~]
# service iptables stop
[root@node ~]
# vim /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 - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
|
二、拓扑准备
说明:有两个节点分别为node1与node2,VIP为192.168.1.200,测试机是一台Windows7主机,NFS服务器为192.168.1.208
三、前提条件
1.节点之间主机名互相解析
node1,node2:
1
2
3
4
5
6
7
|
[root@node ~]
# vim /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.1.201 node1.
test
.com node1
192.168.1.202 node2.
test
.com node2
|
2.节点之间时间得同步
node1,node2:
1
2
3
4
|
[root@node ~]
# yum -y install ntp
[root@node ~]
# ntp 210.72.145.44
[root@node ~]
# date
2013年 08月 07日 星期三 16:06:30 CST
|
3.节点之间配置SSH互信
node1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[root@node1 ~]
# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
[root@node1 ~]
# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
[root@node1 ~]
# ssh node2
[root@node2 ~]
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:EA:CE:79
inet addr:192.168.1.202 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feea:ce79
/64
Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2591 errors:0 dropped:0 overruns:0 frame:0
TX packets:1931 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:556754 (543.7 KiB) TX bytes:465692 (454.7 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:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)
|
node2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[root@node2 ~]
# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
[root@node2 ~]
# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
[root@node2 ~]
# ssh node1
[root@node1 ~]
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:23:76:4D
inet addr:192.168.1.201 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe23:764d
/64
Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4603 errors:0 dropped:0 overruns:0 frame:0
TX packets:3914 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:771007 (752.9 KiB) TX bytes:728391 (711.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:16436 Metric:1
RX packets:32 errors:0 dropped:0 overruns:0 frame:0
TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2672 (2.6 KiB) TX bytes:2672 (2.6 KiB)
|
四、安装相关软件
1、客户端软件(Windows 7测试机)
重点说明:安装Xmanager Enterprise 4,如下图
注:得安装Xmanager Enterprise 4 所有套件,而不是只安装xshell软件。不然后面的crm图形界面无法打开的,切记!
2.安装heartbeat
heartbeat 安装组件说明
heartbeat 核心组件 *
heartbeat-devel 开发包
heartbeat-gui 图形管理接口 * (这个必须安装,这篇博文重点讲解图形资源管理器)
heartbeat-ldirectord 为lvs高可用提供规则自动生成及后端realserver健康状态检查的组件
heartbeat-pils 装载库插件接口 *
heartbeat-stonith 爆头接口 *
node1,node2:
1
|
[root@node ~]
# yum -y install heartbeat*
|
3.安装httpd (在这篇博文中我们还介绍Web的高可用,因为比较简单容易理解,下面的博文中我们会讲解mysql高可用)
node1:
1
2
3
4
|
[root@node1~]
# yum install -y httpd
[root@node1 ~]
# service httpd start
启动 httpd: [确定]
[root@node1 ~]
# echo "<h1>node1.test.com</h1>" > /var/www/html/index.html
|
测试
1
2
3
4
5
|
[root@node1 ha.d]
# service httpd stop
停止 httpd: [确定]
[root@node1 ha.d]
# chkconfig httpd off
[root@node1 ha.d]
# chkconfig httpd --list
httpd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
|
说明:测试完成后关闭服务,并让其开机不启动(注,httpd由heartbeat管理)
node2:
1
2
3
4
|
[root@node2~]
# yum install -y httpd
[root@node2 ~]
# service httpd start
启动 httpd: [确定]
[root@node2 ~]
# echo "<h1>node2.test.com</h1>" > /var/www/html/index.html
|
测试
1
2
3
4
5
|
[root@node2 ha.d]
# service httpd stop
停止 httpd: [确定]
[root@node2 ha.d]
# chkconfig httpd off
[root@node2 ha.d]
# chkconfig httpd --list
httpd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
|
说明:测试完成后关闭服务,并让其开机不启动(注,httpd由heartbeat管理)
五、配置 heartbeat(crm 资源管理器)
1.配置文件说明
1
2
3
|
[root@node1 ~]
# cd /etc/ha.d/
[root@node1 ha.d]
# ls
harc rc.d README.config resource.d shellfuncs shellfuncs.rpmsave、
|
说明:安装好的heartbeat默认是没有配置文件的,但提供了配置文件样本
1
2
3
4
5
6
7
|
[root@node1 ha.d]
# cd /usr/share/doc/heartbeat-2.1.4/
[root@node1 heartbeat-2.1.4]
# ls
apphbd.cf COPYING faqntips.txt HardwareGuide.html hb_report.txt README
rsync
.txt
authkeys COPYING.LGPL GettingStarted.html HardwareGuide.txt heartbeat_api.html Requirements.html startstop
AUTHORS DirectoryMap.txt GettingStarted.txt haresources heartbeat_api.txt Requirements.txt
ChangeLog faqntips.html ha.cf hb_report.html logd.cf
rsync
.html
[root@node1 heartbeat-2.1.4]
# cp authkeys ha.cf /etc/ha.d/
|
说明:其中有两个配置文件是我们需要的分别为,authkeys、ha.cf
authkeys #是节点之间的认证key文件,我们不能让什么服务器都加入集群中来,加入集群中的节点都是需要认证的
ha.cf #heartbeat的主配置文件
2.配置authkeys文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
[root@node1 ha.d]
# dd if=/dev/random bs=512count=1| openssl md5 #生成密钥随机数
0+1records
in
0+1records out
128bytes (128B) copied, 0.000214seconds, 598kB
/s
a4d20b0dd3d5e35e0f87ce4266d1dd64
[root@node1 ha.d]
# vim authkeys
#auth 1
#1 crc
#2 sha1 HI!
#3 md5 Hello!
auth 1
1 md5 a4d20b0dd3d5e35e0f87ce4266d1dd64
[root@node1 ha.d]
# chmod 600 authkeys #修改密钥文件的权限为600
[root@node1 ha.d]
# ll
总计 56
-rw------- 1 root root 691 08-07 16:45 authkeys
-rw-r--r-- 1 root root 10539 08-07 16:42 ha.cf
-rwxr-xr-x 1 root root 745 2010-03-21 harc
drwxr-xr-x 2 root root 4096 08-07 16:21 rc.d
-rw-r--r-- 1 root root 692 2010-03-21 README.config
drwxr-xr-x 2 root root 4096 08-07 16:21 resource.d
-rw-r--r-- 1 root root 7862 2010-03-21 shellfuncs
-rw-r--r-- 1 root root 7862 2010-03-21 shellfuncs.rpmsave
|
3.配置ha.cf文件
1
2
3
4
5
6
7
8
9
|
[root@node1 ha.d]
# vim ha.cf
主要修改三处(其它都可以默认):
(1).修改心跳信息的传播方式(这里是组播)
mcast eth0 225.100.100.100 694 1 0
(2).配置集群中的节点数
node node1.
test
.com
node node2.
test
.com
(3).启用crm资源管理器
crm respawn
|
4.复制以上将个配置文件到node2上
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[root@node1 ha.d]
# scp authkeys ha.cf haresources node2:/etc/ha.d/
authkeys 100% 691 0.7KB
/s00
:00
ha.cf 100% 10KB 10.4KB
/s00
:00
[root@node1 ha.d]
# ssh node2
Last login: Wed Aug 7 16:13:44 2013 from node1.
test
.com
[root@node2 ~]
# ll /etc/ha.d/
总计 56
-rw------- 1 root root 691 08-07 17:12 authkeys
-rw-r--r-- 1 root root 10614 08-07 17:12 ha.cf
-rwxr-xr-x 1 root root 745 2010-03-21 harc
drwxr-xr-x 2 root root 4096 08-07 16:24 rc.d
-rw-r--r-- 1 root root 692 2010-03-21 README.config
drwxr-xr-x 2 root root 4096 08-07 16:24 resource.d
-rw-r--r-- 1 root root 7862 2010-03-21 shellfuncs
-rw-r--r-- 1 root root 7862 2010-03-21 shellfuncs.rpmsave
|
5.启动node1与node2
1
2
3
4
5
6
7
8
|
[root@node1 ha.d]
# ssh node2 "service heartbeat start"
Strting High-Availability services:
[确定]
logd is already stopped
[root@node1 ha.d]
# service heartbeat start
Starting High-Availability services:
2013
/08/07_17
:19:22 INFO: Resource is stopped
[确定]
|
6.查看一下端口
node1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[root@node1 ~]
# netstat -ntulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID
/Program
name
tcp 0 0 0.0.0.0:615 0.0.0.0:* LISTEN 2553
/rpc
.statd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2514
/portmap
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 2848
/cupsd
tcp 0 0 0.0.0.0:5560 0.0.0.0:* LISTEN 4592
/mgmtd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 3009
/sendmail
: acce
tcp 0 0 :::22 :::* LISTEN 2835
/sshd
udp 0 0 225.100.100.100:694 0.0.0.0:* 4582
/heartbeat
: wri
udp 0 0 0.0.0.0:609 0.0.0.0:* 2553
/rpc
.statd
udp 0 0 0.0.0.0:612 0.0.0.0:* 2553
/rpc
.statd
udp 0 0 0.0.0.0:5353 0.0.0.0:* 3138
/avahi-daemon
:
udp 0 0 0.0.0.0:41709 0.0.0.0:* 4582
/heartbeat
: wri
udp 0 0 0.0.0.0:111 0.0.0.0:* 2514
/portmap
udp 0 0 0.0.0.0:631 0.0.0.0:* 2848
/cupsd
udp 0 0 0.0.0.0:53247 0.0.0.0:* 3138
/avahi-daemon
:
udp 0 0 :::50187 :::* 3138
/avahi-daemon
:
udp 0 0 :::5353 :::* 3138
/avahi-daemon
:
|
node2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[root@node2 ~]
# netstat -ntulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID
/Program
name
tcp 0 0 0.0.0.0:618 0.0.0.0:* LISTEN 2556
/rpc
.statd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2517
/portmap
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 2852
/cupsd
tcp 0 0 0.0.0.0:5560 0.0.0.0:* LISTEN 3718
/mgmtd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 3014
/sendmail
: acce
tcp 0 0 :::22 :::* LISTEN 2839
/sshd
udp 0 0 0.0.0.0:50222 0.0.0.0:* 3143
/avahi-daemon
:
udp 0 0 225.100.100.100:694 0.0.0.0:* 3708
/heartbeat
: wri
udp 0 0 0.0.0.0:41152 0.0.0.0:* 3708
/heartbeat
: wri
udp 0 0 0.0.0.0:612 0.0.0.0:* 2556
/rpc
.statd
udp 0 0 0.0.0.0:615 0.0.0.0:* 2556
/rpc
.statd
udp 0 0 0.0.0.0:5353 0.0.0.0:* 3143
/avahi-daemon
:
udp 0 0 0.0.0.0:111 0.0.0.0:* 2517
/portmap
udp 0 0 0.0.0.0:631 0.0.0.0:* 2852
/cupsd
udp 0 0 :::44582 :::* 3143
/avahi-daemon
:
udp 0 0 :::5353 :::* 3143
/avahi-daemon
:
|
说明:从上面的端口我们可以看出,我们已经成功的启动了crm资源管理器,crm资源管理器的默认端口是5560。
7.查看一下集群状态
node1,node2:
1
|
[root@node ~]
# crm_mon
|
说明:从上面的集群状态中我们可以看到,集群中有两个节点,分别为node1和node2状态是online全部在线,我们还可以看到,DC是node2。两个节点的资源是0,说明在我们这个集群中还没有资源。下面我们来详细的说明一下!
六、crm资源管理器详解
1.haresource 资源管理器
haresource 是heartbeat v1 内置的资源管理器,功能比较简单,不支持图形化管理。到了heartbeat v2时,有了更加强大的资源管理器crm,但同时为了兼容heartbeat v1,在heartbeat v2中同时有haresource与crm资源管理器。在上一篇博文中我们简介了haresource资源管理器(http://freeloda.blog.51cto.com/2033581/1266552),在这一篇博文中我们主要讲解,crm资源管理器。
2. crm 资源管理器
说明:crm资源管理器是不兼容haresource资源管理器的配置文件haresource,所以我们在/etc/ha.d/haresources配置的资源都是不能使用的,所以我们得重新配置。下面我们说一下,crm资源管理器的配置方式。
(1).crm配置方式
命令行配置:
1
2
3
|
[root@node1 ~]
# crm
crmadmin crm_diff crm_master crm_resource crm_standby crm_verify
crm_attribute crm_failcount crm_mon crm_sh crm_uuid
|
图形界面配置:
1
|
[root@node1 ~]
# hb_gui
|
注:本文我们主要讲解,图形界面的配置方式,在下一篇博文中我们主要讲解命令行的配置方式 。(heartbeat v2中的命令行配置方式,功能还不够强大,到了heartbeat v3中crm命令行配置方式,非常的强大,到时我们就不用图形界面的方式配置,全部用命令行方式配置)
(2).crm配置文件cib
路径:
1
2
3
4
5
6
7
|
[root@node1 ~]
# cd /var/lib/heartbeat/crm/
[root@node1 crm]
# ll
总计 16
-rw------- 2 hacluster haclient 885 08-10 10:34 cib.xml
-rw------- 2 hacluster haclient 885 08-10 10:34 cib.xml.last
-rw-r--r-- 2 hacluster haclient 32 08-10 10:34 cib.xml.sig
-rw-r--r-- 2 hacluster haclient 32 08-10 10:34 cib.xml.sig.last
|
查看:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[root@node1 crm]
# vim cib.xml
<cib generated=
"true"
admin_epoch=
"0"
have_quorum=
"true"
ignore_dtd=
"false"
num_peers=
"2"
ccm_transition=
"2"
cib_feature_revision=
"2.0"
crm_feature_set=
"2.0"
epoch=
"3"
dc_uuid=
"4a0c6580-3e21-4523-a3bb-a921b3f487c0"
num_updates=
"4"
cib-last-written=
"Sat Aug 10 10:34:59 2013"
>
<configuration>
<crm_config>
<cluster_property_set
id
=
"cib-bootstrap-options"
>
<attributes>
<nvpair
id
=
"cib-bootstrap-options-dc-version"
name=
"dc-version"
value=
"2.1.4-node: aa909246edb386137b986c5773344b98c6969999"
/>
<
/attributes
>
<
/cluster_property_set
>
<
/crm_config
>
<nodes>
<node
id
=
"4a0c6580-3e21-4523-a3bb-a921b3f487c0"
uname
=
"node2.test.com"
type
=
"normal"
/>
<node
id
=
"d1437638-90d9-4bbb-84fc-c897d8f8d6a2"
uname
=
"node1.test.com"
type
=
"normal"
/>
<
/nodes
>
<resources/>
<constraints/>
<
/configuration
>
<
/cib
>
|
说明:大家可以看到cib(Cluster Information Base 集群信息库)配置文件是xml格式的,对于不懂xml的博文来说,很难配置,还好有图形配置方式,但是看懂应该不难。
(3).配置crm
说明:要使用crm资源管理器,我们得配置一下用户名和密码,heartbeat安装好以后会默认给我新建一个hacluster用户,用来管理集群资源的,下面我们先来给hacluster配置一下密码hacluster,即用户名为hacluster,密码也为hacluster。(注,crm配置文件在DC上才会生效)
1
2
3
4
5
6
7
8
9
10
11
|
[root@node1 crm]
# tail /etc/passwd
rpcuser:x:29:29:RPC Service User:
/var/lib/nfs
:
/sbin/nologin
nfsnobody:x:4294967294:4294967294:Anonymous NFS User:
/var/lib/nfs
:
/sbin/nologin
dbus:x:81:81:System message bus:/:
/sbin/nologin
)
avahi:x:70:70:Avahi daemon:/:
/sbin/nologin
xfs:x:43:43:X Font Server:
/etc/X11/fs
:
/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:
/sbin/nologin
avahi-autoipd:x:100:104:avahi-autoipd:
/var/lib/avahi-autoipd
:
/sbin/nologin
hacluster:x:101:105:heartbeat user:
/var/lib/heartbeat/cores/hacluster
:
/sbin/nologin
apache:x:48:48:Apache:
/var/www
:
/sbin/nologin
ntp:x:38:38::
/etc/ntp
:
/sbin/nologin
|
node1:
1
2
3
4
5
6
|
[root@node1 crm]
# passwd hacluster
Changing password
for
user hacluster.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd
: all authentication tokens updated successfully.
|
node2:
1
2
3
4
5
6
|
[root@node2 ~]
# passwd hacluster
Changing password
for
user hacluster.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd
: all authentication tokens updated successfully.
|
(4).启动crm管理器
1
2
3
4
5
6
7
8
9
|
[root@node1 ~]
# hb_gui
Traceback (most recent call last):
File
"/usr/bin/hb_gui"
, line 41,
in
?
import
gtk, gtk.glade, gobject
File
"/usr/lib64/python2.4/site-packages/gtk-2.0/gtk/__init__.py"
, line 76,
in
?
_init()
File
"/usr/lib64/python2.4/site-packages/gtk-2.0/gtk/__init__.py"
, line 64,
in
_init
_gtk.init_check()
RuntimeError: could not
open
display
|
在xshell启动hb_gui出错下面我们来说一下,解决方法
具体步骤如下:File �C> Properties �C> SSH �C> Tunneling �C> Forward X11 connections to: Xmanager,然后重新启动一下xshell,再进行测试。
1
|
[root@node1 ~]
# hb_gui &
|
说明:这下我们打开了,crm图形配置界面,下面我们就进行资源配置!在我们说资源配置之间前我们还得补充一下知识点DC,我们上面多次提到。
(5).集群中的DC
注:从上面的图中我们可以看到,此集群中的DC是node2,那么什么是DC呢?下面我们就来详细说明一下。
Consensus Cluster Membership在集群服务使用选举机制,允许集群节点决定指定的协调器(Designated Cooridnator-DC),它来帮助建立仲裁,管理集群节点成员关系和资源分配。DC维护集群的状态和管理策略。其他的节点必须转发状态改变请求到DC中处理。Heartbeat服务检查节点和连接状态来决定失效是否发生,集群事件日志服务(ha-logd)提供集群套件中所有服务的日志功能。能过上面的概念我们基本了解了什么是DC。简单来说,在多节点集群中要有个“头头”就是指定的“协调员”DC,就是一个集群中每个几点上都有一个相当于选举票的权值,而这个权值就是根据服务器的性能进行手动分配的,性能好的可以分配的大点,而所有的其他节点都要听从DC的调度,在一个集群中只有选票达到50%以上才能称为集群系统。如果出现故障了,就会有一个故障转移(failover)点,设置不同的优先级,可以使故障按照优先级的高低进行转移,选择一个性能好的服务器来充当DC,所以在此 集群节点中node2是DC。
七、crm图形界面配置详解
1.登录DC节点
说明:一般我们用图形界面配置资源时,都连接到DC节点,在DC节点配置完成所有资源后,DC节点会自动同步资源到其它节点中。
1
2
|
[root@node1 ~]
# hb_gui&
[1] 5565
|
(1).点击连接 �C>选择登录
(2).输入DC节点名称或IP地址,并输入密码,点击确定
(4).登录后默认显示界面
2.配置界面的简单说明
(1).HA集群的基本信息
说明:在右边面板中显示了,此集群的一些基本信息,如heartbeat版本,端口号,心跳信息,警报信信息等。
(2).HA集群的全局配置
说明:重点说明的是前面5 个,其它的大家看一下,了解就行
节点数无效策略,当集群中有节点故障时采取的策略,默认是stop,当集群有节点故障时的策略是停止此节点上的服务。
对称策略,当某节点故障时,可以转移到其它任意节点上
启用Stonith,当有Stonith设备时可以勾选此项,我们这里没有Stonith设备所以没有勾选
Stonith操作,默认是reboot,意思是当有节点故障时默认策略是重启
缺省资源粘黏性,默认为0,意思是资源可以在任意节点中
(3).HA集群的高级配置
说明:这个配置我也不过多讲解,这就是设置为中文的好处,大家都认识字,自己看看了解一下就行,我们这里选择默认就行。
(4).DC节点属性
说明:此集群的DC节点是node2,从上图中可以看出运行正常
(5).node1节点的属性
(6).资源
说明:可以看出此集群中没有任何资源,其实说白了,资源就是各种服务,我们可以点击上面的加号按钮进行增加资源,关于资源的类型我们下面将详细说明。
(7).资源约束
说明:限制条件是指资源的各种约束,下面我们将详细说明资源的约束。
八、高可用集群架构回顾
说明:在上两篇博文(Linux 高可用(HA)集群基本概念详解http://freeloda.blog.51cto.com/2033581/1265304,Linux 高可用(HA)集群之Heartbeat详解http://freeloda.blog.51cto.com/2033581/1265808)中我详细的说明了高用户集群的三层架构,包括Messaging Layer(群集信息层),CRM(资源管理层)、RA(资源代理层)
,下面我们对RA(资源代理层),进行一些相关知识补充,就是和本篇博文相关的知识占点。
1.Resource Agent Type(资源代理类型)(注,简单说资源就是服务,如httpd、mysqld、nfs等)
Legacy(传统) heartbeat v1 RA
LSB (/etc/rc.d/init.d/*)
OCF (Open Cluster Framework) 开放式集群框架
pacemaker 版本
linbit (drbd)版本
STONITH(硬件)
PDU Power Distribution Units (电源交换机)
UPS (不间断电源)
Blade Power Control Devices 刀片服务器的电源设备
Light-out Devices 轻量级的管理设备(IBM HP Dell 管理模块)
Testing Devices 测试性设备 ssh metaware(手动)
说明:大家可以看到,我们管理的资源类型主要有四种,第一种是传统的heartbeat v1的资源,就是我们上面所讲的/etc/ha.d/haresource里面的内容,第二种是LSB资源就是遵守Linux标准库的资源,在/etc/rc.d/init.d/*下的所有脚本,包括我们非常熟悉的httpd,mysqld,nfs等都是LSB资源,第三种是OCF资源,是在LSB基础上开发资源,LSB资源有个缺点就是不容易监控,所以有的公司就在此基础上开发了新的资源,遵守OCF构架,比LSB资源更加好用,如pacemaker提供商、linbit提供商,他们都有自己的OCF资源。第四种,就是我们熟悉的STONITH设备,它也是一种资源。
2.Resource Classes(资源类别)
Primitive(native):主资源,只能运行在一个节点,如DC
clone:克隆资源,主资源克隆N份 如,STONITH
group:组资源,资源归类 如,vip httpd filesystem
master/slave:克隆类资源 drbd
3.资源粘性
资源粘性(资源与节点倾向性,通过服务器的性能来区分),也就是说资源对某个节点依赖程度,通过score(分数)定义,某个节点的分数越高,资源就更倾向于此节点
4.资源约束(资源间的倾向性)
(1).位置约束(Location):资源对节点倾向程度,通过score(分数)定义(通过服务器的性能来区分)
正值:倾向于此节点
负值:倾向逃离此节点
说明:通常可以和资源粘性一起使用来决定资源在某个节点上案例如下,此资源肯定会在node2上
node1 资源粘性 �C>100 位置约束 �C>200
node2 资源粘性 �C>100 位置约束 �C>inf(正无穷)
(2).顺序约束(Order):定义资源启动或关闭时的次序
vip,ipvs
ipvs->vip
说明:在做lvs高可用集群中,我们可以定义vip与lvs的启动顺序。
(3).排列约束(Coloation):资源是否能够运行同一节点,资源间的依赖性,通过score(分数)定义
正值:可以在一起
负值:不能在一起
说明:在做web高可用集群时,我们定义httpd与filesystem(NFS)是否运行同一个节点中。
5.资源隔离
目的:资源隔离只有一个目的,那就是防止脑裂,脑裂带来的后果是抢占共享存储,导致文件损坏是我们最不想看到的,所以得有资源隔离,当集群中某节点故障时我们采取的措施,一种可以是直接“爆头”,另一种就是阻止故障节点不能访问共享存储。
(1).节点级别
STONITH(爆头)
(2).资源级别
控制节点能否访问资源(FC Switch)