Neutronのインストール・設定(コンピュートノード)
次にコンピュートノードの設定を行います。
パッケージのインストール
compute# apt install neutron-linuxbridge-agent
設定の変更
Neutronの設定
neutron.confの設定を行います。 すでにいくつかの設定は行われているので、各セクションに同じように設定がされているか確認し、されていない場合は設定を追加してください。言及していない設定はそのままで構いません。
compute# vi /etc/neutron/neutron.conf
[DEFAULT]
...
auth_strategy = keystone
transport_url = rabbit://openstack:password@controller
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = password
[database]
...
#connection = sqlite:////var/lib/neutron/neutron.sqlite ←コメントアウト
本書の構成では、コンピュートノードのNeutron.confにはデータベースの指定は不要です。 データベースの指定がデフォルトで存在しています。この設定はコメントアウトしてもしなくても構いません。 次のコマンドで正しく設定を行ったか確認します。
compute# less /etc/neutron/neutron.conf | egrep -v "^\s*$|^\s*#"
Linuxブリッジエージェントの設定
linuxbridge_agent.iniの設定を行います。 すでにいくつかの設定は行われているので、各セクションに同じように設定がされているか確認し、されていない場合は設定を追加してください。言及していない設定はそのままで構いません。
physical_interface_mappingsにはパブリック側のネットワークに接続しているインターフェイスを指定します。本書ではens3を指定します。 local_ipにはパブリック側に接続しているNICに設定しているIPアドレスを指定します。
compute# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = provider:ens3
[securitygroup]
...
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
[vxlan]
enable_vxlan = True
local_ip = 10.0.0.112
l2_population = True (※1)
※1 ML2プラグインの設定 /etc/neutron/plugins/ml2/ml2_conf.iniでl2populationを使用しない場合はl2_population = False を設定し無効化します。
次のコマンドで正しく設定を行ったか確認します。
compute# less /etc/neutron/plugins/ml2/linuxbridge_agent.ini | egrep -v "^\s*$|^\s*#"
コンピュートノードのネットワーク設定
Novaの設定ファイルの内容をNeutronを利用するように変更します。
compute# vi /etc/nova/nova.conf
...
[neutron]
...
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = password ←neutronユーザーのパスワード
次のコマンドで正しく設定を行ったか確認します。
compute# less /etc/nova/nova.conf | egrep -v "^\s*$|^\s*#"
コンピュートノードのNeutronと関連サービスを再起動
ネットワーク設定を反映させるため、コンピュートノードのNeutronと関連のサービスを再起動します。
compute# service nova-compute restart
compute# service neutron-linuxbridge-agent restart
ログの確認
エラーが出ていないかログを確認します。
compute# tailf /var/log/nova/nova-compute.log
compute# tailf /var/log/neutron/neutron-linuxbridge-agent.log
Neutronサービスの動作を確認
controllerノードでopenstack network agent list
コマンドを実行してNeutronエージェントが正しく認識されており、稼働していることを確認します。
controller# source admin-openrc
controller# openstack network agent list -c Host -c Binary -c State
+------------+-------+---------------------------+
| Host | State | Binary |
+------------+-------+---------------------------+
| controller | UP | neutron-linuxbridge-agent |
| controller | UP | neutron-metadata-agent |
| controller | UP | neutron-dhcp-agent |
| controller | UP | neutron-l3-agent |
| compute | UP | neutron-linuxbridge-agent |
+------------+-------+---------------------------+
※コントローラーとコンピュートで追加され、neutron-linuxbridge-agentが正常に稼働していることが確認できれば問題ありません。念のためログも確認してください。
Dashboardのインストールと確認(コントローラーノード)
クライアントマシンからブラウザーでOpenStack環境を操作可能なWebインターフェイスをインストールします。
パッケージのインストール
controllerノードにDashboardをインストールします。
controller# apt install openstack-dashboard
Dashboardの設定を変更
インストールしたDashboardの設定を行います。 すでにいくつかの設定は行われているので同じように設定がされているか確認し、されていない場合は設定を追加してください。言及していない設定はそのままで構いません。
controller# vi /etc/openstack-dashboard/local_settings.py
...
WEBROOT = '/horizon/'
LOGIN_URL = WEBROOT + 'auth/login/'
LOGOUT_URL = WEBROOT + 'auth/logout/'
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"compute": 2,
}
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = False
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'
...
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller:11211',
},
}
...
OPENSTACK_HOST = "controller"
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
...
TIME_ZONE = "Asia/Tokyo" ← 変更(日本の場合)
次のコマンドで正しく設定を行ったか確認します。
controller# less /etc/openstack-dashboard/local_settings.py | egrep -v "^\s*$|^\s*#"
変更した内容を反映させるため、Apacheとセッションストレージサービスを再起動します。
controller# service apache2 restart
Dashboardにアクセス
コントローラーノードとネットワーク的に接続されているマシンからブラウザで以下URLに接続してOpenStackのログイン画面が表示されるか確認します。
※ブラウザで接続するマシンは予めDNSもしくは/etc/hostsにコントローラーノードのIPを記述しておく等コンピュートノードの名前解決を行っておく必要があります。ドメイン名でアクセスしないとVNCのコンソールが出ませんので注意してください。
http://controller/horizon/
※上記URLにアクセスしてログイン画面が表示され、ユーザーadminとdemoでログイン(パスワード:password)でログインできれば問題ありません。
Externalネットワークの作成
OpenStack Dashboardにadminユーザーでログインして、Externalネットワークを作成します。 次のようにOpenStack Dashboardを操作して、Externalネットワークを作成してください。
- OpenStack Dashboardにadminユーザーでログイン
- 「管理 > ネットワーク > ネットワーク」でExternalネットワークを作成
ネットワーク
項目 | 設定 |
---|---|
名前 | external-net |
プロジェクト | admin |
プロバイダネットワーク種別 | フラット |
物理ネットワーク | provider |
管理状態有効 | チェックを入れる |
共有 | チェックを入れない |
外部ネットワーク | チェックを入れる |
サブネットの作成 | チェックを入れる |
- 「次へ」ボタンを押下
サブネット
external-netで定義するIPアドレス及びその範囲は、OpenStackが実際に接続する外部接続可能なネットワークセグメントを指定します。
項目 | 設定 |
---|---|
サブネット名 | external-subnet |
ネットワークアドレス | 10.0.0.0/24 |
IPバージョン | IPv4 |
ゲートウェイ | 10.0.0.1 |
- 「次へ」ボタンを押下
サブネットの詳細
項目 | 設定 |
---|---|
DHCP有効 | チェックを入れない |
IPアドレス割当プール | 10.0.0.177,10.0.0.190 |
IPアドレス割当プールはネットワークアドレスで定義したネットワーク範囲全てを割り当てても良い場合は定義する必要はありません。
- 「作成」ボタンを押下
インスタンスネットワークの作成
OpenStack Dashboardにdemoユーザーでログインして、インスタンスネットワークを作成します。
インスタンスネットワークはユーザーが作成したインスタンスを接続するネットワークです。外部からのアクセスは不可能ですが、同じインスタンスネットワーク上のインスタンスなどと通信が可能です。
インスタンスネットワークは管理者が共有ネットワークとして定義してユーザーに利用させることもできますが、多くの場合は各ユーザー毎にロールで定義した範囲でネットワークを自由に作成させることができます。
インスタンスネットワークとルーターを作成して、adminユーザーで作成したExternalネットワークと接続することにより、外から中への通信、つまり外部からインスタンスへのリモートアクセスなどが可能になります。
次のようにOpenStack Dashboardを操作して、インスタンスネットワークを作成してください。
- OpenStack Dashboardにdemoユーザーでログイン
- 「プロジェクト > ネットワーク > ネットワーク」でユーザーネットワークの作成
ネットワーク
項目 | 設定 |
---|---|
ネットワーク名 | user-net |
管理状態有効 | チェックを入れる |
サブネットの作成 | チェックを入れる |
- 「次へ」ボタンを押下
サブネット
項目 | 設定 |
---|---|
サブネット名 | user-subnet |
ネットワークアドレス | 192.168.0.0/24 |
IPバージョン | IPv4 |
ゲートウェイIP | 192.168.0.1 |
ゲートウェイなし | チェックを入れない |
- 「次へ」ボタンを押下
サブネットの詳細
項目 | 設定 |
---|---|
DHCP有効 | チェックを入れる |
IPアドレス割当プール | 未定義 |
DNSサーバー | 8.8.8.8 |
DNSサーバーを複数指定したい場合は1行毎に記述します。IPアドレス割当プールはネットワークアドレスで定義したネットワーク範囲全てを割り当てても良い場合は定義する必要はありません。
「作成」ボタンを押下
「プロジェクト > ネットワーク > ルーター」でルーターを作成
項目 | 設定 |
---|---|
ルーター名 | myrouter |
管理状態有効 | チェックを入れる |
外部ネットワーク | external-net |
- 「プロジェクト > ネットワーク > ルーター」で作成した「myrouter」をクリックして、インターフェイスを追加
項目 | 設定 |
---|---|
サブネット | user-net |
IPアドレス | 未定義 |
フレーバーの設定
フレーバーはインスタンスに設定する性能を定義するものです。従来のバージョンでは自動生成されていましたが、Pikeではデフォルトでフレーバーは定義されていません。
- OpenStack Dashboardにadminユーザーでログイン
- 「管理 > コンピュート > フレーバー」を選択
- 「フレーバーの作成」ボタンを押下
- フレーバー名、仮想CPU数、メモリー、ストレージサイズを定義
- 「フレーバーの作成」ボタンを押下
CirrOSを動かすだけであれば、1vCPU,64MBメモリー,1GBストレージあれば充分です。 Ubuntuを動かす場合は、1vCPU,1GBメモリー,4GBストレージ以上のスペックが必要です。
セキュリティグループの設定
OpenStackの上で動かすインスタンスのファイアウォール設定は、セキュリティグループで行います。ログイン後、次の手順でセキュリティグループを設定できます。
- OpenStack Dashboardにdemoユーザーでログイン
- 「プロジェクト > コンピュート > ネットワーク > セキュリティーグループ」を選択
- 「ルールの管理」ボタンを押下
- 「ルールの追加」で許可するルールを定義
- 「追加」ボタンを押下
インスタンスに対してPingを実行したい場合はルールとしてすべてのICMPを、インスタンスにSSH接続したい場合はSSHをルールとしてセキュリティグループに追加してください。
セキュリティーグループは複数作成できます。作成したセキュリティーグループをインスタンスを起動する際に選択することで、セキュリティグループで定義したポートを解放したり、拒否したり、接続できるクライアントを制限することができます。
キーペアの作成
OpenStackではインスタンスへのアクセスはデフォルトで公開鍵認証方式で行います。次の手順でキーペアを作成できます。
- OpenStack Dashboardにdemoユーザーでログイン
- 「プロジェクト > コンピュート > キーペア」をクリック
- 「キーペアの作成」ボタンを押下
- キーペア名を入力
- 「キーペアの作成」ボタンを押下
- キーペア(拡張子:pem)ファイルをダウンロード
既存のキーペアを使ってインスタンスにアクセスしたい場合は、キーペアのインポートを利用します。 catコマンドで所有する*.pubキーを標準出力して、その内容を貼り付けます。
インスタンスの起動
前の手順でGlanceにCirrOSイメージを登録していますので、早速構築したOpenStack環境上でインスタンスを起動してみましょう。インスタンスの起動画面は、米印のついた項目が必須の設定です。
- OpenStack Dashboardにdemoユーザーでログイン
- 「プロジェクト > コンピュート > イメージ」をクリック
- イメージ一覧から起動するOSイメージを選び、「インスタンスの起動」ボタンを押下
- インスタンス名、フレーバー、ネットワーク、セキュリティーグループ、キーペアなどを設定
- 最後に右下の「起動」ボタンを押下
初回起動時は少々時間がかかることがあります。
Floating IPの設定
起動したインスタンスにFloating IPアドレスを設定することで、Dashboardのコンソール以外からインスタンスにアクセスできるようになります。インスタンスにFloating IPを割り当てるには次の手順で行います。
- OpenStack Dashboardにdemoユーザーでログイン
- 「プロジェクト > コンピュート > インスタンス」をクリック
- インスタンスの一覧から割り当てるインスタンスをクリック
- アクションメニューから「Floating IPの割り当て」をクリック
- 「Floating IP割り当ての管理」画面のIPアドレスで「+」ボタンをクリック
- 右下の「IPの確保」ボタンをクリック
- 割り当てるIPアドレスとインスタンスを選択して右下の「割り当て」ボタンをクリック
インスタンスへのアクセス
Floating IPを割り当てて、かつセキュリティグループの設定を適切に行っていれば、リモートアクセスできるようになります。セキュリティーグループでSSHを許可した場合、端末からSSH接続が可能になります(下記は実行例)。
client$ ping -c4 instance-floating-ip
client$ ssh -i mykey.pem cloud-user@instance-floating-ip
その他、適切なポートを開放してインスタンスへのPingを許可したり、インスタンスでWebサーバーを起動して外部PCからアクセスしてみましょう。