IT技术互动交流平台

Linux高可用(HA)集群之Corosync详解(一)

作者:鱼在天上游  发布日期:2014-04-22 08:55:31

一、Corosync简介

Corosync是OpenAIS发展到Wilson版本后衍生出来的开放性集群引擎工程。可以说Corosync是OpenAIS工程的一部分。OpenAIS从openais0.90开始独立成两部分一个是Corosync另一个是AIS标准接口Wilson。Corosync包含OpenAIS的核心框架用来对Wilson的标准接口的使用、管理。它为商用的或开源性的集群提供集群执行框架。Corosync执行高可用应用程序的通信组系统它有以下特征

一个封闭的程序组A closed process group communication model通信模式这个模式提供一种虚拟的同步方式来保证能够复***务器的状态。

一个简单可用性管理组件A simple availability manager这个管理组件可以重新启动应用程序的进程当它失败后。

一个配置和内存数据的统计A configuration and statistics in-memory database内存数据能够被设置回复接受通知的更改信息。

一个定额的系统A quorum system,定额完成或者丢失时通知应用程序。

 

二、pacemaker简介

 

pacemaker(直译心脏起搏器)是一个群集资源管理器。它实现最大可用性群集服务亦称资源管理的节点和资源级故障检测和恢复使用您的首选集群基础设施OpenAIS的或Heaerbeat提供的消息和成员能力。

它可以做乎任何规模的集群并配备了一个强大的依赖模型使管理员能够准确地表达群集资源之间的关系包括顺序和位置。几乎任何可以编写脚本可以管理作为心脏起搏器集群的一部分。

pacemaker 特点

  • 主机和应用程序级别的故障检测和恢复

    几乎支持任何冗余配置

     

    同时支持多种集群配置模式

     

    配置策略处理法定人数损失多台机器失败时

     

    支持应用启动/关机顺序

     

    支持必须/必须在同一台机器上运行的应用程序

     

    支持多种模式的应用程序如主/从

     

    可以测试任何故障或群集的群集状态

     

    现在最主流的资源管理器

     

    三、Corysync与Pacemaker 安装

    1、实验环境

    节点服务器域名 IP地址 操作系统 软件版本
    node1.gulong.com 172.16.8.5 Centos6.5

    corosync-1.4.1-17.el6.x86_64

    pacemaker-1.1.10-14.el6.x86_64

    node2.gulong.com 172.16.8.8 Centos6.5

    corosync-1.4.1-17.el6.x86_64

    pacemaker-1.1.10-14.el6.x86_64

     

    2.前提条件

    为了配置一台Linux主机成为HA的节点通常需要做出如下的准备工作

    所有节点的主机名称和对应的IP地址解析服务可以正常工作且每个节点的主机名称需要跟"uname -n“命令的结果保持一致

    node1的配置

    (1).各节点之间主机名互相解析

    [root@node1 ~]# hostname node1.gulong.com
    [root@node1 ~]# vim /etc/hosts
    //添加如下内容
    172.16.8.8  node2.gulong.com
    172.16.8.5  node1.gulong.com

     

    (2).各节点之间时间同步

    [root@node1 ~]# ntpdate 172.16.0.1 //172.16.0.1为时间服务器

     

    (3).各节点之间ssh互信

    [root@node1 ~]# ssh-keygen  -t rsa -P ''
    [root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2.gulong.com

     

    node2的配置

    (1).各节点之间主机名互相解析

    [root@node2 ~]# hostname node2.gulong.com
    [root@node2 ~]# vim /etc/hosts
    //添加如下内容
    172.16.8.8  node2.gulong.com
    172.16.8.5  node1.gulong.com

     

    (2).各节点之间时间同步

    [root@node2 ~]# ntpdate 172.16.0.1 //172.16.0.1为时间服务器

     

    (3).各节点之间ssh互信

    [root@node2 ~]# ssh-keygen  -t rsa -P ''
    [root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1.gulong.com

     

    3.配置yum源(EPEL源)

    node1

     

    [root@node1 ~]# wget http://download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
    [root@node1 ~]# rpm -ivh epel-release-5-4.noarch.rpm
    warning: epel-release-5-4.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 217521f6
    Preparing...                ########################################### [100%]
    1:epel-release           ########################################### [100%]
    [root@node1 src]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

     

    node2

    [root@node2 ~]# wget http://download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
    [root@node2 ~]# rpm -ivh epel-release-5-4.noarch.rpm
    warning: epel-release-5-4.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 217521f6
    Preparing...                ########################################### [100%]
    1:epel-release           ########################################### [100%]
    [root@node2 ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

     

    4.关闭防火墙与SELinux

    node1:

    root@node1 ~]# service iptables stop
    [root@node1 ~]# vim /etc/selinux/config
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #       enforcing - SELinux security policy is enforced.
    #       permissive - SELinux prints warnings instead of enforcing.
    #       disabled - SELinux is fully disabled.
    SELINUX=disabled
    # SELINUXTYPE= type of policy in use. Possible values are:
    #       targeted - Only targeted network daemons are protected.
    #       strict - Full SELinux protection.
    SELINUXTYPE=targeted

     

    node2:

    [root@node2 ~]# service iptables stop
    [root@node2 ~]# vim /etc/selinux/config
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #       enforcing - SELinux security policy is enforced.
    #       permissive - SELinux prints warnings instead of enforcing.
    #       disabled - SELinux is fully disabled.
    SELINUX=disabled
    # SELINUXTYPE= type of policy in use. Possible values are:
    #       targeted - Only targeted network daemons are protected.
    #       strict - Full SELinux protection.
    SELINUXTYPE=targeted

     

    5.安装corosync与pacemaker

    node1:

     

    [root@node1 ~]# yum install -y corosync*
    [root@node1 ~]# yum install -y pacemaker*

     

    node2

    [root@node2 ~]# yum install -y corosync*
    [root@node2 ~]# yum install -y pacemaker*

     

    四、Corosync 详细配置

    在node1上修改配置

    1.提供配置文件

     

    [root@node1 ~]# cd /etc/corosync/
    [root@node1 corosync]# cp corosync.conf.example corosync.conf

     

    2.修改配置文件

    [root@node1 corosync]# vim corosync.conf

    内容如下:

    # Please read the corosync.conf.5 manual page
    compatibility: whitetank
    totem {
            version: 2
            secauth: on   //启动认证
            threads: 0
            interface {
                    ringnumber: 0
                    bindnetaddr: 172.16.0.0  //修改心跳线网段为节点的网段
                    mcastaddr: 226.77.167.71 //组播地址用于传播心跳信息
                    mcastport: 5405
                    ttl: 1
            }
    }
    logging {
            fileline: off
            to_stderr: no
            to_logfile: yes
            to_syslog: no
            logfile: /var/log/cluster/corosync.log //日志位置
            debug: off
            timestamp: on
            logger_subsys {
                    subsys: AMF
                    debug: off
            }
    }
    amf {
            mode: disabled
    }
    //启用了 pacemaker
    service {
            ver:    0
            name:   pacemaker
    }
    aisexec {
            user:   root
            group:  root
    }

     

    3.生成密钥文件

    注corosync生成key文件会默认调用/dev/random随机数设备一旦系统中断的IRQS的随机数不够用将会产生大量的等待时间因此为了节约时间我们在生成key之前将random替换成urandom以便节约时间但在实际生产环境中请勿使用不安全。

     

    [root@node1 corosync]# mv /dev/{random,random.bak}
    [root@node1 corosync]# ln -s /dev/urandom /dev/random
    [root@node1 corosync]# corosync-keygen

    wKioL1NSbzviUpNyAAC2NXmRe2w660.jpg

     

    确保key权限为400

    wKioL1NSb-3SUxBbAAFOdrw9Pn8431.jpg

     

    4、将key文件authkey与配置文件corosync.conf复制到node2上

    [root@node1 corosync]# scp -p authkey corosync.conf node2.gulong.com:/etc/corosync/

     

    5、安装crmsh

    从pacemaker 1.1.8开始crm sh 发展成一个独立项目pacemaker中不再提供因此需要自行下载安装crmsh依赖于pssh因此需要一并下载

    (1)crmsh下载地址

    http://pan.baidu.com/s/1o6oa2Pc

    (2)pssh下载地址

    http://pan.baidu.com/s/10AlYI

     

    (3)安装这2个包

    #yum -y --nogpgcheck localinstall crmsh*.rpm pssh*.rpm

    注corosync 到这里配置全部完成。下面我们进行启动测试

     

     

    五、启动Corosync

    1.启动corosync

     

    [root@node1 ~]# ssh node2.gulong.com "service corosync start"
    [root@node1 ~]# service corosync start

    wKiom1NSd47xDd26AADnkPG-hsQ773.jpg

     

    2.查看corosync启动信息

    (1)查看corosync引擎是否正常启动

    wKioL1NSeFzRT_W1AAHT2TBUiUg986.jpg

     

    (2).检查启动过程中是否有错误产生

    [root@node1 ~]# grep ERROR: /var/log/cluster/corosync.log

    wKioL1NSeZeiUXOvAALIWO6SzDU770.jpg

    上面的错误信息表示packmaker不久之后将不再作为corosync的插件运行因此建议使用cman作为集群基础架构服务此处可安全忽略。

     

    (3).查看pacemaker是否正常启动

    [root@node1 ~]# grep pcmk_startup /var/log/cluster/corosync.log

    wKioL1NSeg_iFgqNAAIyGM484Rc513.jpg

     

    3、查看集群状态

     

    [root@node1 corosync]# crm status

    wKiom1NSfGqAsEAIAAKjY2Pvdq8996.jpg

    大家可以看到集群运行正常,node1与node2都在线 ,但是还没有配置资源 ,在下一篇博客中我们重点来讲解如何用pacemaker来增加各种资源!

    Tag标签: Corosync  
    • 专题推荐

    About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
    本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规