OpenStack Kilo(RDO版)でのMidoNet構築手順(1)
OpenStackのインストール
続いて、Packstackを用いてRDO版OpenStackをインストールします。
(7)Packstackのインストール、answer file生成@Controller
(7)から(9)の手順は、Controllerでのみ実施します。
Packstackをインストールし、Packstackのインストール用設定ファイルであるanswer fileのベースを生成します。
【Packstackインストール】@Controller # yum install openstack-packstack 【answer file生成】@Controller # packstack --gen-answer=answer20150819
(8)answer fileの修正@Controller
(7)で生成したanswer fileは、all in one構成用のため、今回の構成に合わせて修正します。基本的にはCONFIG_COMPUTE_HOSTSの変更だけですが、今回は構築を容易にするため、一部も無効化・共通化しました。なお、answer fileのデフォルト値は変更される可能性があるので、以下のサンプルをダウンロードしてください。
【デフォルトパスワード、~_PW、~_TOKEN、~_KEY、~_SECRET の変更】 # 必要に応じて変更ください。後述のMidoNetインストール時に使います。 CONFIG_DEFAULT_PASSWORD=admina CONFIG_KEYSTONE_ADMIN_TOKEN=admina 【不必要なサービスの無効化。本検証ではSWIFT、CEILOMETERとデモを無効化】 CONFIG_SWIFT_INSTALL=n CONFIG_CEILOMETER_INSTALL=n CONFIG_PROVISION_DEMO=n 【HOSTSの変更】 【Compute 1、2のManagement NetworkのIP Addressへと書き換え】 CONFIG_COMPUTE_HOSTS=192.168.10.102,192.168.10.103
(9)Packstack実行@Controller
(8)で修正したanswer fileを用いて、Packstackを実行します。環境によりますが、数十分~1時間程度かかります。
【Packstack実行】@Controller # packstack --answer-file= answer20150819
(10)nova.confの修正@Compute 1、2
日本語キーボードを使っている場合、keymap設定を変更します。また、virt_typeがkvmとなっていることを確認し、異なっていた場合はkvmに変更します。
【nova.conf修正】@Compute1、2 # vi /etc/nova/nova.conf ---- vnc_keymap=ja virt_type=kvm ----
(11)サーバ再起動@Controller、Compute 1、2
Controller、Compute 1、2を再起動します。
【再起動】@Controller、Compute 1、2 # reboot
MidoNetのインストール
MidoNetのコンポーネントをインストールします。
(12)Neutron関連設定の変更@Controller、Compute 1、2
MidoNetでは不要なサービスを削除・停止します。
【Neutron OVSの削除】@Controller、Compute 1、2 # yum remove openstack-neutron-openvswitch 【Neutron l3 agentの無効化】@Controller、Compute 1、2 # systemctl stop neutron-l3-agent # systemctl disable neutron-l3-agent 【iptables無効化(firewalldは停止しているはずだが念のため)】@Controller、Compute 1、2 # systemctl stop firewalld # systemctl disable firewalld # systemctl stop iptables # systemctl disable iptables
(13)zookeeperインストール@NSDB 1、2、3
NSDBを構築していきます。まずはzookeeperをインストールします。
【zookeeper及び関連パッケージのインストール】@NSDB 1、2、3 # yum install java-1.7.0-openjdk # yum install zookeeper zkdump nmap-ncat 【javaパスの設定】@NSDB 1、2、3 # mkdir -p /usr/java/default/bin/ # ln -s /usr/lib/jvm/jre-1.7.0-openjdk/bin/java /usr/java/default/bin/java 【zookeeper用ディレクトリの作成】@NSDB 1、2、3 # mkdir /var/lib/zookeeper/data # chown zookeeper:zookeeper /var/lib/zookeeper/data 【zookeeper設定ファイルへ、NSDBのアドレスを追加】@NSDB 1、2、3 # vi /etc/zookeeper/zoo.cfg ---- server.1=192.168.10.104:2888:3888 server.2=192.168.10.105:2888:3888 server.3=192.168.10.106:2888:3888 ---- 【NSDB1へのID設定】@NSDB 1 # echo 1 > /var/lib/zookeeper/data/myid 【NSDB2へのID設定】@NSDB 2 # echo 2 > /var/lib/zookeeper/data/myid 【NSDB3へのID設定】@NSDB 3 # echo 3 > /var/lib/zookeeper/data/myid
(14)zookeeper起動及び確認@NSDB 1、2、3
zookeeperを起動し、正常に動作していることを確認します。
【zookeeperの起動及び確認】@NSDB 1、2、3 # systemctl start zookeeper.service # chkconfig zookeeper on 【imokの応答があることを確認】 # echo ruok | nc 127.0.0.1 2181 【エラーなく応答があることを確認】 # echo stat | nc 127.0.0.1 2181
(15)Cassandraインストール@NSDB 1、2、3
NSDB構築の続きです。Cassandraをインストールします。
【Cassandraインストール】@NSDB 1、2、3 # yum install dsc20 【NSDB1での設定パラメータ変更】@NSDB1 # vi /etc/cassandra/conf/cassandra.yaml ---- cluster_name: 'midonet' listen_address: 192.168.10.104 - seeds: "192.168.10.104,192.168.10.105,192.168.10.106" rpc_address: 192.168.10.104 ---- 【NSDB2での設定パラメータ変更】@NSDB 2 # vi /etc/cassandra/conf/cassandra.yaml ---- cluster_name: 'midonet' listen_address: 192.168.10.105 - seeds: "192.168.10.104,192.168.10.105,192.168.10.106" rpc_address: 192.168.10.105 ---- 【NSDB3での設定パラメータ変更】@NSDB 3 # vi /etc/cassandra/conf/cassandra.yaml ---- cluster_name: 'midonet' listen_address: 192.168.10.106 - seeds: "192.168.10.104,192.168.10.105,192.168.10.106" rpc_address: 192.168.10.106 ---- 【既存設定の削除】@NSDB 1、2、3 # rm -rf /var/lib/cassandra/data/system/
(16)Cassandra起動及び確認@NSDB 1、2、3
Cassandraを起動し、正常に動作していることを確認します。
【Cassandraサービスの起動】@NSDB 1、2、3 # systemctl restart cassandra.service # chkconfig cassandra on 【NSDB1でのCassandraサービス起動確認】@NSDB 1 【Cassandra CLIで接続できることを確認。exit、ctrl+zで抜ける】 # cassandra-cli -h 192.168.10.104 -p 9160 【NSDB2でのCassandraサービス起動確認】@NSDB 2 # cassandra-cli -h 192.168.10.105 -p 9160 【NSDB3でのCassandraサービス起動確認】@NSDB 3 # cassandra-cli -h 192.168.10.106 -p 9160 【Cassandraサービスの全体の動作確認】@NSDB 1、2、3 #nodetool ring 【Addressが3つ表示されることを確認】 # nodetool status
(17)midolmanインストール@Controller、Compute 1、2、GW 1、2
MidoNetのAgentであるmidolmanをインストールし、NSDBとの接続設定を入れます。
【Midolmanインストール】@Controller、Compute 1、2、GW 1、2 # yum install midolman 【NSDBのIP Addressと設定パラメータの変更】@Controller、Compute 1、2、GW 1、2 # vi /etc/midolman/midolman.conf ---- [zookeeper] zookeeper_hosts =192.168.10.104:2181,192.168.10.105:2181,192.168.10.106:2181 ---- 【mn-confから設定投入その1】@Controller --(ここから)-- # cat << EOF | mn-conf set -t default zookeeper { zookeeper_hosts = "192.168.10.104:2181,192.168.10.105:2181,192.168.10.106:2181" } cassandra { servers = "192.168.10.104,192.168.10.105,192.168.10.106" } EOF --(ここまで)-- 【mn-confから設定投入その2】@Controller # echo "cassandra.replication_factor : 3" | mn-conf set -t default 【投入された設定の確認】@Controller及びCompute1、2、GW1、2のいずれか 【設定投入その1、2のパラメータが存在することを確認】 # mn-conf dump 【Midolmanの起動及び確認】@Controller、Compute 1、2、GW 1、2 # systemctl restart midolman.service # ps -ef | grep mido # service midolman status
(18)MidoNet APIのインストール@Controller
MidoNet APIをインストールします。
【MidoNet APIインストール】@Controller # yum install midonet-api 【web.xml修正】@Controller 【リスト内の強調部分を修正】 # vi /usr/share/midonet-api/WEB-INF/web.xml ---- 【ControllerのIP Address、ポートを8081へ】 <param-name>rest_api-base_uri</param-name> <param-value>http://192.168.10.101:8081/midonet-api</param-value> 【ControllerのIP Addressへ】 <param-name>keystone-service_host</param-name> <param-value>192.168.10.101</param-value> 【answer fileのCONFIG_KEYSTONE_ADMIN_TOKENのパラメータにあわせる】 <param-name>keystone-admin_token</param-name> <param-value>admina</param-value> 【上記に合わせる】 <param-name>mock_auth-admin_token</param-name> <param-value>admina</param-value> 【上記に合わせる】 <param-name>mock_auth-tenant_admin_token</param-name> <param-value>admina</param-value> 【上記に合わせる】 <param-name>mock_auth-tenant_user_token</param-name> <param-value>admina</param-value> 【NSDB1、2、3のIP Address:2181へ】 <param-name>zookeeper-zookeeper_hosts</param-name> <param-value>192.168.10.104:2181,192.168.10.105:2181,192.168.10.106:2181</paramvalue> </context-param>
(19)Tomcatのインストール@Controller
MidoNet APIを動作させるため、Tomcatをインストール・設定します。
【Tomcatのインストール】@Controller # yum install tomcat 【midonet-api.xmlの作成】@Controller 【下記内容で新規作成】 # vi /etc/tomcat/Catalina/localhost/midonet-api.xml ---- <Context path="/midonet-api" docBase="/usr/share/midonet-api" antiResourceLocking="false" privileged="true" /> ---- 【tomcat.confへの追記】@Controller 【下記内容を追記】 vi /etc/tomcat/tomcat.conf ---- CONNECTOR_PORT="8081" ---- 【server.xmlへの修正・追記】@Controller 【下記の強調部分を修正(ポートを8080から8081へ)・追記】 # vi /etc/tomcat/server.xml ---- <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" maxHttpHeaderSize="65536"/> ---- 【tomcatの起動、有効化】@Controller # systemctl restart tomcat.service # systemctl enable tomcat.service
(20)MidoNet CLI@Controller
MidoNet CLIをインストールします。
【MidoNet CLIのインストール】@Controller # yum install python-midonetclient 【midonetrcの作成】@Controller 【下記内容で新規作成】 # vi ~/.midonetrc ---- [cli] api_url = http://192.168.10.101:8081/midonet-api username = admin password = admina project_id = admin ----
(21)Tunnel Zone作成、登録@Controller
連載の1回目で述べたように、MidoNetの仮想ネットワークは、Tunnel Zoneと呼ばれる各ノードをフルメッシュでつないだトンネル上で構成されます。そのTunnel Zoneの作成と、Tunnel Zoneへの各ノードの登録をします。ランダム要素があるため、注意して実施してください。
【MidoNet CLIの実行】@Controller # midonet-cli 【Tunnel Zoneの作成(midonet-cli内で実行)】@Controller (出力例) midonet> tunnel-zone create name vxlan type vxlan tzone0 【Tunnel Zoneの確認(midonet-cli内で実行)】@Controller (出力例) midonet> list tunnel-zone tzone tzone0 name vxlan type vxlan 【host情報の確認(midonet-cli内で実行)】@Controller 【(17)でMidolmanをインストールしたサーバが表示されていることを確認。hostXとサーバのひもづけは、毎回異なるので要注意】 (出力例。IPv6の記述は省略) midonet> list host ---- host host0 name cmpt2.midonet.example.com alive true addresses /192.168.10.103,(略),(略),/192.168.20.103,/127.0.0.1,(略) host host1 name ctrl.midonet.example.com alive true addresses /127.0.0.1,(略),/192.168.20.101,(略),/192.168.10.101,(略) host host2 name cmpt1.midonet.example.com alive true addresses(略),/192.168.10.102,(略),/192.168.20.102,/127.0.0.1,(略) host host3 name gw2.midonet.example.com alive true addresses /192.168.20.108,(略),/127.0.0.1,(略),(略),/192.168.10.108,(略) host host4 name gw1.midonet.example.com alive true addresses(略),/127.0.0.1,(略),/192.168.20.107,(略),/192.168.10.107,(略) ---- 【Tunnel Zoneへのhostの登録(midonet-cli内で実行)】@Controller 【サーバにひもづいたhostX及びそのhostXでTunnel Zoneに追加するインタフェースを登録する。今回はGuest(Tunnel)Network上でTunnel Zoneを構成するため、サーバの192.168.20.0/24セグメントのIP Addressを追加する。全host分繰り返し実施】 midonet> tunnel-zone tzone0 add member host <hostX> address < ip_address_hostX> (投入例1:上記でControllerを登録する場合) midonet> tunnel-zone tzone0 add member host host1 address 192.168.20.101 (投入例2:上記でCompute1を登録する場合) midonet> tunnel-zone tzone0 add member host host2 address 192.168.20.102 (投入例3:上記でGW1を登録する場合) midonet> tunnel-zone tzone0 add member host host4 address 192.168.20.107 【Tunnel Zoneへのhost登録確認(midonet-cli内で実行)】@Controller 【list hostで表示されたサーバが、正しいIP Addressで登録されていることを確認】 midonet> list tunnel-zone tzone0 member 【問題がないことを確認したら、midonet-cliを抜ける】 midonet> exit
今回は、「OSのインストール」、「OpenStackのインストール」、「MidoNetのインストール」といったインストール関連部分の手順をご説明しました。次回は引き続き、「OpenStackとMidoNetの連携」、「Network設定」、「VyOS環境の構築」の手順をご説明します。
- Linuxは、Linus Torvalds氏の日本およびその他の国における登録商標または商標です。
- MidoNetは、Midokura SARLの登録商標です。
- OpenStack®の文字表記とOpenStackのロゴは、米国とその他の国におけるOpenStack Foundationの登録商標/サービスマークまたは商標/サービスマークのいずれかであり,OpenStack Foundationの許諾を得て使用しています。日立製作所は,OpenStack FoundationやOpenStackコミュニティの関連企業ではなく、また支援や出資を受けていません。
- OSCA™(Open Standard Cloud Association)は、デル株式会社の登録商標です。
- Red Hat、Red Hat Enterprise Linuxは、米国およびその他の国におけるRed Hat, Inc. の登録商標です。
- VMware,VMware vSphere ESXiは,米国およびその他の地域における VMware, Inc. の登録商標または商標です。
- その他、記載の商標やロゴは、各社の商標または登録商標です。
【参考文献】
MidoNet Documentation(アクセス:2015/08)
MidoNet integration - RDO(アクセス:2015/08)
https://www.rdoproject.org/MidoNet_integration