OpenStack調査メモ
本稿は慶應義塾大学 SFC 村井研 (RG) Advent Calendar 2021の2日目である。
本稿は実験環境のクラウド環境のOpenStackへの移行を検討するために調査を行なったメモである。
OpenStackとは
- OpenStack Foundationが提供するOSSのクラウドサービスのソフトウェア群。
- Openstackは仮想化機構を提供するものではなく、KVMやDockerなどの仮想化機構をマネジメントするためのもの。なので、Novaなどはそのバックエンドとする仮想化機構を何にするか、との組み合わせになる。vSphereをバックエンドとする、と言うことも可能な様子。
- いくつかのサービスを組み合わせることによってクラウド環境を構築できる。
主要なものは以下
コンピュート (Nova)
- https://github.com/openstack/nova
- Openstackの根幹を成す仮想マシンの作成・管理を行うコンポネント。
ネットワーキング (Neutron)
- https://github.com/openstack/neutron
- Openstackのコンポネント・仮想マシン間のネットワークを管理するSDNのコンポネント。
ブロックストレージ (Cinder)
- https://github.com/openstack/cinder
- Openstackの仮想マシンなどにストレージを提供するコンポネント。
アイデンティティサービス (Keystone)
- https://github.com/openstack/keystone
- Openstackにおけるユーザなどの管理を担うコンポネント
イメージサービス (Glance)
- https://github.com/openstack/glance
- VMイメージなどを保存するストレージ。
オブジェクトストレージ (Swift)
- https://github.com/openstack/swift
- ファイルなどを保存するスケーラブルなストレージ。
ダッシュボード (Horizon)
- https://github.com/openstack/horizon
OpenstackのGUIをWebで提供する。
補足
- Cinder、Glance、Swiftの違いは何?
OpenStackのリリースサイクル
- Openstackは約半年に一回リリースされる。
- リリースから18ヶ月はmaintainedとされ、その後Extended Maintenanceとなる。
OpenStackを試す
OpenStackはそれぞれのコンポネントを組み合わせることで、クラウド環境を構築できる。また、コンポネントがそれ別の物理サーバ上において、スケールさせるということもできる。一方でサクッと試したい場合は必要なコンポネントが全て入った(All-in-One)な環境を作る、ということもできる。
Openstackのアーキテクチャを設計し、個々にデプロイしていくこともできるが、構成ツールがいくつかある。主要なものは以下に掲載。少し古いので、それぞれ調査する必要あり。 https://noaboutsnote.hatenablog.com/entry/openstack_installer
microstackを使った動作検証
microstackを使うと容易にall-in-oneの環境構築ができる
- 参考
- 環境
- ESXI6.5上のVMで検証
- HW
- CPU: 8CPU
- メモリ: 16GB
- ストレージ: 500GB
- OS: Debian10
- HW
- ESXI6.5上のVMで検証
Microstackのデプロイ
ESXIの仮想化をOpenstackから利用可能にする
- VM作成時に「仮想ハードウェア -> CPU -> ハードウェア アシストによる仮想化をゲストOSに公開」
- https://docs.vmware.com/jp/VMware-vSphere/7.0/com.vmware.vsphere.vm_admin.doc/GUID-2A98801C-68E8-47AF-99ED-00C63E4857F6.html
microstackインストールのためのsnapのインストール
sudo apt install snapd
- 再ログインしないと
/snap/bin
にパスが通らないので注意
- 再ログインしないと
microstackのインストール
sudo snap install microstack --devmode --beta
インストールの確認は以下
snap list microstack
- 2021.11.22時点でussuriが入ったので、少し古いか
microstackの起動
sudo microstack init --auto --control
- 検証環境では、sudo時のPATHに
/snap/bin
が引き継がれないためvisodo
でsecure_pathに追加 - このコマンド実行は数十分かかる
- 検証環境では、sudo時のPATHに
- Horizonへのログイン
https://ホストマシン
でHorizonのログイン画面にアクセス可能- TLSエラーが出るがchoromeでは「thisisunsafe」と打つとアクセスできる
- ユーザ名は
admin
- パスワードを以下のコマンドで取得
sudo snap get microstack config.credentials.keystone-password
VMの起動
debianのVMをデプロイしてみる。ImageからVMの起動がHorizonからだと失敗するので、以下はCLIからのみ検証 追記: MicroStackではCinderが未対応らしい、Volumeを作らなければHorizonからでもできた
- Imageの準備
- クラウドイメージの取得
wget https://cloud.debian.org/images/cloud/OpenStack/current-10/debian-10-openstack-amd64.qcow2
- Imageの作成
sudo microstack.openstack image create --disk-format qcow2 --container-format bare --public --file ./debian-10-openstack-amd64.qcow2 debian10
- Imageの確認
microstack.openstack image list
- ssh用鍵の登録
- 鍵の作成
ssh-keygen -t ed25519
- 鍵の登録
microstack.openstack keypair create --public-key ~/.ssh/id_ed25519.pub newkey
- VMの起動
- 今回は
debian10test
という名前のVMを作成
microstack.openstack server create \ --flavor m1.small \ --nic net-id=test \ --image debian10 \ --key-name newkey \ debian10test
nic net-id
でデフォルトの内部ネットワークであるtestを指定- 起動を確認
- statusが
Active
になれば起動済み
microstack.openstack server list
- statusが
- 今回は
- ネットワークの設定
- デフォルトでは
external
という名前のネットワークがVMからホスト、外向けのネットワークとして構成されている - 外部(VM<->ホスト)のネットワーク設定
- IPの払い出し
microstack.openstack floating ip create external
- 払い出されたIPの確認
microstack.openstack floating ip list
- 払い出されたIPをVMに設定
- 確認時の
Floating IP Address
を設定
- 確認時の
openstack server add floating ip debian10test FLOATING_IP_ADDRESS
- HVのマシンからSSH
ssh debian@FLOATING_IP_ADDRESS
- デフォルトでは
複数HV(Computing Node)での操作
Computing Nodeを追加する。
- 参考
- 環境
- 先述の単一ノード時と同様のHVであるESXI6.5上のVMで検証
- HW
- CPU: 4CPU
- メモリ: 16GB
- ストレージ: 200GB
- OS: Debian10
- HW
- 先述の単一ノード時と同様のHVであるESXI6.5上のVMで検証
手順
- 上記手順の「3. microstackのインストール」までは同様の手順
- 既存のControl Node上でjoinするための情報を得る
- この手順はComputing Nodeごとに必要
sudo microstack add-compute
新規Compute Node上で上記で出力された文字列を
CONNECTION_STRING
として以下のコマンドを実行sudo microstack init --auto --compute --join CONNECTION_STRING
既存のControl Node上でhypervisorとして追加されたことを確認
microstack.openstack hypervisor list
- VMの起動
- 2021.11.23 Note: Horizonからインスタンスを起動するホストの指定方法が不明のため、CLIから起動確認
- 今回は
debian10test02
として起動--availability-zone
のHYPERVISOR
に先述の4で確認した新規hypervisorを指定
microstack.openstack server create \ --availability-zone nova:HYPERVISOR \ --flavor m1.small \ --nic net-id=test \ --image debian10 \ --key-name newkey \ debian10test02
- 今回は
- 2021.11.23 Note: Horizonからインスタンスを起動するホストの指定方法が不明のため、CLIから起動確認
ToDo
- 複数HV(Computing Node)での操作
- Cinderなしで実用できるか or Cinderだけ別で立てるか?
解決済み
- (解決済み) HorizonからのVM作成
- ImageからInstance作成時に以下のエラーが発生する
Build of instance 13731f21-5c7e-4d14-a715-26c7b82953b1 aborted: Invalid input received: Invalid image identifier or unable to access requested image. (HTTP 400) (Request-ID: req-20c4229b-e3bc-4941-ae15-c0102985e8b2)
- どうやらCinderでVolumeを作るのに失敗している様子
- Volumeなしで作ると成功する
MicroStack quickly installs OpenStack on a single machine. Supported services are currently Glance, Horizon, Keystone, Neutron (with OVN), and Nova.
- https://microstack.run/docs
- Cinder対応しとらんやんけ!!!!
- Volumeなしで作ると成功する
- (解決済み) VPNを作ってInstanceへアクセス
感想
構成ツールとかが出てきているので、ひと頃噂で聞いてたよりは構築は容易にできそう。しかし、クラスタ化して安定運用するためには様々なことを理解せねばならず、使い勝手は必ずしもよくない印象。というか、マイクロサービス化されていて疎結合になってるのに構築するの難しいからall-in-oneの密結合になったパッケージ使っちゃうのどうなのよ、と言う気分もある。最近はProxmoxというのも話題だそうなので、試してみる予定。
Appendix
VPN越しでOpenstack上のインスタンスへのアクセス
VyOS上でStatic Routeを指定し、VPNでpush-routeする。
- 想定環境
- vpnのIF:
vtun0
- VyOS(ルータ)のStatic IP:
10.8.0.1/24
- Openstack Control NodeのStatic IP:
10.4.150.1
- OpenstackのExternal Subnet:
10.20.20.0/24
- vpnのIF: