2016年4月19日火曜日

Contrail R3.0のマニュアルインストール ubuntu編(3)

ContrailのHA設定 

ここではHAで使用するhaproxyとkeepalivedを設定します。外部ロードバランサを使用する場合は設定不要です。外部ロードバランサを適切に設定してください。
**対象サーバ Contrail1-3

1.変数の設定
インストールを楽に進めるため、IPアドレスや物理NIC情報を変数登録します。
実際のサーバのIPアドレスや物理NIC名に変更してください。
HOST=10.84.50.131  ## インストール対象サーバのIPアドレスを指定
IVIP=10.84.50.139  ## Control/Dataの仮想IPアドレスを指定
IVIP_name=10_84_50_139  ## keepalivedのControl/Data用VIP用識別子IDEV=eth0  ## Control/Data用に使用する物理NIC名
EVIP_name=172_27_115_159  ## keepalivedのManagement用VIP用識別子
EVIP=172.27.115.159  ## Managementの仮想IPアドレスを指定
EDEV=eth1  ## Management用に使用する物理NIC名
PRIORITY=100  ## KeepalivedのPriority。各サーバで0-255間で一意の数字を指定。もっとも大きいPirorityのサーバがMasterサーバに昇格
host1=10.84.50.131  ## Contrail1のControl/Data用物理IPアドレス
host2=10.84.50.132  ## Contrail2のControl/Data用物理IPアドレス
host3=10.84.50.133  ## Contrail3のControl/Data用物理IPアドレス

2.パッケージのインストール
apt-get install -y contrail-openstack-config

3.haproxyの設定
IPアドレス冗長が必要な、Neutron, RabbitMQ, Contrail API, Discovery Server, Analytics API向けの設定を行います。

外向け、内向けポートの内訳は以下です。(外向け/内向け)
Neutron
9696 / 9697
RabbitMQ
5673 / 5672
Contrail API
8082 / 9100
Discovery server
5998 / 9110
AnalyticsAPI
8081 / 9081

**Contrailの冗長構成についてはJuniperのドキュメントを参考にしてください。

設定は以下をコピペしてください。
sed -i -e '1a\ \ \ \ \ \ \ \ tune.bufsize 16384' /etc/haproxy/haproxy.cfg
sed -i -e '1a\ \ \ \ \ \ \ \ tune.maxrewrite 1024' /etc/haproxy/haproxy.cfg

echo '
listen contrail-config-stats :5937
   mode http
   stats enable
   stats uri /
   stats auth haproxy:contrail123

' >> /etc/haproxy/haproxy.cfg

echo "
##contrail-collector-marker-start
frontend  contrail-analytics-api *:8081
    default_backend    contrail-analytics-api

backend contrail-analytics-api
    option nolinger
    balance     roundrobin
    option tcp-check
    tcp-check connect port 6379
    default-server error-limit 1 on-error mark-down
    server $host1 $host1:9081 check inter 2000 rise 2 fall 3
    server $host2 $host2:9081 check inter 2000 rise 2 fall 3
    server $host3 $host3:9081 check inter 2000 rise 2 fall 3

#contrail-collector-marker-end


#contrail-config-marker-start

frontend  contrail-api *:8082
    default_backend    contrail-api-backend
    timeout client 3m

frontend neutron-server *:9696
    default_backend    neutron-server-backend

frontend  contrail-discovery *:5998
    default_backend    contrail-discovery-backend

backend neutron-server-backend
    option nolinger
    balance     roundrobin
    server $host1 $host1:9697 check inter 2000 rise 2 fall 3
    server $host2 $host2:9697 check inter 2000 rise 2 fall 3
    server $host3 $host3:9697 check inter 2000 rise 2 fall 3

backend contrail-api-backend
    option nolinger
    timeout server 3m
    balance     roundrobin
    server $host1 $host1:9100 check inter 2000 rise 2 fall 3
    server $host2 $host2:9100 check inter 2000 rise 2 fall 3
    server $host3 $host3:9100 check inter 2000 rise 2 fall 3

backend contrail-discovery-backend
    option nolinger
    balance     roundrobin
    server $host1 $host1:9110 check inter 2000 rise 2 fall 3
    server $host2 $host2:9110 check inter 2000 rise 2 fall 3
    server $host3 $host3:9110 check inter 2000 rise 2 fall 3

listen  rabbitmq 0.0.0.0:5673
    mode tcp
    maxconn 10000
    balance leastconn
    option tcpka
    option nolinger
    option forceclose
    timeout client 0
    timeout server 0
    timeout client-fin 60s
    timeout server-fin 60s
    server rabbit1 $host1:5672 weight 200 check inter 2000 rise 2 fall 3
    server rabbit2 $host2:5672 weight 100 check inter 2000 rise 2 fall 3 backup
    server rabbit3 $host3:5672 weight 100 check inter 2000 rise 2 fall 3 backup

#contrail-config-marker-end" >> /etc/haproxy/haproxy.cfg

4.keepalivedの設定
設定は以下をコピペしてください。ManagementrとControl/Dataを1つのNICで共有する場合はEXTERNALの設定は削除してください。
echo "
vrrp_script chk_haproxy_INTERNAL_$IVIP_NAME {
        script \"pgrep -x haproxy > /dev/null\" # verify if pid exists
        interval 1
        timeout 3
        rise 2
        fall 2
}

vrrp_script chk_ctrldatanet_INTERNAL_$IVIP_NAME {
    script \"/opt/contrail/bin/chk_ctrldata.sh\"
    interval 1
    timeout 3
    rise 1
    fall 1
}

vrrp_instance INTERNAL_$IVIP_NAME {
        interface $IDEV
        state MASTER
        preempt_delay 7
        garp_master_delay 5
        garp_master_repeat 3
        garp_master_refresh 1
        advert_int 1
        virtual_router_id 100
        vmac_xmit_base
        priority  $PRIORITY
        virtual_ipaddress {
                $IVIP/24 dev $IDEV
        }
        track_script  {
                chk_haproxy_INTERNAL_$IVIP_NAME
        }

        track_script  {
            chk_ctrldatanet_INTERNAL_$IVIP_NAME
        }
        track_interface {
            $IDEV
        }
}

vrrp_script chk_haproxy_EXTERNAL_$EVIP_NAME {
        script \"pgrep -x haproxy > /dev/null\" # verify if pid exists
        interval 1
        timeout 3
        rise 2
        fall 2
}

vrrp_script chk_ctrldatanet_EXTERNAL_$EVIP_NAME {
    script \"/opt/contrail/bin/chk_ctrldata.sh\"
    interval 1
    timeout 3
    rise 1
    fall 1
}

vrrp_instance EXTERNAL_$EVIP_NAME {
        interface $EDEV
        state MASTER
        preempt_delay 7
        garp_master_delay 5
        garp_master_repeat 3
        garp_master_refresh 1
        advert_int 1
        virtual_router_id 100
        vmac_xmit_base
        priority  $PRIORITY
        virtual_ipaddress {
                $EVIP/24 dev $EDEV
        }
        track_script  {
                chk_haproxy_EXTERNAL_$EVIP_NAME
        }

        track_script  {
            chk_ctrldatanet_EXTERNAL_$EVIP_NAME
        }
        track_interface {
            $IDEV
            $EDEV
        }
}" > /etc/keepalived/keepalived.conf

5.プロセスのリスタート
haproxyとkeepalivedの設定を反映します。
service keepalived restart
service haproxy restart

次は、Database nodeの設定です。

0 件のコメント:

コメントを投稿