はじめに
この記事では、最近検証環境を設定する必要があった経験をメモとして共有します。具体的には、OpenStackのBlock StorageでONTAPを利用する方法に焦点を当てています。
前回の記事の続きとして、All in One構成でインストールしたOpenStack Queensの初期設定についての内容を記載します。
何をしたい?できる?
- All in One構成 Install後のOpenStack環境の設定
- OpenStackで作成したインスタンス(VM)と他の機器を疎通できるようにする
記事における環境情報
本記事では、以下の環境で実施した内容となります。
- ONTAP: 9.10.1
- CentOS: 7
- OpenStack: Queens
- OpenstackはHyper-Vの仮想マシンへ導入
- Networkは1つのセグメントを用意 (検証なのでシンプル構成)
- Openstack内で作成したインスタンスも同セグメント機器と疎通できるようにする
OpenStack Qeensの初期設定
1. Network構成の設定
OpenStackで提供する内部の論理Networkと、OpenStackが接続する外部Networkの設定を実施します。
外部NetworkはInternet接続や他の外部機器に接続する為のNetworkになります。
1-1. 外部Network(External Network)設定
下図の赤い部分のNetwotkに関する設定を実施します。
OpenStackのWeb管理画面にadminでログイン後、
[管理]->[ネットワーク]をクリックし、表示された画面で[ネットワークの作成]を選択します。
表示された画面で必要項目を入力し、[次へ]をクリックします。
- プロジェクトはadminを指定
- プロバイダーネットワーク種別はフラットを指定
- 物理ネットワークはextnetを入力
(Intall時のanswer fileでextnetになっている) - 管理状態有効、共有、外部ネットワーク、 サブネットの作成へチェック
(別のユーザ作成後も同じNetwork利用予定)
サブネットの設定画面で必要項目を入力し、[次へ]をクリックします。
- ネットワークアドレスは外部用のセグメント入力
- 別セグメントへの通信や、Internet接続が発生する際にはゲートウェイを入力
DHCPで払いだすIPの範囲と参照先DNSを入力し、[作成]をクリックします。
1-2. 内部Network(adminユーザ用テナントNetwork)設定
下図の赤い部分のNetwotkに関する設定を実施します。
先程と同様に、[管理]->[ネットワーク]をクリックし、表示された画面で[ネットワークの作成]を選択し、表示された画面で、必要項目を入力し、[次へ]をクリックします。
- プロジェクトはadminを指定
- プロバイダーネットワーク種別はVXLANを指定
- 管理状態有効、共有、サブネットの作成へチェック
(別のユーザ作成後も同じNetwork利用予定)
サブネットの設定画面で必要項目を入力し、[次へ]をクリックします。
- ネットワークアドレスは内部用に外部と違うセグメントを入力
- 作成した外部用のセグメントと疎通する際に利用するゲートウェイIPを入力
DHCPで払いだすIPの範囲と参照先DNSを入力し、[作成]をクリックします。
作成後、[プロジェクト]=>[ネットワーク]=>[ネットワークトポロジー]をクリックすると作成したNetwotkのトポロジー図を確認する事ができます。
1-3. 仮想ルータの作成
adminユーザが上記で作成した自分用のテナントNetworkである192.168.10.0/24上に作成したインスタンスから172.16.10/0/24の外部Networkと疎通できるようにする為、Network間を繋ぐ仮想ルータを作成します。
下図の赤字の部分に関する設定を実施します。
[プロジェクト]=>[ネットワーク]=>[ルーター]をクリックし、表示された画面で[作成]をクリックします。
表示された画面で、必要な項目を入力します。
- 外部ネットワークは先程作成した、extnetを指定
- SNAT有効にはチェックを入れたまま
(SNAT有効だと、テナント内の VM は外部にアクセスできる)
[プロジェクト]=>[ネットワーク]=>[ネットワークトポロジー]を確認すると、作成したルータに外部Network作成時の際に指定した払い出しIPの中からGeatwayのIPが設定されている事が確認できます。
テナント側にもGeatwayを用意する必要がある為、ネットワークトポロジーに表示されている仮想ルーターをクリックして、[インターフェースの追加]をクリックします。
表示された画面でadminユーザ用のテナントNetworkを指定して[送信]をクリックします。
本記事では、テナントNetwork作成時にGatewayのIPを指定しておいたので、インターフェースの追加のタイミングでは[IPアドレス]部分を空白にしておいても、自動的に指定しておいたIPが設定されます。
1-4. セキュリティグループの設定
defaultのセキュリティグループに、外部からテナントNetwork内に作成したインスタンスへpingやSSHでログインできるように、ALL ICMP, SSHを0.0.0.0/0で追加します。
(インスタンス作成時にdefaultのセキュリティグループを利用する為)
[プロジェクト]=>[ネットワーク]=>[セキュリティグループ]をクリックし、表示された画面でdefaultというセキュリティグループの[ルールの管理]をクリック、ICMPとSSHの追加を実施します。
1-5. FloatingIPの設定
Floating IPは、OpenStackのインスタンス(VM)に動的に関連付けられる外部向けのIPの事で、インスタンスがテナントNetwork内にあったとしても、外部のNetworkからインスタンスにアクセスするための手段を提供します。
いわゆる、NAT(Network Address Translation)を使用して実現している機能です。
[プロジェクト]=>[ネットワーク]=>[Floating IP]をクリックし、表示された画面で[Floating IPの確保]をクリックします。
表示された画面で、プールに作成しておいた外部Networkを指定して、[IPの確保]をクリックします。
(外部Network作成時のIPアドレス割り当てプールの範囲内で1つIPが確保されます)
2. Compute構成の設定
インスタンス(VM)作成・利用する為の設定を実施していきます。
2-1. イメージの登録
OpenStackでは、使用可能なイメージを利用してインスタンス(VM)作成を実施しますので、まずは利用できるイメージをUploadして登録を行います。
(OpenStack上に別ユーザを作成しても同じイメージを利用できるようにする)
OpenStackのドキュメントを参考にして必要なOSイメージを入手します。
本記事では、CirrOS (テスト用)のイメージとしてcirros-0.6.2-x86_64-disk.imgをダウンロードして利用します。
[管理]=>[コンピュート]=>[イメージ]をクリックし、表示された画面で[イメージの作成]をクリックします。
表示された画面で、必要項目を入力して[イメージの作成]をクリックします。
- ファイルはダウンロードしたcirros-0.6.2-x86_64-disk.imgを指定
- 形式はQCOW2を選択
- 公開範囲はパブリック
(別ユーザーからも利用したいので)
2-2. キーペアの登録
秘密鍵/公開鍵のペアを作成しておくと、インスタンス起動時にゲストOSへ公開鍵を埋め込むことでSSH接続ができるようになります。
[プロジェクト]=>[コンピュート]=>[キーペア]をクリックし、表示された画面で[キーペアの作成]をクリックします。
表示された画面で、任意のキーペア名を入力し、[キーペアの作成]をクリックすると操作しているブラウザ上で秘密鍵がダウンロードされます。
3. インスタンス(VM)を作成し、SSH接続の実施
Uploadしたイメージからインスタンス(VM)の作成を実施します。
3-1. コンソール接続できるようにする為の設定
Webブラウザから直接コンソール接続でインスタンス操作をできるようにする為、
/etc/hostsファイルにOpenStackをInstallしているホスト名とIPを記載します。
これは、/etc/nova/nova.confファイルのコンソール接続の設定項目について、hosts名での記載になっているためです。(DNS参照設定していて、DNSに登録していれば不要)
# nova.confにおけるコンソール接続部分の確認
[root@queens ~]# cat /etc/nova/nova.conf |grep vncserver_proxyclient_address=
vncserver_proxyclient_address=queens.local
#Hostsファイルの確認
[root@queens ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.10.144 queens.local
3-2. インスタンスの作成
インスタンスの作成を実施します。
[プロジェクト]=>[コンピュート]=>[イメージ]をクリックし、表示された画面でインスタンスに利用するイメージの右側にある[起動]をクリックします。
表示された画面で、任意のインスタンス名を入力して[次へ]をクリックします。
選択したイメージが割り当て済みになっている事を確認します。
本記事ではインスタンス削除時にボリュームを削除する設定を[はい]に変更しています。
(インスタンスで作成したデータを保持しておきたい訳では無いので)
インスタンスのサイズを指定します。ここではm1.tinyを指定し、[次へ]をクリックします。
セキュリティグループはdefaultを指定したまま、[次へ]をクリックします。
(前述でdefaultのセキュリティグループにICMPやSSHを許可した為)
キーペアの割り当ては、先程作成したものが選択されている事を確認して、
画面下方の[インスタンスの起動]をクリックします。
[プロジェクト]=>[コンピュート]=>[インスタンス]をクリックし、表示された画面でインスタンスのステータスが稼働中となっている事を確認します。
インスタンス名をクリックすると起動時のログ確認や、コンソール接続が可能になります。
3-3. Floating IPの割り当て
内部のテナントNetwork上のインスタンスへアクセスできるようにする為、作成したインスタンスの右側の[アクション]から[Floating IPの割り当て]を選択します。
表示された画面で、[IPアドレス]から確保しておいたFloating IPを選択して、[割り当て]をクリックします。
3-4. SSH接続の実施
外部Network上にいるWindowsクライアントにて前述で作成した際にダウンロードされた秘密鍵をコピーしておきます。
秘密鍵を指定してSSH接続を実施します。
接続イメージは、下図の通りです。
WindwosクライアントでPowershellコンソールを使い、秘密鍵を指定してSSHを実施し、作成したインスタンスに接続できている事を確認します。
cirrosのログインアカウントはcirrosで、パスワードはgocubsgoになります。
(インスタンスのログからも確認できます)
PS C:\temp\sshkey> ls
ディレクトリ: C:\temp\sshkey
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024/03/19 18:42 1675 admin-pair01.pem
PS C:\temp\sshkey> ssh -i admin-pair01.pem cirros@172.16.10.243
The authenticity of host '172.16.10.243 (172.16.10.243)' can't be established.
ECDSA key fingerprint is SHA256:EXR0n9zPtplEbpE84amWqsgBb+jrbvaEsDdTPO1G6SE.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.10.243' (ECDSA) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'admin-pair01.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "admin-pair01.pem": bad permissions
cirros@172.16.10.243's password:
$
$
$ hostname
inst01
$
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast qlen 1000
link/ether fa:16:3e:51:e7:a2 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.7/24 brd 192.168.10.255 scope global dynamic noprefixroute eth0
valid_lft 85250sec preferred_lft 74450sec
inet6 fe80::f816:3eff:fe51:e7a2/64 scope link
valid_lft forever preferred_lft forever
参考及びリンク
RPM Distribution of OpenStack (RDO)
OpenStack Networking (neutron) 入門
Deployment and Operations Guide
OpenStack環境のCinderでONTAP利用①【Packstack利用のOpenStack QueensのAll in One Installメモ】