2014年11月13日木曜日

既存OpenStackとOpenContrailの接続

既存のOpenStackとOpenContrailをOpenContrailのfabスクリプトを使用して構築する。
今回は冗長構成は組まず、OpenStack,OpenContrail共にシングル構成

環境
ベースOS Ubuntu14.04.1
サーバ1 : Keystone, Nova Server, Cinder, Glance
サーバ2 : コンピュートノード
サーバ3 : OpenContrail Neutron

準備
サーバ1にNeutron以外のOpenStackに必要なノードを構築する。
サーバ2にnova-computeだけインストールする。
構築方法は割愛。Neutron以外正常稼動することを確認しておく。NeutronはOpenContrailのFabでインストールするので、インストールする必要はないです。
(日本仮想化技術株式会社のOpenStack構築手順書はすごく参考になります。)

ここからサーバ3にOpenContrailをインストールしますが、Novaのvifドライバーとプラグインのインストールが必要なので、全てのサーバにOpenContrialのリポジトリの登録と、必要なパッケージのダウンロードを行う。

リポジトリの登録
(HOSTS="SV1 SV2 SV3"; for H in ${HOSTS}; do
ssh root@$H <<EOF
apt-get install -y curl;
curl -L http://www.opencontrail.org/ubuntu-repo/repo_key| sudo apt-key add -;
curl -L http://www.opencontrail.org/ubuntu-repo/add-apt-and-update| sudo OPENSTACK=icehouse CONTRAIL=r120 DISTRO=ubuntu1404 sh;
EOF
done;)
プロビジョニングツールをインストール
curl –L http://www.opencontrail.org/ubuntu-repo/install-tools-key-and-prep | sudo HOSTS="SV1 SV2 SV3" sh
fabricのtestbed.pyを編集
セットアップするサーバはSV1です
cd /opt/contrail/utils/
vi fabfile/testbeds/testbed.py
testbed.pyを編集します。
from fabric.api import env
#Management ip addresses of hosts in the cluster
host1 = 'root@SV1'
host2 = 'root@SV2'
host3 = 'root@SV3'
#External routers if any
#for eg.
#ext_routers = [('mx1', '10.204.216.253')]
ext_routers = []
#Autonomous system number
router_asn = 64512
#Host from which the fab commands are triggered to install and provision
host_build = 'root@SV1'
#Role definition of the hosts.
env.roledefs = {
    'all': [host1, host2, host3],
    'cfgm': [host1],
    'openstack': [host2],
    'control': [host1],
    'compute': [host3],
    'collector': [host1],
    'webui': [host2],
    'database': [host1],
    'build': [host_build],
    'storage-master': [host1],
    'storage-compute': [host3],
}
env.hostnames = {
    'all': ['a0s1', 'a0s2', 'a0s3']
}
#Openstack admin password
env.openstack_admin_password = 'secret123'
env.password = 'secret123'
#Passwords of each host
env.passwords = {
    host1: 'secret',
    host2: 'secret',
    host3: 'secret',
    host_build: 'juniper123',
}
#For reimage purpose
env.ostypes = {
    host1: 'ubuntu',
    host2: 'ubuntu',
    host3: 'ubuntu',
}
testbed.pyを作成したら依存ファイルをインストールしてスクリプトを実行
SV1にnodejsをインストールする
apt-get install nodejs=0.8.15-1contrail1
SV1の/opt/contrail/utilsディレクトリで以下を実行
fab install_without_openstack:manage_nova_compute='no'
fab setup_without_openstack:manage_nova_compute='no'
※コンピュートノードがリブート

コンピュートノードの設定を変更
SV2で以下のコマンドを実行
sudo echo 'cgroup_device_acl = [' >> /etc/libvirt/qemu.conf
sudo echo '    "/dev/null", "/dev/full", "/dev/zero",' >> /etc/libvirt/qemu.conf
sudo echo '    "/dev/random", "/dev/urandom",' >> /etc/libvirt/qemu.conf
sudo echo '    "/dev/ptmx", "/dev/kvm", "/dev/kqemu",' >> /etc/libvirt/qemu.conf
sudo echo '    "/dev/rtc", "/dev/hpet","/dev/net/tun",' >> /etc/libvirt/qemu.conf
sudo echo ']' >> /etc/libvirt/qemu.conf
service libvirt-bin restart
openstack-config --set /etc/nova/nova.conf DEFAULT neutron_admin_auth_url http://:5000/v2.0
service nova-compute restart
Novaサーバーの設定を確認 
[DEFAULT]
 neutron_url = http://SV3:9696
SV3の部分がサーバ3のIPアドレスになっていること

DashboardをOpenContrailに対応させるため、SV1で以下のファイルをダウンロード
apt-get install contrail-openstack-dashboard
Dashboardの設定変更
SV1で以下のコマンドを実行
sudo echo "HORIZON_CONFIG['customization_module'] = 'contrail_openstack_dashboard.overrides'" >> /etc/openstack-dashboard/local_settings.py
service apatch2 restart
endpoint-serviceの確認
fabスクリプトでプロビジョニングすると、Neutronのregionが"RegionOne"になっている。このためkeystone endpoint-list でNeutronのregionが他のregionと同じか確認する。
regionが異なっているとHorizonでNetwork関係のタブをクリックするとエラーになるため、一度keystone endpoint-deleteで削除して作りなおす。
OpenContrail1.20 with Ubuntu1404はバグがあるため、Networkingのタブをクリックするとエラーになります。

※11/16highlight.jsを導入しました。

0 件のコメント:

コメントを投稿