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 件のコメント:
コメントを投稿