2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntuで簡単おうちクラウドを作る(microstack)

Posted at

背景

私は先日、キャリアのモバイル通信のコア設備を担当する部門に配属されました。近年のテレコム業界では、コア設備を OpenShift などのクラウド基盤上で動かす構成がデファクト になりつつあります。
さらに、OpenShift を OpenStack 上の VM にデプロイする、いわゆる 「Shift on Stack」 と呼ばれる構成や、OpenShift をベアメタルに展開する際の ハブクラスタ(ACM)を OpenStack 上に構築 するといったユースケースも一般的です。

こうした背景から OpenStack を学び始めたのですが、実際に調べてみると 最新情報を扱った記事が非常に少なく、正直なところ「枯れた技術」という印象を受けます。

まずは、PackStack を使ってインストールし、一通り動作させるところまでやってみたのですが、ネットワーク周りの設定が非常に複雑で、VM に Floating IP を割り当てて外部と通信させるところで行き詰まりました。

そこで見つけたのが、構築が圧倒的に簡単な OpenStack ディストリビューションである MicroStack です。
今回は、私が実際に構築した「MicroStack の導入手順」を紹介したいと思います。

環境

前提としてMicroStackがインストールできるのはUbuntuのみとなります。
マシンのスペック自体は対して求められませんが、VMを複数立てたい場合はコア数が多いほうが有利です。

検証環境
CPU Xeon E5 2698 v3 (16C32T)
RAM DDR4 16GB×3
ROM m.2 SSD 500GB
OS ubuntu22.04

インストール手順

ちなみに、インストール手順の大まかな流れはこちらを参考にしました。

1. microstackのパッケージをインストール

sudo snap install microstack --beta

2. 初期化を行う。

この手順でAPIが利用するipアドレスが自動で入るので、サーバーのipを固定しておくのが無難です。

sudo microstack init --auto --control

3. microstackのaliasを設定する

コマンドを打つには、毎回microstack.openstackと打つ必要がありますが、snapに事前にaliasの設定コマンドがあるので以下のコマンドで設定します。

sudo snap alias microstack.openstack openstack
sudo snap alias microstack.nova-manage nova-manage
sudo snap alias microstack.ovs-vsctl ovs-vsctl
sudo snap alias microstack.neutron-openvswitch-agent neutron-openvswitch-agent

これで通常のopenstackと同じようにコマンドが打てるようになる

4. microstack外部ブリッジを設定

floating ipをつけて疎通が取れるようにするためには、物理NICのipを外してbr-exにipをつけなおす必要があります。

以下のスクリプトを実行するとbr-exにipを移すことができます。br-exはmicrostackのセットアップの段階で作成されるので、固定するipや物理NICのインターフェース名などを各々の環境に合わせてください。

setup-br-ex.sh
#!/bin/sh
# MicroStack 外部ブリッジ自動設定スクリプト

set -e

NIC=enp7s0 #物理NIC
BR=br-ex 
IPADDR=10.100.0.250/24 #固定したいip
GATEWAY=10.100.0.1 #デフォゲ

# br-exに物理NICを接続
microstack.ovs-vsctl --may-exist add-port $BR $NIC

# IPを物理NICから削除してbr-exへ
ip addr flush dev $NIC
ip addr add $IPADDR dev $BR
ip link set $BR up

# ルートを設定(存在チェック付き)
ip route replace default via $GATEWAY

再起動時にもこのスクリプトを実行するため、systemdに登録します
以下のunitファイルを/etc/systemd/system配下に作成してください

setup-br-ex.service
[Unit]
Description=Setup external bridge (br-ex) for MicroStack
After=snap.microstack.external-bridge.service
Wants=snap.microstack.external-bridge.service

[Service]
Type=oneshot
ExecStart=/home/ubuntu/setup-br-ex.sh #スクリプトの配置pathに置き換え
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

systemdに登録&自動実行

sudo systemctl daemon-reload
sudo systemctl enable setup-br-ex.service

dashboardにアクセス

https://固定したipでアクセスできるhttpだとアクセスできないので注意
image.png

デフォルトのユーザー名はadmin
ログインパスワードの確認

sudo snap get microstack config.credentials.keystone-password

ちなみに、microstackが最初に読み込んでいるrcファイルにも記載されています/var/snap/microstack/common/etc/microstack.rc

ログインに成功するとこのような画面が出ます
image.png

VMを立ててfloating ipをつける

1. 既存のネットワークやルーターを削除

こちらの手順は必須ではありませんが、消しておいた方が綺麗な状態にできると思うので消す方は、こちらの記事を参考にGUIで削除するか、CLIでも削除できるのでやってみてください。

2. ネットワークの作成

外側ネットワークの作成

openstack network create --external --provider-network-type flat --provider-physical-network physnet1 public

外側サブネットの作成
allocation poolはdhcpで配布しているものとは被らない範囲を指定してください。この範囲でfloating ipの払い出しを行います。

openstack subnet create \
  --network public \
  --subnet-range 10.100.0.0/24 \
  --gateway 10.100.0.1 \
  --allocation-pool start=10.100.0.200,end=10.100.0.240 \
  --no-dhcp \
  public-subnet

内部ネットワーク(VM同士の通信に使う)の作成

openstack network create int-net

内部サブネットの作成
こちらはプライベートipなら何でもOKです。

openstack subnet create \
  --network private \
  --subnet-range 192.168.10.0/24 \
  private-subnet

ルーターの作成、ネットワークの接続

openstack router create router1
openstack router set router1 --external-gateway public
openstack router add subnet router1 private-subnet

3. VMの作成

キーペアの作成
sshでログインする際は、デフォルトでパスワード認証はできないため、キーペアの作成が必要となります

openstack keypair create mykey > mykey.pem
chmod 600 mykey.pem

openstackに登録されているイメージを確認

openstack image list

cirrosが登録されているので一旦これを使用
image.png
用意されているflavorの確認

openstack flavor list

とりあえず一番小さいものを使用
image.png

openstack server create \
  --flavor m1.tiny \
  --image cirros \
  --network private \
  --key-name mykey \
  vm1

4. floating ipの付与

先ほど設定した外部ネットワークを指定してfloating ipを作成します

openstack floating ip create ext-net

image.png
openstack floating ip listでも確認できます

払い出されたfloating ipをVMに付与します

openstack server add floating ip test-vm 10.100.0.170

openstack server listでfloating ipを確認します。
image.png

他のPCなどから疎通がとれるか確認します。セキュリティグループの設定でicmpなどを許可していない場合、疎通できない可能性があるので注意が必要です。デフォルトはすべて許可になっています。
image.png

ここまでくれば、疎通がとれるようになるはずです。
ちなみに、先ほど作ったキーペアでsshする際は-iオプションでキーを指定します。

ssh -i mykey.pem user@ip_address

まとめ

ざっくりと導入手順を説明しましたが、基本的にはipを固定してパッケージをsnapで入れれば使えるようになるという非常に簡単なパッケージです。複数台のマシンを使って連携させたいなどの高度なことはできませんが、お試しや一台で十分という場合には便利だと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?