|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
学习linux,就意味着更快的开发效率,等更多关于软件本身或者说操作系统本身的理解。
1、corosync、pacemaker先容
corosync是用于高可用情况中的供应通信服务的,它位于高可用集群架构中的底层(MessageLayer),饰演着为各节点(node)之间供应心跳信息传送如许的一个脚色;
pacemaker是一个开源的高可用资本办理器(CRM),位于HA集群架构中资本办理、资本代办署理(RA)这个条理,它不克不及供应底层心跳信息传送的功效,它要想与对方节点通讯必要借助底层的心跳传送服务,将信息公告给对方。一般它与corosync的分离体例有两种:
pacemaker作为corosync的插件运转;
pacemaker作为自力的保卫历程运转;
corosync与pacemaker构成的是高可用的容器,必要高可用的服务,可随时添到容器中,大概沉着器中删除。天真性很强。
heartbeat我也用过,请参考:heartbeatmysql双机互备完成高可用安拆卸置,
用过corosync与pacemaker后,团体保举corosync与pacemaker。
二,服务器申明
192.168.10.130假造ip
192.168.10.103node1
192.168.10.219node2
三,安拆卸置corosync,pacemaker,crmsh
1,node1和node2上安装
代码以下#yuminstallcorosyncpacemakerpython-dateutilredhat-rpm-configpssh
#rpm-ivhhttp://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/x86_64/crmsh-2.1-1.6.x86_64.rpm
2,node1和node2,修正主机名
代码以下#vim/etc/sysconfig/network
HOSTNAME=node1//103呆板node1,219呆板就是node2
#vim/etc/hosts//增加以下内容
192.168.10.103node1
192.168.10.219node2
#/etc/init.d/networkrestart//重启收集
3,node1设置corosync
代码以下[root@node1corosync]#cpcorosync.conf.examplecorosync.conf
[root@node1corosync]#cat/etc/corosync/corosync.conf|awk{if($0!~/^$/&&$0!~/#/){print$0}}
compatibility:whitetank//兼容08.之前的版本
totem{//totem界说集群内各节点间是怎样通讯的,totem本是一种协定,公用于corosync公用于各节点间的协定,协定是有版本的
version:2//totme的版本
secauth:off//平安认证是不是翻开,最好翻开
threads:0//用于平安认证开启并行线程数
interface{
ringnumber:0//环号码,假如一个主机有多块网卡,制止心跳信息回流
bindnetaddr:192.168.10.0//收集地点(节点地点的收集地点段)
mcastaddr:239.255.1.1//播送地点(体系自带的播送地点,没作任何修正)
mcastport:5405//多播占用的端口
ttl:1//只向外一跳心跳信息,制止组播报文环路
}
}
logging{
fileline:off
to_stderr:no//日记信息是不是发往毛病输入(否)
to_logfile:yes//是不是纪录日记文件
to_syslog:yes//是不是纪录于syslog日记-->此类日记纪录于/var/log/message中
logfile:/var/log/cluster/corosync.log//日记寄存地位
debug:off//只需不是为了排错,最好封闭debug,它纪录的信息过于具体,会占用大批的磁盘IO.
timestamp:on//纪录日记的工夫戳
logger_subsys{
subsys:AMF
debug:off
}
}
amf{
mode:disabled
}
service{
ver:0
name:pacemaker//corosync启动后会主动启动pacemaker
}
aisexec{//启用ais功效时以甚么身份来运转,默许为root,aisexec地区也能够不写
user:root
group:root
}
4,node1上用corosync-keygen命令来天生密钥
[root@node1corosync]#corosync-keygen//在/etc/corosync目次下天生一个文件,authkey
网上查材料时,良多材料都说要,设置各节点ssh互信(就是ssh不要暗码登录),经证明基本不必要,画蛇添足。
5,将node1上设置文件复制到node2,nodeN上
代码以下[root@node1corosync]#scpauthkeycorosync.confroot@node2:/etc/corosync/
...
[root@node1corosync]#scpauthkeycorosync.confroot@nodeN:/etc/corosync///假如有良多节点都要copy
6,node1和node2,启动并检察
代码以下#chkconfignginxoff//封闭开机启动
#/etc/init.d/nginxstop//中断nginx,启动corosync时,会启动nginx,条件是nginx高可用设置乐成后
#/etc/init.d/corosyncstart//启动
#netstat-na|grep5405//启动乐成了
udp00192.168.10.103:54050.0.0.0:*
udp00239.255.1.1:54050.0.0.0:*
#crmstatus//检察节点形态 用crmstatus检察形态时,假如报Couldnotestablishcib_roconnection:Connectionrefused(111),申明本节点,连不上其他节点,经团体测试,办理举措以下:
1,平安设置有成绩,如iptables和selinux,设置乐成前最好封闭iptables和selinux
2,corosync-keygen命令天生文件,要在修正主机名乐成今后
重启,封闭不了,一向处于Waitingforcorosyncservicestounload:..........,这个成绩,我在网上查一了,要到官方网站高低个补钉打一下,补钉我也打了,没乐成。办理举措以下:pkill-9corosync,在这里要注重,这个成绩很影响用户体验,假如不把corosync封闭,间接关秘密很长很长工夫才干封闭,坑爹
7,在node1上设置crmsh
代码以下#crmconfigurepropertystonith-enabled=false//禁用stonith-enable
#crmconfigurepropertyno-quorum-policy=ignore//疏忽投票划定规矩
/**
*primitive:界说一资本所利用的命令
*webip:为资本起一个名字
*ocf:heartbeat;IPaddr:所利用资本代办署理的种别,由谁供应的那一个代办署理程序
*opmonitor对webip做监控
*interval:距离工夫
*timeout:超不时间
*on-fail:失利自起
*/
#crmconfigureprimitivewebipocf:heartbeat:IPaddrparamsip=192.168.10.130opmonitorinterval=30stimeout=20son-fail=restart
#crmconfigureprimitivenginx_reslsb:nginx//那些在/etc/init.d/*的剧本就是属于lsb的
/**
*界说分列束缚
*colocation:分列束缚命令
*nginx_web:束缚名
*inf:#(大概性,inf暗示永世在一同,也能够是数值)
*webipnginx_res:#资本称号
*/
#crmconfigurecolocationnginx_webinf:nginx_reswebip
/**
*界说资本启动按次
*order:按次束缚的命令
*nginx_after_ip:束缚ID
*mandatory:#指定级别(此处有三种级别:mandatory:强迫,Optional:可选,Serialize:序列化)
*webipnginx_res:#资本称号,这里誊写的前后按次相称主要
*/
#crmconfigureordernginx_after_ipmandatory:webipnginx_res
#crmconfigureverify//考核
#crmconfigurecommit//提交
#crmconfigureshow//显现
===================上为shell命令下操纵,下为crm命令行下操纵,功效一样,看下图============================
propertystonith-enabled=false
no-quorum-policy=ignore
primitivewebipocf:heartbeat:IPaddrparamsip=192.168.10.130opmonitorinterval=30stimeout=20son-fail=restart
primitivenginx_reslsb:nginx
colocationnginx_webinf:nginx_reswebip
ordernginx_after_ipmandatory:webipnginx_res
verify
commit
show
corosyncpacemaker高可用的难点就是crmsh的命令行操纵,子命令太多,下一篇文章,会具体的说一下crmsh的命令,和参数
crm命令对照
crm命令对照
四,测试corosync,pacemaker高可用
1,检察一下各节点是不是online形态
代码以下#crmstatus//检察各节点形态
Lastupdated:WedNov2623:46:232014
Lastchange:WedNov2622:27:002014
Stack:classicopenais(withplugin)
CurrentDC:node2-partitionwithquorum
Version:1.1.11-97629de
2Nodesconfigured,2expectedvotes
2Resourcesconfigured
Online:[node1node2]
webip(ocf::heartbeat:IPaddr):Startednode1
nginx_res(lsb:nginx):Startednode1
2,创建测试文件
代码以下#vim/var/www/html/index.php//node1测试文件
<?php
echo"thisisnode1";
?>
#vim/var/www/html/index.php//node2测试文件
<?php
echo"thisisnode2";
?>
3,会见假造ip:192.168.10.130,假如哀求在node1上
代码以下#crmnodestandby//将node1上运转,将node1停用,看哀求会不会转到node2下面
在会见192.168.10.130,你会发明哀求转到node2上往了。上面我们返过去操纵。
#crmnodestandby//node2上运转,利用node2停用
#crmnodeonline//在node1上运转,激活node1
在会见192.168.10.130,你会发明,哀求转到node1上往了。
</p>
系统管理相关命令:df、top、free、quota、at、lp、adduser、groupaddkill、crontab、tar、unzip、gunzip、last |
|