*

Juju Manual Cloud で OpenStack 環境構築

公開日: 最終更新日:2017/02/26  |  By  |  Cloud, Juju, OpenStack, OSS

本当にご無沙汰しております。
この投稿はOpenStack Advent Calendar 2016 の 12/15分の投稿となっています。(今日は何日だったか。。

さて、本日は Canonical Juju を使用したOpenStack環境のデプロイをしてみたいと思います。
Juju でのデプロイというと、物理サーバ管理をできるMAASや、コンテナのLXDを使用したデプロイの話が多いのですが、実はSSHの接続だけでも利用することが出来ます。これをManual Cloudと呼ぶようです。
と、いうことで本日はSSH接続可能なVMだけでJujuからOpenStackを構築してみましょう。

使用するサーバは以下の8台。筆者の環境ではVMware上に仮想サーバとして構築しましたが、ssh接続できればどんな環境でもOKです。
OpenStackのバージョンは最新のNewtonです。サーバ構成は以下の通りです。
ポイントは、全てのコンポーネントを別サーバに配置することです。JujuのCharmでは lxd コンテナに個別にインストールするのがデフォルトの動作のであるため、同一サーバに複数コンポーネントを配置すると上手く行きません。

No
役割
スペック
OSバージョン
1.Juju client 兼 Juju bootstrap1core 1GBXenial
2.MySQL1core 1GBXenial
3.RabbitMQ1core 1GBXenial
4.Keystone1core 1GBXenial
5.Glance1core 1GBXenial
6.Nova-cloud-controller1core 1GBXenial
7.Neutron-api1core 1GBXenial
8.Nova-compute1core 4GBXenial

Jujuのインストール

Juju2.0のstable 版を以下の手順からインストールします。

$ sudo add-apt-repository -u ppa:juju/stable
$ sudo apt install juju

参考ドキュメント : https://jujucharms.com/docs/2.0/getting-started

Bootstrapの登録

Jujuがアプリケーションを管理するためにはBootstrapというノードが必要となります。
通常、ドキュメントに出てくる手順では別ノードに入れますが、
今回はManualCloud(SSH接続のみで管理する) ということで juju コマンドを叩くマシンと同居させました。

$ juju bootstrap manual/192.168.0.101 localcloud

参考ドキュメント : https://jujucharms.com/docs/2.0/clouds-manual

マシンの登録

Juju にサーバを登録します。ssh接続はパス無しか、パスワード認証にしておくと良いです。

$ sudo add-machine ssh:192.168.0.55
$ sudo add-machine ssh:192.168.0.56
$ sudo add-machine ssh:192.168.0.57
$ sudo add-machine ssh:192.168.0.58
$ sudo add-machine ssh:192.168.0.59
$ sudo add-machine ssh:192.168.0.60
$ sudo add-machine ssh:192.168.0.61

登録後、status を見ると以下の状態になっていると思います。

$ juju status
Model   Controller  Cloud/Region  Version
default  localcloud  manual        2.0.2

App                    Version  Status   Scale  Charm                  Store       Rev  OS      Notes
Unit                      Workload  Agent  Machine  Public address  Ports           Message

Machine  State    DNS           Inst id              Series  AZ
0        started  192.168.0.55  manual:192.168.0.55  trusty
1        started  192.168.0.56  manual:192.168.0.56  xenial
2        started  192.168.0.57  manual:192.168.0.57  xenial
3        started  192.168.0.58  manual:192.168.0.58  xenial
4        started  192.168.0.60  manual:192.168.0.60  xenial
5        started  192.168.0.61  manual:192.168.0.61  xenial
6        started  192.168.0.59  manual:192.168.0.59  xenial
7        started  192.168.0.62  manual:192.168.0.62  xenial

Juju CharmとRelationのデプロイ

JujuではCharmもしくはBundleファイルでデプロイをすることが可能です。
Charmは個々のアプリケーション単位で存在し、アプリケーション間にRelationを設定することができます。
OpenStack環境は複数のCharmで構成され、それぞれに関係を設定することが必要です。

今回はCharmにパラメータとRelationを記載したBundleを使用しています。

services:
  # OpenStack
  mysql:
    charm: cs:mysql
    options:
      max-connections: 1000
  rabbitmq-server:
    charm: cs:rabbitmq-server
  keystone:
    charm: cs:keystone
    options:
      admin-role: admin
      admin-password: admin123
  openstack-dashboard:
    charm: cs:openstack-dashboard
  nova-cloud-controller:
    charm: cs:nova-cloud-controller
    options:
      network-manager: Neutron
  glance:
    charm: cs:glance
  neutron-api:
    charm: cs:neutron-api
  nova-compute:
    charm: cs:nova-compute
  neutron-openvswitch:
    charm: cs:neutron-openvswitch
    
relations:
  # OpenStack
  - [ keystone, mysql ]
  - [ glance, mysql ]
  - [ glance, keystone ]
  - [ openstack-dashboard, keystone ]
  - [ nova-cloud-controller, mysql ]
  - [ nova-cloud-controller, rabbitmq-server ]
  - [ nova-cloud-controller, keystone ]
  - [ nova-cloud-controller, glance ]
  - [ neutron-api, mysql ]
  - [ neutron-api, rabbitmq-server ]
  - [ neutron-api, nova-cloud-controller ]
  - [ neutron-api, keystone ]
  - [ "nova-compute:shared-db", "mysql:shared-db" ]
  - [ "nova-compute:amqp", "rabbitmq-server:amqp" ]
  - [ nova-compute, glance ]
  - [ nova-compute, nova-cloud-controller ]
  - [ neutron-openvswitch, nova-compute ]
  - [ neutron-openvswitch, neutron-api ]
  - [ neutron-openvswitch, rabbitmq-server ]

※ このbundle はCharmStoreの 公式bundleを参考に作成したものです。
https://jujucharms.com/openstack-base/

このBundleをデプロイするには以下のように deploy コマンドを実行します。


$ juju deploy openstack-simple.yaml

 


Juju Applicationへのマシンの割り当て

juju add-unit コマンドを使って、登録したMachineとApplication を紐つけます。
それぞれ最初の表に書いた通りにMachineとアプリケーションの割り当てをします。

$ juju add-unit mysql --to 1
$ juju add-unit rabbitmq-server --to 2
$ juju add-unit keystone --to 3
$ juju add-unit glance --to 4
$ juju add-unit nova-cloud-controller --to 5
$ juju add-unit neutron-api --to 6
$ juju add-unit openstack-dashboard --to 7
$ juju add-unit nova-compute --to 8

 

デプロイ完了を待つ

インストールにはそれなりに時間がかかります。30 分程度と見ておけば良いかと思います。

$ juju status
Model   Controller  Cloud/Region  Version
newton  localcloud  manual        2.0.2

App                    Version  Status   Scale  Charm                  Store       Rev  OS      Notes
glance                 12.0.0   active       1  glance                 jujucharms  253  ubuntu
keystone               9.2.0    active       1  keystone               jujucharms  258  ubuntu
mysql                           unknown      1  mysql                  jujucharms   55  ubuntu
neutron-api            8.3.0    active       1  neutron-api            jujucharms  247  ubuntu
nova-cloud-controller  13.1.2   active       1  nova-cloud-controller  jujucharms  292  ubuntu
nova-compute           13.1.2   active       1  nova-compute           jujucharms  262  ubuntu

openstack-dashboard    9.1.0    active       1  openstack-dashboard    jujucharms  243  ubuntu
rabbitmq-server        3.5.7    active       1  rabbitmq-server        jujucharms   57  ubuntu  

Unit                      Workload  Agent  Machine  Public address  Ports           Message
glance/0*                 active    idle   3        192.168.0.58    9292/tcp        Unit is ready
keystone/0*               active    idle   2        192.168.0.57    5000/tcp        Unit is ready
mysql/0*                  unknown   idle   0        192.168.0.55    3306/tcp
neutron-api/0*            active    idle   4        192.168.0.60    9696/tcp        Unit is ready
nova-cloud-controller/0*  active    idle   6        192.168.0.59    8774/tcp        Unit is ready
nova-compute/0*           active    idle   5        192.168.0.61                    Unit is ready
  neutron-openvswitch/0*  active    idle            192.168.0.61                    Unit is ready
openstack-dashboard/0*    active    idle   7        192.168.0.62    80/tcp,443/tcp  Unit is ready
rabbitmq-server/0*        active    idle   1        192.168.0.56    5672/tcp        Unit is ready

Machine  State    DNS           Inst id              Series  AZ
0        started  192.168.0.55  manual:192.168.0.55  trusty
1        started  192.168.0.56  manual:192.168.0.56  xenial
2        started  192.168.0.57  manual:192.168.0.57  xenial
3        started  192.168.0.58  manual:192.168.0.58  xenial
4        started  192.168.0.60  manual:192.168.0.60  xenial
5        started  192.168.0.61  manual:192.168.0.61  xenial
6        started  192.168.0.59  manual:192.168.0.59  xenial
7        started  192.168.0.62  manual:192.168.0.62  xenial  

Relation            Provides               Consumes               Type
cluster             glance                 glance                 peer
identity-service    glance                 keystone               regular
shared-db           glance                 mysql                  regular
image-service       glance                 nova-cloud-controller  regular
image-service       glance                 nova-compute           regular
cluster             keystone               keystone               peer
shared-db           keystone               mysql                  regular
identity-service    keystone               neutron-api            regular
identity-service    keystone               nova-cloud-controller  regular
identity-service    keystone               openstack-dashboard    regular
cluster             mysql                  mysql                  peer
shared-db           mysql                  neutron-api            regular
shared-db           mysql                  nova-cloud-controller  regular
shared-db           mysql                  nova-compute           regular
cluster             neutron-api            neutron-api            peer
neutron-plugin-api  neutron-api            neutron-openvswitch    regular
neutron-api         neutron-api            nova-cloud-controller  regular
amqp                neutron-api            rabbitmq-server        regular
neutron-plugin      neutron-openvswitch    nova-compute           regular
amqp                neutron-openvswitch    rabbitmq-server        regular
cluster             nova-cloud-controller  nova-cloud-controller  peer
cloud-compute       nova-cloud-controller  nova-compute           regular
amqp                nova-cloud-controller  rabbitmq-server        regular
neutron-plugin      nova-compute           neutron-openvswitch    subordinate
compute-peer        nova-compute           nova-compute           peer
amqp                nova-compute           rabbitmq-server        regular
cluster             openstack-dashboard    openstack-dashboard    peer
cluster             rabbitmq-server        rabbitmq-server        peer

動作確認

ダッシュボードからの確認

ダッシュボードからの確認には以下URLをブラウザで開きます。
http://{openstack-dashboard の}/horizon

コマンドでの確認

以下の設定でCLIからの確認が可能です。


export OS_AUTH_URL=http://{keystone のIPアドレス}:5000/v2.0
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin123
export OS_REGION_NAME=RegionOne

以上、簡単ですがManualCloudへの OpenStackデプロイ手順でした。
今後引き続きJujuでのOpenStackデプロイについて解説したいと思います。

関連記事

no image

CLIによるSwiftへのアクセス(後編) ~ Swiftによるオブジェクトストレージシステムの構築(4)

by yamagata 2013/2/7(Swift関連の記事の一覧はこちらをご覧ください)前回の

記事を読む

no image

LVM上にインスタンスを作成する

OpenStack 担当 石川です。 実際に自分が使うか使わないかは置いておき、気になったオプ

記事を読む

no image

Grizzlyの新機能(2) SLO ~ Swiftによるオブジェクトストレージシステムの構築(10)

by You Yamagata 2013.06.10 (Swift関連の記事の一覧は 

記事を読む

affinity_swift-get-node

Swift のグローバルクラスタ(2) affinity の設定

Swift のグローバルクラスタ(2) affinity 山縣です。Havana 版(1.10.0)

記事を読む

blog-ocata

Jujuで Ocataを含む様々なバージョンのOpenStack をデプロイする方法

祝OpenStack Ocata リリース!! ということで、早速デプロイして触ってみたいです。 前

記事を読む

no image

構成管理ツール「Ansible」のインストールと使用方法

ビットアイル総合研究所の田波です。 今回は構成管理ツール「Ansible」のインストール方法と

記事を読む

no image

OpenStack DBaas (Trove) を動かした話

本記事はOpenStack Advent Calendar 2015 12/17 のエントリー記事で

記事を読む

DSC_0584

vForum 2012

by kumagai 2012/11/7初めまして。ビットアイル総研の熊谷です。今日は11月6日、7

記事を読む

no image

オープンコンピュートプロジェクトジャパン

by imai 2013/1/18  今週は米国Facebook社が提唱したOpen Co

記事を読む

summittokyo

OpenStack Summit Tokyoのセッションへの投票をお願いします。

OpenStack Summit Tokyo のセッションへの投票が行われています。 弊研究所でも

記事を読む

no image

ビットアイル総合研究所は、クラウド技術に関する調査&研究を通して、社会と会社に寄与していくことを目的に、ビットアイル・エクイニクスの企業内研究所として2011年8月に設立されました。

blog-ocata
Jujuで Ocataを含む様々なバージョンのOpenStack をデプロイする方法

祝OpenStack Ocata リリース!! ということで、早速デプ

newton
Juju Manual Cloud で OpenStack 環境構築

本当にご無沙汰しております。 この投稿はOpenStack Adve

top
HACK! THE Juju/MAAS

6/8~6/10まで幕張メッセで開催されたInterop 2016。皆

dpdk
OpenStack OVS VXLAN ネットワークの高速化

少し前の話になりますが、3月2日に開催された 日本仮想化技術株式会社様

no image
OpenStack DBaas (Trove) を動かした話

本記事はOpenStack Advent Calendar 2015 

→もっと見る

PAGE TOP ↑