連載
» 2015年01月15日 16時05分 公開

Server&Storageイベントリポート OpenStack Summitハンズオン:OpenStack Neutronを使ってWebシステムを構築する実践的な方法 (2/3)

[Robert Lin,ミラクル・リナックス株式会社]

OpenStack Neutronで仮想ネットワークを用意する

 まず、仮想ネットワークを作ります。

 172.16.1.0/24のpublicの仮想ネットワークは既に作成されているので、内部ネットワーク「private」を作る作業を行います。

 lab-desktopから下記のコマンドを実行します。privateのサブネットは10.0.0.0/24を使います。

$ neutron net-create private
$ neutron subnet-create --name private_subnet private 10.0.0.0/24
$ neutron net-list

仮想ルーターを用意する

 次に仮想ルーター「myrouter」を作ります。ここでは作成後にルーターの状態を確認するためにneutron router-listも実行しています。

$ neutron router-create myrouter
$ neutron router-list

myrouterをpublicのゲートウェイに

 ルーター「myrouter」をゲートウェイとしてpublicネットワークに接続します。

$ neutron router-gateway-set myrouter public
$ neutron router-list

myrouterをprivateに接続

 次に仮想ルーターを「myrouter」をprivateネットワークに接続します。下記コマンドのように、「myrouter」にprivateへの接続インターフェースを追加します。

$ neutron router-interface-add myrouter private_subnet

 ここまでで、仮想ネットワーク、仮想ルーターの作成ができました。

「踏み台」の作成

 踏み台(Jumphost)用のセキュリティグループを作成します。

$ neutron security-group-create jumphost

 ICMP、SSHのルールを作ります。

$ neutron security-group-rule-create --protocol icmp jumphost
$ neutron security-group-rule-create --protocol tcp --port-range-min 22 --port-range-max 22 jumphost

 踏み台へログインしやすくするため、SSHキーを作成します。

$ nova keypair-add mykey > ~/.ssh/id_rsa.pub

 踏み台が接続するprivateのIDを作成します。

$ NET_ID=`neutron net-list | grep private | awk '{print $2}'`

 踏み台の仮想マシンを起動します。

$ nova boot --image cirros --flavor 1 --key-name mykey --nic net-id=$NET_ID jumphost --security_groups jumphost

 踏み台のIPアドレスを確認します。

$ nova list

 踏み台のネットワークport IDを確認します。

$ PORT_ID=`neutron port-list -- --fixed_ips ip_address=10.0.0.2 | grep ip_address |  awk '{print $3}'`

「踏み台」にフローティングIPを付ける

 このport IDに対してフローティングIPを作ります。

$ neutron floatingip-create --port-id=$PORT_ID public
Created a new floatingip:
:
  floating_ip_address | 172.16.1.129                         
:

踏み台への接続テスト

 踏み台へ接続してみます。デフォルトパスワードは cubswin:) です。

$ ssh cirros@172.16.1.129

 ここから仮想Webサーバーを作るので、踏み台から抜けておきます。

$ exit

Webサーバーのセキュリティグループを作成する

 上記と同じような手順でWebサーバーのセキュリティグループを作ります。

$ neutron security-group-create web
$ neutron security-group-rule-create  --protocol TCP --port-range-min 80 --port-range-max 80 web

 Webセキュリティーグループに対して、jumphostセキュリティーグループのメンバーからのssh接続を許可します。

$ neutron security-group-rule-create --direction ingress --protocol TCP --port-range-min 22 --port-range-max 22 --remote-group-id jumphost web

 仮想Webサーバーを2台起動し、privateネットワークに接続します。

$ nova boot --image cirros --flavor 1 webserver1 --nic net-id=$NET_ID --security_groups web
$ nova boot --image cirros --flavor 1 webserver2 --nic net-id=$NET_ID --security_groups web

Webサーバーへの接続テスト

 Webサーバーへ接続テストします。まず、「踏み台」にログインして、Webサーバーにログインします。

$ ssh cirros@172.16.1.129

 webserver1、webserver2のそれぞれに対して"web_server1"、"web_server2"という文字列を書き込みます。

$ ssh 10.0.0.4
$ while true; do echo -e 'HTTP/1.0 200 OK\r\n\r\nweb_server1' | sudo nc -l -p 80 ; done  &
$ exit    # いったん踏み台に戻ります。
$ ssh 10.0.0.5
$ while true; do echo -e 'HTTP/1.0 200 OK\r\n\r\nweb_server2' | sudo nc -l -p 80 ; done  &

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。