IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]使用pacemaker为OpenStack组件添加HA服务(by quqi99)

    quqi99发表于 2016-07-21 12:33:32
    love 0

    作者:张华  发表于:2016-07-21
    版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

    ( http://blog.csdn.net/quqi99 )

    问题

    本文描述如何用packmaker为ceilometer添加HA服务.

    使用Juju/MAAS快速部署测试环境

    1, 下载测试用的juju yaml
         bzr branch lp:~openstack-charmers/+junk/openstack-charm-testing

    2, 修改dev.yaml添加如下内容,其中注释掉ceilometer的branch是为了使用本地开发用的ceilometer
        ceilometer-hacluster:
          branch: https://github.com/openstack/charm-hacluster
          options:
            debug: True
        ceilometer:
          #comment branch comment to use local charm
          #branch: https://github.com/openstack/charm-ceilometer
          constraints: mem=1G
          num_units: 3
          options:
            vip: 10.5.100.20
    它相当于下列命令:
    git clone https://github.com/openstack/charm-hacluster ceilometer-cluster
    juju deploy --repository=/home/ubuntu/openstack-charm-testing local:trusty/ceilometer-cluster
    juju deploy -n3 --repository=/home/ubuntu/openstack-charm-testing local:trusty/ceilometer
    juju deploy ceilometer-agent
    juju set ceilometer vip=10.5.100.20
    juju add-relation ceilometer ceilometer-cluster
    juju add-relation ceilometer keystone:identity-service
    juju add-relation ceilometer keystone:identity-notifications
    juju add-relation ceilometer rabbitmq-server
    juju add-relation ceilometer mongodb
    juju add-relation ceilometer-agent nova-compute
    juju add-relation ceilometer-agent ceilometer

    3, 修改dev.yaml添加关系
       - [ ceilometer, ceilometer-hacluster ]

    4, 部署MAAS(略),然后执行juju命令一键部署OpenStack环境
        juju-deployer -c ./next.yaml -d trusty-liberty

    背后发生了什么

    1, /etc/haproxy/haproxy.cfg
    global
        log 127.0.0.1 local0
        log 127.0.0.1 local1 notice
        maxconn 20000
        user haproxy
        group haproxy
        spread-checks 0
    
    defaults
        log global
        mode tcp
        option tcplog
        option dontlognull
        retries 3
        timeout queue 5000
        timeout connect 5000
        timeout client 30000
        timeout server 30000
    
    listen stats
        bind 127.0.0.1:8888
        mode http
        stats enable
        stats hide-version
        stats realm Haproxy\ Statistics
        stats uri /
        stats auth admin:sqn99Cdznn2hYbSJz9nfnJ43fhWwVjpk
    
    frontend tcp-in_ceilometer_api
        bind *:8777
        acl net_10.5.4.61 dst 10.5.4.61/255.255.0.0
        use_backend ceilometer_api_10.5.4.61 if net_10.5.4.61
        default_backend ceilometer_api_10.5.4.61
    
    backend ceilometer_api_10.5.4.61
        balance leastconn
        server ceilometer-2 10.5.4.64:8767 check
        server ceilometer-0 10.5.4.63:8767 check
        server ceilometer-1 10.5.4.61:8767 check

    2, /etc/corosync/corosync.conf
    totem {
            version: 2
            # How long before declaring a token lost (ms)
            token: 3000
            # How many token retransmits before forming a new configuration
            token_retransmits_before_loss_const: 10
            # How long to wait for join messages in the membership protocol (ms)
            join: 60
            # How long to wait for consensus to be achieved before starting a new round of membership configuration (ms)
            consensus: 3600
            # Turn off the virtual synchrony filter
            vsftype: none
            # Number of messages that may be sent by one processor on receipt of the token
            max_messages: 20
            # Limit generated nodeids to 31-bits (positive signed integers)
            clear_node_high_bit: yes
            # Disable encryption
            secauth: off
            # How many threads to use for encryption/decryption
            threads: 0
            ip_version: ipv4
            # This specifies the mode of redundant ring, which may be none, active, or passive.
            rrp_mode: none
            interface {
                    # The following values need to be set based on your environment
                    ringnumber: 0
                    bindnetaddr: 10.5.0.0
                    mcastaddr: 226.94.1.1
                    mcastport: 5403
            }
            transport: udp
    }
    quorum {
            # Enable and configure quorum subsystem (default: off)
            # see also corosync.conf.5 and votequorum.5
            provider: corosync_votequorum
            expected_votes: 3
            }
    logging {
            fileline: off
            to_stderr: yes
            to_logfile: no
            to_syslog: yes
            syslog_facility: daemon
            debug: on
            logger_subsys {
                    subsys: QUORUM
                    debug: on
            }
    }
    

    3, sudo crm configure show
    $ sudo crm configure show
    node $id="168100925" juju-zhhuabj-machine-2 \
    	attributes standby="on"
    node $id="168100927" juju-zhhuabj-machine-1 \
    	attributes standby="off"
    node $id="168100928" juju-zhhuabj-machine-3 \
    	attributes standby="off"
    primitive res_ceilometer_agent_central ocf:openstack:ceilometer-agent-central \
    	op monitor interval="30s" \
    	meta target-role="Started"
    primitive res_ceilometer_eth0_vip ocf:heartbeat:IPaddr2 \
    	params ip="10.5.100.20" cidr_netmask="255.255.0.0" nic="eth0"
    primitive res_ceilometer_haproxy lsb:haproxy \
    	op monitor interval="5s"
    group grp_ceilometer_vips res_ceilometer_eth0_vip
    clone cl_ceilometer_haproxy res_ceilometer_haproxy
    property $id="cib-bootstrap-options" \
    	dc-version="1.1.10-42f2063" \
    	cluster-infrastructure="corosync" \
    	no-quorum-policy="ignore" \
    	stonith-enabled="false" \
    	last-lrm-refresh="1468984707"
    rsc_defaults $id="rsc-options" \
    	resource-stickiness="100"


    参考

    [1] https://wiki.ubuntu.com/OpenStack/OpenStackCharms/ReleaseNotes1501


沪ICP备19023445号-2号
友情链接