openstack-ansibleで作るopenstack ha環境 手順書解説 - openstack最新情報セミナー...
TRANSCRIPT
OpenStack-Ansibleで作るOpenStack HA環境手順書解説
2016年3月2日NECネッツエスアイ株式会社
第三ICT・SI部目次 英人
ソリューション企画グループ井内 新介
今回解説する手順書について
2NEC Networks & System Integration Corporation
← 日本仮想化技術株式会社様から2月11日にリリース
EnterpriseCloud.jpのダウンロードサービスhttp://EnterpriseCloud.jp
日本仮想化技術のSlidesharehttp://www.slideshare.net/virtualtech-jp
日本仮想化技術のGithubhttps://github.com/virtualtech
日本仮想化技術 田口先生のご指導の下、弊社、目次が検証からドキュメント作成までを担当。
自己紹介
3
井内 新介(いのうちしんすけ)
・以前:ICTインフラよろず屋(サーバ・ストレージ・ネットワーク・一部ミドルウェア)
・今:ソリューション企画/セールスサポート-OpenStack-SDN/SD-WAN-SDS-クラウドマイグレーション etc
・北⽶発掘PJの国内カウンター・最近は中部エリアに出没中・・・
NEC Networks & System Integration Corporation
北⽶発掘PJ実施中
Ansibleとは(おさらい)
4NEC Networks & System Integration Corporation
構成管理ツールの一つ。YAMLフォーマットで書かれており可読性が高い。※同じジャンルの製品には“Puppet”“Chef”“Juju”がある。
管理ホストでAnsibleはPlaybookを実⾏しPythonスクリプトに変換。生成したPythonスクリプトを対象ホストに送り込み、実⾏。
管理ホスト 対象ホストSSH
PlaybookPlaybookを実⾏
スクリプト実⾏
Pythonで書かれたスクリプト
対象ホストSSH
スクリプト実⾏
Playbook
Ansibleの特徴
5NEC Networks & System Integration Corporation
Simple・最低限(Inventory、Playbook)のファイルがあれば利⽤可能・YAMLという形式で書くので、プログラマでなくても利⽤しやすい
Agentless・対象となるサーバに特別なツールをインストールする必要がない
SSHで接続できればOK
Powerful・アプリのデプロイ、クラウド上へのインスタンス作成、ベアメタル
スイッチの設定など多彩な動作が可能
OpenStack-Ansibleとは
6NEC Networks & System Integration Corporation
Ansibleを使⽤してOpenStackの構築・機能追加・アップグレードを容易にデプロイできることをめざすOpenStack Foundation公式のプロジェクトです。コミュニティ主導で日々アップデートされています。
【参考】OpenStack-Ansibleインストールガイド⇒http://docs.openstack.org/developer/openstack-ansible/install-guide/index.html
OpenStack-Ansible⇒ https://github.com/openstack/openstack-ansible
手順書の流れ
7NEC Networks & System Integration Corporation
1. 構築する環境について
2. OpenStack-Ansibleインストール前の設定
3. OpenStack-Ansibleの設定
4. OpenStackのデプロイ
5. コンテナの操作
6. OpenStackの操作
⇒ベースとなるOSのセットアップ
⇒ネットワーク周りの設定等
⇒Playbookの編集
⇒Playbookの実⾏
コンポーネント構成
8NEC Networks & System Integration Corporation
凡例
OSアプリケーション
ComputeNodeController Node
Ubuntu 14.04Ubuntu 14.04(compute)
Ubuntu 14.04Ubuntu 14.04(controller)
Nov
aCo
mpu
te
KVMKVMLXCLXC
Hor
izon
Neu
tron
Gla
nce
Keys
tone
Clou
dCon
trol
ler
Nov
aCl
oudC
ontr
olle
r
utili
ty
Cind
er
×2 ×2M
aria
DB
Rabb
itMQ
mem
cach
ed
repo
×2 ×3 ×3
inst
ance
inst
ance
Ope
nSta
ck-A
nsib
le
HA
Prox
y
参考(Juju/MAASの場合)
9NEC Networks & System Integration Corporation
ComputeNodeConroller Node
Ubuntu 14.04Ubuntu 14.04(compute)
Ubuntu 14.04Ubuntu 14.04(controller)
Hor
izon
Mar
iaD
B
Rabb
itMQ
Neu
tron
-API
Gla
nce
Keys
tone
Clou
dCon
trol
ler
Nov
aCl
oudC
ontr
olle
r
VM/LXC/DockerVM/LXC/Docker
KVMKVM
MAA
S
Juju
-Cor
e
Juju
-GU
I
Ubuntu 14.04Ubuntu 14.04Ubuntu 14.04Ubuntu 14.04(maas)
Ubuntu 14.04Ubuntu 14.04(bootstrap)
Juju
-Boo
tstr
ap
凡例
OSアプリケーション
Nov
aCo
mpu
te
KVMKVM
手順書の流れ
10NEC Networks & System Integration Corporation
1. 構築する環境について
2. OpenStack-Ansibleインストール前の設定
3. OpenStack-Ansibleの設定
4. OpenStackのデプロイ
手順書解説
11NEC Networks & System Integration Corporation
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP5
手順書解説
12NEC Networks & System Integration Corporation
省略
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP6
HAの考え方
13NEC Networks & System Integration Corporation
障害が起きたときスプリットブレインによるデータ破損が起きる可能性があるノード→3台(奇数台)で冗⻑
#MariaDB Galeraクラスタ、RabbitMQ
その他は対ユーザーの稼働率で考えたとき致命的となるノード→2台で冗⻑ #Horizon、Nova、Keystone・・・etc
今回は検証環境の構築を目的としているため以下コンポーネントをHA化
・MariaDB Galeraクラスタ・RabbitMQ・Keystone・Horizon・ローカルリポジトリ
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイ
手順書解説
14NEC Networks & System Integration Corporation
本環境ではUbuntu 14.04 LTSの標準サポートカーネルである3.13を使用(検証環境は3.13.0-76)
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP7
手順書解説
15NEC Networks & System Integration Corporation
ホスト/コンテナ管理で使われるネットワーク
サービス(プロジェクト)で使われるネットワーク
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP8
手順書解説
16NEC Networks & System Integration Corporation
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP12
手順書解説
17NEC Networks & System Integration Corporation
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP13-14
ここまでやったこと
18NEC Networks & System Integration Corporation
① 物理サーバを2台準備② OS(Ubuntu14.04)インストール③ 物理ネットワークを設定して管理ネットワークから
インターネットアクセスが可能に
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイ
手順書の流れ
19NEC Networks & System Integration Corporation
1. 構築する環境について
2. OpenStack-Ansibleインストール前の設定
3. OpenStack-Ansibleの設定
4. OpenStackのデプロイ
手順書解説
20NEC Networks & System Integration Corporation
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP16
手順書解説
21NEC Networks & System Integration Corporation
【ワンポイントアドバイス】検証中は3.13.0-34 未満のLinuxカーネルを使⽤していたため、Playbookが起動しない事象が発生しました。また一度PlayBookを実⾏した際にカーネルのVersionをキャッシュする(デフォルト約1日)という仕組みがあり、うまく進まなくなります。その場合は以下ディレクトリをすべて削除し、Playbookを再実⾏すればキャッシュクリアされます。/etc/openstack_deploy/ansible_facts
前提条件を満たしていれば実⾏する必要はありません
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP17
手順書解説
22NEC Networks & System Integration Corporation
省略
省略
物理NIC(em1、em2)仮想NIC(br-mgmt、br-vlan、br-vxlan)を設定し、サーバ再起動
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP18
手順書解説
23NEC Networks & System Integration Corporation
今回の構成ではCinder用のストレージは別途用意せずcontrollerサーバ内にCinderボリュームを作成
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP22
ここまでやったこと
24NEC Networks & System Integration Corporation
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイ
① サーバにAnsibleを実⾏するためのパッケージをインストール② 論理ネットワーク設定③ ボリュームグループ(Cinder-Volume)を設定
手順書の流れ
25NEC Networks & System Integration Corporation
1. 構築する環境について
2. OpenStack-Ansibleインストール前の設定
3. OpenStack-Ansibleの設定
4. OpenStackのデプロイ
Playbooks一覧
26NEC Networks & System Integration Corporation
setup-hosts.yml
haproxy-install.yml
setup-infrastructure.yml
setup-openstack.yml
openstack_user_config.yml
user_variables.yml
user_secrets.yml
実⾏⽤Playbooks設定⽤Playbooks
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイ
手順書解説
27NEC Networks & System Integration Corporation
先頭の数値がOpenStackのリリースに対応
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP23
手順書解説
28NEC Networks & System Integration Corporation
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP23-24
手順書解説
29NEC Networks & System Integration Corporation
cidr_networksはネットワークアドレスを指定
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP25
ネットワークの指定
手順書解説
30NEC Networks & System Integration Corporation
used_ipsでIPアドレスを指定前項のcidr_networksに含まれるIPアドレスとなります。(左記は誤り)
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP25
予約IPアドレスの指定
手順書解説
31NEC Networks & System Integration Corporation省略
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイ
HA Proxyの設定、各種ネットワークの設定
P26
手順書解説
32NEC Networks & System Integration Corporation
上記内容だと172.29.236.10のホストにGaleraDB×3、RabbitMQ×3、Memcached×1をcontroller-01_[galera;rabbit_mq;memcached]_container_XXXXXという名前でデプロイする。
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイ
controller-01→コンテナ名の頭につける⽂字列affinity→同一ホスト内に複数コンポーネント配置する場合に明記galera_container:,rabbit_mq_container:→galera clusterおよびrabbit_mqを何多重するか→memcachedは記載されていないので1個ip→デプロイ先のホストのIPアドレス
P28GaleraDB、RabbitMQ、Memcachedをデプロイする設定
手順書解説
33NEC Networks & System Integration Corporation
上記内容だと172.29.236.21~23のホストにGaleraDB×1、RabbitMQ×1、Memcached×1をinfra-01_[galera;rabbit_mq;memcached]_container_XXXXXinfra-02_[galera;rabbit_mq;memcached]_container_XXXXXinfra-03_[galera;rabbit_mq;memcached]_container_XXXXXという名前でデプロイする。
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP28
手順書解説
34NEC Networks & System Integration Corporation
glance API, nova API, heat API,horizonをデプロイする設定
cinder APIをデプロイする設定
keystoneをデプロイする設定
nova computeをデプロイする設定
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP28-29
手順書解説
35NEC Networks & System Integration Corporation
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイ
誤記です。今回はcontroller上にCinder Volumeを作成しています。
P30
Cinderをデプロイする設定
手順書解説
36NEC Networks & System Integration Corporation
neutronをデプロイする設定
package repositoryをデプロイする設定
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイ
HA Proxyをデプロイする設定
P30-31
手順書解説
37NEC Networks & System Integration Corporation
【ワンポイントアドバイス】YAMLファイルが起動しない場合の対処方法
【原因】YAMLファイルの中にブランクが残っていたため、YAMLファイルが正しく読み込まれなかった。※YAMLファイルがブランクを意識するらしく、注意が必要。
★参考 ホワイトボックス(ブランク)をチェックする方法(ansible-lintをインストール)★
・pip install ansible-lint
上記ツールをインストールすると下記ログのようにブランクがあった際に"Trailing whitespace"と表示してくれる。
【参考ログ】root@controller:/etc/openstack_deploy# ansible-lint openstack_user_config.yml.old[ANSIBLE0002] Trailing whitespaceopenstack_user_config.yml.old:2cidr_networks:
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイ
手順書解説
38NEC Networks & System Integration Corporation
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP32
OpenStackコンポーネントのオプション設定
手順書解説
39NEC Networks & System Integration Corporation
horizonの部分は変更推奨。他の部分はAPI間での使用なのでそのままでOK
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP33
初期パスワード設定
ここまでやったこと
40NEC Networks & System Integration Corporation
① GithubからOpenStack-Ansibleのダウンロード② 各種Playbooksの編集
-openstack_user_config.ymlの編集-user_variables.ymlの編集-user_secrets.ymlの編集
手順書の流れ
41NEC Networks & System Integration Corporation
1. 構築する環境について
2. OpenStack-Ansibleインストール前の設定
3. OpenStack-Ansibleの設定
4. OpenStackのデプロイ
手順書解説
42NEC Networks & System Integration Corporation
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイ
SSHログインの設定
P34
手順書解説
43NEC Networks & System Integration Corporation
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイ
“–vvv”オプションをつけるとコンソール上に詳細なログまで出⼒されます。何か問題が発生した場合はログをもとに解析をして、再度retryしてください。
P36
LXCコンテナのデプロイとComupteサーバの設定
手順書解説
44NEC Networks & System Integration Corporation
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP37
HA Proxyのデプロイ
手順書解説
45NEC Networks & System Integration Corporation
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイ
DBやMQなどインフラのデプロイ
P38
手順書解説
46NEC Networks & System Integration Corporation
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイP39
残りのコンポーネントのデプロイ
手順書解説
47NEC Networks & System Integration Corporation
【ワンポイントアドバイス】
【事象】setup-hosts.ymlでエラーが出⼒される。
【原因】P30の"storage_hostsセクション"の"volume_group"で"cinder-volumes"を指定しているのだが、事前に"volume_group"を作成していなかったのでPlaybookを実⾏した際にエラーとなった。
1. 構築する環境について2. OpenStack-Ansible
インストール前の設定3. OpenStack-Ansibleの設定4. OpenStackのデプロイ
ここまでやったこと
48NEC Networks & System Integration Corporation
① 下記Playbooksの実⾏-setup_hosts.ymlの実⾏-haproxy_install.ymlの実⾏-setup-infrastructure.ymlの実⾏-setup-openstack.ymlの実⾏
⇒OpenStackのHA環境の構築が完了!
今後の期待/やりたいこと
49NEC Networks & System Integration Corporation
・今回の解説部分を手順書に反映・OpenStack-Ansibleのドキュメント充実化
⇒まだまだ纏まった資料がない(特にPlaybookの記載方法について)
・Mitaka対応⇒Ubuntu 16.04 LTS (Xenial Xerus) での検証
・OpenStack-Ansibleを使ったOpenStack+PLUMgridのインストール自動化
⇒Rackspace社がPLUMgridの再販を発表したので可能性あり!?
NECネッツエスアイはお客様の目線に⽴ったこれからのコミュニケーションを
デザインする会社としてお客様の価値向上に取り組んでまいります。
明日のコミュニケーションをデザインする
50NEC Networks & System Integration Corporation