45
2017/3/29 石川 智章 澤野 文香 今すぐ試せるブルーグリーン デプロイメント入門とその実装 OpenStack最新情報セミナー

今すぐ試せるブルーグリーンデプロイメント入門とその実装 - OpenStack最新情報セミナー(2017年3月)

Embed Size (px)

Citation preview

2017/3/29石川 智章澤野 文香

今すぐ試せるブルーグリーンデプロイメント入門とその実装

OpenStack最新情報セミナー

©2017 UNIADEX, Ltd. All rights reserved. 1

第1部1. 会社紹介・自己紹介

2. Blue Green Deployment(BGD)とは

3. OpenStackを使ってBGDを実装してみた

第2部4. RDO All-in-one環境で実際にBGDを構築してみた

5. おまけ

アジェンダ

©2017 UNIADEX, Ltd. All rights reserved. 2

1.会社紹介・自己紹介

Blue

Green

©2017 UNIADEX, Ltd. All rights reserved. 3

会社概要

社名 ユニアデックス株式会社代表者 代表取締役社⻑ 東 常夫(とう つねお)

住所/TEL 〒135-8560 東京都江東区豊洲1-1-103-5546-4900(大代表)

設⽴ 1997年3月4日資本⾦ 7億5,000万円従業員数 2,891名(2016年4月1日現在)

売上高 1,255億円(2016年3月期)

お客さまのICT環境全体最適化を支える日本ユニシスグループの『インフラトータルサービス』企業

©2017 UNIADEX, Ltd. All rights reserved. 4

自己紹介

・石川 智章(いしかわ ともあき)

日々の仕事• OpenStack担当 4年 をメインにいろいろマイトレンドコンポーネントはManila

• 気づいたらおじさん、でもまだまだこれから趣味

• 週末テニスプレイヤー ヒューイット大すき 引退したけど• Mad Max FR鑑賞 V8達成!! Witness me!!

©2017 UNIADEX, Ltd. All rights reserved. 5

2.Blue Green Deployment(BGD)とは

Blue

Green

おさらいおさらい

©2017 UNIADEX, Ltd. All rights reserved. 6

・Webシステムの安全かつ迅速な配備を実現

Blue Green Deployment(BGD)とは

検証・開発

WEB

AP

DB

本番系

WEB

AP

DB

一発勝負!で移⾏する

従来のシステム

テストやり直し

本番へ反映漏れ

どう切りどう切り戻す?

計画停止は計画停止は機会損失

Green系Green系

WEB

AP

G系で新機能テスト

Blue系Blue系

WEB

AP

DB

B系で本番中

本番系を交互に切替

バックエンドバックエンド共用

BGD適用システム

©2017 UNIADEX, Ltd. All rights reserved. 7

いろいろな切り替え⽅式

AWS Elastic Beanstalk (DNS切り替え) http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html

AWS Elastic LoadBlancer(グループ切り替え) https://aws.amazon.com/jp/blogs/aws/attach-and-detach-elastic-load-balancers-from-auto-scaling-groups/

Azure AppService(DNS切り替え) https://docs.microsoft.com/ja-jp/azure/app-service-web/web-sites-staged-publishing

©2017 UNIADEX, Ltd. All rights reserved. 8

・OpenStackはフローティングIPによりテナント外と接続ロードバランサーにも付与可能フローティングIPの付け替えで実施

今回試した⽅式

Green系Green系

WEB

WEB

G系で新機能G系で新機能テスト

Blue系Blue系

WEB

WEB

B系で本番中

フローティングフローティングIPアドレスを

付け替え

©2017 UNIADEX, Ltd. All rights reserved. 9

3. OpenStackを

使ってBGDを実装してみたBlue

Green

©2017 UNIADEX, Ltd. All rights reserved. 10

・OpenStack最新情報セミナー(2015年7月)夜の部「OpenStack + SDN最新動向」で構成紹介

紹介当時は Juno で構築 https://virtualtech.jp/20150722-seminar/

本日は@ITで連載したNewtonを紹介

おまけ Ocata でもやってみた

講演に関する今までの経緯

©2017 UNIADEX, Ltd. All rights reserved. 11

@ITでBGD連載記事公開中

・「OpenStack上に構築する、ブルーグリーンデプロイメント実践入門(1)」2016年02月22日なぜ“リリースの自動化”が重要か──今こそ「ブルーグリーンデプロイメント」を考えるhttp://www.atmarkit.co.jp/ait/articles/1602/09/news019.html

・「OpenStack上に構築する、ブルーグリーンデプロイメント実践入門(2)」2016年12月13日「ブルーグリーンデプロイメントの仕組み」を理解するhttp://www.atmarkit.co.jp/ait/articles/1612/13/news005.html

・「OpenStack上に構築する、ブルーグリーンデプロイメント実践入門(3)」2017年01月18日ブルーグリーンデプロイメントの効果と課題http://www.atmarkit.co.jp/ait/articles/1701/18/news020.html

・ 「OpenStack上に構築する、ブルーグリーンデプロイメント実践入門(4)」 2017年02月17日今すぐ試せる、ブルーグリーンデプロイメント環境の構築手順(事前準備と実作業)http://www.atmarkit.co.jp/ait/articles/1702/17/news009.html

・ 「OpenStack上に構築する、ブルーグリーンデプロイメント実践入門(5)」 2017年02月24日今すぐ試せる、ブルーグリーンデプロイメント環境の構築手順(構築の仕上げと動作検証方法)http://www.atmarkit.co.jp/ait/articles/1702/24/news002.html

・ お試し実装コードをGithubにて公開中https://github.com/uniadex/UNIADEX_BGD

出典 @IT

©2017 UNIADEX, Ltd. All rights reserved. 12

・運用者の切り替え操作で本番系を切り替える

運用者が切替ボタンにより操作

ユーザー

今回のOpenStack BGD環境切り替え実装動作

ユーザーがWebサーバーを

画面で確認

©2017 UNIADEX, Ltd. All rights reserved. 13

①Horizon(管理画⾯)へのBGD画⾯組み込みガイドラインに従って画面組み込みを実装

②Neutron LBaaS Version2.0インスタンスから利用可能なロードバランサを構成Heatで自動構成Junoでは Version 1.0

③Heatインスタンス起動等の自動化機構オートスケーリング

④独自機能フローティングIP(FIP)付け替え処理

利用したOpenStack機能と今回の実装

©2017 UNIADEX, Ltd. All rights reserved. 14

・公式チュートリアルhttps://docs.openstack.org/developer/horizon/tutorials/dashboard.html

・Horizonはダッシュボードとパネルの集まりダッシュボード内に複数のパネルを定義パネルの中に、部品を定義 タブページ、表組み、ボタン、アクションなど

メニュー組み込まれているダッシュボードとパネルから生成

BGDパネル

ボタンに対するアクション

表組み

①Horizon(管理画⾯)へのBGD画⾯組み込み

©2017 UNIADEX, Ltd. All rights reserved. 15

・BGDパネルの画面コードの配置以下のHorizonダッシュボードディレクトリに配置

配置後、画面コードのライブラリをsys.path.insertにより自動追加

①-1. BGDパネルの作成

/usr/share/openstack-dashboard/openstack_dashboard/dashboards/

WSGIScriptAlias /dashboard “/usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi”

apacheのhorizon設定「15-horizon_vhost.conf」ファイルから抜粋

©2017 UNIADEX, Ltd. All rights reserved. 16

・画面コード作成例djangoフレームワークを利用 パネル用のクラス を「dashboard.py」で定義

①-2. BGDパネルの作成

①メインメニューに「Blue Green Deployment」メニューを追加

②BGDメニューを追加

提供コードdashboard.pyより抜粋

©2017 UNIADEX, Ltd. All rights reserved. 17

・ロードバランサを構成する要素を設定リスナー、プール、メンバー、バーチャルIP、ヘルスモニタ

・複数プロバイダ(ロードバランサ)に対応HAProxy(デフォルト)商用ロードバランサー(要ドライバー)

メンバVIP

ヘルスモニタ メンバ

メンバ

モニタ方法モニタ方法タイムアウトリトライ数

サブネットバーチャルIP

IP・ポートウェイト

Listener

プロトコルポート

②Neutron LBaaS Version2.0

Pool

lbロードバランス

方法

©2017 UNIADEX, Ltd. All rights reserved. 18

・ロードバランサーの作成はHeatにより実施

ロードバランサーの設定①subnetの設定②VIPの設定③listener作成④pool作成⑤FIPの確保⑥FIPとロードバランサー

のVIPとのASSOCIATE

②-1. ロードバランサーの設定

①②

提供yaml autoscale_web.yamlより抜粋

©2017 UNIADEX, Ltd. All rights reserved. 19

・ Heatをキックする設定シェルを用意External Network、ルーター、テナントネットワークロードバランサー、Webサーバの起動

③Heatによる構築

設定シェル create_autoscale_stack.shより抜粋

©2017 UNIADEX, Ltd. All rights reserved. 20

・設定シェルにより以下の環境を構築

BeforeBefore AfterAfter

• Webサーバーの起動とセットアップ• ロードバランサー構成とFIPのASSOCIATE設定• オートスケーリング

③-1. ルーター、ネットワークなどの環境作成

©2017 UNIADEX, Ltd. All rights reserved. 21

④独自機能

・切り替え機能の実装BGDパネルに作成される「switchover」ボタンボタン押下による切り替え動作

openstack_dashboard ライブラリを利用

①FIPのDEASSOCIATE②FIPを交換、再ASSOCIATE

提供コード switchover.pyより抜粋

©2017 UNIADEX, Ltd. All rights reserved. 22

・切り替えFIPアドレス設定ファイル※設定シェルにより自動的に設定

FIP_PRODCUTION: 本番系のFIPアドレスFIP_STAGING: テスト系のFIPアドレス

④-1. FIPの設定

/etc/openstack-dashboard/bgd_settings

提供コード bgd_settingsより抜粋

“10.0.0.10”“10.0.0.20”

©2017 UNIADEX, Ltd. All rights reserved. 23

・BGD機能および環境を構成する提供ファイル①openstack_horizon_bdg-masterHorizonにBGD機能に対応したメニュー追加、機能を実装するファイル

②openstack_heat_bgd-masterBGD環境を作成するHeat templateheatをキックするシェルスクリプト

④-2. 独自コード群

ファイル名 役割autoscale-web.yaml BGD環境のWebサーバー構築用Heatテンプレートautoscale-web-lb-member.yaml BGD環境のロードバランサー構築用Heatテンプレートcreate_external.yaml BGD環境のexternalネットワーク構築用Heatテンプレートcreate_net.yaml BGD環境のテナントネットワーク構築用Heatテンプレートcreate_router.yaml BGD環境のルーター構築用Heatテンプレートcreate_autoscale_stack.sh BGD環境を構築するHeatを実⾏するシェルdelete_autoscale_stack.sh BGD環境を削除するHeatを実⾏するシェルbgd_settings FIP設定ファイル スクリプト設定用

フォルダまたはファイル名 役割

bgddashboardフォルダ BGD切り替え用のメニュー画面を作成

uniadexフォルダ BGD環境切り替え機能の実装

_45_bgddashboar.py bgddashboardで作成したBGD用画面をHorizonに表示

bgd_settings FIP設定ファイル

©2017 UNIADEX, Ltd. All rights reserved. 24

4.RDO All-in-one環境で実際に構築してみた

Blue

Green

©2017 UNIADEX, Ltd. All rights reserved. 25

自己紹介

・澤野 文香(さわの ふみか)

経歴• 農学部で4年間「⾷」について学ぶ• 気づいたらIT企業に就職• 入社1年⽬、先輩方にご指導いただきながら日々奮闘中

趣味• ⾷べ歩き 年々胃袋が⼩さくなっている・・・• 体を動かすこと(を好きになるように努⼒中)

©2017 UNIADEX, Ltd. All rights reserved. 26

・BGDの動作概要がわかる!!

・Horizon画面にメニューを追加する方法、およびHeatの使い方もわかる!!

「OpenStack上に構築する、ブルーグリーンデプロイメント実践入門(4)」今すぐ試せる、ブルーグリーンデプロイメント環境の構築手順(事前準備と実作業)http://www.atmarkit.co.jp/ait/articles/1702/17/news009.html「OpenStack上に構築する、ブルーグリーンデプロイメント実践入門(5)」

今すぐ試せる、ブルーグリーンデプロイメント環境の構築手順(構築の仕上げと動作検証方法)http://www.atmarkit.co.jp/ait/articles/1702/24/news002.html

公開手順どおりに実施すると

©2017 UNIADEX, Ltd. All rights reserved. 27

ステップ1:環境の事前準備を⾏う1-1:RDO All-in-One環境の構築と初期作業1-2:LBaaS v2の設定

ステップ2:BGD関連セットアップファイルを準備する2-1:オリジナルの構築用ファイルをGitHubからダウンロードする2-2:ファイルを展開する

ステップ3:HorizonにBGD用の設定を追加する3-1:Horizonダッシュボードのディレクトリへ構成ファイルを配置する3-2:「bgdpanel」ディレクトリの構成ファイルを確認する

ステップ4:「switchover」機能をセットアップする4-1:設定ファイル群を「/usr/share/openstack-dashboard/」ディレクトリへ配置する4-2:設定ファイル群の構成ファイルを確認する4-3:「BDG設定画面」のメニュー表示用ファイルを配置する

ステップ5:BGDのための「Heat」ファイルを理解する5-1:Heatファイルの構成と役割を理解する5-2:「稼働状況」の確認方法

ステップ6:BGDの動作検証6-1:ブルー系/グリーン系の切り替わりを確認する6-2:HTTP KeepAliveを無効化する方法

セットアップ手順

©2017 UNIADEX, Ltd. All rights reserved. 28

・設定は以下の点に注意!!

LBaaSを使用するために、以下を設定。デフォルトは「n」

Heatを使用するために、以下を設定。デフォルトは「n」

外部ネットワークを接続するために、以下を設定。デフォルトは「vxlanのみ」

RDO answer-fileの注意点

CONFIG_LBAAS_INSTALL = y

CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat

CONFIG_HEAT_INSTALL = y

©2017 UNIADEX, Ltd. All rights reserved. 29

・RDOのインストール後は以下を忘れずに!!

RDO All-in-one手順のNext Steps「work with your existing network」に沿って設定

https://www.rdoproject.org/networking/neutron-with-existing-external-network/

OVS:br-exと外部ネットワークに繋がるNIC(ens0)の接続

RDO インストール後の注意

OpenStackの世界

ens0

br-ex

ここです

©2017 UNIADEX, Ltd. All rights reserved. 30

・LBaaS V2.0の導入は以下の点に注意!!

標準ではLBaaS V2.0のHorizonメニュー画面がでない追加でパッケージをインストール

インストール後、画面表示を有効にする

LBaaS V2.0導入の注意点①

#yum install -y openstack-neutron-lbaas-ui.noarch ¥openstack-neutron-lbaas-ui-doc.noarch

‘OPENSTACK_NEUTRON?NETWORK = {‘enable_lb’: True, #FalseをTrue に変更

/etc/openstack-dashboard/local_settingsの変更

©2017 UNIADEX, Ltd. All rights reserved. 31

・LBaaS V2.0の導入は以下の点に注意!!

LBaaS V2.0のパネルは2種類

「_1480」のパネルが動作しなかったため、本手順では「_1480」をオフ。違いをご存知の方がいれば^^

LBaaS V2.0導入の注意点②

_1480_project_loadbarancersv2_panel.py_1481_project_ng_loadbarancersv2_panel.py

※/usr/share/openstack-dashboard/openstack-dashboard/local/enabled/に設定ファイルがある。_1480_project_loadbalancersv2_panel.pyの設定をDISABLED = Trueにして表示をオフにするDISABLED = True!!紛らわしいです

©2017 UNIADEX, Ltd. All rights reserved. 32

・RDO Newtonで構築して気づいたこと

loadbalancerv2にng(NextGeneration?)付きとないものがある。今回は「ngloadbalancer v2.0」を使用

ロードバランサーのUIは、インストールされていないので別途インストール※いずれも@ITの手順書に記述

LBaaS V2.0導入の注意点③

©2017 UNIADEX, Ltd. All rights reserved. 33

・環境作成用ファイルを環境に合わせる

設定シェル「create_autoscale_stack.sh」の編集

Floating IP setting

external-network and router setting

設定シェルの注意点

FIP_PRODUCTION = ‘10.0.0.10’FIP_STAGING = ’10.0.0.20’

EXT_ALLOCATIONPOOL_STATE=‘10.0.0.5’EXT_ALLOCATIONPOOL_END=‘10.0.0.20’EXT_NET_GW=‘10.0.0.254’EXT_NET_CIDER=‘10.0.0.0/24’

©2017 UNIADEX, Ltd. All rights reserved. 34

・手順に沿ってRDOのAll-in-one環境で構築を実施ログインすると「Blue Green Deployment」がメニューに登場「BGD panel」パネルでは、ブルー系(本番)でサービス稼動を示す「Serviced by Blue」表示

構築実施内容詳細

©2017 UNIADEX, Ltd. All rights reserved. 35

・構築したWebサーバーにアクセス稼動中のインスタンス名が表示本番系FIPでロードバランシングしているWebサーバー画面を確認

作成したWebサーバへのアクセス

©2017 UNIADEX, Ltd. All rights reserved. 36

・「switchover」ボタンを押して切り替え実施

ブルーグリーン環境を切り替えよう!!

ここです

©2017 UNIADEX, Ltd. All rights reserved. 37

・ボタンを押すと画面がGreenへと切り替わる!!本番系がグリーン系に切り替わったことを確認

ブルーからグリーンへ

©2017 UNIADEX, Ltd. All rights reserved. 38

・再度Webサーバーにアクセス!!本番系のFIPでアクセスしグリーン系のWebサーバー表示を確認

再度Webサーバにアクセスしてみましょう!!

©2017 UNIADEX, Ltd. All rights reserved. 39

・OpenStackは、利用者⽬線で考えるとダッシュボード上での操作で簡単にインスタンス作成等ができて便利

・テナント作成することで、用途ごとに分けることができるので便利

・内部構造をすぐに理解するのは難しいが、知識を習得できれば、いくらでもカスタマイズが可能

・半年ごとに新バージョンがリリースされるので、新しい機能を習得するのが大変だが、そこも魅⼒

・今後できることがまだまだ増えていくので将来性を感じる

OpenStackに半年間携わって感じたこと

©2017 UNIADEX, Ltd. All rights reserved. 40

5.おまけ

Blue

Green

©2017 UNIADEX, Ltd. All rights reserved. 41

・External Network flatのデフォルトの作成方法が変更ルーターのゲートウェイポート(qgポート)がbr-int側に

おまけ RDO Ocata変更点

br-int

qrouter-xxx

br-ex

qr

qg

ens0

tag1

br-ex

br-int

qrouter-xxx

tag1 tag2qr qg

ens0

フロールールuntag<->tag2

L2SW L2SW

通信経路

Newton Ocata

©2017 UNIADEX, Ltd. All rights reserved. 42

・その結果、外部ゲートウェイのステータスが稼働中に!!Newton

l3-agent.iniの「external_network_bridge」パラメタを使用※NewtonでもDEPRECATED扱い

Ocataopenvswitch_agent.iniの

「bridge_mappings」パラメタを使用

おまけ インタフェース表示の違い

デフォルト設定が変わったのみで以前の

バージョンでもこの構成は可能

理由は、利用するパラメタのデフォルト設定が変わっていた

10.0.0.30

10.0.0.30

©2017 UNIADEX, Ltd. All rights reserved. 43

・時代は、インフラ部門にスピード感や柔軟性といったビジネス要求を支えるべく相応の変化を要求されます

・本講演は、ブルーグリーンデプロイメントを題材にOpenStackの内部構造を紐解きました

今回のセミナーが皆様にとってお役に⽴ちましたら幸いですありがとうございました

さいごに