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

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

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

问题

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

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

    ceilometer-hacluster:
      charm: cs:~openstack-charmers-next/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"

为一个存在的环境添加HA

juju add-unit nova-cloud-controller -n 2
juju deploy hacluster ncc-hacluster --series trusty
juju add-relation nova-cloud-controller ncc-hacluster
juju config nova-cloud-controller vip=10.5.104.1

参考

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

你可能感兴趣的:(OpenStack,Non-Networking)