下文来为各位整理一篇关于corosync+pacemaker的crmsh crm 实例的,希望这个例子可以帮助到各位,corosync和pacemaker实现高可用的难点就在crm命令,子命令多,参数多等,下面说一些常用的例子.
一,crm有两种工作方式
1,批处理模式,就是在shell命令行中直接输入命令
2,交互式模式(crm(live)#)进入到crmsh中交互执行.
二,命令详解
1,一级子命令,代码如下:
- [root@node1corosync]#crm
- crm(live)#help
- Thisiscrmshell,aPacemakercommandlineinterface.
- Availablecommands:
- cibmanageshadowCIBs//cib沙盒
- resourceresourcesmanagement//所有的资源都在这个子命令后定义
- configureCRMclusterconfiguration//编辑集群配置信息
- nodenodesmanagement//集群节点管理子命令
- optionsuserpreferences//用户优先级
- historyCRMclusterhistory//命令历史记录
- siteGeo-clustersupport
- raresourceagentsinformationcenter//资源代理子命令(所有与资源代理相关的程都在此命令之下)
- statusshowclusterstatus//显示当前集群的状态信息
- help,?showhelp(helptopicsforlistoftopics)//查看当前区域可能的命令
- end,cd,upgobackonelevel//返回第一级crm(live)
- quit,bye,exitexittheprogram//退出crm(live)交互模式
2,resource资源状态控制子命令,代码如下:
- crm(live)resource#help
- vailablecommands:
- statusshowstatusofresources//显示资源状态信息
- startstartaresource//启动一个资源
- stopstoparesource//停止一个资源
- restartrestartaresource//重启一个资源
- promotepromoteamaster-slaveresource//提升一个主从资源
- demotedemoteamaster-slaveresource//降级一个主从资源
- manageputaresourceintomanagedmode//将一个资源加入到管理模式下
- unmanageputaresourceintounmanagedmode//从管理模式下去除一个资源
- migratemigratearesourcetoanothernode//将资源迁移到另一个节点上
- unmigrateunmigratearesourcetoanothernode
- parammanageaparameterofaresource//管理资源的参数
- secretmanagesensitiveparameters//管理敏感参数
- metamanageametaattribute//管理源属性
- utilizationmanageautilizationattribute
- failcountmanagefailcounts//管理失效计数器
- cleanupcleanupresourcestatus//清理资源状态
- refreshrefreshCIBfromtheLRMstatus//从LRM(LRM本地资源管理)更新CIB(集群信息库),在
- reprobeprobeforresourcesnotstartedbytheCRM//探测在CRM中没有启动的资源
- tracestartRAtracing//启用资源代理(RA)追踪
- untracestopRAtracing//禁用资源代理(RA)追踪
- helpshowhelp(helptopicsforlistoftopics)//显示帮助
- endgobackonelevel//返回一级(crm(live)#)
- quitexittheprogram//退出交互式程序
3,configure资源定义子命令,代码如下:
- crm(live)configure#help
- Availablecommands:
- nodedefineaclusternode//定义一个集群节点
- primitivedefinearesource//定义资源
- monitoraddmonitoroperationtoaprimitive//对一个资源添加监控选项(如超时时间,启动失败后的操作)
- groupdefineagroup//定义一个组类型(将多个资源整合在一起)
- clonedefineaclone//定义一个克隆类型(可以设置总的克隆数,每一个节点上可以运行几个克隆)
- msdefineamaster-slaveresource//定义一个主从类型(集群内的节点只能有一个运行主资源,其它从的做备用)
- rsc_templatedefinearesourcetemplate//定义一个资源模板
- locationalocationpreference//定义位置约束优先级(默认运行于那一个节点(如果位置约束的值相同,默认倾向性那一个高,就在那一个节点上运行))
- colocationcolocateresources//排列约束资源(多个资源在一起的可能性)
- orderorderresources//资源的启动的先后顺序
- rsc_ticketresourcesticketdependency
- propertysetaclusterproperty//设置集群属性
- rsc_defaultssetresourcedefaults//设置资源默认属性(粘性)
- fencing_topologynodefencingorder//隔离节点顺序
- roledefineroleaccessrights//定义角色的访问权限
- userdefineuseraccessrights//定义用用户访问权限
- op_defaultssetresourceoperationsdefaults//设置资源默认选项
- schemasetordisplaycurrentCIBRNGschema
- showdisplayCIBobjects//显示集群信息库对
- editeditCIBobjects//编辑集群信息库对象(vim模式下编辑)
- filterfilterCIBobjects//过滤CIB对象
- deletedeleteCIBobjects//删除CIB对象
- default-timeoutssettimeoutsforoperationstominimumsfromthemeta-data
- renamerenameaCIBobject//重命名CIB对象
- modgroupmodifygroup//改变资源组
- refreshrefreshfromCIB//重新读取CIB信息
- eraseerasetheCIB//清除CIB信息
- ptestshowclusteractionsifchangeswerecommitted
- rsctesttestresourcesascurrentlyconfigured
- cibCIBshadowmanagement
- cibstatusCIBstatusmanagementandediting//cib状态管理和编辑
- templateeditandimportaconfigurationfromatemplate//编辑或导入配置模板
- commitcommitthechangestotheCIB//将更改后的信息提交写入CIB
- verifyverifytheCIBwithcrm_verify//CIB语法验证
- upgradeupgradetheCIBtoversion1.0//升级CIB到1.0
- savesavetheCIBtoafile//将当前CIB导出到一个文件中(导出的文件存于切换crm之前的目录)
- loadimporttheCIBfromafile//从文件内容载入CIB
- graphgenerateadirectedgraph
- xmlrawxml
- helpshowhelp(helptopicsforlistoftopics)//显示帮助信息
- endgobackonelevel//回到第一级(crm(live)#)
- quitexittheprogram//退出crm交互模式
4,node节点管理子命令,代码如下:
- crm(live)#node
- crm(live)node#help
- Nodemanagementandstatuscommands.
- Availablecommands:
- statusshownodesstatusasXML//以xml格式显示节点状态信息
- showshownode//命令行格式显示节点状态信息
- standbyputnodeintostandby//模拟指定节点离线(standby在后面必须的FQDN)
- onlinesetnodeonline//节点重新上线
- maintenanceputnodeintomaintenancemode//将一个节点状态改为maintenance
- readyputnodeintoreadymode//将一个节点状态改为ready
- fencefencenode//隔离节点
- clearstateClearnodestate//清理节点状态信息
- deletedeletenode//删除一个节点
- attributemanageattributes
- utilizationmanageutilizationattributes
- status-attrmanagestatusattributes
- helpshowhelp(helptopicsforlistoftopics)
- endgobackonelevel//回到上一次
- quitexittheprogram//退出
5,ra资源代理子命令,代码如下:
- crm(live)#ra
- crm(live)ra#help
- Availablecommands:
- classeslistclassesandproviders//为资源代理分类
- listlistRAforaclass(andprovider)//显示一个类别中的提供的资源
- metashowmetadataforaRA//显示一个资源代理序的可用参数(如metaocf:heartbeat:IPaddr2)
- providersshowprovidersforaRAandaclass
- helpshowhelp(helptopicsforlistoftopics)
- endgobackonelevel
- quitexittheprogram
三,实例
1,系统资源查看,代码如下:
- crm(live)ra#classes//系统所使用的资源代理
- lsb
- ocf/heartbeatpacemaker
- service
- stonith
2,默认系统资源列表,代码如下:
- crm(live)ra#listocf//列表默认系统资源
- CTDBClusterMonDelayDummyFilesystemHealthCPU
- IPaddrIPaddr2IPsrcaddrHealthCPUHealthSMARTHealthSMART
- LVMMailToRouteSendArpSquid
- StatefulSysInfoSystemHealthVirtualDomainXinetd
- apacheconntrackdcontrolddb2dhcpd
- ethmonitorexportfsiSCSILogicalUnitmysqlnamed
- nfsnotifynfsserverpgsqlpingpingd
- postfixremotersyncdsymlinktomcat
3,查看外加的系统资源,代码如下:
- crm(live)ra#listlsb//列表外加的系统资源
- NetworkManagerabrt-ccppabrt-oopsabrtdacpid
- atdauditdautofsblk-availabilitycertmonger
- corosynccorosync-notifydcpuspeedcrondcups
- dnsmasqfirstboothaldaemonhalthsqldb
- ip6tablesiptablesirqbalancejexeckdump
- killalllvm2-lvmetadlvm2-monitormdmonitormessagebus
- mysqldnetconsolenetfsnetworknfs
- nfslocknginxnmbntpdntpdate
- oddjobdopenfirepacemakerphp-fpmportreserve
- postfixpsacctquota_nldrdiscredis
- restorecondrngdrpcbindrpcgssdrpcidmapd
- rpcsvcgssdrsyslogsandboxsaslauthdsingle
- slapdsmartdsmbsnmpdsnmptrapd
- spice-vdagentdsshdsssdsysstatudev-post
- vsftpdwdaemonwinbindwpa_supplicantypbind
4,查看系统资源的参数,代码如下:
- crm(live)ra#metaocf:heartbeat:IPaddr//查看系统资源IPaddr的参数
- ManagesvirtualIPv4andIPv6addresses(Linuxspecificversion)(ocf:heartbeat:IPaddr)
- ThisLinux-specificresourcemanagesIPaliasIPaddresses.
- ItcanaddanIPalias,orremoveone.
- Inaddition,itcanimplementClusterAliasIPfunctionality
- ifinvokedasacloneresource.
- Ifusedasaclone,youshouldexplicitlysetclone-node-max>=2,
- and/orclone-max<numberofnodes.Incaseofnodefailure,
- cloneinstancesneedtobere-allocatedonsurvivingnodes.
- Thiswouldnotbepossibleifthereisalreadyaninstanceonthosenodes,
- andclone-node-max=1(whichisthedefault).
- Parameters(*:required,[]:default):
- ip*(string):IPv4orIPv6address
- TheIPv4(dottedquadnotation)orIPv6address(colonhexadecimalnotation)
- exampleIPv4"192.168.1.1".
- exampleIPv6"2001:db8:DC28:0:0:FC57:D4C8:1FFF".
- 。。。。。。。。。。。。。。。。。。。省略。。。。。。。。。。。。。。。。。。。。。。。。
5,属性修改,代码如下:
- crm(live)configure#propertystonith-enabled=false//禁用stonith-enable
- crm(live)configure#propertyno-quorum-policy=ignore//忽略投票规则
6,定义一资源所使用的命令,代码如下:
- /**
- *primitive:定义一资源所使用的命令
- *webip:为资源起一个名字
- *ocf:heartbeat;IPaddr:所使用资源代理的类别,由谁提供的那一个代理程序
- *opmonitor对webip做监控
- *interval:间隔时间
- *timeout:超时时间
- *on-fail:失败自起
- */
- crm(live)configure#primitivewebipocf:heartbeat:IPaddrparamsip=192.168.10.130opmonitorinterval=30stimeout=20son-fail=restart
- crm(live)configure#primitivenginx_reslsb:nginx//那些在/etc/init.d/*的脚本就是属于lsb的
- params后面的参数,可以通过meta命令来查找,不同的系统资源参数是不一样的。
7,定义排列约束,代码如下:
- /**
- *定义排列约束
- *colocation:排列约束命令
- *nginx_web:约束名
- *inf:#(可能性,inf表示永久在一起,也可以是数值)
- *webipnginx_res:#资源名称
- */
- crm(live)configure#colocationnginx_webinf:nginx_reswebip
8,定义资源启动顺序,代码如下:
- /**
- *定义资源启动顺序
- *order:顺序约束的命令
- *nginx_after_ip:约束ID
- *mandatory:#指定级别(此处有三种级别:mandatory:强制,Optional:可选,Serialize:序列化)
- *webipnginx_res:#资源名称,这里书写的先后顺序相当重要
- */
- crm(live)configure#ordernginx_after_ipmandatory:webipnginx_res
9,定义节点权重,代码如下:
- /**
- *定义节点权重
- *location:节点权重命令
- *webip_and_webnfs_and_webserver:约束名称
- *webip500:node1:webip这个资源的node1节点的权重是500
- */
- crm(live)configure#locationwebip_and_webnfs_and_webserverwebip500:node1
10,定义默认资源属性,代码如下:
- /**
- *定义默认资源属性
- *rsc_defaults:默认资源
- *这样定义代表集群中每一个资源的默认权重,只有当资源服务不在当前节点时,权重才会生效,比如,这里我定义了三个资源webip、webnfs、webserver,对每一个资源的权重为100,那么加在一起就变成了300,之前己经定义node1的位置约束的值为500,当node1宕机后,重新上线,这样就切换到node1上了。phpfensi.com
- */
- crm(live)configure#rsc_defaultsresource-stickiness=100
11,删除资源或者节点,代码如下:
- crm(live)configure#deletenginx_res//删除一个资源,约束,排序,组等
- crm(live)node#deletenode1//删除一个节
12,资源其他,代码如下:
- crm(live)configure#verify//审核
- crm(live)configure#commit//提交
- crm(live)configure#show//显示
13,节点挂起和在线,代码如下:
- crm(live)node#standbynode1//节点挂起
- crm(live)node#onlinenode1//节点上线