OpenStack 配備したインスタンスに外部からアクセス
前回のCentOS7にpackstackを使ってallinone構成でkiloをインストールの続き
インスタンスを外部ネットワークとつなげる設定
openvswitchを使うので、ブリッジとIPの設定を追加する。
サービスLAN用のNICを編集
# vi /etc/sysconfig/network-scripts/ifcfg-ens32
UUID=2d8cd29d-6cd1-4aa3-b6ae-d036eff5429f
DEVICE=ens33
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
ONBOOT=yes
NM_CONTROLLED=no
IPV6INIT=no
ブリッジの設定
# vi /etc/sysconfig/network-scripts/ifcfg-br-ex
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=192.168.1.41
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS=192.168.1.1
ONBOOT=yes
NM_CONTROLLED=no
選択できるネットワークの種別を追加しておく
# vi /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
# (ListOpt) List of network type driver entrypoints to be loaded from
# Example: type_drivers = flat,vlan,gre,vxlan
type_drivers = flat,vlan,gre,vxlan
再起動して反映
# systemctl restart network
# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
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
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:a9:75:5e brd ff:ff:ff:ff:ff:ff
inet 192.168.1.41/24 brd 192.168.1.255 scope global ens32
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fea9:755e/64 scope link
valid_lft forever preferred_lft forever
3: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ovs-system state UP qlen 1000
link/ether 00:50:56:a9:2b:55 brd ff:ff:ff:ff:ff:ff
inet6 fe80::250:56ff:fea9:2b55/64 scope link
valid_lft forever preferred_lft forever
4: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
link/ether 8a:bc:6a:2b:ee:c3 brd ff:ff:ff:ff:ff:ff
5: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 00:50:56:a9:2b:55 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.42/24 brd 192.168.1.255 scope global br-ex
valid_lft forever preferred_lft forever
inet6 fe80::98a4:5bff:fe45:f743/64 scope link
valid_lft forever preferred_lft forever
6: br-int: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
link/ether c6:7b:18:37:97:4e brd ff:ff:ff:ff:ff:ff
7: br-tun: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
link/ether de:2a:4f:ef:fa:4a brd ff:ff:ff:ff:ff:ff
11: qbr92287c8b-b1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether ea:33:00:08:a6:9b brd ff:ff:ff:ff:ff:ff
inet6 fe80::6cc6:52ff:fec5:c3a1/64 scope link
valid_lft forever preferred_lft forever
12: qvo92287c8b-b1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ovs-system state UP qlen 1000
link/ether b2:3f:41:cb:01:72 brd ff:ff:ff:ff:ff:ff
inet6 fe80::b03f:41ff:fecb:172/64 scope link
valid_lft forever preferred_lft forever
13: qvb92287c8b-b1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master qbr92287c8b-b1 state UP qlen 1000
link/ether ea:33:00:08:a6:9b brd ff:ff:ff:ff:ff:ff
inet6 fe80::e833:ff:fe08:a69b/64 scope link
valid_lft forever preferred_lft forever
14: tap92287c8b-b1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master qbr92287c8b-b1 state UNKNOWN qlen 500
link/ether fe:16:3e:2e:20:27 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc16:3eff:fe2e:2027/64 scope link
valid_lft forever preferred_lft forever
外部ネットワークとfloating-ipについて
Openstackでは、内部のインスタンスにアクセスするためにfloating-ipという仕組みを利用します。 AWSでいうところのEIPです。
起動したインスタンスには内部のネットワークIP(172.16.8.10など内部サブネットとして作成したネットワークアドレス)を振って起動します。 ここにアクセスするためのIPとして、グローバルなIPが余っているならそれを動的に割り当てることが可能です。
ですが、自宅にそんなグローバルなIPが有るわけないので、自宅のプライベートなIPアドレス空間(192.168.1.0/24)を割当てます。 192.168.1.101 – 192.168.1.150 までのIPをopenstack用に使うことにします。(ルーターのDHCP範囲とはずらすこと)
これを踏まえて、外部につなげるための構成でネットワークを作成します。
最終的には以下の図のような構成になります
OpenStackでは仮想マシンは「内部ネットワーク」のアドレスを付与し 外部との通信は「フローティングIP」を割り当てます。 「フローティングIP」を割り当てることで外部から通信が可能となります。
①外部ネットワークの作成 Openstackにadminでログインします。 「管理」-「システムパネル」-「ネットワーク」を選択します。 「+ネットワークの作成」をクリックします。 「ネットワークの作成」画面が表示されるので「外部ネットワーク」にチェックを入れて「ネットワークの作成」をクリックします。 作成したネットワーク名をクリックします。 「+サブネットの作成」をクリックします。 外部ネットワークに接続するネットワークアドレス、DHCPプール等を設定します。
②内部ネットワークの作成 「管理」-「システムパネル」-「ネットワーク」を選択します。 「+ネットワークの作成」をクリックします。 「ネットワークの作成」画面が表示されるので「外部ネットワーク」にチェックを入れずに「ネットワークの作成」をクリックします。 作成したネットワーク名をクリックします。 「+サブネットの作成」をクリックします。 内部ネットワークに割り当てるネットワークアドレス、DHCPプール等を設定します。
③ルータの作成 「プロジェクト」-「ネットワーク」-「ルータ」を選択します。 「+ルータの作成」をクリックします。 ルータ名を入力します。 作成したルータ名のアクション列の「ゲートウェイの設定」をクリックします。 「外部ネットワークの設定」で①で作成したネットワークを割り当てます。 ルータ名をクリックします。 「+インターフェースの追加」をクリックします。 サブネットに②で作成した内部ネットワークのサブネットを割り当てます。
④ファイアウォールの設定 「プロジェクト」-「コンピュート」-「アクセスとセキュリティ」を選択します。 「default」ルールの「ルールの管理」をクリックします。 「ルールの追加」から「ルール」に「ALLICMP」「受信」「CIDR 0.0.0.0/0」を追加します。 「ルールの追加」から「ルール」に「SSH」「CIDR 0.0.0.0/0」を追加します。
⑤仮想マシンイメージの作成 下記URLからダウンロードします。 http://docs.openstack.org/ja/image-guide/content/ch_obtaining_images.html cirros-0.3.3-x86_64-disk.img 「プロジェクト」-「コンピュート」-「イメージ」を選択します。 「+イメージの作成」をクリックします。 「イメージソース」で「イメージファイル」を選択してローカルに保存した「cirros-0.3.3-x86_64-disk.img 」を 選択してアップロードします。
⑥仮想マシンイメージの起動 「プロジェクト」-「コンピュート」-「イメージ」を選択します。 ⑤でアップロードしたciirosのアクション列から「起動」をクリックします。 インスタンス名、イメージ名「ciiros」を選択します。 ネットワークタブから②の内部ネットワークを選択して「起動」をクリックします。 「プロジェクト」-「コンピュート」-「インスタンス」を選択します。 起動したインスタンスのアクションから「Floating IPの割り当て」を選択します。 IPアドレスの+を選択後「IPの確保」を選択します。 外部ネットワークから接続できるIPが割り当てられました。 sshでcirrosに接続します。
# ssh -i cloud.key cirros@192.168.1.102
The authenticity of host '192.168.1.102 (192.168.1.102)' can't be established.
RSA key fingerprint is aa:4d:69:8c:dd:ba:e0:17:49:c7:78:d6:7a:d3:95:c5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.102' (RSA) to the list of known hosts.
cirrosのローカルIPを確認すると、ちゃんと見えた
$ ifconfig
eth0 Link encap:Ethernet HWaddr FA:16:3E:2E:20:27
inet addr:172.16.8.3 Bcast:172.16.8.255 Mask:255.255.255.0
inet6 addr: fe80::f816:3eff:fe2e:2027/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1400 Metric:1
RX packets:178 errors:0 dropped:0 overruns:0 frame:0
TX packets:186 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:21789 (21.2 KiB) TX bytes:18842 (18.4 KiB)
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:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)