2017年11月15日水曜日

Contrail 4.0 での既存環境との接続 by Simple Gateway

前回Openstack OcataとOpenContrail 4.0を作成しました。この状態ではVM間の通信は可能ですが、既存環境からの通信はできません。
OpenContrailは別環境と接続する場合、基本的にMPBGP+MPLSoGREを話せるゲートウェイルータが必要です。(例えばJuniper MXシリーズやCisco ASRシリーズ)
このようなルータがない場合、OpenContrailのvRouterをゲートウェイとして既存環境と接続するSimple Gateway機能を利用する必要があります。

Simple GatewayはOpenstack NeutronのGateway Nodeのような働きをします。
Compute node内にSimple Gatewayが作成され、ContrailのvRouterと連携し、オーバーレイトンネルと物理NICとの橋渡しを行います。


イメージとしては下図のように、VMがインターネットなどに抜けたい場合、一度Contrail vRouterの通信をSimple Gatewayで終端。その後Simple Gatewayかれ出てきたパケットはCompute nodeのルーティングテーブルを参照し、GW経由でインターネットに接続します。

Simple Gateway作成手順

  1. Public用の仮想ネットワークを作成(外部接続用アドレス)
  2. Simple Gatewayを作成
  3. Private用の仮想ネットワークを作成(仮想マシン用)
  4. 仮想マシンを作成
  5. Floating IPを仮想マシンに設定
  6. 通信確認

1. Public用の仮想ネットワークを作成(外部接続用アドレス)

OpenstackでもOpenContrailでもどちらからでも作成可能です。

Openstackから作成する場合

作成
source openstackrc
openstack network create public --external
openstack subnet create --network public --subnet-range 203.0.113.0/24 public_subnet
確認
openstack network list --external
+--------------------------------------+--------+--------------------------------------+
| ID                                   | Name   | Subnets                              |
+--------------------------------------+--------+--------------------------------------+
| 08960915-ef83-4980-ae3d-08aea937d4fb | public | bea3e1c9-4658-4b17-bfb6-9ee8047d04c6 |
+--------------------------------------+--------+--------------------------------------+

Contrailから作成する場合

Configure > Networking >Networks を開き、+をクリックし以下を入力しSave
Name: 仮想ネットワーク名
Subnet:CIDRにネットワークアドレス (今回は203.0.113.0/24)
Adbanced Options: Externalにチェック

2.Simple Gatewayを作成

SimpleGatewayはCompute nodeに作成するため、対象ノードにログインします。
ログイン後、以下のコマンドを発行します。
docker exec agent python /opt/contrail/utils/provision_vgw_interface.py --oper create --interface vgw1 --subnets 203.0.113.0/24 --routes 0.0.0.0/0 --vrf default-domain:admin:public:public
引数の解説

  • --oper: 作成する場合はcreate 削除する場合はdelete
  • --interface: Simple Gatewayの名前。複数Simple Gatewayを作成する場合はユニークな名前を指定
  • --subnets: Simple Gatewayが使用するサブネットを指定。公開したい仮想ネットワークのサブネットを指定
  • --routes: Simple Gatewayが通信してよいネットワークを指定。インターネットなど、不特定のネットワークの場合は0.0.0.0/0を指定。特定の場合は10.0.0.0/24 などを指定。複数設定可能
  • --vrf: Contrailが使用するVRF名を使用。シンタックスはdefault-domain:<project名>:<仮想ネットワーク名>:<仮想ネットワーク名>
作成が完了するとroute -n にネットワークが追加される
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.84.50.100    0.0.0.0         UG    0      0        0 vhost0
10.84.50.0      0.0.0.0         255.255.255.0   U     0      0        0 vhost0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
203.0.113.0     0.0.0.0         255.255.255.0   U     0      0        0 vgw1
GWや他の物理サーバなどから203.0.113.0/24に通信したい場合は、Compute nodeのvhost0のIPアドレスをNexthopにしたルーティングテーブルを追加してください。
例えば、kvmホストから203.0.113.0/24に通信したい場合以下のような設定が必要です。
また、KVM Hostから外部に通信する場合、NATが必要な場合は併せてせっていしてください。
route add -net 203.0.113.0 netmask 255.255.255.0 gw 10.84.50.119
iptables -A POSTROUTING -t nat -o em1 -s 203.0.113.0/24 -j MASQUERADE

3.Private用の仮想ネットワークを作成(仮想マシン用)

OpenstackでもOpenContrailでもどちらからでも作成可能です。

Openstackから作成する場合

作成
source openstackrc
openstack network create user-VN1
openstack subnet create --network user-VN1 --subnet-range 192.168.0.0/24 user-VN1_subnet
確認
openstack network list --internal
+--------------------------------------+----------+--------------------------------------+
| ID                                   | Name     | Subnets                              |
+--------------------------------------+----------+--------------------------------------+
| 7f26e637-e4d2-4ce1-9afc-572837a096d4 | user-VN1 | 019c0a3c-b4a3-492a-8832-633ceffc07a3 |
+--------------------------------------+----------+--------------------------------------+

Contrailから作成する場合

Configure > Networking >Networks を開き、+をクリックし以下を入力しSave
Name: 仮想ネットワーク名
Subnet:CIDRにネットワークアドレス (今回は192.168.0.0/24)

4.仮想マシンを作成

Horizonやコマンドなどでuser-VN1に仮想マシンを作成します。
source openstackrc
nova boot --flavor m1.tiny --image cirros --nic net-id=7f26e637-e4d2-4ce1-9afc-572837a096d4 VM1 

5.Floating IPを仮想マシンに設定

OpenstackでもOpenContrailでもどちらからでも作成可能です。

Openstackから作成する場合

作成
source openstackrc
openstack floating ip create public
openstack server add floating ip VM1 203.0.113.3
確認
openstack floating ip list
+--------------------------------------+---------------------+------------------+--------------------------------------+--------------------------------------+----------------------------------+
| ID                                   | Floating IP Address | Fixed IP Address | Port                                 | Floating Network                     | Project                          |
+--------------------------------------+---------------------+------------------+--------------------------------------+--------------------------------------+----------------------------------+
| ef192165-151f-42f9-b58b-6215e6f92ba1 | 203.0.113.3         | 192.168.0.3      | a3b9d5a8-f33a-48be-92a3-d3b3508f9503 | 08960915-ef83-4980-ae3d-08aea937d4fb | 31ecaa5de0ea4ba783b8e267e6249d79 |
+--------------------------------------+---------------------+------------------+--------------------------------------+--------------------------------------+----------------------------------+

Contrailから作成する場合

Configure > Networking >Floating IPsを開き、+をクリックし選択しSave
Floating IP Pool: admin:public:default (203.0.113.0/24)
作成後、アドレスの右端のアイコンをクリックし、Associate Portを選択。Portより対象VMのIPアドレスを選択し、Save

6.通信確認

ここまで終わったら外部と通信できるか確認します。
通信ができない場合以下を確認してください
  • Simple gatewayのサブネットやルートの設定が正しいか
  • 外部からの通信がおかしい場合、Security groupで外部からの許可がされているか
  • KVMやGWのルーティングテーブルはが正しいか
  • NATが必要か
切り分けはCompute nodeのvhost0やKVM hostでtcpdumpし、どこまでパケットが出ているのか確認するとわかりやすいです。
解決しない場合はOpenContrailのSlack(英語)やユーザーズグループ(日本語)に問い合わせてください。

2017年10月17日火曜日

Kolla Openstack Ocata と Open Contrail4.0のインストール

DockerhubにアップロードされているOpenstack OcataとOpenContrail4.0のコンテナイメージを利用して、インストールする方法を紹介します。

今回の構成はUbuntu16.04.2をKVM上に4つ作成し、それぞれ以下のような役割になっています。作成したVMは2つ以上のNICを設定してください。(Openstack kollaの仕様)
作業はすべてkolla1から行います。
** KVMを利用する場合、ホストマシンでnestedを有効にしVMのCPUアトリビュートでVMXを有効にしてください。

構成:
kolla1(10.84.50.117): Openstack Controller/Ansible
kolla2(10.84.50.118): Contrail Controller
kolla3(10.84.50.119): Compute node
kolla4(10.84.50.120): Compute node
手順:
  1. 事前準備
  2. Ansible Playbookのダウンロードと設定
  3. インストール
  4. インストール後作業
  5. 動作確認

1.事前準備

今回はkolla1より各サーバにRootアクセスして設定するため、証明書を発行し対象サーバに登録します。
Kolla1で実行
ssh-keygen -t rsa 
すべてのノードでに対して実行
ssh-copy-id -i ~/.ssh/id_rsa.pub lab@10.84.50.117
ssh -t lab@10.84.50.117 'sudo mkdir /root/.ssh'
ssh -t lab@10.84.50.117 'sudo cp /home/lab/.ssh/authorized_keys /root/.ssh/authorized_keys' 

Ansibleを使うための事前準備
Kolla1で実行
apt update
apt install python-pip sshpass
pip install -U pip
pip install -U ansible
pip install  pyOpenSSL==16.2.0
すべてのノードに対して実行
ssh -t root@10.84.50.117 'apt-get -y install python-simplejson'

2.Ansible Playbookのダウンロードと設定

githubからインストール用ファイルをダウンロードします。
git clone https://github.com/gokulpch/OpenContrail-Kolla.git
ダウンロードしたファイルは2つあり、contrail-ansibleはOpenContrial用、kolla-ansibleはOpentack用です。

Openstackの設定ファイルの変更

OpenContrail-Kolla/kolla-ansible/etc/kolla/globals.ymlの修正

以下の4項目を修正します。
network_interface: "ens3"
kolla_internal_vip_address: "10.84.50.117"
contrail_api_interface_address: "10.84.50.118"
neutron_external_interface: "ens4"
  • network_interface:実際に使用するVMのNICを設定
  • kolla_internal_vip_address: Kolla1のens3のIPアドレスを設定
  • contrail_api_interface_address: kolla2のens3のIPアドレスを設定
  • neutron_external_interface: kolla1のNICを設定(ダミー)

OpenContrail-Kolla/kolla-ansible/etc/kolla/passwords.ymlの修正

各種コンポーネントのパスワードが設定されています。(デフォルトではcontrail1)
パスワードを変更したい場合はこのファイルを変更してください

OpenContrail-Kolla/kolla-ansible/ansible/inventory/multinodeの修正

[control] [network] [compute] [monitoring] [storage]の項目を修正してください。以下の例ではホスト名になっていますが、ホスト名を使う場合、IPアドレスが引けることが条件です。
[control]
kolla1
[network]
kolla1
[compute]
kolla3
kolla4
[monitoring]
kolla1
[storage]
kolla1

Contrailの設定ファイルの変更

OpenContrail-Kolla/contrail-ansible/playbooks/inventory/my-inventory/hostsの修正

[contrail-controllers] [contrail-analytics] [contrail-compute] [openstack-controllers]の項目を修正してください。ホスト名を設定すると動作しないので必ずIPアドレスを設定してください。
[contrail-controllers]
10.84.50.118
[contrail-analyticsdb]
10.84.50.118
[contrail-analytics]
10.84.50.118
[contrail-compute]
10.84.50.119
10.84.50.120
[openstack-controllers]
10.84.50.117

OpenContrail-Kolla/contrail-ansible/playbooks/inventory/my-inventory/group_vars/all.yml の修正

以下の5項目を修正します
ansible_ssh_private_key_file: ~/.ssh/id_rsa
global_config: { external_rabbitmq_servers: 10.84.50.117 }
rabbitmq_config: { user: openstack, password: contrail1 }
keystone_config: {ip: 10.84.50.117, admin_password: contrail1, auth_protocol: http}
vrouter_physical_interface: ens3
  • ansible_ssh_private_key_file:証明書のログインを指定(コメントアウトを外す)
  • global_config: RabbitMQのアドレスを設定。
  • rabbitmq_config: RabbitMQのパスワードを設定。passwords.ymlを変更した場合はここも変更
  • keystone_config: KeysoneにアクセスするAdminパスワードを設定。passwords.ymlを変更した場合はここも変更
  • vrouter_physical_interface: ContrailのvRouterが使用するNICを設定。ComputeノードごとにNIC名が違う場合はhostsに個別に設定。

3.インストール

Openstackインストールの事前準備

依存ファイルのインストールとAnsible作業時にssh keyを無視する変数をExport
ssh -t root@10.84.50.117 'apt-get -y install python-oslo-config'
export ANSIBLE_HOST_KEY_CHECKING=False

Openstackのインストール

cd OpenContrail-Kolla/kolla-ansible/ansible/
ansible-playbook -i inventory/multinode -e @../etc/kolla/globals.yml -e @../etc/kolla/passwords.yml -e action=bootstrap-servers kolla-host.yml
ansible-playbook -i inventory/multinode -e @../etc/kolla/globals.yml -e @../etc/kolla/passwords.yml -e action=deploy site.yml

OpenContrailのインストールの事前準備

Dockerのインストール
ssh -t root@10.84.50.118 'curl -sSL https://get.docker.io | bash'

OpenContrailのインストール

cd OpenContrail-Kolla/contrail-ansible/playbooks/
ansible -i inventory/my-inventory -m shell -a 'apt-get install -y ntp' all
ansible-playbook  -i inventory/my-inventory site.yml

compute nodeのリブート

ssh -t root@10.84.50.119 reboot
ssh -t root@10.84.50.120 reboot

4.インストール後作業

horizonのバグFix対応

docker exec -i horizon sudo sed -i -e 's:/usr/share/openstack-dashboard/static:/var/lib/openstack-dashboard/static:g' /etc/apache2/conf-enabled/000-default.conf
docker exec -i horizon /usr/share/openstack-dashboard/manage.py collectstatic --noinput
docker exec -i horizon /usr/share/openstack-dashboard/manage.py compress
docker exec -i horizon sudo service apache2 reload

openstackrc の作成

echo 'export OS_USERNAME=admin
export OS_PASSWORD=contrail1
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://10.84.50.117:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2' > openstackrc

Openstack clientのインストール

pip install python-openstackclient

flavorの作成

source openstackrc
openstack flavor create --id 1 --disk 1 --ram 512 --vcpus 1 --public m1.tiny
openstack flavor create --id 2 --disk 20 --ram 2048 --vcpus 1 --public m1.small
openstack flavor create --id 3 --disk 40 --ram 4096 --vcpus 2 --public m1.medium
openstack flavor create --id 4 --disk 80 --ram 8192 --vcpus 2 --public m1.large
openstack flavor create --id 5 --disk 160 --ram 16384 --vcpus 4 --public m1.xlarge

5.動作確認

openstack network listを発行し、以下のように3つのネットワークが返ってきたらOpenstackとOpenContrailの設定は終了です。
+--------------------------------------+-------------------------+--------------------------------------+
| ID                                   | Name                    | Subnets                              |
+--------------------------------------+-------------------------+--------------------------------------+
| a5432e6b-0155-4b13-abe8-e6290f6dc9fe | __link_local__          |                                      |
| 5a58e2d9-88b1-4ff2-9e0f-e0ed5e4e72ce | default-virtual-network |                                      |
| 65549c94-5ffc-4b30-9025-00a54813a695 | ip-fabric               |                                      |
+--------------------------------------+-------------------------+--------------------------------------+

次回、OpenContrail管理外に接続するためのSimple Gatewayの設定と動作確認を紹介します。

参考リンク
https://gitlab.com/gokulpch/OpenContrail-Kolla/blob/master/README.md

2016年4月19日火曜日

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

Contrailの動作確認

Contrailの動作確認を行います。

1.Controllerの確認
contrail-statusコマンドを実行し、Contrailが正常動作しているか確認します。
状態が、Active又は、Backupになっていれば問題ありません。
** contrail-device-manager,contrail-schema,contrail-svc-monitorは3台中1台がActiveになります。
== Contrail Control ==
supervisor-control:           active
contrail-control              active              
contrail-control-nodemgr      active              
contrail-dns                  active              
contrail-named                active              

== Contrail Analytics ==
supervisor-analytics:         active
contrail-alarm-gen            active              
contrail-analytics-api        active              
contrail-analytics-nodemgr    active              
contrail-collector            active              
contrail-query-engine         active              
contrail-snmp-collector       active              
contrail-topology             active              

== Contrail Config ==
supervisor-config:            active
contrail-api:0                active              
contrail-config-nodemgr       active              
contrail-device-manager       backup              
contrail-discovery:0          active              
contrail-schema               active              
contrail-svc-monitor          backup              
ifmap                         active              

== Contrail Web UI ==
supervisor-webui:             active
contrail-webui                active              
contrail-webui-middleware     active              

== Contrail Database ==
contrail-database:            active
supervisor-database:          active
contrail-database-nodemgr     active              
kafka                         active              

== Contrail Support Services ==
supervisor-support-service:   active
rabbitmq-server               active    

2.vRouterの確認
同様にcontrail-statusを実行し、Activeか確認します。
== Contrail vRouter ==
supervisor-vrouter:           active
contrail-vrouter-agent        active              
contrail-vrouter-nodemgr      active  

3.WebUIの確認
Webブラウザからhttp://Contrail1:8080/にアクセスし、adminユーザーでログインします。
ダッシュボードに各ノードの数が表示されます。
エラーが表示されていなければContrailの動作確認は終了です。
実際に仮想ネットワークや、仮想マシンを立てて通信してください。



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

Compute Nodeの設定

Compute Nodeの設定をします。
Nova Computeの設定は色々とありますが、ここでは簡単な設定のみ行います。もし、ContrailのLocal repository以外のNova Computeを利用したい場合は、Contralのパッケージをインストールする前にNova Computeをインストールしておくことをお勧めします。
**対象サーバ Compute1

1.変数の設定
HOST=10.84.50.135  ## インストール対象サーバのIPアドレスを指定
OPENSTACK=10.84.50.134  ## Openstack ServerのIPアドレスを指定
IVIP=10.84.50.139  ## Control/Dataの仮想IPアドレスを指定
DEV=p514p2  ## Control/Data用の物理NIC名
MAC=90:e2:ba:a1:aa:e1  ## Control/Data用の物理NICのMACアドレス
DGW=10.84.50.252  ## Control/Data用のデフォルトゲートウェイ。このルーティングはLinux Kernelでは使用しません。

2.Nova Computeパッケージのインストール
apt-get update
apt-get install -y nova-compute sysfsutils

3./etc/nova.confの修正
echo "[DEFAULT]
dhcpbridge_flagfile=/etc/nova/nova.conf
dhcpbridge=/usr/bin/nova-dhcpbridge
logdir=/var/log/nova
state_path=/var/lib/nova
lock_path=/var/lock/nova
force_dhcp_release=True
libvirt_use_virtio_for_bridges=True
verbose=True
ec2_private_dns_show_ip=False
api_paste_config=/etc/nova/api-paste.ini
enabled_apis=ec2,osapi_compute,metadata
rabbit_host = $OPENSTACK
security_group_api = neutron
service_neutron_metadata_proxy = True
compute_driver = libvirt.LibvirtDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
novncproxy_port = 5999
novncproxy_host = 0.0.0.0
auth_strategy = keystone
network_api_class = nova.network.neutronv2.api.API
novncproxy_base_url = http://$OPENSTACK:6080/vnc_auto.html
vncserver_enabled = true
vncserver_listen = $HOST
vncserver_proxyclient_address = $HOST

[keystone_authtoken]
admin_tenant_name = service
admin_user = nova
admin_password = password
auth_protocol = http
auth_host = $OPENSTACK
auth_port = 35357
signing_dir = /tmp/keystone-signing-nova

[neutron]
admin_auth_url = http://$OPENSTACK:35357/v2.0/
admin_username = neutron
admin_password = password
admin_tenant_name = service
url = http://$IVIP:9696/
url_timeout = 300
service_metadata_proxy = True

[compute]
compute_driver = libvirt.LibvirtDriver

[glance]
host = $OPENSTACK" > /etc/nova.conf

4./etc/libvirt/qemu.confの修正
echo 'cgroup_device_acl = [
    "/dev/null", "/dev/full", "/dev/zero",
    "/dev/random", "/dev/urandom",
    "/dev/ptmx", "/dev/kvm", "/dev/kqemu",
    "/dev/rtc", "/dev/hpet","/dev/net/tun",
]' >> /etc/libvirt/qemu.conf

5.Contrail vRouterパッケージのインストール
Linux Kernelが3.13.0-40以外の場合
apt-get -y install contrail-openstack-vrouter contrail-vrouter-dkms contrail-vrouter-common contrail-nova-vif
Linux Kernelが3.13.0-40の場合
apt-get -y install contrail-openstack-vrouter contrail-vrouter-3.13.0-40-generic contrail-vrouter-common contrail-nova-vif

6./etc/contrail/vrouter_nodemgr_paramの修正
echo "DISCOVERY=$IVIP" > /etc/contrail/vrouter_nodemgr_param

7./etc/contrail/agent_paramの修正
echo "LOG=/var/log/contrail.log
CONFIG=/etc/contrail/contrail-vrouter-agent.conf
prog=/usr/bin/contrail-vrouter-agent
kmod=vrouter
pname=contrail-vrouter-agent
LIBDIR=/usr/lib64
DEVICE=vhost0
dev=$DEV
LOGFILE=--log-file=/var/log/contrail/vrouter.log" > /etc/contrail/agent_param

8./etc/contrail/contrail-vrouter-agent.confの修正
sed -i -e "/^\[DISCOVERY\]/i platform=default" /etc/contrail/contrail-vrouter-agent.conf
sed -i -e "/^\[DISCOVERY\]/i physical_interface_mac=$MAC" /etc/contrail/contrail-vrouter-agent.conf
sed -i "s/# server=127.0.0.1/server=$IVIP/g" /etc/contrail/contrail-vrouter-agent.conf
sed -i "s/# max_control_nodes=1/max_control_nodes=2/g" /etc/contrail/contrail-vrouter-agent.conf
sed -i "s/# type=kvm/type=kvm/g" /etc/contrail/contrail-vrouter-agent.conf
sed -i "s/# control_network_ip=/control_network_ip=$HOST/g" /etc/contrail/contrail-vrouter-agent.conf
sed -i "s/# name=vhost0/name=vhost0/g" /etc/contrail/contrail-vrouter-agent.conf
sed -i "s/# ip=10.1.1.1/24/ip=$HOST/24/g" /etc/contrail/contrail-vrouter-agent.conf
sed -i "s/# gateway=10.1.1.254/gateway=$DGW/g" /etc/contrail/contrail-vrouter-agent.conf
sed -i "s/# physical_interface=vnet0/physical_interface=$DEV/g" /etc/contrail/contrail-vrouter-agent.conf
sed -i "s/# thread_count = 4/thread_count = 4/g" /etc/contrail/contrail-vrouter-agent.conf

9./etc/network/interfacesの修正
vRouterはControl/Dataで使用する物理NICをvhost0にバインドします。このため、物理インターフェイスにはIPアドレスを振らずに、vhost0にアドレスを振ります。
以下のコマンドを実行して、/etc/network/interfaceにコピペしてください。
echo "auto $DEV
iface $DEV inet manual
    pre-up ifconfig $IDEV up
    post-down ifconfig $IDEV down


auto vhost0
iface vhost0 inet static
    pre-up /opt/contrail/bin/if-vhost0
    netmask 255.255.255.0
    network_name application
    address $HOST
    gateway $DGW
    dns-nameservers 8.8.8.8"

10./etc/contrail/contrail-vrouter-nodemgr.confの修正
echo "[DISCOVERY]
server=$IVIP
port=5998" >> /etc/contrail/contrail-vrouter-nodemgr.conf

11.ComputeNodeのリブート
Compute Nodeをリブートします。

12.ContrailへComputeNodeを追加
WebUIを開き"Configure"->"Infrastructure"->"Virtual Routers"を開き、"+"をクリックします。
以下のようなダイアログが開くので、"Name"にCompute Nodeのホスト名"IP Address"にCompute Nodeのvhost0のIPアドレスを入力します。

これで設定は終了です。
次は動作確認です。

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

Contrailの初期設定

Contrailを初期設定します。
**対象サーバ Contrail1 どれか一つで行えばOKです。
1.変数の設定
HOST=10.84.50.131  ## インストール対象サーバのIPアドレスを指定
OPENSTACK=10.84.50.134  ## Openstack ServerのIPアドレスを指定
IVIP=10.84.50.139  ## Control/Dataの仮想IPアドレスを指定
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アドレス
host_name1=contrail1  ## Contrail1のホスト名
host_name2=contrail2  ## Contrail2のホスト名
host_name3=contrail3  ## Contrail3のホスト名

2.Config Nodeの設定
python /opt/contrail/utils/provision_config_node.py --api_server_ip $IVIP --admin_user admin --admin_password password --admin_tenant_name admin --oper add --host_name $host_name1 --host_ip $host1
python /opt/contrail/utils/provision_config_node.py --api_server_ip $IVIP --admin_user admin --admin_password password --admin_tenant_name admin --oper add --host_name $host_name2 --host_ip $host2
python /opt/contrail/utils/provision_config_node.py --api_server_ip $IVIP --admin_user admin --admin_password password --admin_tenant_name admin --oper add --host_name $host_name3 --host_ip $host3

3.Database Nodeの設定
python /opt/contrail/utils/provision_database_node.py --api_server_ip $IVIP --admin_user admin --admin_password password --admin_tenant_name admin --oper add --host_name $host_name1 --host_ip $host1
python /opt/contrail/utils/provision_database_node.py --api_server_ip $IVIP --admin_user admin --admin_password password --admin_tenant_name admin --oper add --host_name $host_name2 --host_ip $host2
python /opt/contrail/utils/provision_database_node.py --api_server_ip $IVIP --admin_user admin --admin_password password --admin_tenant_name admin --oper add --host_name $host_name3 --host_ip $host3

4.Analytics Nodeの設定
python /opt/contrail/utils/provision_analytics_node.py --api_server_ip $IVIP --admin_user admin --admin_password password --admin_tenant_name admin --oper add --host_name $host_name1 --host_ip $host1
python /opt/contrail/utils/provision_analytics_node.py --api_server_ip $IVIP --admin_user admin --admin_password password --admin_tenant_name admin --oper add --host_name $host_name2 --host_ip $host2
python /opt/contrail/utils/provision_analytics_node.py --api_server_ip $IVIP --admin_user admin --admin_password password --admin_tenant_name admin --oper add --host_name $host_name3 --host_ip $host3

5.ContrailのConfig設定
python /opt/contrail/utils/provision_control.py --api_server_ip $IVIP --api_server_port 8082 --admin_user admin --admin_password password --admin_tenant_name admin --oper add --host_name $host_name1 --host_ip $host1 --router_asn 64512
python /opt/contrail/utils/provision_encap.py --api_server_ip $IVIP --admin_user admin --admin_password password --oper add --encap_priority MPLSoUDP,MPLSoGRE,VXLAN
python /opt/contrail/utils/provision_linklocal.py --api_server_ip $IVIP --admin_user admin --admin_password password --admin_tenant_name admin --oper add --ipfabric_service_ip $OPENSTACK --ipfabric_service_port 8775 --linklocal_service_name metadata --linklocal_service_ip 169.254.169.254 --linklocal_service_port 80

次はCompute Nodeの設定です。

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

WebUIの設定

ContrailのWebUIを設定します
WebUIはcontrail-webui,contrail-webui-middlewareで構成されます
**対象サーバ Contrail1-3

1.変数の設定
HOST=10.84.50.131  ## インストール対象サーバのIPアドレスを指定
OPENSTACK=10.84.50.134  ## Openstack ServerのIPアドレスを指定
IVIP=10.84.50.139  ## Control/Dataの仮想IPアドレスを指定
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 -y install contrail-openstack-webui

3./etc/contrail/config.global.jsの修正
sed -i "s/config.networkManager.ip =.*/config.networkManager.ip = '$IVIP';/g" /etc/contrail/config.global.js
sed -i "s/config.imageManager.ip = .*/config.imageManager.ip = '$OPENSTACK'/g" /etc/contrail/config.global.js
sed -i "s/config.computeManager.ip = .*/config.computeManager.ip = '$OPENSTACK'/g" /etc/contrail/config.global.js
sed -i "s/config.identityManager.ip = .*/config.identityManager.ip = '$OPENSTACK'/g" /etc/contrail/config.global.js
sed -i "s/config.storageManager.ip = .*/config.storageManager.ip = '$OPENSTACK'/g" /etc/contrail/config.global.js
sed -i "s/config.cnfg.server_ip = /config.cnfg.server_ip = '$IVIP'/g" /etc/contrail/config.global.js
sed -i "s/config.analytics.server_ip = /config.analytics.server_ip = '$IVIP'/g" /etc/contrail/config.global.js
sed -i "s/config.cassandra.server_ips = .*/config.cassandra.server_ips = ['$host1', '$host2', '$host3']/g" /etc/contrail/config.global.js

4.contrail-webui-userauth.jsの修正
set -i "s/contrail123/password/g" /etc/contrail/contrail-webui-userauth.js

5.シンボリックリンクの作成
ln -s /usr/bin/node /usr/bin/nodejs

6.WebUIの起動
service supervisor-webui restart

次は初期コンフィグの設定です。

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

Analytics Nodeの設定

Contrailで使用するAnalytics Nodeを設定します。
Analytics Nodeはcontrail-alarm-gen,contrail-analytics-api,contrail-collector,contrail-query-engine,contrail-snmp-collector,contrail-topologyで構成されます。
**対象サーバ Contrail1-3

1. 変数の設定
HOST=10.84.50.131  ## インストール対象サーバのIPアドレスを指定
OPENSTACK=10.84.50.134  ## Openstack ServerのIPアドレスを指定
IVIP=10.84.50.139  ## Control/Dataの仮想IPアドレスを指定
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 -y install contrail-openstack-analytics

3./etc/redis/redis.confの修正
sed -i "s/^bind/#bind/g" /etc/redis/redis.conf
sed -i "s/^save/#save/g" /etc/redis/redis.conf
sed -i "s/^dbfilename/#dbfilename/g" /etc/redis/redis.conf
sed -i "s/^lua-time-limit 5000/lua-time-limit 15000/g" /etc/redis/redis.conf

4./etc/contrail/contrail-collector.confの修正
sed -i "s/^# cassandra_server_list=.*/cassandra_server_list=$host1:9160 $host2:9160 $host3:9160/g" /etc/contrail/contrail-collector.conf
sed -i "s/^# kafka_broker_list=.*/kafka_broker_list=$host1:9092 $host2:9092 $host3:9092/g" /etc/contrail/contrail-collector.conf
sed -i "s/^# hostip=/hostip=$HOST/g" /etc/contrail/contrail-collector.conf
sed -i "s/^# http_server_port=8089/http_server_port=8089/g" /etc/contrail/contrail-collector.conf
sed -i "s/^# syslog_port=514/syslog_port=-1/g" /etc/contrail/contrail-collector.conf
sed -i "s/^# port=8086/port=8086/g" /etc/contrail/contrail-collector.conf
sed -i -e "/^# IP address of discovery server/a server=$IVIP" /etc/contrail/contrail-collector.conf
sed -i -e "/^# IP address of redis-server/a server=127.0.0.1" /etc/contrail/contrail-collector.conf
sed -i -e "/^cassandra_server_list/a zookeeper_server_list=$host1:2181,$host2:2181,$host3:2181" /etc/contrail/contrail-collector.conf

5./etc/contrail/contrail-query-engine.confの修正
sed -i "s/^# Collector configuration options/# Query-Engine configuration options/g" /etc/contrail/contrail-query-engine.conf
sed -i "s/^# cassandra_server_list=127.0.0.1:9160/cassandra_server_list=$host1:9160 $host2:9160 $host3:9160/g" /etc/contrail/contrail-query-engine.conf
sed -i "s/^# hostip=.*/hostip=$HOST/g" /etc/contrail/contrail-query-engine.conf
sed -i "s/^# http_server_port=8089/http_server_port=8091/g" /etc/contrail/contrail-query-engine.conf
sed -i "s/^# server=127.0.0.1 # discovery_server IP address/server=$IVIP/g" /etc/contrail/contrail-query-engine.conf
sed -i "s/^# port=6379/port=6379/g" /etc/contrail/contrail-query-engine.conf
sed -i "s/^# server=127.0.0.1/server=127.0.0.1/g" /etc/contrail/contrail-query-engine.conf

6./etc/contrail/contrail-analytics-api.confの修正
sed -i "s/^#host_ip = 127.0.0.1/host_ip = $HOST/g" /etc/contrail/contrail-analytics-api.conf
sed -i "s/^#cassandra_server_list=127.0.0.1:9160/cassandra_server_list=$host1:9160 $host2:9160 $host3:9160/g" /etc/contrail/contrail-analytics-api.conf
sed -i "s/^#http_server_port = 8090/http_server_port = 8090/g" /etc/contrail/contrail-analytics-api.conf
sed -i "s/^#rest_api_port = 8081/rest_api_port = 9081/g" /etc/contrail/contrail-analytics-api.conf
sed -i "s/^#rest_api_ip = 0.0.0.0/rest_api_ip = 0.0.0.0/g" /etc/contrail/contrail-analytics-api.conf
sed -i "s/^#log_category = /log_category = /g" /etc/contrail/contrail-analytics-api.conf
sed -i "s/^#disc_server_ip = 127.0.0.1/disc_server_ip = $IVIP/g" /etc/contrail/contrail-analytics-api.conf
sed -i "s/^#disc_server_port = 5998/disc_server_port = 5998/g" /etc/contrail/contrail-analytics-api.conf
sed -i "s/^#redis_server_port=6379/redis_server_port=6379/g" /etc/contrail/contrail-analytics-api.conf
sed -i "s/^#redis_query_port=6379/redis_query_port=6379/g" /etc/contrail/contrail-analytics-api.conf

7./etc/contrail/contrail-analytics-nodemgr.confの修正
sed -i "s/server=.*/server=$IVIP/g" /etc/contrail/contrail-analytics-nodemgr.conf

8./etc/contrail/contrail-snmp-collector.confの修正
sed -i "s/^#zookeeper=.*/zookeeper=$host1:2181,$host2:2181,$host3:2181/g" /etc/contrail/contrail-snmp-collector.conf
sed -i "s/^#disc_server_ip=.*/disc_server_ip=$IVIP/g" /etc/contrail/contrail-snmp-collector.conf
sed -i "s/^#disc_server_port=5998/disc_server_port=5998/g" /etc/contrail/contrail-snmp-collector.conf

9./etc/contrail/supervisord_analytics_files/contrail-snmp-collector.iniの修正
sed -i "s/command=.*/command=\/usr\/bin\/contrail-snmp-collector --conf_file \/etc\/contrail\/contrail-snmp-collector.conf --conf_file \/etc\/contrail\/contrail-keystone-auth.conf/g" /etc/contrail/supervisord_analytics_files/contrail-snmp-collector.ini

10./etc/contrail/contrail-topology.confの修正
sed -i "s/^#zookeeper=.*/zookeeper=$host1:2181,$host2:2181,$host3:2181/g" /etc/contrail/contrail-topology.conf

echo "[DISCOVERY]
disc_server_ip = $IVIP
disc_server_port = 5998" >> /etc/contrail/contrail-topology.conf

11./etc/contrail/supervisord_analytics_files/contrail-topology.iniの修正
sed -i "s/command=.*/command=\/usr\/bin\/contrail-topology --conf_file \/etc\/contrail\/contrail-topology.conf --conf_file \/etc\/contrail\/contrail-keystone-auth.conf/g" /etc/contrail/supervisord_analytics_files/contrail-topology.ini

12./etc/contrail/contrail-alarm-gen.confの修正
sed -i "s/^#host_ip =.*/host_ip = $HOST/g" /etc/contrail/contrail-alarm-gen.conf
sed -i "s/^#kafka_broker_list =.*/kafka_broker_list=$host1:9092 $host2:9092 $host3:9092/g" /etc/contrail/contrail-alarm-gen.conf
sed -i "s/^#zk_list =.*/zk_list = $host1:2181,$host2:2181,$host3:2181/g" /etc/contrail/contrail-alarm-gen.conf
sed -i "s/^#disc_server_ip =.*/disc_server_ip=$IVIP/g" /etc/contrail/contrail-alarm-gen.conf
sed -i "s/^#disc_server_port =.*/disc_server_port=5998/g" /etc/contrail/contrail-alarm-gen.conf

13.Analytics Nodeの起動
service supervisor-analytics restart

次はWebUIの設定です。