Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

OpenStack構築手順書 Juno版

2,203 views

Published on

Ubuntu14.04 LTSにOpenStack (Juno)をインストールするための構築手順書です。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

OpenStack構築手順書 Juno版

  1. 1. OpenStack構築手順書 Juno版 OpenStack構築手順書 Juno版 バージョン:0.9.5 (2014/12/3作成) 日本仮想化技術株式会社 日本仮想化技術1
  2. 2. OpenStack構築手順書 Juno版 変更履歴 バージョン更新日更新内容 0.9 2014/11/28 Juno版beta 0.9.1 2014/12/1 誤記訂正 0.9.2 2014/12/1 RabbitMQサービス再起動と確認を追記 0.9.3 2014/12/1 networkノードのNIC設定を修正 0.9.4 2014/12/2 controllerノードのneutron.confのリージョン指定を修正 0.9.5 2014/12/3 どこのホストで設定変更をするか明確にした。他、誤記など修正 日本仮想化技術2
  3. 3. OpenStack構築手順書 Juno版 目次 1. 構築する環境について 1-1 環境構築に使用するOS 1-2 作成するサーバー(ノード) 1-3 ネットワークセグメントの設定 1-4 各ノードのネットワーク設定 1-5 Ubuntu Serverのインストール 1-6 Ubuntu Serverへのログインとroot権限 1-7 設定ファイル等の記述について 2. OpenStackインストール事前設定 2-1 ネットワークデバイスの設定 2-2 静的名前解決の設定 2-3 sysctlによるカーネルパラメーターの設定 2-4 リポジトリーの設定とパッケージの更新 2-5 NTPのインストール 2-6 Python用MySQL/MariaDBクライアントのインストール 3. controllerノードのインストール前設定 3-1 MariaDBのインストール 3-2 RabbitMQのインストール 3-3 環境変数設定ファイルの作成 4. Keystoneインストールと設定(controllerノード) 4-1 パッケージのインストール 4-2 データベースの作成・確認 4-3 設定の変更 4-4 データベースに表を作成 4-5 使用しないデータベースファイルの削除 4-6 Keystoneサービスの再起動 4-7 ログの確認 4-8 認証情報の作成 4-9 Keystoneの動作確認 4-9-1 認証トークンの要求確認 5. Glanceのインストールと設定 5-1 パッケージのインストール 5-2 データベースの作成・確認 5-3 認証情報の作成 5-4 設定の変更 5-5 データベースにデータ登録 5-6 Glanceサービスの再起動 5-7 使用しないデータベースファイルの削除 5-8 ログの確認 5-9 イメージの取得と登録 6. Novaのインストールと設定(controllerノード) 6-1 パッケージのインストール 6-2 データベースの作成・確認 6-3 認証情報の作成 6-4 設定変更 日本仮想化技術3
  4. 4. OpenStack構築手順書 Juno版 6-5 使用しないデータベースファイル削除 6-6 データベースにデータを作成 6-7 Novaサービスの再起動 6-8 ログの確認 6-9 Glanceとの通信確認 7. Nova-Computeのインストール・設定(compute1ノード) 7-1 パッケージインストール 7-2 設定の変更 7-3 Nova-Computeサービスの再起動 7-4 ログの確認 7-5 controllerノードとの疎通確認 8. Neutronのインストール・設定(controllerノード) 8-1 パッケージインストール 8-2 データベース作成・確認 8-3 認証情報の設定 8-4 設定の変更 8-5 設定の変更 8-6 データベースの作成 8-7 使用しないデータベースファイル削除 8-8 controllerノードのNeutronと関連サービスの再起動 8-9 ログの確認 8-10 動作確認 9. Neutronのインストール・設定(networkノード) 9-1 パッケージインストール 9-2 設定の変更 9-3 設定の変更 9-4 networkノードのOpen vSwitchサービスの再起動 9-5 ブリッジデバイス設定 9-6 ブリッジデバイス設定確認 9-7 ネットワークインタフェースの設定変更 9-7 networkノード再起動 9-8 ブリッジ設定確認 9-9 networkノードのNeutronと関連サービスの再起動 9-10 ログの確認 10. Neutronのインストール・設定(compute1ノード) 10-1 パッケージインストール 10-2 設定の変更 10-3 compute1ノードのOpen vSwitchサービスの再起動 10-4 compute1ノードのネットワーク設定 10-5 compute1ノードのNeutronと関連サービスを再起動 10-6 ログの確認 11. 仮想ネットワーク設定(controllerノード) 11-1 外部接続ネットワークの設定 11-2 インスタンス用ネットワーク設定 11-3 仮想ネットワークルーター設定 12. 仮想ネットワーク設定確認(networkノード) 12-1 仮想ネットワークルーターの確認 12-2 仮想ルーターのネームスペースのIPアドレスを確認 日本仮想化技術4
  5. 5. OpenStack構築手順書 Juno版 12-3 仮想ゲートウェイの疎通確認 13. Cinderインストール(controllerノード) 13-1 パッケージインストール 13-2 データベース作成・確認 13-3 認証情報の設定 13-4 設定の変更 13-5 データベースに表を作成 13-6 Cinderサービスの再起動 13-7 使用しないデータベースファイル削除 13-8 ログの確認 13-9 イメージ格納用ボリューム作成 14. Dashboardインストール・確認(controllerノード) 14-1 パッケージインストール 14-2 Dashboardの設定の変更 14-3 Dashboardへのアクセス確認 14-4 セキュリティグループの設定 14-5 キーペアの作成 14-6 インスタンスの起動 14-7 Floating IPの設定 14-8 インスタンスへのアクセス 日本仮想化技術5
  6. 6. OpenStack構築手順書 Juno版 1. 構築する環境について 1-1 環境構築に使用するOS 本書はOpenStack環境を3台のサーバー上に構築することを想定しています。 システム構成図 (出典:公式ドキュメント"Chapter 1. Architecture"より) OSはUbuntu Server 14.04.1 LTS(以下Ubuntu Server)を使用します。以下のURLよりイメージをダウンロードし、3台のサ ーバーへインストールします。 http://releases.ubuntu.com/14.04/ubuntu-14.04.1-server-amd64.iso 日本仮想化技術6
  7. 7. OpenStack構築手順書 Juno版 1-2 作成するサーバー(ノード) 今回構築するOpenStack環境は、以下3台のサーバーで構成します。 controllerノード OpenStack環境全体を管理するコントローラーとして機能します。 networkノード 外部ネットワークとインスタンスの間のネットワークを制御します。 compute1ノード 仮想マシンインスタンスを実行します。 1-3 ネットワークセグメントの設定 今回は2つのネットワークセグメントを用意し構成しています。 内部ネットワーク(Instance Tunnels) ネットワークノードとコンピュートノード間のトンネル用に使用するネットワーク。インターネットへの接続は行えなくて も構いません。 外部ネットワーク(Management) 外部との接続に使用するネットワーク。構築中はaptコマンドを使って外部リポジトリからパッケージなどをダウンロード するため、インターネット接続が必要となります。 OpenStack稼働後は、仮想マシンインスタンスに対しFloating IPアドレスを割り当てることで、外部ネットワークへ接続 することができます。 なお、各種APIを外部公開する際にも使用できますが、今回の手順ではAPIの公開は行いません。 IPアドレスは以下の構成で構築されている前提で解説します。 外部ネットワーク内部ネットワーク インターフェースeth0 eth1 ネットワーク10.0.0.0/24 192.168.0.0/24 ゲートウェイ10.0.0.1 なし ネームサーバー10.0.0.1 なし 日本仮想化技術7
  8. 8. OpenStack構築手順書 Juno版 1-4 各ノードのネットワーク設定 各ノードのネットワーク設定は以下の通りです。 controllerノード インターフェースeth0 eth1 IPアドレス10.0.0.10 192.168.0.10 ネットマスク255.255.255.0 255.255.255.0 ゲートウェイ10.0.0.1 なし ネームサーバー10.0.0.1 なし networkノード インターフェースeth0 eth1 IPアドレス10.0.0.9 192.168.0.9 ネットマスク255.255.255.0 255.255.255.0 ゲートウェイ10.0.0.1 なし ネームサーバー10.0.0.1 なし compute1ノード インターフェースeth0 eth1 IPアドレス10.0.0.11 192.168.0.11 ネットマスク255.255.255.0 255.255.255.0 ゲートウェイ10.0.0.1 なし ネームサーバー10.0.0.1 なし 日本仮想化技術8
  9. 9. OpenStack構築手順書 Juno版 1-5 Ubuntu Serverのインストール 3台のサーバーに対し、Ubuntu Serverをインストールします。要点は以下の通りです。 優先ネットワークインターフェースをeth0に指定 インターネットへ接続するインターフェースはeth0を使用するため、インストール中はeth0を優先ネットワークとして指定 します。 パッケージ選択ではOpenSSH serverのみ選択 compute1ノードではKVMを利用しますが、インストーラではVirtual machine hostのインストールを行わないでください。 【インストール時の設定パラメータ例】 設定項目設定例 初期起動時のLanguage English 起動Install Ubuntu Server Language English - English Country location other→Asia→Japan Country locale United States - en_US.UTF-8 Detect keyboard layout No Keyboard Japanese→Japanese Primary network interface eth1: Ethernet Hostname それぞれのノード名(controller, network, compute1) ユーザ名フルネームで入力 アカウント名ユーザ名のファーストネームで設定される パスワード任意のパスワード Weak password(出ない場合も) Yesを選択 ホームの暗号化任意 タイムゾーンAsia/Tokyoであることを確認 パーティション設定Guided - use entire disk and set up LVM パーティション選択sdaを選択 パーティション書き込みYesを選択 パーティションサイズデフォルトのまま 変更の書き込みYesを選択 HTTP proxy 環境に合わせて任意 アップグレード任意 ソフトウェアOpenSSH serverのみ選択 GRUB Yesを選択 インストール完了Continueを選択 日本仮想化技術9
  10. 10. OpenStack構築手順書 Juno版 1-6 Ubuntu Serverへのログインとroot権限 Ubuntuはデフォルト設定でrootユーザーの利用を許可していないため、root権限が必要となる作業は以下のように行って ください。 rootユーザーで直接ログインできないので、インストール時に作成したアカウントでログインする。 root権限が必要な場合には、sudoコマンドを使用する。 rootで連続して作業したい場合には、sudo -sコマンドでシェルを起動する。 1-7 設定ファイル等の記述について 筆者注: このドキュメントはベータ版のため、必ずしもここで述べられているように記述されていません。あらかじめご了承ください。 設定ファイルは特別な記述が無い限り、必要な設定を抜粋したものです。 特に変更の必要がない設定項目は省略されています。 [見出し]が付いている場合、その見出しから次の見出しまでの間に設定を記述します。 コメントアウトされていない設定項目が存在する場合には、値を変更してください。多くの設定項目は記述が存在している ため、エディタの検索機能で検索することをお勧めします。 特定のホストでコマンドを実行する場合はコマンドの冒頭にホスト名を記述しています。 【設定ファイルの記述例】 controller# vi /etc/glance/glance-api.conf ←コマンド冒頭にこのコマンドを実行するホストを記述 [database] ←この見出しから次の見出しまでの間に以下を記述 #connection = sqlite:////var/lib/glance/glance.sqlite ← 既存設定をコメントアウト connection = mysql://glance:password@controller/glance ← 追記 [keystone_authtoken] ← 見出し #auth_host = 127.0.0.1 ← 既存設定をコメントアウト auth_host = controller ← 追記 auth_port = 35357 ← 既存のまま auth_protocol = http ← 既存のまま auth_uri = http://controller:5000/v2.0 ← 追記 admin_tenant_name = service ← 変更 admin_user = glance ← 変更 admin_password = password ← 変更 日本仮想化技術10
  11. 11. OpenStack構築手順書 Juno版 2. OpenStackインストール事前設定 OpenStackパッケージのインストール前に各々のノードで以下の設定を行います。 ネットワークデバイスの設定 hostsによる静的名前解決の設定 sysctlによるカーネルパラメータの設定 リポジトリーの設定とパッケージの更新 NTPのインストール Python用MySQL/MariaDBクライアントのインストール MariaDBのインストール(controllerノードのみ) RabbitMQのインストール(controllerノードのみ) 2-1 ネットワークデバイスの設定 各ノードの/etc/network/interfacesを編集し、IPアドレスの設定を行います。 2-1-1 controllerノードのIPアドレスの設定 controller# vi /etc/network/interfaces auto eth0 iface eth0 inet static address 10.0.0.10 netmask 255.255.255.0 gateway 10.0.0.1 dns-nameservers 10.0.0.1 auto eth1 iface eth1 inet static address 192.168.0.10 netmask 255.255.255.0 日本仮想化技術11
  12. 12. OpenStack構築手順書 Juno版 2-1-2 networkノードのIPアドレスの設定 network# vi /etc/network/interfaces auto eth0 iface eth0 inet static address 10.0.0.9 netmask 255.255.255.0 gateway 10.0.0.1 dns-nameservers 10.0.0.1 auto eth1 iface eth1 inet static address 192.168.0.9 netmask 255.255.255.0 2-1-3 compute1ノードのIPアドレスの設定 compute1# vi /etc/network/interfaces auto eth0 iface eth0 inet static address 10.0.0.11 netmask 255.255.255.0 gateway 10.0.0.1 dns-nameservers 10.0.0.1 auto eth1 iface eth1 inet static address 192.168.0.11 netmask 255.255.255.0 2-1-4 ネットワーク設定反映 各ノードで変更した設定をネットワークデバイスに反映させるため、Ubuntu Serverを再起動します。 日本仮想化技術12
  13. 13. OpenStack構築手順書 Juno版 2-2 静的名前解決の設定 各ノードの/etc/hostsに各ノードのIPアドレスとホスト名を記述し、静的名前解決の設定を行います。127.0.1.1の行はコ メントアウトします。 2-2-1 controllerノードの/etc/hostsの設定 controller# vi /etc/hosts 127.0.0.1 localhost #127.0.1.1 controller ← 既存設定をコメントアウト 10.0.0.9 network 10.0.0.10 controller 10.0.0.11 compute1 2-2-2 networkノードの/etc/hostsの設定 network# vi /etc/hosts 127.0.0.1 localhost #127.0.1.1 network ← 既存設定をコメントアウト 10.0.0.9 network 10.0.0.10 controller 10.0.0.11 compute1 2-2-3 compute1ノードの/etc/hostsの設定 compute1# vi /etc/hosts 127.0.0.1 localhost #127.0.1.1 compute1 ← 既存設定をコメントアウト 10.0.0.9 network 10.0.0.10 controller 10.0.0.11 compute1 日本仮想化技術13
  14. 14. OpenStack構築手順書 Juno版 2-3 sysctlによるカーネルパラメーターの設定 Linuxのネットワークパケット処理について設定を行います。 2-3-1 networkノードの/etc/sysctl.confの設定 network# vi /etc/sysctl.conf net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 sysctlコマンドで設定を適用します。 network# sysctl -p net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 2-3-2 compute1ノードの/etc/sysctl.confの設定 compute1# vi /etc/sysctl.conf net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 sysctlコマンドで設定を適用します。 compute1# sysctl -p net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 日本仮想化技術14
  15. 15. OpenStack構築手順書 Juno版 2-4 リポジトリーの設定とパッケージの更新 各ノードで以下のファイルを作成し、Juno向けUbuntu Cloud Archiveリポジトリを登録します。 # vi /etc/apt/sources.list.d/ubuntu-cloud-archive-juno-trusty.list deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/juno main Ubuntu Cloud archive リポジトリのキーリングをインストールします。 # apt-get install ubuntu-cloud-keyring 各ノードでパッケージリストを更新し再起動します。 # apt-get update && apt-get dist-upgrade # reboot 2-5 NTPのインストール 各ノードで時刻を正確にするためにNTPをインストールします。 # apt-get install -y ntp 2-5-1 controllerノードの/etc/ntp.confの設定 controllerノードで公開NTPサーバーと同期するNTPサーバーを構築します。 NTP_SERVERに適切な公開NTPサーバー(ex.ntp.nict.jp etc..)を指定します。 controller# vi /etc/ntp.conf server NTP_SERVER iburst restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery 設定を適用するため、NTPサービスを再起動します。 controller# service ntp restart 日本仮想化技術15
  16. 16. OpenStack構築手順書 Juno版 2-5-2 その他ノードの/etc/ntp.confの設定 networkノードとcompute1ノードでcontrollerノードと同期するNTPサーバーを構築します。 network# vi /etc/ntp.conf server controller iburst restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery 設定を適用するため、NTPサービスを再起動します。 network# service ntp restart 2-5-3 NTPサーバーの動作確認 構築した環境でntpq -pコマンドを実行して、各NTPサーバーが同期していることを確認します。 公開NTPサーバーと同期しているノード controller# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *ntp-a2.nict.go. .NICT. 1 u 3 64 1 6.569 17.818 0.001 controllerと同期しているノード compute1# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *controller ntp-a2.nict.go. 2 u 407 1024 377 1.290 -0.329 0.647 2-6 Python用MySQL/MariaDBクライアントのインストール 各ノードでPython用のMySQL/MariaDBクライアントをインストールします。 # apt-get install -y python-mysqldb Python MySQLライブラリーはMariaDBと互換性があります。 日本仮想化技術16
  17. 17. OpenStack構築手順書 Juno版 3. controllerノードのインストール前設定 3-1 MariaDBのインストール データベースサーバーのMariaDBをインストールします。 3-1-1 パッケージのインストール apt-getコマンドでmariadb-serverパッケージをインストールします。 controller# apt-get install -y mariadb-server インストール中にパスワードの入力を要求されますので、MariaDBのrootユーザーに対するパスワードを設定します。 本例ではパスワードとして「password」を設定します。 3-1-2 MariaDB設定の変更 MariaDBの設定ファイルmy.cnfを開き以下の設定を変更します。 バインドアドレスをeth0に割り当てたIPアドレスへ変更 文字コードをUTF-8へ変更 別のノードからMariaDBへアクセスできるようにするためバインドアドレスを変更します。加えて使用する文字コードを utf8に変更します。 ※文字コードをutf8に変更しないとOpenStackモジュールとデータベース間の通信でエラーが発生します。 controller# vi /etc/mysql/my.cnf [mysqld] #bind-address = 127.0.0.1 ← 既存設定をコメントアウト bind-address = 10.0.0.10 ← 追記 default-storage-engine = innodb ← 追記 innodb_file_per_table ← 追記 collation-server = utf8_general_ci ← 追記 init-connect = 'SET NAMES utf8' ← 追記 character-set-server = utf8 ← 追記 3-1-3 MariaDBサービスの再起動 変更した設定を反映させるためMariaDBのサービスを再起動します。 controller# service mysql restart 3-1-4 MariaDBデータベースのセキュア化 mysql_secure_installationコマンドを実行すると、データベースのセキュリティを強化できます。必要に応じて設定を行 ってください。 日本仮想化技術17
  18. 18. OpenStack構築手順書 Juno版 rootパスワードの入力 controller# mysql_secure_installation In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): password rootパスワードの変更 Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have a root password set, so you can safely answer 'n'. Change the root password? [Y/n] n anonymousユーザーの削除 By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y リモートからのrootログインを禁止 Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] n testデーターベースの削除 By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] y 権限の再読み出し Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] y 日本仮想化技術18
  19. 19. OpenStack構築手順書 Juno版 3-2 RabbitMQのインストール OpenStackは、オペレーションやステータス情報を各サービス間で連携するためにメッセージブローカーを使用してい ます。OpenStackではRabbitMQ、Qpid、ZeroMQなど複数のメッセージブローカーサービスに対応しています。 本書ではRabbitMQをインストールする例を説明します。 3-2-1 パッケージのインストール apt-getコマンドで、rabbitmq-serverパッケージをインストールします。 controller# apt-get install -y rabbitmq-server 3-2-2 アクセスコントロールの変更 以下の設定ファイルを作成し、localhost以外からもRabbitMQへアクセスできるように設定します。 リモート認証の許可 controller# vi /etc/rabbitmq/rabbitmq.conf [{rabbit, [{loopback_users, []}]}]. 3-2-3 待ち受けポートとIPアドレスの変更 以下の設定ファイルを作成し、RabbitMQの待ち受けポートとIPアドレスを定義します。 待ち受け設定の追加 controller# vi /etc/rabbitmq/rabbitmq-env.conf RABBITMQ_NODE_IP_ADDRESS=10.0.0.10 ← controllerのIPアドレス RABBITMQ_NODE_PORT=5672 3-2-4 RabbitMQサービス再起動と確認 メッセージブローカーサービスが正常に動いていないと、OpenStackの各コンポーネントは正常に動きません。 RabbitMQサービスの再起動と動作確認を行い、確実に動作していることを確認します。 controller# service rabbitmq-server restart controller# grep "ERROR|WARNING" /var/log/rabbitmq/rabbit@controller.log ※新たなエラーが表示されなければ問題ありません。 3-2-5 guestユーザーのパスワード変更 rabbitmqctlコマンドでguestユーザーのパスワードを変更します。 controller# rabbitmqctl change_password guest password Changing password for user "guest" ... ...done. 日本仮想化技術19
  20. 20. OpenStack構築手順書 Juno版 3-3 環境変数設定ファイルの作成 3-3-1 admin環境変数設定ファイル作成 adminユーザー用環境変数設定ファイルを作成します。 controller# vi ~/admin-openrc.sh export OS_USERNAME=admin export OS_PASSWORD=password export OS_TENANT_NAME=admin export OS_AUTH_URL=http://controller:35357/v2.0 3-3-2 demo環境変数設定ファイル作成 demoユーザー用環境変数設定ファイルを作成します。 controller# vi ~/demo-openrc.sh export OS_USERNAME=demo export OS_PASSWORD=password export OS_TENANT_NAME=demo export OS_AUTH_URL=http://controller:35357/v2.0 日本仮想化技術20
  21. 21. OpenStack構築手順書 Juno版 4. Keystoneインストールと設定(controllerノード) 各サービス間の連携時に使用する認証IDサービスKeystoneのインストールと設定を行います。 4-1 パッケージのインストール apt-getコマンドでkeystoneパッケージをインストールします。 controller# apt-get install -y keystone python-keystoneclient 4-2 データベースの作成・確認 Keystoneで使用するデータベースを作成します。 4-2-1 データベースの作成 MySQLにデータベースkeystoneを作成します。 controller# mysql -u root -p << EOF CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'password'; EOF Enter password: ← MariaDBのrootパスワードpasswordを入力 日本仮想化技術21
  22. 22. OpenStack構築手順書 Juno版 4-2-2 データベースの確認 ユーザーkeystoneでログインしデータベースの閲覧が可能であることを確認します。 controller# mysql -u keystone -p Enter password: ← MariaDBのkeystoneパスワードpasswordを入力 ... Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | keystone | +--------------------+ 2 rows in set (0.00 sec) 4-3 設定の変更 keystoneの設定ファイルを変更します。 controller# vi /etc/keystone/keystone.conf [DEFAULT] admin_token = password ← 追記 log_dir = /var/log/keystone ← 設定されていることを確認 verbose = True [database] #connection = sqlite:////var/lib/keystone/keystone.db ← 既存設定をコメントアウト connection = mysql://keystone:password@controller/keystone ← 追記 [token] provider = keystone.token.providers.uuid.Provider driver = keystone.token.persistence.backends.sql.Token 4-4 データベースに表を作成 controller# su -s /bin/sh -c "keystone-manage db_sync" keystone 日本仮想化技術22
  23. 23. OpenStack構築手順書 Juno版 4-5 使用しないデータベースファイルの削除 controller# rm /var/lib/keystone/keystone.db 4-6 Keystoneサービスの再起動 設定を反映させるために、Keystoneサービスを再起動します。 controller# rm /var/log/keystone/* controller# service keystone restart 4-7 ログの確認 keystoneのログを確認します。下記のWARNING以外にログが表示されなければ問題ありません。 controller# grep "ERROR|WARNING" /var/log/keystone/* ... 2014-11-12 16:32:16.466 18369 WARNING keystone.openstack.common.versionutils [-] Deprecated: keystone.cont rib.revoke.backends.kvs is deprecated as of Juno in favor of keystone.contrib.revoke.backends.sql and may be removed in Kilo. 日本仮想化技術23
  24. 24. OpenStack構築手順書 Juno版 4-8 認証情報の作成 以下コマンドで認証情報(テナント・ユーザー・ロール)を設定します。 環境変数の設定 controller# export OS_SERVICE_TOKEN=password controller# export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0 adminテナントの作成 controller# keystone tenant-create --name=admin --description="Admin Tenant" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Admin Tenant | | enabled | True | | id | 07e06d1d7f35430e8906e6fb5badd893 | | name | admin | +-------------+----------------------------------+ adminユーザーの作成 controller# keystone user-create --name=admin --pass=password --email=admin@example.com +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | admin@example.com | | enabled | True | | id | 9b6f2e4f6e074566937119a05a26e01e | | name | admin | | username | admin | +----------+----------------------------------+ adminロールの作成 controller# keystone role-create --name=admin +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | id | 9d34e8df7bc04bf3b16abc8a09238499 | | name | admin | +----------+----------------------------------+ adminテナントおよびユーザーにadminロールを所属 controller# keystone user-role-add --tenant=admin --user=admin --role=admin 日本仮想化技術24
  25. 25. OpenStack構築手順書 Juno版 _member_ロールの作成 controller# keystone role-create --name _member_ +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | id | 0f198e94ffce416cbcbe344e1843eac8 | | name | _member_ | +----------+----------------------------------+ adminテナントおよびユーザーに_member_ロールを所属 controller# keystone user-role-add --tenant=admin --user=admin --role=_member_ demoテナントの作成 controller# keystone tenant-create --name=demo --description="Demo Tenant" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Demo Tenant | | enabled | True | | id | 6d19304a59b3456bbe2552a9080d1301 | | name | demo | +-------------+----------------------------------+ demoユーザーの作成 controller# keystone user-create --name=demo --pass=password --email=demo@example.com +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | demo@example.com | | enabled | True | | id | 7d0a62a5abf7445688b2fd223e1a9a1f | | name | demo | | username | demo | +----------+----------------------------------+ demoテナントおよびdemoユーザーを_menber_ロールへ所属 controller# keystone user-role-add --tenant=demo --user=demo --role=_member_ 日本仮想化技術25
  26. 26. OpenStack構築手順書 Juno版 サービステナントの作成 controller# keystone tenant-create --name=service --description="Service Tenant" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Service Tenant | | enabled | True | | id | 0571e304708f4cdcb4ecedc363547acb | | name | service | +-------------+----------------------------------+ サービスエントリーの作成 controller# keystone service-create --name=keystone --type=identity --description="OpenStack Identity" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | OpenStack Identity | | enabled | True | | id | c315a41214b84597af88ab11bb5a089d | | name | keystone | | type | identity | +-------------+----------------------------------+ 日本仮想化技術26
  27. 27. OpenStack構築手順書 Juno版 APIエンドポイントを作成 controller# keystone endpoint-create --service-id $(keystone service-list | awk '/ identity / {print $2}') --publicurl http://controller:5000/v2.0 --internalurl http://controller:5000/v2.0 --adminurl http://controller:35357/v2.0 --region regionOne +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | adminurl | http://controller:35357/v2.0 | | id | 420a300f830542fb95ddd7b19063dc60 | | internalurl | http://controller:5000/v2.0 | | publicurl | http://controller:5000/v2.0 | | region | regionOne | | service_id | 4cd6329b004740fb92cbf013e41d52fc | +-------------+----------------------------------+ Keystoneへの作成が完了したら環境編集をunsetします。 controller# unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT 日本仮想化技術27
  28. 28. OpenStack構築手順書 Juno版 4-9 Keystoneの動作確認 Keystoneへ正しく登録されたか確認します。 4-9-1 認証トークンの要求確認 動作確認のためadminおよびdemoテナントに対し認証トークンを要求してみます。 adminトークンの確認 controller# keystone --os-tenant-name=admin --os-username=admin --os-password=password --os-auth-url=http://controller:35357/v2.0 token-get +-----------+---------------------------------------+ | Property | Value | +-----------+---------------------------------------+ | expires | 2014-05-18T02:51:48Z | | id | MIIMYAYJKoZIhvcNAQcbWsNz2gqLtB6dfg== | | tenant_id | b348b47155884978af344b84db561865 | | user_id | 6ca7845a6d554ef8ab737a777dd0a7cb | +-----------+---------------------------------------+ demoトークンの確認 controller# keystone --os-tenant-name=demo --os-username=demo --os-password=password --os-auth-url=http://controller:35357/v2.0 token-get -+-----------+---------------------------------------+ | Property | Value | -+-----------+---------------------------------------+ | expires | 2014-05-18T02:53:09Z | | id | MIIMJQYJKoZIhvcfso3dfgcJ+I7J40KS9fo= | | tenant_id | 6803ec4cf70f43ed8cfdbd060c1a2293 | | user_id | 7605b233fede4f958c121e31b508eeac | -+-----------+---------------------------------------+ ※コマンドを実行した結果、トークンのid情報等が出力されれば問題ありません(実際のトークン情報は一行が長いの で、コマンド例では省略して記述しています)。 日本仮想化技術28
  29. 29. OpenStack構築手順書 Juno版 4-9-2 Keystoneテナントとユーザーの確認 Keystoneに正しくテナントとユーザーが登録されているかを確認します。 admin環境変数設定の読み込み controller# source admin-openrc.sh ユーザーの確認 controller# keystone user-list +----------------------------------+-------+---------+-------------------+ | id | name | enabled | email | +----------------------------------+-------+---------+-------------------+ | 91d240e3d9664f4f86781de3c8ea7880 | admin | True | admin@example.com | | 3f02a4329cb040639e5d5b2c3ce0a9a0 | demo | True | demo@example.com | +----------------------------------+-------+---------+-------------------+ ロールの確認 controller# keystone role-list +----------------------------------+----------+ | id | name | +----------------------------------+----------+ | d35820caf9ed457c9e12d21988c2a719 | _member_ | | 3e0e9a0d97e745c7917f617e51b006f1 | admin | +----------------------------------+----------+ 日本仮想化技術29
  30. 30. OpenStack構築手順書 Juno版 5. Glanceのインストールと設定 5-1 パッケージのインストール apt-getコマンドでglanceとglanceクライアントパッケージをインストールします。 controller# apt-get install -y glance python-glanceclient 5-2 データベースの作成・確認 5-2-1 データベース作成 MariaDBにデータベースglanceを作成します。 controller# mysql -u root -p << EOF CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'password'; EOF Enter password: ← MariaDBのrootパスワードpasswordを入力 5-2-2 データベースの確認 ユーザーglanceでログインしデータベースの閲覧が可能であることを確認します。 controller# mysql -u glance -p Enter password: ← MariaDBのglanceパスワードpasswordを入力 ... Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | glance | +--------------------+ 2 rows in set (0.00 sec) 日本仮想化技術30
  31. 31. OpenStack構築手順書 Juno版 5-3 認証情報の作成 以下コマンドで認証情報を作成します。 環境変数の設定 controller# source admin-openrc.sh glanceユーザーの作成 controller# keystone user-create --name=glance --pass=password +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | | | enabled | True | | id | 4731656ea2604725873be52d08ad3a26 | | name | glance | | username | glance | +----------+----------------------------------+ glanceユーザーをadminロールに所属 controller# keystone user-role-add --user=glance --tenant=service --role=admin サービスの作成 controller# keystone service-create --name=glance --type=image --description="OpenStack Image Service" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | OpenStack Image Service | | enabled | True | | id | b9a5d0e108474d928a29b896658897ef | | name | glance | | type | image | +-------------+----------------------------------+ 日本仮想化技術31
  32. 32. OpenStack構築手順書 Juno版 サービスエンドポイントの作成 controller# keystone endpoint-create --service-id $(keystone service-list | awk '/ image / {print $2}') --publicurl http://controller:9292 --internalurl http://controller:9292 --adminurl http://controller:9292 --region regionOne +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | adminurl | http://controller:9292 | | id | 9b624f153503415b96cabd264e456f11 | | internalurl | http://controller:9292 | | publicurl | http://controller:9292 | | region | regionOne | | service_id | 19b47372418940afadc114fde31fcbb5 | +-------------+----------------------------------+ 日本仮想化技術32
  33. 33. OpenStack構築手順書 Juno版 5-4 設定の変更 controller# vi /etc/glance/glance-api.conf [DEFAULT] rpc_backend = rabbit rabbit_host = controller ← 変更 rabbit_password = password ← 変更 verbose = True ← 追記 [database] #sqlite_db = /var/lib/glance/glance.sqlite ← 既存設定をコメントアウト connection = mysql://glance:password@controller/glance ← 追記 [keystone_authtoken] #admin_tenant_name = %SERVICE_TENANT_NAME% ← 既存設定をコメントアウト #admin_user = %SERVICE_USER% ← 既存設定をコメントアウト #admin_password = %SERVICE_PASSWORD% ← 既存設定をコメントアウト auth_uri = http://controller:5000/v2.0 ← 追記 identity_url = http://controller:35357 ← 編集 admin_tenant_name = service ← 追記 admin_user = glance ← 追記 admin_password = password ← 追記 [paste_deploy] flavor = keystone ← 追記 [glance_store] default_store =file ← 設定されていることを確認 日本仮想化技術33
  34. 34. OpenStack構築手順書 Juno版 controller# vi /etc/glance/glance-registry.conf [DEFAULT] rabbit_host = controller rabbit_password = password verbose = True [database] #sqlite_db = /var/lib/glance/glance.sqlite ← 既存設定をコメントアウト connection = mysql://glance:password@controller/glance ← 追記 [keystone_authtoken] #admin_tenant_name = %SERVICE_TENANT_NAME% ← 既存設定をコメントアウト #admin_user = %SERVICE_USER% ← 既存設定をコメントアウト #admin_password = %SERVICE_PASSWORD% ← 既存設定をコメントアウト auth_uri = http://controller:5000 ← 追記 identity_url = http://controller:35357 ← 編集 admin_tenant_name = service ← 追記 admin_user = glance ← 追記 admin_password = password ← 追記 [paste_deploy] flavor = keystone ← 追記 5-5 データベースにデータ登録 下記コマンドにてglanceデータベースのセットアップを行います。 controller# su -s /bin/sh -c "glance-manage db_sync" glance 5-6 Glanceサービスの再起動 設定を反映させるため、Glanceサービスを再起動します。 controller# rm /var/log/glance/* controller# service glance-registry restart && service glance-api restart 日本仮想化技術34
  35. 35. OpenStack構築手順書 Juno版 5-7 使用しないデータベースファイルの削除 controller# rm /var/lib/glance/glance.sqlite 5-8 ログの確認 Glanceのログを確認します。WARNINGやERRORのログが表示されないことを確認します。 controller# grep "ERROR|WARNING" /var/log/glance/* 5-9 イメージの取得と登録 Glanceへインスタンス用仮想マシンイメージを登録します。ここでは、クラウド環境で主にテスト用途で利用される LinuxディストリビューションCirrOSを登録します。 5-9-1 イメージ取得 CirrOSのWebサイトより仮想マシンイメージをダウンロードします。 controller# wget http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img 日本仮想化技術35
  36. 36. OpenStack構築手順書 Juno版 5-9-2 イメージ登録 ダウンロードした仮想マシンイメージをGlanceに登録します。 controller# glance image-create --name="CirrOS 0.3.3" --disk-format=qcow2 --container-format=bare --is-public=true < cirros-0.3.3-x86_64-disk.img +------------------+--------------------------------------+ | Property | Value | +------------------+--------------------------------------+ | checksum | None | | container_format | bare | | created_at | 2014-11-12T07:44:31 | | deleted | False | | deleted_at | None | | disk_format | qcow2 | | id | a94ad1b9-bab8-454d-81e4-fe15693784b4 | | is_public | False | | min_disk | 0 | | min_ram | 0 | | name | CirrOS 0.3.3 | | owner | 8180ef035ce34af9bc696754986fe32f | | protected | False | | size | 0 | | status | queued | | updated_at | 2014-11-12T07:44:31 | | virtual_size | None | +------------------+--------------------------------------+ 5-9-3 イメージ登録確認 仮想マシンイメージが正しく登録されたか確認します。 controller# glance image-list +--------------------------------------+--------------+-------------+------------------+------+--------+ | ID | Name | Disk Format | Container Format | Size | Status | +--------------------------------------+--------------+-------------+------------------+------+--------+ | a94ad1b9-bab8-454d-81e4-fe15693784b4 | CirrOS 0.3.3 | qcow2 | bare | | queued | +--------------------------------------+--------------+-------------+------------------+------+--------+ 日本仮想化技術36
  37. 37. OpenStack構築手順書 Juno版 6. Novaのインストールと設定(controllerノード) controllerノードへNovaをインストールします。 6-1 パッケージのインストール apt-getコマンドでNova関連のパッケージをインストールします。 controller# apt-get install -y nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy nova-scheduler python-novaclient 6-2 データベースの作成・確認 6-2-1 データベースの作成 MariaDBにデータベースnovaを作成します。 controller# mysql -u root -p << EOF CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'password'; EOF Enter password: ← MariaDBのrootパスワードpasswordを入力 6-2-2 データベースの作成確認 ※ユーザーnovaでログインしデータベースの閲覧が可能であることを確認します。 controller# mysql -u nova -p Enter password: ← MariaDBのnovaパスワードpasswordを入力 ... Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | nova | +--------------------+ 2 rows in set (0.00 sec) 日本仮想化技術37
  38. 38. OpenStack構築手順書 Juno版 6-3 認証情報の作成 以下コマンドで認証情報を作成します。 環境変数の設定 controller# source admin-openrc.sh novaユーザーの作成 controller# keystone user-create --name=nova --pass=password +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | | | enabled | True | | id | 60d2a224d82449c2b087a0f0b4b9e0a3 | | name | nova | | username | nova | +----------+----------------------------------+ novaユーザーをadminロールに所属 controller# keystone user-role-add --user=nova --tenant=service --role=admin novaサービスの作成 controller# keystone service-create --name=nova --type=compute --description="OpenStack Compute" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | OpenStack Compute | | enabled | True | | id | 247c48a462b94870920631626d7f9d23 | | name | nova | | type | compute | +-------------+----------------------------------+ 日本仮想化技術38
  39. 39. OpenStack構築手順書 Juno版 novaサービスのエンドポイントを作成 controller# keystone endpoint-create --service-id $(keystone service-list | awk '/ compute / {print $2}') --publicurl http://controller:8774/v2/%(tenant_id)s --internalurl http://controller:8774/v2/%(tenant_id)s --adminurl http://controller:8774/v2/%(tenant_id)s --region regionOne +-------------+-----------------------------------------+ | Property | Value | +-------------+-----------------------------------------+ | adminurl | http://controller:8774/v2/%(tenant_id)s | | id | 6a25dd781e5043f7af621eae43a4448d | | internalurl | http://controller:8774/v2/%(tenant_id)s | | publicurl | http://controller:8774/v2/%(tenant_id)s | | region | regionOne | | service_id | 247c48a462b94870920631626d7f9d23 | +-------------+-----------------------------------------+ 日本仮想化技術39
  40. 40. OpenStack構築手順書 Juno版 6-4 設定変更 nova.confに下記の設定を追記します。 controller# vi /etc/nova/nova.conf [DEFAULT] ... rpc_backend = rabbit rabbit_host = controller rabbit_password = password auth_strategy = keystone # controllerノードのIPアドレス:10.0.0.10 my_ip = 10.0.0.10 vncserver_listen = 10.0.0.10 vncserver_proxyclient_address = 10.0.0.10 # Networking network_api_class = nova.network.neutronv2.api.API security_group_api = neutron linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver firewall_driver = nova.virt.firewall.NoopFirewallDriver [keystone_authtoken] auth_uri = http://controller:5000/v2.0 identity_uri = http://controller:35357 admin_tenant_name = service admin_user = nova admin_password = password [database] connection = mysql://nova:password@controller/nova [glance] host = controller 6-5 使用しないデータベースファイル削除 データベースはMariaDBを使用するため、使用しないSQLiteファイルを削除します。 controller# rm /var/lib/nova/nova.sqlite 日本仮想化技術40
  41. 41. OpenStack構築手順書 Juno版 6-6 データベースにデータを作成 下記コマンドにてnovaデータベースのセットアップを行います。 controller# su -s /bin/sh -c "nova-manage db sync" nova 6-7 Novaサービスの再起動 設定を反映させるため、Novaのサービスを再起動します。 controller# rm /var/log/nova/* controller# service nova-api restart && service nova-cert restart && service nova-consoleauth restart && service nova-scheduler restart && service nova-conductor restart && service nova-novncproxy restart 6-8 ログの確認 controller# grep "ERROR|WARNING" /var/log/nova/* ※特に何も表示されなければ問題ありません。 6-9 Glanceとの通信確認 NovaのコマンドラインインターフェースでGlanceと通信してGlanceと相互に通信できているかを確認します。 controller# nova image-list +--------------------------------------+--------------+--------+--------+ | ID | Name | Status | Server | +--------------------------------------+--------------+--------+--------+ | 1cdc90ca-fc4b-4064-8514-21aac275729f | CirrOS 0.3.3 | ACTIVE | | +--------------------------------------+--------------+--------+--------+ ※Glanceに登録したCirrOSイメージが表示できていれば問題ありません。 日本仮想化技術41
  42. 42. OpenStack構築手順書 Juno版 7. Nova-Computeのインストール・設定(compute1ノード) 7-1 パッケージインストール compute1# apt-get install -y nova-compute sysfsutils 7-2 設定の変更 novaの設定ファイルを変更します。 compute1# vi /etc/nova/nova.conf [DEFAULT] ※既にある記述はそのままにして、以下の記述を追加します。 rpc_backend = rabbit rabbit_host = controller rabbit_password = password auth_strategy = keystone my_ip = 10.0.0.11 ← IPアドレスで指定 vnc_enabled = True vncserver_listen = 0.0.0.0 vncserver_proxyclient_address = 10.0.0.11 ← IPアドレスで指定 novncproxy_base_url = http://controller:6080/vnc_auto.html [keystone_authtoken] auth_uri = http://controller:5000/v2.0 identity_uri = http://controller:35357 admin_tenant_name = service admin_user = nova admin_password = password [glance] host = controller ※日本語キーボードを使用する場合は[DEFAULT]に以下を追加します。 vnc_keymap = ja 日本仮想化技術42
  43. 43. OpenStack構築手順書 Juno版 7-3 Nova-Computeサービスの再起動 設定を反映させるため、Nova-Computeのサービスを再起動します。 compute1# rm /var/log/nova/* compute1# service nova-compute restart 7-4 ログの確認 compute1# grep "ERROR|WARNING" /var/log/nova/* ※何も表示されなければ問題ありません。 7-5 controllerノードとの疎通確認 疎通確認はcontrollerノード上にて、admin環境変数設定ファイルを読み込んで行います。 controller# source admin-openrc.sh 7-5-1 ホストリストの確認 controllerノードとcomputeノードが相互に接続できているか確認します。もし、StateがXXXなサービスがあった場合 は、該当のサービスをserviceコマンドで起動してください。 controller# nova-manage service list Binary Host Zone Status State nova-consoleauth controller internal enabled :-) nova-conductor controller internal enabled :-) nova-cert controller internal enabled :-) nova-scheduler controller internal enabled :-) nova-compute compute1 nova enabled :-) ※一覧にcompute1が表示されていれば問題ありません。 日本仮想化技術43
  44. 44. OpenStack構築手順書 Juno版 7-5-2 ハイパーバイザの確認 controllerノードよりcomputeノードのハイパーバイザが取得可能か確認します。 controller# nova hypervisor-list +----+---------------------+ | ID | Hypervisor hostname | +----+---------------------+ | 1 | compute1 | +----+---------------------+ ※Hypervisor hostname一覧にcompute1が表示されていれば問題ありません。 日本仮想化技術44
  45. 45. OpenStack構築手順書 Juno版 8. Neutronのインストール・設定(controllerノード) 8-1 パッケージインストール controller# apt-get install -y neutron-server neutron-plugin-ml2 python-neutronclient 8-2 データベース作成・確認 8-2-1 データベース作成 MariaDBにデータベースneutronを作成します。 controller# mysql -u root -p << EOF CREATE DATABASE neutron; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'password'; EOF Enter password: ← MariaDBのrootパスワードpasswordを入力 8-2-2 データベースの確認 MariaDBにNeutronのデータベースが登録されたか確認します。 controller# mysql -u neutron -p Enter password: ← MariaDBのneutronパスワードpasswordを入力 ... Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | neutron | +--------------------+ 2 rows in set (0.00 sec) ※ユーザーneutronでログイン可能でデータベースが閲覧可能なら問題ありません。 日本仮想化技術45
  46. 46. OpenStack構築手順書 Juno版 8-3 認証情報の設定 以下コマンドで認証情報を設定します。 controller# source admin-openrc.sh controller# keystone user-create --name neutron --pass password +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | | | enabled | True | | id | 23f88938cbd94deb95b4c2c3caec2c60 | | name | neutron | | username | neutron | +----------+----------------------------------+ controller# keystone user-role-add --user neutron --tenant service --role admin controller# keystone service-create --name neutron --type network --description "OpenStack Networking" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | OpenStack Networking | | enabled | True | | id | 6c36ba679b16402aaed73c0e032f0d02 | | name | neutron | | type | network | +-------------+----------------------------------+ controller# keystone endpoint-create --service-id $(keystone service-list | awk '/ network / {print $2}') --publicurl http://controller:9696 --adminurl http://controller:9696 --internalurl http://controller:9696 --region regionOne +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | adminurl | http://controller:9696 | | id | f9c6285e5242428ba5fb80a2b88535fb | | internalurl | http://controller:9696 | | publicurl | http://controller:9696 | | region | regionOne | | service_id | 6c36ba679b16402aaed73c0e032f0d02 | +-------------+----------------------------------+ 日本仮想化技術46
  47. 47. OpenStack構築手順書 Juno版 8-4 設定の変更 設定変更時にSERVICE_TENANT_IDを求められるファイルがあるので予めSERVICE_TENANT_IDを取得します。 controller# source admin-openrc.sh controller# keystone tenant-get service +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Service Tenant | | enabled | True | | id | f727b5ec2ceb4d71bad86dfc414449bf | | name | service | +-------------+----------------------------------+ 日本仮想化技術47
  48. 48. OpenStack構築手順書 Juno版 controller# vi /etc/neutron/neutron.conf [DEFAULT] ... rpc_backend = rabbit ← コメントアウトをはずす rabbit_host = controller ← 追記 rabbit_password = password ← 追記 core_plugin = ml2 ← 設定されていることを確認 service_plugins = router ← 追記 allow_overlapping_ips = True ← 追記 auth_strategy = keystone ← コメントアウトをはずす notify_nova_on_port_status_changes = True ← 追記 notify_nova_on_port_data_changes = True ← 追記 nova_url = http://controller:8774/v2 nova_admin_auth_url = http://controller:35357/v2.0 ← 追記 nova_admin_username = nova ← 追記 nova_admin_tenant_id = SERVICE_TENANT_ID ← 追記 ※SERVICE_TENANT_IDは"keystone tenant-get service"コマンドを実行して出力されたIDを使用します。 nova_admin_password = password ← 追記 [database] #connection = sqlite:////var/lib/neutron/neutron.sqlite ← 既存設定をコメントアウト connection = mysql://neutron:password@controller/neutron ← 追記 [keystone_authtoken] #auth_host = 127.0.0.1 ← 既存設定をコメントアウト #auth_port = 35357 ← 既存設定をコメントアウト #auth_protocol = http ← 既存設定をコメントアウト #admin_tenant_name = %SERVICE_TENANT_NAME% ← 既存設定をコメントアウト #admin_user = %SERVICE_USER% ← 既存設定をコメントアウト #admin_password = %SERVICE_PASSWORD% ← 既存設定をコメントアウト auth_uri = http://controller:5000/v2.0 ← 追記 identity_uri = http://controller:35357 nova_region_name = regionOne ← 追記 admin_tenant_name = service ← 追記 admin_user = neutron ← 追記 admin_password = password ← 追記 日本仮想化技術48
  49. 49. OpenStack構築手順書 Juno版 controller# vi /etc/neutron/plugins/ml2/ml2_conf.ini [ml2] ... type_drivers = flat, gre ← 追記 tenant_network_types = gre ← 追記 mechanism_drivers = openvswitch ← 追記 [ml2_type_gre] ... tunnel_id_ranges = 1:1000 ← 追記 [securitygroup] ... enable_security_group = True enable_ipset = True firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver ← 追記 日本仮想化技術49
  50. 50. OpenStack構築手順書 Juno版 8-5 設定の変更 novaの設定ファイルを変更します。 controller# vi /etc/nova/nova.conf [DEFAULT] ... network_api_class = nova.network.neutronv2.api.API security_group_api = neutron linuxnet_interface_driver = nova.network.linux_net. LinuxOVSInterfaceDriver firewall_driver = nova.virt.firewall.NoopFirewallDriver [neutron] ... url = http://controller:9696 auth_strategy = keystone admin_auth_url = http://controller:35357/v2.0 admin_tenant_name = service admin_username = neutron admin_password = password 8-6 データベースの作成 controller# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade juno" neutron 8-7 使用しないデータベースファイル削除 controller# rm /var/lib/neutron/neutron.sqlite 8-8 controllerノードのNeutronと関連サービスの再起動 設定を反映させるため、controllerノードのNeutronと関連のサービスを再起動します。 controller# rm /var/log/neutron/* controller# service nova-api restart && service nova-scheduler restart && service nova-conductor restart && service neutron-server restart 日本仮想化技術50
  51. 51. OpenStack構築手順書 Juno版 8-9 ログの確認 controller# grep "ERROR|WARNING" /var/log/neutron/* ... 2014-05-16 18:41:24.106 2331 ERROR neutron.openstack.common.rpc.common [-] AMQP server on localhost:5672 i s unreachable: Socket closed. Trying again in 30 seconds. 2014-05-16 18:41:34.119 2708 WARNING neutron.openstack.common.db.sqlalchemy.session [-] This application h as not enabled MySQL traditional mode, which means silent data corruption may occur. Please encourage the application developers to enable this mode. 2014-05-16 18:41:36.423 2708 WARNING neutron.api.extensions [-] Extension fwaas not supported by any of lo aded plugins 2014-05-16 18:41:36.429 2708 WARNING neutron.api.extensions [-] Extension flavor not supported by any of l oaded plugins 2014-05-16 18:41:36.484 2708 WARNING neutron.api.extensions [-] Extension lbaas_agent_scheduler not suppor ted by any of loaded plugins 2014-05-16 18:41:36.502 2708 WARNING neutron.api.extensions [-] Extension lbaas not supported by any of lo aded plugins 2014-05-16 18:41:36.528 2708 WARNING neutron.api.extensions [-] Extension metering not supported by any of loaded plugins 2014-05-16 18:41:36.558 2708 WARNING neutron.api.extensions [-] Extension port-security not supported by a ny of loaded plugins 2014-05-16 18:41:36.593 2708 WARNING neutron.api.extensions [-] Extension routed-service-insertion not sup ported by any of loaded plugins 2014-05-16 18:41:36.601 2708 WARNING neutron.api.extensions [-] Extension router-service-type not supporte d by any of loaded plugins 2014-05-16 18:41:36.630 2708 WARNING neutron.api.extensions [-] Extension service-type not supported by an y of loaded plugins 2014-05-16 18:41:36.653 2708 WARNING neutron.api.extensions [-] Extension vpnaas not supported by any of l oaded plugins ※上記ERRORとWARNING以外が出力されなければ問題ありません。 日本仮想化技術51
  52. 52. OpenStack構築手順書 Juno版 8-10 動作確認 controller:~# source admin-openrc.sh controller:~# neutron ext-list +-----------------------+-----------------------------------------------+ | alias | name | +-----------------------+-----------------------------------------------+ | security-group | security-group | | l3_agent_scheduler | L3 Agent Scheduler | | ext-gw-mode | Neutron L3 Configurable external gateway mode | | binding | Port Binding | | provider | Provider Network | | agent | agent | | quotas | Quota management support | | dhcp_agent_scheduler | DHCP Agent Scheduler | | l3-ha | HA Router extension | | multi-provider | Multi Provider Network | | external-net | Neutron external network | | router | Neutron L3 Router | | allowed-address-pairs | Allowed Address Pairs | | extraroute | Neutron Extra Route | | extra_dhcp_opt | Neutron Extra DHCP opts | | dvr | Distributed Virtual Router | +-----------------------+-----------------------------------------------+ 日本仮想化技術52
  53. 53. OpenStack構築手順書 Juno版 9. Neutronのインストール・設定(networkノード) 9-1 パッケージインストール network# apt-get install -y neutron-plugin-ml2 neutron-plugin-openvswitch-agent neutron-l3-agent neutron-dhcp-agent 9-2 設定の変更 neutron.confの設定 network# vi /etc/neutron/neutron.conf [DEFAULT] ... rpc_backend = rabbit ← コメントアウトをはずす rabbit_host = controller ← 追記 rabbit_password = password ← 追記 auth_strategy = keystone ← コメントアウトをはずす core_plugin = ml2 ← 追記 service_plugins = router ← 追記 allow_overlapping_ips = True ← 追記 [keystone_authtoken] #auth_host = 127.0.0.1 ← 既存設定をコメントアウト #auth_host = controller ← コメントアウト #auth_protocol = http ← コメントアウト #auth_port = 35357 ← コメントアウト #admin_tenant_name = %SERVICE_TENANT_NAME% ← 既存設定をコメントアウト #admin_user = %SERVICE_USER% ← 既存設定をコメントアウト #admin_password = %SERVICE_PASSWORD% ← 既存設定をコメントアウト auth_uri = http://controller:5000/v2.0 ← 追記 identity_uri = http://controller:35357 ← 追記 admin_tenant_name = service ← 追記 admin_user = neutron ← 追記 admin_password = password ← 追記 日本仮想化技術53
  54. 54. OpenStack構築手順書 Juno版 ml2_conf.iniの設定 network# vi /etc/neutron/plugins/ml2/ml2_conf.ini [ml2] ... type_drivers = flat,gre ← 追記 tenant_network_types = gre ← 追記 mechanism_drivers = openvswitch ← 追記 [ml2_type_flat] ... flat_networks = external ← 追記 [ml2_type_gre] ... tunnel_id_ranges = 1:1000 ← 追記 [ovs] ... local_ip = 192.168.0.9 ← 追記 tunnel_type = gre ← 追記 enable_tunneling = True ← 追記 bridge_mappings = external:br-ex ← 追記 [securitygroup] ... enable_security_group = True enable_ipset = True firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver [agent] ... tunnel_types = gre l3_agent.iniの設定 network# vi /etc/neutron/l3_agent.ini [DEFAULT] interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver ← 追記 use_namespaces = True ← 追記 external_network_bridge = br-ex ← 追記 verbose = True ← 追記 日本仮想化技術54
  55. 55. OpenStack構築手順書 Juno版 network# vi /etc/neutron/dhcp_agent.ini [DEFAULT] ... interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver ← 追記 dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq ← 追記 use_namespaces = True ← 追記 dnsmasq_config_file = /etc/neutron/dnsmasq-neutron.conf ← 追記 verbose = True ← 追記 DHCPオプションでMTUの設定 dnsmasq-neutron.confファイルを新規作成して、DHCPオプションを設定します。 network# vi /etc/neutron/dnsmasq-neutron.conf dhcp-option-force=26,1454 metadata_agent.iniの設定 network# vi /etc/neutron/metadata_agent.ini [DEFAULT] #auth_url = http://localhost:5000/v2.0 ← 既存設定をコメントアウト #admin_tenant_name = %SERVICE_TENANT_NAME% ← 既存設定をコメントアウト #admin_user = %SERVICE_USER% ← 既存設定をコメントアウト #admin_password = %SERVICE_PASSWORD% ← 既存設定をコメントアウト auth_url = http://controller:5000/v2.0 ← 追記 auth_region = regionOne admin_tenant_name = service ← 追記 admin_user = neutron ← 追記 admin_password = password ← 追記 # nova_metadata_ip = 127.0.0.1 ← 既存設定をコメントアウト # metadata_proxy_shared_secret = nova_metadata_ip = controller ← 追記 metadata_proxy_shared_secret = password ← 追記 9-3 設定の変更 controllerノードのnovaの設定ファイルに追記します。 日本仮想化技術55
  56. 56. OpenStack構築手順書 Juno版 controller# vi /etc/nova/nova.conf [neutron] ... service_metadata_proxy = True metadata_proxy_shared_secret = password controllerノードのnova-apiサービスを再起動します。 controller# service nova-api restart 日本仮想化技術56
  57. 57. OpenStack構築手順書 Juno版 9-4 networkノードのOpen vSwitchサービスの再起動 OpenStackのネットワークサービス設定を反映させるため、networkノードでOpen vSwitchのサービスを再起動します。 network# service openvswitch-switch restart 9-5 ブリッジデバイス設定 内部通信用と外部通信用のブリッジを作成して外部通信用ブリッジに共有ネットワークデバイスを接続します。 network# ovs-vsctl add-br br-ex network# ovs-vsctl add-port br-ex eth0 9-6 ブリッジデバイス設定確認 ブリッジの作成・設定を確認します。 9-6-1 ブリッジの確認 network# ovs-vsctl list-br br-ex br-int ※add-brしたブリッジが表示されていれば問題ありません。 9-6-2 外部接続用ブリッジと共有ネットワークデバイスの接続確認 network# ovs-vsctl list-ports br-ex eth0 ※add-port で設定したネットワークデバイスが表示されていれば問題ありません。 日本仮想化技術57
  58. 58. OpenStack構築手順書 Juno版 9-7 ネットワークインタフェースの設定変更 Management側に接続されたNICを使って、仮想NIC(br-ex)を作成します。 network# vi /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback auto eth0 iface eth0 inet manual ← 既存設定を変更 up ip link set dev $IFACE up ← 既存設定を変更 down ip link set dev $IFACE down ← 既存設定を変更 auto eth1 iface eth1 inet static address 192.168.0.9 netmask 255.255.255.0 auto br-ex ← 追記 iface br-ex inet static ← 追記 address 10.0.0.9 ← 追記 netmask 255.255.255.0 ← 追記 gateway 10.0.0.1 ← 追記 dns-nameservers 10.0.0.1 ← 追記 9-7 networkノード再起動 インタフェース設定変更を適用するために、システムを再起動します。 network# reboot 9-8 ブリッジ設定確認 各種ブリッジが正常に設定されていることを確認します。 network# ifconfig br-ex Link encap:Ethernet HWaddr 00:1c:42:29:b3:bd inet addr:10.0.0.9 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 addr: fe80::a840:fbff:fe7d:dd6e/64 Scope:Link UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:2148 errors:0 dropped:0 overruns:0 frame:0 TX packets:2956 errors:0 dropped:0 overruns:0 carrier:0 日本仮想化技術58
  59. 59. OpenStack構築手順書 Juno版 collisions:0 txqueuelen:0 RX bytes:257185 (257.1 KB) TX bytes:654268 (654.2 KB) br-int Link encap:Ethernet HWaddr ea:04:ce:9b:58:4b inet6 addr: fe80::b84c:fbff:fe1a:d627/64 Scope:Link UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:56 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:4978 (4.9 KB) TX bytes:648 (648.0 B) br-tun Link encap:Ethernet HWaddr 2e:8d:24:75:de:47 inet6 addr: fe80::f0fb:45ff:fee5:1133/64 Scope:Link UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:1 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:90 (90.0 B) TX bytes:648 (648.0 B) eth0 Link encap:Ethernet HWaddr 00:1c:42:5c:58:ba inet addr:192.168.0.9 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::21c:42ff:fe5c:58ba/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:283 errors:0 dropped:0 overruns:0 frame:0 TX packets:239 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:41011 (41.0 KB) TX bytes:37254 (37.2 KB) eth1 Link encap:Ethernet HWaddr 00:1c:42:29:b3:bd inet6 addr: fe80::21c:42ff:fe29:b3bd/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:25542 errors:0 dropped:0 overruns:0 frame:0 TX packets:3083 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:5297181 (5.2 MB) TX bytes:668414 (668.4 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:6 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:3456 (3.4 KB) TX bytes:3456 (3.4 KB) 日本仮想化技術59
  60. 60. OpenStack構築手順書 Juno版 9-9 networkノードのNeutronと関連サービスの再起動 設定を反映させるため、networkノードのNeutronと関連のサービスを再起動します。 network# rm /var/log/neutron/* network# service openvswitch-switch restart && service neutron-plugin-openvswitch-agent restart && service neutron-l3-agent restart && service neutron-dhcp-agent restart && service neutron-metadata-agent restart 9-10 ログの確認 network# grep "ERROR|WARNING" /var/log/neutron/* ... /var/log/neutron/openvswitch-agent.log:2014-05-16 19:33:14.963 1523 ERROR neutron.agent.linux.ovsdb_monito r [-] Error received from ovsdb monitor: ovsdb-client: unix:/var/run/openvswitch/db.sock: receive failed ( End of file) /var/log/neutron/openvswitch-agent.log:2014-05-16 19:33:15.455 1523 ERROR neutron.agent.linux.ovs_lib [-] Unable to execute ['ovs-vsctl', '--timeout=10', 'list-ports', 'br-int']. Exception: /var/log/neutron/openvswitch-agent.log:2014-05-16 19:33:15.456 1523 ERROR neutron.plugins.openvswitch.agen t.ovs_neutron_agent [-] Error while processing VIF ports ※上記ERRORとWARNING以外が出力されなければ問題ありません。 日本仮想化技術60
  61. 61. OpenStack構築手順書 Juno版 10. Neutronのインストール・設定(compute1ノード) 10-1 パッケージインストール compute1# apt-get install -y neutron-plugin-ml2 neutron-plugin-openvswitch-agent 10-2 設定の変更 compute1# vi /etc/neutron/neutron.conf [DEFAULT] ... rpc_backend = rabbit ← コメントアウトをはずす rabbit_host = controller ← 追記 rabbit_password = password ← 追記 auth_strategy = keystone ← コメントアウトをはずす core_plugin = ml2 ← 設定されていることを確認 service_plugins = router ← 追記 allow_overlapping_ips = True ← 追記 verbose = True [keystone_authtoken] #auth_host = 127.0.0.1 ← 既存設定をコメントアウト #auth_host = controller ← 追記 #auth_protocol = http ← 既存設定をコメントアウト #auth_port = 35357 ← 既存設定をコメントアウト #admin_tenant_name = %SERVICE_TENANT_NAME% ← 既存設定をコメントアウト #admin_user = %SERVICE_USER% ← 既存設定をコメントアウト #admin_password = %SERVICE_PASSWORD% ← 既存設定をコメントアウト auth_uri = http://controller:5000/v2.0 ← 追記 identity_uri = http://controller:35357 ← 追記 admin_tenant_name = service ← 追記 admin_user = neutron ← 追記 admin_password = password ← 追記 日本仮想化技術61
  62. 62. OpenStack構築手順書 Juno版 compute1# vi /etc/neutron/plugins/ml2/ml2_conf.ini [ml2] type_drivers = flat,gre ← 追記 tenant_network_types = gre ← 追記 mechanism_drivers = openvswitch ← 追記 [ml2_type_gre] tunnel_id_ranges = 1:1000 ← 追記 [securitygroup] enable_security_group = True ← 追記 enable_ipset = True ← 追記 firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver ← 追記 [ovs] ← 追記 local_ip = 192.168.0.11 ← 追記 enable_tunneling = True ← 追記 [agent] ← 追記 tunnel_type = gre ← 追記 10-3 compute1ノードのOpen vSwitchサービスの再起動 設定を反映させるため、compute1ノードのOpen vSwitchのサービスを再起動します。 compute1# service openvswitch-switch restart 日本仮想化技術62
  63. 63. OpenStack構築手順書 Juno版 10-4 compute1ノードのネットワーク設定 デフォルトではComputeはレガシーなネットワークを利用します。Neutronを利用するように設定を変更します。 compute1# vi /etc/nova/nova.conf [DEFAULT] ... network_api_class = nova.network.neutronv2.api.API security_group_api = neutron linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver firewall_driver = nova.virt.firewall.NoopFirewallDriver [neutron] ... url = http://controller:9696 auth_strategy = keystone admin_auth_url = http://controller:35357/v2.0 admin_tenant_name = service admin_username = neutron admin_password = password 10-5 compute1ノードのNeutronと関連サービスを再起動 ネットワーク設定を反映させるため、compute1ノードのNeutronと関連のサービスを再起動します。 compute1# service nova-compute restart compute1# service neutron-plugin-openvswitch-agent restart 10-6 ログの確認 compute1# grep "ERROR|WARNING" /var/log/neutron/* ※何も表示されなければ問題ありません。 日本仮想化技術63
  64. 64. OpenStack構築手順書 Juno版 11. 仮想ネットワーク設定(controllerノード) 11-1 外部接続ネットワークの設定 11-1-1 admin環境変数読み込み 外部接続用ネットワーク作成するためにadmin環境変数を読み込みます。 controller# source admin-openrc.sh 11-1-2 外部ネットワーク作成 ext-netという名前で外部用ネットワークを作成します。 controller# neutron net-create ext-net --shared --router:external=True Created a new network: +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | True | | id | 8cbfd14f-72bb-4e6d-a9a6-f1312d641cd4 | | name | ext-net | | provider:network_type | gre | | provider:physical_network | | | provider:segmentation_id | 1 | | router:external | True | | shared | True | | status | ACTIVE | | subnets | | | tenant_id | 07e06d1d7f35430e8906e6fb5badd893 | +---------------------------+--------------------------------------+ 日本仮想化技術64
  65. 65. OpenStack構築手順書 Juno版 11-1-3 外部ネットワーク用サブネット作成 ext-subnetという名前で外部ネットワーク用サブネットを作成します。 controller# neutron subnet-create ext-net --name ext-subnet --allocation-pool start=10.0.0.200,end=10.0.0.250 --disable-dhcp --gateway 10.0.0.1 10.0.0.0/24 Created a new subnet: +------------------+----------------------------------------------+ | Field | Value | +------------------+----------------------------------------------+ | allocation_pools | {"start": "10.0.0.200", "end": "10.0.0.250"} | | cidr | 10.0.0.0/24 | | dns_nameservers | | | enable_dhcp | False | | gateway_ip | 10.0.0.1 | | host_routes | | | id | 7c457880-29f9-4a85-8714-1a5762b3c932 | | ip_version | 4 | | name | ext-subnet | | network_id | 8cbfd14f-72bb-4e6d-a9a6-f1312d641cd4 | | tenant_id | 07e06d1d7f35430e8906e6fb5badd893 | +------------------+----------------------------------------------+ 11-2 インスタンス用ネットワーク設定 11-2-1 demo環境変数読み込み インスタンス用ネットワーク作成するためにdemo環境変数読み込みます。 controller# source demo-openrc.sh 日本仮想化技術65
  66. 66. OpenStack構築手順書 Juno版 11-2-2 インスタンス用ネットワーク作成 demo-netという名前でインスタンス用ネットワークを作成します。 controller# neutron net-create demo-net Created a new network: +----------------+--------------------------------------+ | Field | Value | +----------------+--------------------------------------+ | admin_state_up | True | | id | 71059c78-fd2c-4e52-a4b9-98776be0ba28 | | name | demo-net | | shared | False | | status | ACTIVE | | subnets | | | tenant_id | 6d19304a59b3456bbe2552a9080d1301 | +----------------+--------------------------------------+ 11-2-3 インスタンス用ネットワークサブネット作成 demo-subnetという名前でインスタンス用ネットワークサブネットを作成します。 controller# neutron subnet-create demo-net --name demo-subnet --gateway 192.168.0.1 192.168.0.0/24 Created a new subnet: +------------------+--------------------------------------------------+ | Field | Value | +------------------+--------------------------------------------------+ | allocation_pools | {"start": "192.168.0.2", "end": "192.168.0.254"} | | cidr | 192.168.0.0/24 | | dns_nameservers | | | enable_dhcp | True | | gateway_ip | 192.168.0.1 | | host_routes | | | id | 6cf9c7f6-2105-4c2a-9fac-0b1df83f774d | | ip_version | 4 | | name | demo-subnet | | network_id | 71059c78-fd2c-4e52-a4b9-98776be0ba28 | | tenant_id | 6d19304a59b3456bbe2552a9080d1301 | +------------------+--------------------------------------------------+ 日本仮想化技術66
  67. 67. OpenStack構築手順書 Juno版 11-3 仮想ネットワークルーター設定 仮想ネットワークルーターを作成して外部接続用ネットワークとインスタンス用ネットワークをルーターに接続し、双方 でデータのやり取りを行えるようにします。 11-3-1 demo-routerを作成 仮想ネットワークルータを作成します。 controller# neutron router-create demo-router Created a new router: +-----------------------+--------------------------------------+ | Field | Value | +-----------------------+--------------------------------------+ | admin_state_up | True | | external_gateway_info | | | id | d1a10de8-37e2-4966-a84d-caff3e6b0e1f | | name | demo-router | | status | ACTIVE | | tenant_id | 6d19304a59b3456bbe2552a9080d1301 | +-----------------------+--------------------------------------+ 11-3-2 demo-routerにsubnetを追加 仮想ネットワークルーターにインスタンス用ネットワークを接続します。 controller# neutron router-interface-add demo-router demo-subnet Added interface fc83f7f5-6da5-4607-b9f8-34d0004dfc3e to router demo-router. 11-3-3 demo-routerにgatewayを追加 仮想ネットワークルーターに外部ネットワークを接続します。 controller# neutron router-gateway-set demo-router ext-net Set gateway for router demo-router 日本仮想化技術67
  68. 68. OpenStack構築手順書 Juno版 12. 仮想ネットワーク設定確認(networkノード) 12-1 仮想ネットワークルーターの確認 以下コマンドで仮想ネットワークルーターが作成されているか確認します。 network# ip netns qdhcp-ed07c38c-8609-43d8-ae02-582f9f202a3e qrouter-7c1ca8eb-eaa0-4a68-843d-daca30824693 ※qrouter~~ という名前の行が表示されていれば問題ありません。 12-2 仮想ルーターのネームスペースのIPアドレスを確認 仮想ルーターと外部用ネットワークの接続を確認します。 network# ip netns exec `ip netns | grep qrouter` ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 13: qr-65249869-77: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default link/ether fa:16:3e:d0:df:2c brd ff:ff:ff:ff:ff:ff inet 192.168.0.1/24 brd 192.168.0.255 scope global qr-65249869-77 valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fed0:df2c/64 scope link valid_lft forever preferred_lft forever 14: qg-bd7c5797-3f: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default link/ether fa:16:3e:35:80:8f brd ff:ff:ff:ff:ff:ff inet 10.0.0.200/24 brd 10.0.0.255 scope global qg-bd7c5797-3f valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fe35:808f/64 scope link valid_lft forever preferred_lft forever ※外部アドレス(この環境では10.0.0.0/24)のアドレスを確認します。 日本仮想化技術68
  69. 69. OpenStack構築手順書 Juno版 12-3 仮想ゲートウェイの疎通確認 仮想ルーターと通信が行えるかを確認します。 network# ping 10.0.0.200 PING 10.0.0.200 (10.0.0.200) 56(84) bytes of data. 64 bytes from 10.0.0.200: icmp_seq=1 ttl=64 time=1.17 ms 64 bytes from 10.0.0.200: icmp_seq=2 ttl=64 time=0.074 ms 64 bytes from 10.0.0.200: icmp_seq=3 ttl=64 time=0.061 ms 64 bytes from 10.0.0.200: icmp_seq=4 ttl=64 time=0.076 ms ※応答が返ってくれば問題ありません。各ノードからPingコマンドによる疎通確認を実行しましょう。 日本仮想化技術69
  70. 70. OpenStack構築手順書 Juno版 13. Cinderインストール(controllerノード) 13-1 パッケージインストール controller# apt-get install -y cinder-common cinder-api cinder-scheduler cinder-volume lvm2 python-mysqldb 13-2 データベース作成・確認 13-2-1 データベース作成 MariaDBのデータベースにCinderのデータベースを作成します。 controller# mysql -u root -p <<EOF CREATE DATABASE cinder; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'password'; EOF Enter password: ← MariaDBのrootパスワードpasswordを入力 13-2-2 データベースの確認 MariaDBにCinderのデータベースが登録されたか確認します。 controller# mysql -u cinder -p Enter password: ← MariaDBのcinderパスワードpasswordを入力 ... Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | cinder | +--------------------+ 2 rows in set (0.00 sec) ※ユーザーcinderでログイン可能でデータベースの閲覧が可能なら問題ありません。 日本仮想化技術70
  71. 71. OpenStack構築手順書 Juno版 13-3 認証情報の設定 以下コマンドで認証情報を設定します。 controller# source admin-openrc.sh controller# keystone user-create --name=cinder --pass=password +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | | | enabled | True | | id | 2e391db9f2004b5ab0712c67ae6c9bcd | | name | cinder | | username | cinder | +----------+----------------------------------+ controller# keystone user-role-add --user=cinder --tenant=service --role=admin controller# keystone service-create --name=cinder --type=volume --description="OpenStack Block Storage" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | OpenStack Block Storage | | enabled | True | | id | 3830cd8b2c614414903b0bc31ed9e1ca | | name | cinder | | type | volume | +-------------+----------------------------------+ controller# keystone service-create --name=cinderv2 --type=volumev2 --description="OpenStack Block Storage v2" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | OpenStack Block Storage v2 | | enabled | True | | id | cb2b03621220473c9bcbe194dfd55695 | | name | cinderv2 | | type | volumev2 | +-------------+----------------------------------+ controller# keystone endpoint-create --service=cinder --publicurl=http://controller:8776/v1/%(tenant_id)s --internalurl=http://controller:8776/v1/%(tenant_id)s --adminurl=http://controller:8776/v1/%(tenant_id)s +-------------+-----------------------------------------+ | Property | Value | +-------------+-----------------------------------------+ | adminurl | http://controller:8776/v1/%(tenant_id)s | 日本仮想化技術71
  72. 72. OpenStack構築手順書 Juno版 | id | 44b37c343f6c4c52843ce3ca6c7fbad3 | | internalurl | http://controller:8776/v1/%(tenant_id)s | | publicurl | http://controller:8776/v1/%(tenant_id)s | | region | regionOne | | service_id | 3830cd8b2c614414903b0bc31ed9e1ca | +-------------+-----------------------------------------+ controller# keystone endpoint-create --service=cinderv2 --publicurl=http://controller:8776/v2/%(tenant_id)s --internalurl=http://controller:8776/v2/%(tenant_id)s --adminurl=http://controller:8776/v2/%(tenant_id)s +-------------+-----------------------------------------+ | Property | Value | +-------------+-----------------------------------------+ | adminurl | http://controller:8776/v2/%(tenant_id)s | | id | 0eda32a224b74b958be4dc551dfe4aaa | | internalurl | http://controller:8776/v2/%(tenant_id)s | | publicurl | http://controller:8776/v2/%(tenant_id)s | | region | regionOne | | service_id | cb2b03621220473c9bcbe194dfd55695 | +-------------+-----------------------------------------+ 日本仮想化技術72
  73. 73. OpenStack構築手順書 Juno版 13-4 設定の変更 controller# vi /etc/cinder/cinder.conf ※以下の記述を追加します。 [DEFAULT] ... rpc_backend = rabbit rabbit_host = controller rabbit_password = password rabbit_port = 5672 rabbit_userid = guest my_ip = 10.0.0.10 #controllerノード auth_strategy = keystone glance_host = controller [keystone_authtoken] auth_uri = http://controller:5000/v2.0 identity_uri = http://controller:35357 admin_tenant_name = service admin_user = cinder admin_password = password [database] connection = mysql://cinder:password@controller/cinder 13-5 データベースに表を作成 controller# su -s /bin/sh -c "cinder-manage db sync" cinder 13-6 Cinderサービスの再起動 設定を反映させるために、Cinderのサービスを再起動します。 controller# rm /var/log/cinder/* controller# service cinder-scheduler restart && service cinder-api restart 13-7 使用しないデータベースファイル削除 controller# rm /var/lib/cinder/cinder.sqlite 日本仮想化技術73
  74. 74. OpenStack構築手順書 Juno版 13-8 ログの確認 controller# grep "ERROR|WARNING" /var/log/cinder/* ... /var/log/cinder/cinder-api.log:2014-05-16 16:56:57.401 2641 WARNING cinder.service [-] Value of config opt ion osapi_volume_workers must be integer greater than 1. Input value ignored. /var/log/cinder/cinder-scheduler.log:2014-05-16 16:56:37.733 2287 ERROR oslo.messaging._drivers.impl_rabbi t [req-b051f972-4128-49bb-a820-b0718340f8fd - - - - -] AMQP server on localhost:5672 is unreachable: Socke t closed. Trying again in 30 seconds. /var/log/cinder/cinder-volume.log:2014-05-16 16:56:38.409 2390 ERROR oslo.messaging._drivers.impl_rabbit [ -] AMQP server on localhost:5672 is unreachable: Socket closed. Trying again in 30 seconds. /var/log/cinder/cinder-volume.log:2014-05-16 16:57:12.442 2390 ERROR oslo.messaging._drivers.impl_rabbit [ -] AMQP server on localhost:5672 is unreachable: Socket closed. Trying again in 30 seconds. /var/log/cinder/cinder-volume.log:2014-05-16 16:57:46.479 2390 ERROR oslo.messaging._drivers.impl_rabbit [ -] AMQP server on localhost:5672 is unreachable: Socket closed. Trying again in 30 seconds. ※上記ERRORとWARNINGが出力されなければ問題ありません。 13-9 イメージ格納用ボリューム作成 イメージ格納用ボリュームを設定するために物理ボリュームの設定、ボリューム作成を行います。 13-9-1 物理ボリュームを設定 以下コマンドで物理ボリュームを設定します。 controller# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created controller# vgcreate cinder-volumes /dev/sdb Volume group "cinder-volumes" successfully created 13-9-2 Cinder-Volumeサービスの再起動 Cinderストレージの設定を反映させるために、Cinder-Volumeのサービスを再起動します。 controller# service cinder-volume restart && service tgt restart 13-9-3 admin環境変数設定ファイル読み込み インスタンス格納用ボリュームを作成するために、admin環境変数を読み込みます。 controller# source admin-openrc.sh 日本仮想化技術74
  75. 75. OpenStack構築手順書 Juno版 13-9-4 ボリューム作成 以下コマンドでインスタンス格納用ボリュームを作成します。 controller# cinder create --display-name testvolume01 1 +---------------------+--------------------------------------+ | Property | Value | +---------------------+--------------------------------------+ | attachments | [] | | availability_zone | nova | | bootable | false | | created_at | 2014-04-30T10:57:30.357692 | | display_description | None | | display_name | testvolume01 | | encrypted | False | | id | 2bd90ca8-0062-4b31-b3b2-7fd6fdc8da97 | | metadata | {} | | size | 1 | | snapshot_id | None | | source_volid | None | | status | creating | | volume_type | None | +---------------------+--------------------------------------+ 13-9-5 作成ボリュームの確認 以下コマンドで作成したボリュームを確認します。 controller# cinder list +--------------------------------------+-----------+--------------+------+-------------+----------+------- ------+ | ID | Status | Display Name | Size | Volume Type | Bootable | Attach ed to | +--------------------------------------+-----------+--------------+------+-------------+----------+------- ------+ | 2bd90ca8-0062-4b31-b3b2-7fd6fdc8da97 | available | testvolume01 | 1 | None | false | | +--------------------------------------+-----------+--------------+------+-------------+----------+------- ------+ ※一覧にコマンドを実行して登録したボリュームが表示されて、ステータスがavailableとなっていれば問題ありません。 日本仮想化技術75
  76. 76. OpenStack構築手順書 Juno版 14. Dashboardインストール・確認(controllerノード) クライアントマシンからブラウザーでOpenStack環境を操作可能なWebインターフェイスをインストールします。 14-1 パッケージインストール controllerノードにDashboardをインストールします。 controller# apt-get install -y apache2 memcached libapache2-mod-wsgi openstack-dashboard 14-2 Dashboardの設定の変更 インストールしたDashboardの設定を変更します。 controller# vi /etc/openstack-dashboard/local_settings.py ... OPENSTACK_HOST = "controller" ← 変更 ALLOWED_HOSTS = ['*'] ← 変更 変更した変更を反映させるため、Apacheとセッションストレージサービスを再起動します。 controller# service apache2 restart controller# service memcached restart 14-3 Dashboardへのアクセス確認 controllerノードとネットワーク的に接続されているマシンからブラウザで以下URLに接続してOpenStackのログイン画 面が表示されるか確認します。 ※ブラウザで接続するマシンは予めDNSもしくは/etc/hostsにcontrollerノードのIPを記述しておく等controllerノードの名 前解決を行っておく必要があります。 http://controller/horizon/ ※上記URLにアクセスしてログイン画面が表示され、ユーザーadminとdemoでログイン(パスワード:password)でログ インできれば問題ありません。 日本仮想化技術76
  77. 77. OpenStack構築手順書 Juno版 14-4 セキュリティグループの設定 OpenStackの上で動かすインスタンスのファイアウォール設定は、セキュリティグループで行います。ログイン後、次の 手順でセキュリティグループを設定できます。 1.対象のユーザーでログイン 2.「プロジェクト→コンピュート→アクセスとセキュリティ」を選択 3.「ルールの管理」ボタンをクリック 4.「ルールの追加」で許可するルールを定義 5.「追加」ボタンをクリック セキュリティーグループは複数作成できます。作成したセキュリティーグループをインスタンスを起動する際に選択する ことで、セキュリティグループで定義したポートを解放したり、拒否したり、接続できるクライアントを制限することが できます。 14-5 キーペアの作成 OpenStackではインスタンスへのアクセスはデフォルトで公開鍵認証方式で行います。次の手順でキーペアを作成できま す。 1.対象のユーザーでログイン 2.「プロジェクト→コンピュート→アクセスとセキュリティ」をクリック 3.「キーペア」タブをクリック 4.「キーペアの作成」ボタンをクリック 5.キーペア名を入力 6.「キーペアの作成」ボタンをクリック 7.キーペア(拡張子:pem)ファイルをダウンロード インスタンスにSSH接続する際は、-iオプションでpemファイルを指定します。 client$ ssh -i mykey.pem cloud-user@instance-floating-ip 日本仮想化技術77
  78. 78. OpenStack構築手順書 Juno版 14-6 インスタンスの起動 前の手順でGlanceにCirrOSイメージを登録していますので、早速構築したOpenStack環境上でインスタンスを起動して みましょう。 1.対象のユーザーでログイン 2.「プロジェクト→コンピュート→イメージ」をクリック 3.イメージ一覧から起動するOSイメージを選び、「起動」ボタンをクリック 4.「インスタンスの起動」詳細タブで起動するインスタンス名、フレーバー、インスタンス数を設定 5.アクセスとセキュリティタブで割り当てるキーペア、セキュリティーグループを設定 6.ネットワークタブで割り当てるネットワークを設定 7.作成後タブで必要に応じてユーザーデータの入力(オプション) 8.高度な設定タブでパーティションなどの構成を設定(オプション) 9.「起動」ボタンをクリック 14-7 Floating IPの設定 起動したインスタンスにFloating IPアドレスを設定することで、Dashboardのコンソール以外からインスタンスにアクセ スできるようになります。インスタンスにFloating IPを割り当てるには次の手順で行います。 1.対象のユーザーでログイン 2.「プロジェクト→コンピュート→インスタンス」をクリック 3.インスタンスの一覧から割り当てるインスタンスをクリック 4.アクションメニューから「Floating IPの割り当て」をクリック 5.「Floating IP割り当ての管理」画面のIPアドレスで「+」ボタンをクリック 6.「IPの確保」ボタンをクリック 7.割り当てるIPアドレスとインスタンスを選択して「割り当て」ボタンをクリック 14-8 インスタンスへのアクセス Floating IPを割り当てて、かつセキュリティグループの設定を適切に行っていれば、リモートアクセスできるようになり ます。セキュリティーグループでSSHを許可した場合、端末からSSH接続が可能になります(下記は実行例)。 client$ ssh -i mykey.pem cloud-user@instance-floating-ip その他、適切なポートを開放してインスタンスへのPingを許可したり、インスタンスでWebサーバーを起動して外部PC からアクセスしてみましょう。 日本仮想化技術78

×