请问在centos没有可用软件包6下做高可用群集遇到的问题

MySQL高可用读写分离集群
MySQL高可用读写分离集群
MySQL源码编译安装(CentOS-6.6+MySQL-5.6)
MySQL主从复制的配置(CentOS-6.6+MySQL-5.6)
MyCat在MySQL主从复制基础上实现读写分离-01
MyCat在MySQL主从复制基础上实现读写分离-02
MyCat集群部署(HAProxy+MyCat)
MyCat高可用负载均衡集群实现(HAProxy+Keepalived+MyCat)
MySQL高可用读写分离集群
原价:¥399
难度:高级
学习人数: 535
课程讲师:吴水成(水到渠成)
MySQL源码编译安装(CentOS-6.6+MySQL-5.6)
MySQL主从复制的配置(CentOS-6.6+MySQL-5.6)
MyCat在MySQL主从复制基础上实现读写分离-01
MyCat在MySQL主从复制基础上实现读写分离-02
MyCat集群部署(HAProxy+MyCat)
MyCat高可用负载均衡集群实现(HAProxy+Keepalived+MyCat)
高可用读写分离集群:HAproxy + MyCat + MySQL
本课程属于教程的子课程!
MySQL源码编译安装(CentOS-6.6+MySQL-5.6)
MySQL主从复制的配置(CentOS-6.6+MySQL-5.6)
MyCat在MySQL主从复制基础上实现读写分离-01
MyCat在MySQL主从复制基础上实现读写分离-02
MyCat集群部署(HAProxy+MyCat)
MyCat高可用负载均衡集群实现(HAProxy+Keepalived+MyCat)
您还没有登录!请先
相关课程文档
Dubbo视频教程--第46节:MySQL源码编译安装(CentOS-6
Dubbo视频教程--第48节:MyCat在MySQL主从复制基础上实现读写分离
Dubbo视频教程--第49节:MyCat集群部署(HAProxy+MyCat)
Dubbo视频教程--第50节:MyCat高可用负载均衡集群实现(HAProxy+Keepalived+MyCat)
友情链接:
没有账号?
注册成功,激活邮件已发送至您的邮箱请注意查收并激活帐号。
如未收到激活邮件,请
发送验证码
我已经认真阅读并同意&CentOS6.5 heartbeat高可用集群的详解及工作流程
秒后自动跳转到登录页
快捷登录:
举报类型:
不规范:上传重复资源
不规范:标题与实际内容不符
不规范:资源无法下载或使用
其他不规范行为
违规:资源涉及侵权
违规:含有危害国家安全等内容
违规:含有反动/色情等内容
违规:广告内容
详细原因:
任何违反下载中心规定的资源,欢迎Down友监督举报,第一举报人可获5-10下载豆奖励。
视频课程推荐
CentOS6.5 heartbeat高可用集群的详解及工作流程
上传时间:
技术分类:
资源评价:
(7位用户参与评价)
已被下载&53&次
CentOS6.5 heartbeat高可用集群的详解及工作流程
本资料共包含以下附件:
CentOS6.5 heartbeat高可用集群的详解及工作流程.docx
51CTO下载中心常见问题:
1.如何获得下载豆?
1)上传资料
2)评论资料
3)每天在首页签到领取
4)购买VIP会员服务,无需下载豆下载资源
5)更多途径:点击此处
2.如何删除自己的资料?
下载资料意味着您已同意遵守以下协议:
1.资料的所有权益归上传用户所有
2.未经权益所有人同意,不得将资料中的内容挪作商业或盈利用途
3.51CTO下载中心仅提供资料交流平台,并不对任何资料负责
4.本站资料中如有侵权或不适当内容,请邮件与我们联系()
5.本站不保证资源的准确性、安全性和完整性, 同时也不承担用户因使用这些资料对自己和他人造成任何形式的伤害或损失
相关专题推荐
本专题为电脑报随书视频——《黑客入
本专题精心收录思科各类网络数通设备
本专题为CISCO公司内部网络技术培训视
马哥教育是从事Linux运维、系统、架构
数字监控系统可实现数字影像监控以及
本专题精心收录华为各类网络数通设备
本专题为学习黑客技术朋友们提供的新
Linux Shell命令行及脚本编程实例详解
一个网站如果能够从支撑100用户并发到
收集、创作自动化运维经典文档,如果
意见或建议:
联系方式:
您已提交成功!感谢您的宝贵意见,我们会尽快处理1206人阅读
高可用HA(11)
1)本配置共有两个测试节点,分别和,相的IP地址分别为172.16.100.11和172.16.100.12;
2)集群服务为apache的httpd服务;
3)提供web服务的地址为172.16.100.1;
4)系统为rhel5.4
1、准备工作
为了配置一台Linux主机成为HA的节点,通常需要做出如下的准备工作:
注意:首先要保证两台server的系统时间一致
1)所有节点的主机名称和对应的IP地址解析服务可以正常工作,且每个节点的主机名称需要跟&uname -n“命令的结果保持一致;因此,需要保证两个节点上的/etc/hosts文件均为下面的内容:
172.16.100.11
172.16.100.12
为了使得重新启动系统后仍能保持如上的主机名称,还分别需要在各节点执行类似如下的命令:
# sed -i root@node2
# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1
2、安装如下软件包:
libibverbs, librdmacm, lm_sensors, libtool-ltdl, openhpi-libs, openhpi, perl-TimeDate(这些软件包,用yum localinstall命令即可自动解决依赖关系)
3、安装corosync和pacemaker,首先下载所需要如下软件包至本地某专用目录(这里为/root/cluster):
cluster-glue
cluster-glue-libs
resource-agents
heartbeat-libs
corosynclib
pacemaker-libs
openais&& (这个两个包做如下的实验没有用,可以不装)
openaislib
下载地址:。请根据硬件平台及操作系统类型选择对应的软件包;这里建议每个软件包都使用目前最新的版本。
使用如下命令安装:
# cd /root/cluster
# yum -y --nogpgcheck localinstall *.rpm& (配置好yum源为系统光盘)
注意:两个节点都要进行软件包的安装
4、配置corosync:(以下命令在上执行)
# cd /etc/corosync
# cp corosync.conf.example corosync.conf
接着编辑corosync.conf,添加如下内容:
name: pacemaker
use_mgmtd: yes
user: root
group:& root
并设定此配置文件中 bindnetaddr后面的IP地址为你的网卡所在网络的网络地址,我们这里的两个节点在172.16.0.0网络,因此这里将其设定为192.168.0.0;如下
bindnetaddr: 172.16.0.0
生成节点间通信时用到的认证密钥文件:
# corosync-keygen
将corosync和authkey复制至node2:
# scp -p corosync.conf authkey& node2:/etc/corosync/
分别为两个节点创建corosync生成的日志所在的目录:
# mkdir /var/log/cluster
# ssh node2& 'mkdir /var/log/cluster'
5、尝试启动,(以下命令在node1上执行):
# /etc/init.d/corosync start
查看corosync引擎是否正常启动:
# grep -e &Corosync Cluster Engine& -e &configuration file& /var/log/messages
Jun 14 19:02:08 node1 corosync[5103]:&& [MAIN& ] Corosync Cluster Engine ('1.2.7'): started and ready to provide service.
Jun 14 19:02:08 node1 corosync[5103]:&& [MAIN& ] Successfully read main configuration file '/etc/corosync/corosync.conf'.
Jun 14 19:02:08 node1 corosync[5103]:&& [MAIN& ] Corosync Cluster Engine exiting with status 8 at main.c:1397.
Jun 14 19:03:49 node1 corosync[5120]:&& [MAIN& ] Corosync Cluster Engine ('1.2.7'): started and ready to provide service.
Jun 14 19:03:49 node1 corosync[5120]:&& [MAIN& ] Successfully read main configuration file '/etc/corosync/corosync.conf'.
查看初始化成员节点通知是否正常发出:
# grep& TOTEM& /var/log/messages
Jun 14 19:03:49 node1 corosync[5120]:&& [TOTEM ] Initializing transport (UDP/IP).
Jun 14 19:03:49 node1 corosync[5120]:&& [TOTEM ] Initializing transmit/receive security: libtomcrypt SOBER128/SHA1HMAC (mode 0).
Jun 14 19:03:50 node1 corosync[5120]:&& [TOTEM ] The network interface [172.16.100.11] is now up.
Jun 14 19:03:50 node1 corosync[5120]:&& [TOTEM ] A processor joined or left the membership and a new membership was formed.
检查启动过程中是否有错误产生:
# grep ERROR: /var/log/messages | grep -v unpack_resources
查看pacemaker是否正常启动:
# grep pcmk_startup /var/log/messages
Jun 14 19:03:50 node1 corosync[5120]:&& [pcmk& ] info: pcmk_startup: CRM: Initialized
Jun 14 19:03:50 node1 corosync[5120]:&& [pcmk& ] Logging: Initialized pcmk_startup
Jun 14 19:03:50 node1 corosync[5120]:&& [pcmk& ] info: pcmk_startup: Maximum core file size is:
Jun 14 19:03:50 node1 corosync[5120]:&& [pcmk& ] info: pcmk_startup: Service: 9
Jun 14 19:03:50 node1 corosync[5120]:&& [pcmk& ] info: pcmk_startup: Local hostname:
如果上面命令执行均没有问题,接着可以执行如下命令启动node2上的corosync
# ssh node2 -- /etc/init.d/corosync start
注意:启动node2需要在node1上使用如上命令进行,不要在node2节点上直接启动;
使用如下命令查看集群节点的启动状态:
# crm status
============
Last updated: Tue Jun 14 19:07:06 2011
Stack: openais
Current DC:
- partition with quorum
Version: 1.0.11-d3c3e546cfd3aaff6af
2 Nodes configured, 2 expected votes
0 Resources configured.
============
从上面的信息可以看出两个节点都已经正常启动,并且集群已经处于正常工作状态。6、配置集群的工作属性,禁用stonith
corosync默认启用了stonith,而当前集群并没有相应的stonith设备,因此此默认配置目前尚不可用,这可以通过如下命令验正:
# crm_verify -L&
crm_verify[5202]: _19:10:38 ERROR: unpack_resources: Resource start-up disabled since no STONITH resources have been defined
crm_verify[5202]: _19:10:38 ERROR: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option
crm_verify[5202]: _19:10:38 ERROR: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity
Errors found during check: config not valid
& -V may provide more details
我们里可以通过如下命令先禁用stonith:
# crm configure property stonith-enabled=false
使用如下命令查看当前的配置信息:
# crm configure show
property $id=&cib-bootstrap-options&&
dc-version=&1.0.11-d3c3e546cfd3aaff6af&&
cluster-infrastructure=&openais&&
expected-quorum-votes=&2&&
stonith-enabled=&false
从中可以看出stonith已经被禁用。
上面的crm,crm_verify命令是1.0后的版本的pacemaker提供的基于命令行的集群管理工具;可以在集群中的任何一个节点上执行。
7、为集群添加集群资源
corosync支持heartbeat,LSB和ocf等类型的资源代理,目前较为常用的类型为LSB和OCF两类,stonith类专为配置stonith设备而用;
可以通过如下命令查看当前集群系统所支持的类型:
# crm ra classes&
ocf / heartbeat pacemaker
如果想要查看某种类别下的所用资源代理的列表,可以使用类似如下命令实现:
# crm ra list lsb
# crm ra list ocf heartbeat
# crm ra list ocf pacemaker
# crm ra list stonith
# crm ra info [class:[provider:]]resource_agent
# crm ra info ocf:heartbeat:IPaddr
8、接下来要创建的web集群创建一个IP地址资源,以在通过集群提供web服务时使用;这可以通过如下方式实现:
primitive& [:[
&&&&&&&&& [params attr_list]
&&&&&&&&& [operations id_spec]
&&&&&&&&&&& [op op_type [=...] ...]
op_type :: start | stop | monitor
&primitive apcfence stonith:apcsmart&
&&&&&&&&& params ttydev=/dev/ttyS0 hostlist=&node1 node2&&
&&&&&&&&& op start timeout=60s&
&&&&&&&&& op monitor interval=30m timeout=60s
# crm configure primitive WebIP ocf:heartbeat:IPaddr params ip=172.16.100.1
通过如下的命令执行结果可以看出此资源已经在上启动:
# crm status
============
Last updated: Tue Jun 14 19:31:05 2011
Stack: openais
Current DC:
- partition with quorum
Version: 1.0.11-d3c3e546cfd3aaff6af
2 Nodes configured, 2 expected votes
1 Resources configured.
============
&WebIP (ocf::heartbeat:IPaddr): Started
当然,也可以在node1上执行ifconfig命令看到此地址已经在eth0的别名上生效:
# ifconfig&
eth0:0&&& Link encap:Ethernet& HWaddr 00:0C:29:AA:DD:CF&&
&&&&&&&&& inet addr:172.16.100.1& Bcast:192.168.0.255& Mask:255.255.255.0
&&&&&&&&& UP BROADCAST RUNNING MULTICAST& MTU:1500& Metric:1
&&&&&&&&& Interrupt:67 Base address:0x2000&
&&&&&&&&&&
而后我们到node2上通过如下命令停止node1上的corosync服务:
# ssh node1 -- /etc/init.d/corosync stop
查看集群工作状态:
# crm status
============
Last updated: Tue Jun 14 19:37:23 2011
Stack: openais
Current DC:
- partition WITHOUT quorum
Version: 1.0.11-d3c3e546cfd3aaff6af
2 Nodes configured, 2 expected votes
1 Resources configured.
============
OFFLINE: [
上面的信息显示已经离线,但资源WebIP却没能在上启动。这是因为此时的集群状态为&WITHOUT quorum&,即已经失去了quorum,此时集群服务本身已经不满足正常运行的条件,这对于只有两节点的集群来讲是不合理的。因此,我们可以通过如下的命令来修改忽略quorum不能满足的集群状态检查:
# crm configure property no-quorum-policy=ignore
片刻之后,集群就会在目前仍在运行中的节点node2上启动此资源了,如下所示:
# crm status
============
Last updated: Tue Jun 14 19:43:42 2011
Stack: openais
Current DC:
- partition WITHOUT quorum
Version: 1.0.11-d3c3e546cfd3aaff6af
2 Nodes configured, 2 expected votes
1 Resources configured.
============
OFFLINE: [
&WebIP (ocf::heartbeat:IPaddr): Started
好了,验正完成后,我们正常启动:
# ssh node1 -- /etc/init.d/corosync start
查看状态:
# crm status&
============
Last updated: Mon Apr 16 02:52:14 2012
Stack: openais
Current DC:
- partition with quorum
Version: 1.0.11-d3c3e546cfd3aaff6af
2 Nodes configured, 2 expected votes
2 Resources configured.
============
&WebIP (ocf::heartbeat:IPaddr): Started
正常启动后,集群资源WebIP很可能会重新从转移回。资源的这种在节点间每一次的来回流动都会造成那段时间内其无法正常被访问,所以,我们有时候需要在资源因为节点故障转移到其它节点后,即便原来的节点恢复正常也禁止资源再次流转回来。这可以通过定义资源的黏性(stickiness)来实现。在创建资源时或在创建资源后,都可以指定指定资源黏性。资源黏性值范围及其作用:
0:这是默认选项。资源放置在系统中的最适合位置。这意味着当负载能力“较好”或较差的节点变得可用时才转移资源。此选项的作用基本等同于自动故障回复,只是资源可能会转移到非之前活动的节点上;
大于0:资源更愿意留在当前位置,但是如果有更合适的节点可用时会移动。值越高表示资源越愿意留在当前位置;
小于0:资源更愿意移离当前位置。绝对值越高表示资源越愿意离开当前位置;
INFINITY:如果不是因节点不适合运行资源(节点关机、节点待机、达到migration-threshold 或配置更改)而强制资源转移,资源总是留在当前位置。此选项的作用几乎等同于完全禁用自动故障回复;
-INFINITY:资源总是移离当前位置;
我们这里可以通过以下方式为资源指定默认黏性值:
# crm configure rsc_defaults resource-stickiness=100
这是我们把node1节点设为非活动节点:
# crm node standby
查看状态:
# crm status&
============
Last updated: Mon Apr 16 02:48:02 2012
Stack: openais
Current DC:
- partition with quorum
Version: 1.0.11-d3c3e546cfd3aaff6af
2 Nodes configured, 2 expected votes
2 Resources configured.
============
Node : standby
&WebIP (ocf::heartbeat:IPaddr): Started
然后我们再让node1节点上线,则资源并不会应用到node1上,这就是粘性值的功能:
# crm status&
============
Last updated: Mon Apr 16 02:48:10 2012
Stack: openais
Current DC:
- partition with quorum
Version: 1.0.11-d3c3e546cfd3aaff6af
2 Nodes configured, 2 expected votes
2 Resources configured.
============
&WebIP (ocf::heartbeat:IPaddr): Started
9、结合上面已经配置好的IP地址资源,将此集群配置成为一个active/passive模型的web(httpd)服务集群
为了将此集群启用为web(httpd)服务器集群,我们得先在各节点上安装httpd,并配置其能在本地各自提供一个测试页面。
# yum -y install httpd
# echo && & /var/www/html/index.html
# yum -y install httpd
# echo && & /var/www/html/index.html
而后在各节点手动启动httpd服务,并确认其可以正常提供服务。接着使用下面的命令停止httpd服务,并确保其不会自动启动(在两个节点各执行一遍):
# /etc/init.d/httpd stop
# chkconfig httpd off
接下来我们将此httpd服务添加为集群资源。将httpd添加为集群资源有两处资源代理可用:lsb和ocf:heartbeat,为了简单起见,我们这里使用lsb类型:
首先可以使用如下命令查看lsb类型的httpd资源的语法格式:
# crm ra info lsb:httpd
Apache is a World Wide Web server.& It is used to serve&
&&&&&&& HTML files and CGI.
Operations' defaults (advisory minimum):
&&& start&&&&&&&& timeout=15
&&& stop&&&&&&&&& timeout=15
&&& status&&&&&&& timeout=15
&&& restart&&&&&& timeout=15
&&& force-reload& timeout=15
&&& monitor&&&&&& interval=15 timeout=15 start-delay=15
接下来新建资源WebSite:
# crm configure primitive WebSite lsb:httpd
查看配置文件中生成的定义:
# crm configure show
primitive WebIP ocf:heartbeat:IPaddr&
params ip=&172.16.100.1&
primitive WebSite lsb:httpd
property $id=&cib-bootstrap-options&&
dc-version=&1.0.11-d3c3e546cfd3aaff6af&&
cluster-infrastructure=&openais&&
expected-quorum-votes=&2&&
stonith-enabled=&false&&
no-quorum-policy=&ignore&
查看资源的启用状态:
# crm status
============
Last updated: Tue Jun 14 19:57:31 2011
Stack: openais
Current DC:
- partition with quorum
Version: 1.0.11-d3c3e546cfd3aaff6af
2 Nodes configured, 2 expected votes
2 Resources configured.
============
&WebIP (ocf::heartbeat:IPaddr): Started
&WebSite (lsb:httpd): Started
从上面的信息中可以看出WebIP和WebSite有可能会分别运行于两个节点上,这对于通过此IP提供Web服务的应用来说是不成立的,即此两者资源必须同时运行在某节点上。由此可见,即便集群拥有所有必需资源,但它可能还无法进行正确处理。资源约束则用以指定在哪些群集节点上运行资源,以何种顺序装载资源,以及特定资源依赖于哪些其它资源。pacemaker共给我们提供了三种资源约束方法:
1)Resource Location(资源位置):定义资源可以、不可以或尽可能在哪些节点上运行;
2)Resource Collocation(资源排列):排列约束用以定义多个集群资源可以或不可以在某个节点上同时运行;(例如我们提供web服务,则VIP和httpd必须运行在一个节点上,我们可用通过collocation去定义)
3)Resource Order(资源顺序):顺序约束定义集群资源在节点上启动停止等的顺序;
定义约束时,还需要指定分数。各种分数是集群工作方式的重要组成部分。其实,从迁移资源到决定在已降级集群中停止哪些资源的整个过程是通过以某种方式修改分数来实现的。分数按每个资源来计算,资源分数为负的任何节点都无法运行该资源。在计算出资源分数后,集群选择分数最高的节点。INFINITY(无穷大)目前定义为 1,000,000。加减无穷大遵循以下3个基本规则:
1)任何值 + 无穷大 = 无穷大
2)任何值 - 无穷大 = -无穷大
3)无穷大 - 无穷大 = -无穷大
定义资源约束时,也可以指定每个约束的分数。分数表示指派给此资源约束的值。分数较高的约束先应用,分数较低的约束后应用。通过使用不同的分数为既定资源创建更多位置约束,可以指定资源要故障转移至的目标节点的顺序。
因此,对于前述的WebIP和WebSite可能会运行于不同节点的问题,可以通过以下命令来解决:
# crm configure colocation website-with-ip INFINITY: WebSite WebIP
接着,我们还得确保WebSite在某节点启动之前得先启动WebIP,这可以使用如下命令实现:
# crm configure order httpd-after-ip mandatory: WebIP WebSite
查看我们的配置:
# crm configure show
primitive webip ocf:heartbeat:IPaddr&
params ip=&172.16.100.1&
primitive website lsb:httpd
colocation website-with-ip inf: website webip
order httpd-after-ip inf: webip website
property $id=&cib-bootstrap-options&&
dc-version=&1.0.11-d3c3e546cfd3aaff6af&&
cluster-infrastructure=&openais&&
expected-quorum-votes=&2&&
stonith-enabled=&false&&
no-quorum-policy=&ignore&
为了更清楚的看到我们定义的资源的启动次序,我们可用查看xml配置文件:
# crm configure show xml
其中有这么几行:
此外,由于HA集群本身并不强制每个节点的性能相同或相近,所以,某些时候我们可能希望在正常时服务总能在某个性能较强的节点上运行,这可以通过位置约束来实现:
# crm configure location WebSite_on_node1 WebSite inf:
然后查看配置信息:
# crm configure show
会有如下行:
location website_on_node1 website inf:
如果上面的操作你设置了粘性值,当node1节点设置为非活动节点,然后在转为活动节点,资源是回转不到node1上的,而如我们设置了此位置约束,资源就会回来,由于我们粘性值和约束是结合器作用,而我们这里定义的位置约束至为inf即无穷大:
在node1上进行操作:
设置node1为非活动节点:
# crm node standby
# crm status&
============
Last updated: Mon Apr 16 02:58:06 2012
Stack: openais
Current DC:
- partition with quorum
Version: 1.0.11-d3c3e546cfd3aaff6af
2 Nodes configured, 2 expected votes
2 Resources configured.
============
Node : standby
&webip (ocf::heartbeat:IPaddr): Started
&website (lsb:httpd): Started
使node1上线:
# crm node online
# crm status&
============
Last updated: Mon Apr 16 02:58:13 2012
Stack: openais
Current DC:
- partition with quorum
Version: 1.0.11-d3c3e546cfd3aaff6af
2 Nodes configured, 2 expected votes
2 Resources configured.
============
&webip (ocf::heartbeat:IPaddr): Started
&website (lsb:httpd): Started
补充知识:
多播地址(multicast address)即组播地址,是一组主机的标示符,它已经加入到一个多播组中。在以太网中,多播地址是一个48位的标示符,命名了一组应该在这个网络中应用接收到一个分组的站点。在IPv4中,它历史上被叫做D类地址,一种类型的IP地址,它的范围从224.0.0.0到239.255.255.255,或,等同的,在224.0.0.0/4。在IPv6,多播地址都有前缀ff00::/8。
多播是第一个字节的最低位为1的所有地址,例如01-12-0f-00-00-02。广播地址是全1的48位地址,也属于多播地址。但是广播又是多播中的特例,就像是正方形属于长方形,但是正方形有长方形没有的特点。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2350440次
积分:14020
积分:14020
排名:第826名
原创:261篇
转载:37篇
评论:126条
阅读:473629
(3)(10)(14)(15)(11)(2)(4)(10)(11)(23)(25)(31)(24)(8)(10)(9)(25)(14)(16)(7)(28)CentOS&5.5&高可用性群集配置
Linux 包括 CentOS 下高可用性(HA:High Availability)集群方案很多,而 Heartbeat
是比较常见和性价比比较高的一种。
一、硬件及网络连接
群集一般需要2台以上服务器,本篇以两台服务器做群集(双机热备)为例来说明。本实验在 Vmware Workstation 7.1
虚拟机中实现。
两台服务器的必需配置:双网卡。其中一块网卡作为“心跳”使用。作为“心跳”的两块网卡用交叉线直接连接,作为群集的信号同步使用。多台服务器的群集,建议用全千兆交换机来连接“心跳”线。作为“心跳”的网卡最好是质量好的千兆网卡。实际工程中见过因为网卡质量问题导致群集失败的案例。
群集使用的两台服务器并不需要有完全相同的硬件(或者内存大小等),但如果相同的话,当某个部件出现故障时会容易处理得多。集群是通过
软件产生在两台电脑之间“心跳”信号来建立的。为了传输“心跳”信号,需要在节点之间存在一条或多条介质通路,例如串口线(通过 Modem
连接)、以太网通过交叉线等,本例选用常见的以太网连接。
群集服务器的另一块网卡连接到交换机上,对外提供服务。本例以 Apache 提供的 Web 服务作为群集服务,实际工程中还可以提供
等服务。一个群集里可以集成几种以上的服务,但在生产环境下,建议还是提供单一的服务比较好,能发挥服务器的最大可用性,同时可保证群集的可靠性。
二、CentOS 配置
1,关闭 SELINUX
编辑 /etc/sysconfig/selinux 文件,配置以下语句:
SELINUX=disabled
也可以在图形界面里修改。
实际生产环境不应该关闭 SELINUX,但必须注意 SELINUX 对群集的影响。
2,关闭 iptables 防火墙
执行命令:
chkconfig iptables off
chkconfig ip6tables off
也可以在图形界面里修改。
实际生产环境不应该关闭防火墙,但必须注意打开群集有关的协议和端口。
3,IP 地址配置
服务器一:
网卡0(eth0):
IP 为 10.0.0.50/24
网卡1(eth1):
IP 为 172.16.0.50/24
服务器二:
网卡0(eth0):
IP 为 10.0.0.51/24
网卡1(eth1):
IP 为 172.16.0.51/24
配置完毕,可以输入如下命令检查 IP 配置:
# ifconfig
可以用 ping 命令检测网络的连通性。例如,在服务器一中:
# ping 10.0.0.51
# ping 172.16.0.51
均应该连通。
4,分别修改主机名为 node1、node2
服务器一修改 /etc/sysconfig/network 文件中 HOSTNAME 语句为:
HOSTNAME=node1
服务器二修改 /etc/sysconfig/network 文件中 HOSTNAME 语句为:
HOSTNAME=node2
也可以在 GUI 的“网络”配置里修改。
修改完毕,运行命令
# uname -n
看到的结果应该与上面的修改一致。
5,修改 hosts 文件
在两台服务器的 /etc/hosts 文件里,添加以下语句:
10.0.0.50 node1
10.0.0.51 node2
6,安装 HeartBeat 软件
在两台服务器里,运行命令:
# yum install heartbeat*
YUM 会安装 heartbeat 及其所有依赖的软件包。并创建隐藏的系统帐户 hacluster 和系统群组
haclient。
查看安装了什么软件包:
运行命令:
# yum list heartbeat*
Installed Packages
heartbeat.i386 2.1.3-3.el5.centos installed
heartbeat-devel.i386 2.1.3-3.el5.centos installed
heartbeat-gui.i386 2.1.3-3.el5.centos installed
heartbeat-ldirectord.i386 2.1.3-3.el5.centos installed
heartbeat-pils.i386 2.1.3-3.el5.centos installed
heartbeat-stonith.i386 2.1.3-3.el5.centos installed
7,配置 Apache
Apache 是作为群集的测试服务来对外提供 Web 服务的。注意 Apache 是以 HeartBeat 群集虚拟的 IP
地址来访问的。群集创建完成后,将以该虚拟 IP 作为外部访问的地址,所以该 IP 必须是外网可访问地址。
们指定该 IP 为 10.0.0.60,所以可以在两台服务器的 Apache 里配置以 IP 地址 10.0.0.60
访问的虚拟主机。
ServerAdmin
DocumentRoot /var/www/html
ServerName 10.0.0.60
#or: ServerName
ErrorLog -error_log
CustomLog -access_log common
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
为简单起见,可以将 Apache2.0 配置文件 httpd.conf 中的
Listen 10.0.0.60:80
然后在服务器一(node1)的 Apache 根文件夹 /var/www/html/ 下建立主页文件
index.html,文件内容为:
This is node1。
在服务器二(node2)的 Apache 根文件夹 /var/www/html/ 下建立主页文件
index.html,文件内容为:
This is node2。
实际使用中,node1 和 node2 的 Apache 网站文档需要同步,或直接指向同一个高可靠性的存储位置(例如 RAID
5+1 磁盘阵列)即可。
8,无关的服务,尽量关闭,例如:
# chkconfig acpid off
# chkconfig anacron off
# chkconfig apmd off
# chkconfig auditd off
# chkconfig autofs off
# chkconfig bluetooth off
# chkconfig cpuspeed off
# chkconfig cups off
# chkconfig gpm off
# chkconfig haldaemon off
# chkconfig iptables off
# chkconfig isdn off
# chkconfig kudzu off
# chkconfig mDNSResponder off
# chkconfig mdmonitor off
# chkconfig messagebus off
# chkconfig netfs off
# chkconfig nfslock off
# chkconfig nifd off
# chkconfig pcmcia off
# chkconfig portmap off
# chkconfig rhnsd off
# chkconfig rpcgssd off
# chkconfig rpcidmapd off
# chkconfig sendmail off
# chkconfig xfs off
二、群集配置
CentOS5.5 安装 HeartBeat2.1.3 后,在 /usr/share/doc/heartbeat-2.1.3
下有有关的配置文件模板,我们把它们拷贝到 /etc/ha.d/ 目录下:
#cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/
#cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/
#cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/
进入群集配置目录:
#cd /etc/ha.d/
2,编辑 authkeys 文件
# gedit authkeys
服务器一、二相同。内容如下,1 、2、3 表示认证算法选择,这里选择了crc 算法。1 、2、3
不是固定的,只要前后对应即可:
#2 sha1 HI! (注释掉)
#3 md5 Hello! (注释掉)
还必须将 authkeys 文件权限设置为 600(安全考虑):
#chmod 600 authkeys
authkeys 文件权限不够,当启动 heartbeat 服务时,会报错:
ERROR: Bad permissions on keyfile [/etc/ha.d/authkeys], 600
recommended.
ERROR: Authentication configuration error.
ERROR: Configuration error, heartbeat not started.
3,编辑 haresources:
# gedit haresources
服务器一、二相同。内容如下:
node1 IPaddr::10.0.0.60 httpd
第一列为默认主机;
第二列为配置的虚拟 IP;
第三列为需要实现高可用性的服务(启动脚本在 /etc/init.d 内);
如果没有服务则默认全部已运行服务,指定服务在备机接管之前是不会启动的。
该行指定在“心跳”服务启动时,节点 node1 得到 IP 地址 10.0.0.60,并启动 Apache
服务。在停止时,首先停止 Apache,然后释放 IP 地址。
4,编辑 ha.cf:
# gedit ha.cf
服务器一(node1)内容为:
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 60
warntime 4
initdead 120
udpport 694
#bcast eth0
ucast eth1 172.16.0.51
#mcast eth0 225.0.0.1 694 1 0
auto_failback on
node node1
node node2
ping 10.0.0.2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
服务器二(node2)的 ucast eth1 172.16.0.51 语句改为:
ucast eth1 172.16.0.50
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
登陆/调试日志同时记录给syslog
serial /dev/ttyS0
使用串口heartbeat-如果不使用串口heartbeat,则必须使用其他的介质,如bcast(以太网)heartbeat。用适当的设备文件代替/dev/ttyS0。
bcast eth1
表示在eth1接口上使用来发送“心跳”信息,建议在副节点不只一台时使用(将eth1替换为eth0,eth2,或者您使用的任何接口)。
ucast eth1 10.0.0.102
采用网卡eth1 的udp 单播来通知“心跳”,ip 应为对方IP ,在主机2 上设置为ucast eth1
10.0.0.101
#mcast eth0 225.0.0.1 694 1 0
采用udp 多播播来通知“心跳”,建议在副节点不只一台时使用, 广播,单播,多播,以上三种任选其一即可
keepalive 2
设定heartbeat之间的检测时间间隔为2秒。
warntime 10
在日志中发出“late heartbeat“警告之前等待的时间,单位为秒。
deadtime 30
在30秒后宣布节点死亡,主从机切换。
initdead 120
在某些配置下,重启后网络需要一些时间才能正常工作。这个单独的”deadtime”选项可以处理这种情况。它的取值至少应该为通常deadtime的两倍。
baud 19200
波特率,串口通信的速度。
udpport 694
使用端口694进行bcast和ucast通信。这是默认的,并且在IANA官方注册的端口号。
auto_failback on
该选项是必须配置的。对于那些熟悉Tru64 Unix的人来说,heartbeat的工作方式类似于“favored
member“模式。在failover之前,haresources文件中列出的主节点掌握所有的资源,之后从节点接管这些资源。当
auto_failback设置为on时,一旦主节点重新恢复联机,将从从节点取回所有资源。若该选项设置为off,主节点便不能重新获得资源。该选项与废弃的nice_failback选项类似。如果要从一个nice_failback设置为off的集群升级到这个或更新的版本,需要特别注意一些事项以防止flash
cut。请参阅FAQ中关于如何处理这类情况的章节。
该选项是必须配置的。集群中机器的主机名,与“uname &n”的输出相同。
该选项是必须配置的。同上。
ping 192.168.0.1
用来验证外网线连通的ip(推荐上级路由器,还有 ping_group, hbaping 等类似配置可选)。
该选项是可选配置的:列出将要执行和监控的命令。例如:要执行ccm守护进程,则要添加如下的内容:
respawn hacluster /usr/lib/heartbeat/ccm
使得Heartbeat以userid(在本例中为hacluster)的身份来执行该进程并监视该进程的执行情况,如果其死亡便重启之。对于
ipfail,则应该是:
respawn hacluster /usr/lib/heartbeat/ipfail
注意:如果结束进程的退出代码为100,则不会重启该进程。
apiauth ipfail gid=haclient uid=hacluster
网络检测补救插件,用来实现 auto_failback 功能的。
三、群集测试
方法1、启动服务器一(主机)的 HeartBeat 服务:
# service heartbeat start
service heartbeat stop
Apache 服务应该会被 heartbea 启动。然后,在同一网段的机器里用浏览器访问地址
http://10.0.0.60,得到如下信息:
This is node1。
IP 地址 10.0.0.60 也是能够 ping 通的。
在 node1 上运行命令 service heartbeat status 可看到 heartbeat 运行正常:
heartbeat OK [pid xxxx et al] is running on node1 [node1]...
这时,关闭 node1 上的 heartbeat 服务,或关闭 node1 机器,heartbeat 会自动切换到
node2。用浏览器访问地址 http://10.0.0.50,得到如下信息:
This is node2。
IP 地址 10.0.0.60 还是能够 ping 通。
修改了前述的配置文件后,应该在同一台服务器上运行以下命令重新装载“心跳”服务:
service heartbeat reload
重新启动“心跳”服务的命令是:
service heartbeat restart
(运行服务的另一种形式是 /etc/init.d/heartbeat restart)
方法2、另一种查看 heartbeat 服务是否凑效的方法是,运行 ifconfig
命令,如果看到类似以下信息,说明服务已经切换带该服务器上了:
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:2D:4A:7F
inet addr:10.0.0.60 Bcast:10.0.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:67 Base address:0x2000
这说明 heartbeat 服务已经在本机上虚拟了一个 IP 设备,通过这个设备 Apache 服务得到访问了。
还可以使用 ping 命令进行不间断监测,可以发现集群 IP 地址 10.0.0.60
一直处于可通状态,并没有产生任何阻塞或延迟,所以,在关闭处于激活状态的 heartbeat
的情况下,双机系统可以实现无缝切换。
但是在另外一些情况下,比如网络故障、主机关机或重启等,如果该主机的 heartbeat
处于激活状态,则不能实现双机的无缝切换,切换过程需要有一定的延迟,使用 ping 命令可以发现集群 IP 地址暂时无法使用。
四、群集维护及故障排除
群集(包括双机)系统并不是一个简单的系统。并不是每次配置群集都能成功。群集系统在运行的过程中也会出现问题,如“心跳”服务不能启动或死机,“心跳”服务不跳转或莫名其妙的自动跳转。
比如,查看日志 /var/log/ha-log 内的信息,发现如下信息:
“ERROR: No local heartbeat. Forcing shutdown”
并且 Heartbeat 无原因的关闭。可能是因为系统I/O负载过重,或操作系统的 BUG 引起的。
这时。可以调节 ha.cf 中 deadtime 的值到 60 秒或更高。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 centos没有可用软件包 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信