0
0

More than 1 year has passed since last update.

MAASとJujuでOpenstackをHA構成でデプロイする

Posted at

MAASとJujuでOpenstackをHA構成でデプロイする


コードは下記のURLに置いてあります。

構成

アプリケーション 説明
ceph 3 分散ストレージ
mysql 3 データベース
vault 3 機密情報ストレージ
neutron 3 ネットワーク機能 ルーティング、ファイアウォール、ロードバランシング、VPN など
keystone 3 ユーザーの認証/認可を管理する
rabbitmq 3 メッセージ・キューイング
nove 3 コンピュートリソースを提供する
placement 3 仮想サーバ等の配置
horizon 3 ダッシュボード
glance 3 マシンイメージを管理する
cinder 3 Nova で払い出したコンピュートリソースにボリュームを提供する

下記URLの内容を参考にしました。

ハードウェア要件

(成功した条件)

  • MAAS 3.1.0
  • Juju 2.9.33
  • OpenStack Yoga

  • 1 x MAAS システム: 8GiB RAM、2 CPU、1 NIC、1 x 40GiB ストレージ
    • 実機で用意
    • Ubuntu 20.04 LTS (Focal)
  • 1 x Juju コントローラーノード: 4GiB RAM、4 CPU、1 NIC、1 x 40GiB ストレージ
    • proxmox仮想マシン
    • Ubuntu 20.04 LTS (Focal)
  • 3 x クラウド ノード: 18GiB RAM、6 CPU、1 NIC、1 x 80GiB ストレージ 1 x 32GiB ストレージ
    • proxmox仮想マシン
    • Ubuntu 22.04 LTS (Jammy )
    • プロセッサをhostにする

MAASサーバーを用意する

サーバーにUbuntu 20.04 LTS (Focal)をインストールする

  • ip 192.168.1.2

MAAS のインストール

  • サブネット 192.168.1.0/24
  • MAAS ip 192.168.1.2
sudo snap install maas-test-db
sudo snap install maas --channel=3.1/stable
sudo maas init region+rack --maas-url http://192.168.1.2:5240/MAAS --database-uri maas-test-db:///
sudo maas createadmin --username admin --password ubuntu --email admin@example.com
sudo maas apikey --username admin > ~/admin-api-key

Web UIにアクセスする

ユーザー名:admin

パスワード:ubuntu

22.04 LTS AMD64 イメージが必要

DHCPを有効にする

MAASのDHCPを有効にする

(例)

START IP ADDRESS END IP ADDRESS
192.168.1.150 192.168.1.199

既存のDHCPを無効にする

DNSを設定する

(例)

Name: lab.hdys.home

IP範囲を予約する

(例)

START IP ADDRESS END IP ADDRESS COMMENT
192.168.1.150 192.168.1.199 DHCP
192.168.1.200 192.168.1.219 openstack VIP
192.168.1.220 192.168.1.249 openstack floating IP
192.168.1.250 192.168.1.254 etc

ノードを追加する

「ネットブート」 (PXE ブート) して MAAS クラスターに追加

ノードの電源タイプの構成

Commission ノード

4つのノードを選択し、緑色の[Take action] ボタンを使用して [Commission] を選択し、これらのノードをコミッションします。正常に委託されたノードは、「準備完了」のステータスを取得します。これには数分かかります。

ノードの名前変更

Jujuコントローラーノードに「controller」、3 つのクラウドノードに「node1」から「node3」

タグの追加

Jujuコントローラーノードに「juju」、3 つのクラウドノードに「compute」

OVS ブリッジの作成

3つのcomputeノードに設定する。

Bridge name Fabric Bridge type VLAN MAC address Subnet Tags IP mode
br-ex fabric-0 Open vSwitch(ovs) untagged 192.168.1.0/24 Auto assign

Jujuをインストールする

sudo snap install juju --classic

MAAS を Juju に追加する

maas-cloud.yaml

clouds:
  maas-one:
    type: maas
    auth-types: [oauth1]
    endpoint: http://192.168.1.2:5240/MAAS
juju add-cloud --client -f maas-cloud.yaml maas-one

MAAS クレデンシャルを追加する

maas-creds.yaml

credentials:
  maas-one:
    anyuser:
      auth-type: oauth1
      maas-oauth: {~/admin-api-key}
juju add-credential --client -f maas-creds.yaml maas-one

Juju コントローラの作成

juju bootstrap --bootstrap-series=focal --constraints tags=juju maas-one maas-controller

モデルを作成する

juju add-model --config default-series=jammy openstack

OpenStack のデプロイ

. deploy.sh

監視

. juju-watch-status

待つ

安定するまで待つ

vaultを設定

031-vault.sh 参照

デプロイが失敗したら

juju remove-application ***

000-ceph0osd.sh ~ 130-radosgw.shを参照して

juju deploy ***
juju add-relation *** ***

MAASにDNSを設定する

(例)

NAME DATA
cinder 192.168.1.201
compute 192.168.1.205
glance 192.168.1.202
keystone 192.168.1.203
neutron-api 192.168.1.204
openstack 192.168.1.206
placement 192.168.1.207
storage 192.168.1.200

ダッシュボードへのアクセス

パスワードは Keystone から照会できます。

juju run --unit keystone/leader leader-get admin_passwd

ダッシュボードの URL は次のようになります。

ログインに必要な最終的な認証情報は次のとおりです。

  • ユーザー名:admin
  • パスワード: ****************
  • ドメイン: admin_domain

OpenStack クライアントをインストールする

sudo snap install openstackclients

管理ユーザー環境の作成

git clone https://github.com/openstack-charmers/openstack-bundles ~/openstack-bundles
source ~/openstack-bundles/stable/openstack-base/openrc

env | grep OS_

イメージとフレーバーの作成

mkdir ~/cloud-images

curl http://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img \
   --output ~/cloud-images/jammy-amd64.img
   
openstack image create --public --container-format bare \
   --disk-format qcow2 --file ~/cloud-images/jammy-amd64.img \
   jammy-amd64

openstack flavor create --ram 2048 --disk 20 --ephemeral 20 m1.small

パブリック ネットワークの設定

openstack network create --external --share \
   --provider-network-type flat --provider-physical-network physnet1 \
   ext_net

openstack subnet create --network ext_net --no-dhcp \
   --gateway 192.168.1.1 --subnet-range 192.168.1.0/24 \
   --allocation-pool start=192.168.1.220,end=192.168.1.249 \
   ext_subnet

管理者以外のユーザー環境を作成する

openstack domain create domain1
openstack project create --domain domain1 project1
openstack user create --domain domain1 --project project1 --password-prompt user1

User Password:ubuntu
Repeat User Password:ubuntu
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| default_project_id  | 47c42bfc695c4efcba92ab2345336265 |
| domain_id           | 884c9966c24f4db291e2b89b27ce692b |
| enabled             | True                             |
| id                  | 867f04fa967148b88953f810de72b530 |
| name                | User1                            |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

openstack role add --user 867f04fa967148b88953f810de72b530 \
   --project project1 Member

echo $OS_AUTH_URL
vim project1-rc
export OS_AUTH_URL=https://192.168.1.***:5000/v3
export OS_USER_DOMAIN_NAME=domain1
export OS_USERNAME=user1
export OS_PROJECT_DOMAIN_NAME=domain1
export OS_PROJECT_NAME=project1
export OS_PASSWORD=ubuntu
source project1-rc
echo $OS_USERNAME

プライベート ネットワークのセットアップ

openstack network create --internal user1_net

openstack subnet create --network user1_net --dns-nameserver 192.168.1.2 \
   --subnet-range 192.168.0/24 \
   --allocation-pool start=192.168.0.10,end=192.168.0.199 \
   user1_subnet

openstack router create user1_router
openstack router add subnet user1_router user1_subnet
openstack router set user1_router --external-gateway ext_net

SSH とセキュリティ グループの構成

mkdir ~/cloud-keys

ssh-keygen -q -N '' -f ~/cloud-keys/user1-key

openstack keypair create --public-key ~/cloud-keys/user1-key.pub user1

openstack security group create --description 'Allow SSH' Allow_SSH
openstack security group rule create --proto tcp --dst-port 22 Allow_SSH

インスタンスの作成とアクセス

openstack server create --image jammy-amd64 --flavor m1.small \
   --key-name user1 --network user1_net --security-group Allow_SSH \
   jammy-1

FLOATING_IP=$(openstack floating ip create -f value -c floating_ip_address ext_net)
openstack server add floating ip jammy-1 $FLOATING_IP

openstack server list

次の方法でインスタンスに接続します。

ssh -i ~/cloud-keys/user1-key ubuntu@$FLOATING_IP

最後に

hacluster charmのみコマンドで動かなかったためコードからデプロイしています。

0
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
0
0