Upload
virtualtech-japan-inc
View
550
Download
0
Embed Size (px)
Citation preview
©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. 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. 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. 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. 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. 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. 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の内部構造を紐解きました
今回のセミナーが皆様にとってお役に⽴ちましたら幸いですありがとうございました
さいごに