分手快乐 发表于 2015-1-16 14:06:01

给大家带来基于corosync+pacemaker的nginx高可用集群安拆卸置

学习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
代码以下#cpcorosync.conf.examplecorosync.conf

#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命令来天生密钥
  #corosync-keygen//在/etc/corosync目次下天生一个文件,authkey
  网上查材料时,良多材料都说要,设置各节点ssh互信(就是ssh不要暗码登录),经证明基本不必要,画蛇添足。
  5,将node1上设置文件复制到node2,nodeN上
代码以下#scpauthkeycorosync.confroot@node2:/etc/corosync/
...
#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:

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

乐观 发表于 2015-1-17 23:42:34

可以说自己收获很大,基本上完成了老师布置的任务,对于拔高的题目没有去做,因为我了解我的水平,没有时间和精力去做。?

admin 发表于 2015-1-21 11:45:31

虽然大家都比较喜欢漂亮的mm,但是在学 linux 的过程中,还是要多和“男人”接触一下:P 遇到问题的时候,出来看说和上网查之外,就是要多用 linux 下的 man 命令找找帮助。

活着的死人 发表于 2015-1-30 17:29:09

如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的、最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。

兰色精灵 发表于 2015-2-6 14:30:47

要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。

分手快乐 发表于 2015-2-16 13:57:36

其实当你安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。

透明 发表于 2015-3-5 06:58:31

发问的时候一定要注意到某些礼节。因为Linux社区是一个松散的组织、也不承担回复每个帖子的义务。它不是技术支持。

爱飞 发表于 2015-3-12 00:38:10

选择一些适于初学者的Linux社区。

小女巫 发表于 2015-3-19 17:25:52

Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。
页: [1]
查看完整版本: 给大家带来基于corosync+pacemaker的nginx高可用集群安拆卸置