实验环境:

admin1.tuchao.com 192.168.18.100  ansible管理节点

admin2.tuchao.com 192.168.18.101  集群节点一  

admin3.tuchao.com 192.168.18.199  集群节点二


安装: yum install corosync pacemaker -y

复制配置文件

  • cp corosync.conf.example corosync.conf

  • vim corosync.conf

编辑配置文件:

compatibility: whitetank  
是否兼容0.8版本的corosync
totem {
定义集群之间心跳信息传递层  
 version: 2 ----版本号
        secauth: on ---是否启用安全认证
        threads: 0   ---启用多少个线程处理心跳信息传递,0为自动。
        interface {
                ringnumber: 0   --报文循环次数
                bindnetaddr: 192.168.18.0  --绑定的网络地址
                mcastaddr: 226.94.1.2   --多播地址
                mcastport: 5405   ---多播端口
                ttl: 1
        }
}

logging {
        fileline: off
        to_stderr: no  --心跳信息是否输出到屏幕
        to_logfile: yes 
        to_syslog: no  ---是否发送给/var/log/messages
        logfile: /var/log/cluster/corosync.log
        debug: off  --是否开启调试
        timestamp: on   --是否开启当前系统时间的时间戳。 
        logger_subsys {
                subsys: AMF   --定义openais规范
                debug: off
        }
}

amf {
        mode: disabled
}
service {   定义pacemaker为corosync的插件。
 ver: 0
 name: pacemaker
}
aisexec {
 user:root
 group:root
}

生成安全认证文件,这个命令需要取1024位随机数,我们可以另起一个终端重装一个软件来产生随机数。

  • corosync-keygen

安装资源管理器的配置接口程序:

crmsh-1.2.6-4.el6.i686.rpm

pssh-2.3.1-2.el6.i686.rpm

关闭NetworkManager,并开机禁用此服务。

/etc/init.d/NetworkManager stop

chkconfig NetworkManager off

启动服务

  • service corosync start

 

CRM命令的使用:

  • crm status //显示集群状态信息

  • crm_mon

  • crm_verify -L //显示配置文件是否有语法错误

  • crm help

This is crm shell, a Pacemaker command line interface.

Available commands:

 cib              manage shadow CIBs --管理集群信息库  
 resource         resources management --资源管理
 configure        CRM cluster configuration --集群配置接口
 node             nodes management --节点管理
 options          user preferences --
 history          CRM cluster history --集群历史
 site             Geo-cluster support  --支持跨地域的集群
 ra               resource agents information center --资源代理
 status           show cluster status
 help,?           show help (help topics for list of topics)
 end,cd,up        go back one level --返回
 quit,bye,exit    exit the program --退出程序

 

  • crm resource help

At this level resources may be managed.

All (or almost all) commands are implemented with the CRM tools
such as `crm_resource(8)`.

Available commands:

 status,show,list show status of resources --显示资源状态信息
 start            start a resource --启动一个资源
 stop             stop a resource --停止一个资源
 restart          restart a resource
 promote          promote a master-slave resource --唤醒一个主从资源
 demote           demote a master-slave resource --降级一个主从资源
 manage           put a resource into managed mode --将资源加入可管理模式
 unmanage         put a resource into unmanaged mode --非管理模式
 migrate,move     migrate a resource to another node --资源迁移
 unmigrate,unmove unmigrate a resource to another node 
 param            manage a parameter of a resource  --管理资源参数
 secret           manage sensitive parameters --管理敏感参数
 meta             manage a meta attribute --管理资源的源数据属性
 utilization      manage a utilization attribute
 failcount        manage failcounts --管理资源的错误次数
 cleanup          cleanup resource status  --清除资源状态
 refresh          refresh CIB from the LRM status --刷新Cib
 reprobe          probe for resources not started by the CRM  探测没有启动的资源
 trace            start RA tracing
 untrace          stop RA tracing
 help,?           show help (help topics for list of topics)
 end,cd,up        go back one level
 quit,bye,exit    exit the program

 

  • crm node help

    Node management and status commands.

    Available commands:

        status           show nodes' status as XML --显示节点状态
        show,list        show node
        standby          put node into standby  --设置当前节点为备用节点
        online           set node online --设置当前节点为线上节点
        maintenance      put node into maintenance mode
        ready            put node into ready mode
        fence            fence node
        clearstate       Clear node state
        delete           delete node
        attribute        manage attributes
        utilization      manage utilization attributes
        status-attr      manage status attributes
        help,?           show help (help topics for list of topics)
        end,cd,up        go back one level
        quit,bye,exit    exit the program



  • crm configure property stonith-enabled=false   --关闭stonith设备

  • crm ra help

classes list classes and providers --列出提供的RA类型

list    list RA for a class (and provider) --显示某个RA类型所提供的资源代理

meta    show meta data for a RA --显示一个RA的基本信息


定义一个IP资源:

crm configure

primitive webip ocf:IPaddr params ip=192.168.18.200


定义完后可以用show查看

wKiom1PIVmKwSDIEAAJPhUpOQ88761.jpg

没错误的话,之后可以使用commit提交。

查看状态:

  • crm status

wKioL1PIWQnxSUKrAAI8r8VpnT8337.jpg

  • crm resource status

wKiom1PIWBGA3UL6AAExozv3sSY882.jpg

停止资源:

  • crm resource stop webip

启动资源:

  • crm resource start webip

将当前节点设为备用,这时候资源就会转移到节点二。

  • crm node standby

我们把httpd加入到可管理资源:

  • crm configure primitive webserver lsb:httpd

wKioL1PIYDbjpD1UAAQ9VQcnF4g479.jpg

定义资源组:

  • crm configure group webservice webip webserver

定义位置约束:

  • crm configure location webservice_prefer_node2 webservice 500: admin3.tuchao.com

  • crm configure

  • verify

  • commit

wKioL1PIhjCwjfg1AAJJRT1PZ8o089.jpg

定义顺序约束:

  • crm

  • configure

  • order webserver_after_webip mandatory: webip webserver

  • verify

  • commit

order 名称 mandatory: webip webserver 注:这里的mandatory表示无限大的值(强制)

把优先启动的资源写在前面。

  • show xml

<constraints>

      <rsc_location id="webservice_prefer_node2" rsc="webservice" score="500" node="admin3.tuchao.com"/>

      <rsc_order id="webip_before_webserver" score="INFINITY" first="webip" then="webserver"/>

    </constraints>

定义组合约束:

  • colocation webip_with_webserver inf: webip webserver

  • show xml

<rsc_colocation id="webip_with_webserver" score="INFINITY" rsc="webip" with-rsc="webserver"/>

这里的with-rsc="webserver"是指已webserver为准,如果webip启动成功,webserver启动失败,那webip也会失效的。

定义一个文件系统资源:

  • crm configure

  • primitive webstore ocf:Filesystem params device='192.168.18.160:/webdata' directory='/var/www/html' fstype='nfs' op start timeout=60 op stop timeout=60

  • verify

  • commit

将资源加入到webservice组。

  • edit

wKiom1PIv_TRfllBAAMQzCsvk98342.jpg

  • verify

  • commit

  • show

wKioL1PIwcDy9G1LAALj4b8GzDo297.jpg

配置组合约束

  • crm configure

  • colocation webip_before_webstore inf: webip webstore

  • colocation webstore_webserver inf: webstore webserver

  • show

wKioL1PIx9Ghk__iAAOMKwzE0NI996.jpg

这样配置就基本完成了,你会发现当你使用crm node standby把当前节点设置为备用后,另一个节点就会继承资源继续提供服务。

资源监控:

    默认情况下,集群并不会检查资源的健康状态,如果要实现此功能,需要专门为资源定义monitor功能,资源操作可定义的属性有:

    id:资源操作ID,必须唯一。
    name:资源操作的动作,可用动作有minitor、start、和stop。

执行资源的监控操作使用mintor:

    interval:资源操作的时间间隔,默认为0,即不执行操作。

    timeout:确定某动作作为失败的超时时长。

    on-fail:正在执行的动作失败时要采取的动作。

可用值如下:

        ignore:忽略

        block:忽略

        stop:停止资源

        restart:重启资源,也有可能会在其他节点上启动。

        frence:将此节点关闭

        standby:将其所在的节点转换为standby模式

enabled:是否启用,true,false。



有问题欢迎与我交流QQ1183710107