【追記あり】今すぐ試せる、ブルーグリーンデプロイメント環境の構築手順(構築の仕上げと動作検証方法):OpenStack上に構築する、ブルーグリーンデプロイメント実践入門(5)(2/4 ページ)
本連載では、「OpenStackを基盤としたブルーグリーンデプロイメント」を実現する“現場目線”のノウハウを解説していきます。今回は、「ブルーグリーンデプロイメント環境の構築手順(後編)」をお届けします。
ステップ5:BGDのための「Heat」ファイルを構成する
5-1:Heatファイルの構成と役割
ステップ2で展開した「openstack_heat_bgd-master/」ディレクトリ内にあるファイルの内容と役割を確認しましょう。以下のファイルが格納されています(表7)。
ファイル名 | 内容 |
---|---|
create_autoscale_stack.sh | BGD環境を構築するHeatを実行するシェルスクリプト |
delete_autoscale_stack.sh | BGD環境を削除するHeatを実行するシェルスクリプト |
autoscale-web.yaml | BGD環境のWebサーバ構築用Heatテンプレート |
autoscale-web-lb-member.yaml | BGD環境のロードバランサー構築用Heatテンプレート |
create_external.yaml | BGD環境のexternalネットワークおよびルーター構築用Heatテンプレート |
create_net.yaml | BGD環境のテナントネットワーク構築用Heatテンプレート |
「/var/tmp/UNIADEX_BGD-master/openstack_heat_bgd-master/」へ移動し、各ファイルを順に設定していきます。
#cd /var/tmp/UNIADEX_BGD-master/openstack_heat_bgd-master/
- create_autoscale_stack.sh
「create_autoscale_stack.sh」は、BGD環境を構築するHeatを実行するシェルスクリプトです。
設定するパラメータは以下の通りです(表8)。自身の環境に合わせて値を修正してください。値はシングルクォーテーション(')で囲みます。
パラメータ名 | 設定内容 |
---|---|
FIP_PRODUCTION | 本番用のフローティングIPを指定する |
FIP_STAGING | 開発用のフローティングIPを指定する |
EXT_ALLOCATIONPOOL_START | externalネットワークレンジの最初のアドレスを指定する |
EXT_ALLOCATIONPOOL_END | externalネットワークレンジの最初のアドレスを指定する |
EXT_NET_GW | externalネットワークのゲートウェイを指定する |
EXT_NET_CIDR | externalネットワークのCIDRを指定する |
IMAGE_NAME | インスタンスのイメージを指定する (あらかじめダウンロードして、Glanceに登録しておく) |
FLAVOR | インスタンスのフレーバーを指定する (あらかじめ作成しておく) |
KEY_NAME | インスタンスのキーペアを指定する (あらかじめ作成しておく) ※今回の自動設定では、SSHでの通信設定は行いません |
なお、このシェルスクリプトのセキュリティグループは「default」を使います。上記設定の他に、セキュリティグループ「default」へTCP 80番ポートを受信する設定も済ませておいてください。
create_autoscale_stack.shでは、以下を実行します。
- 「/etc/openstack-dashboard/bgd_settings」ファイルの設定
- externalネットワークおよびルーターの構築:heatスタック名「BGD_net_external」
- テナントネットワークの構築:heatスタック名「BGD_net_blue」(ブルー環境構築時)、heatスタック名「BGD_net_green」(グリーン環境構築時)
- ロードバランサーおよびwebサーバの構築:heatスタック名「autoscale-web-blue」(ブルー環境構築時)、heatスタック名「autoscale-web-green」(グリーン環境構築時)
なお、テナント内のインターナルネットワークとして、ブルー環境用ネットワークの「192.168.10.0/24」とグリーン環境用ネットワークの「192.168.20.0/24」が自動的に使用されます。
シェルスクリプトは、「blue」か「green」の引数を与えて実行します。コマンドは以下の通りです。ただし、まだ設定する項目があるので、ここではまだ実行しないでください。
#./ create_autoscale_stack.sh blue
#./ create_autoscale_stack.sh green
- delete_autoscale_stack.sh
delete_autoscale_stack.shは、create_autoscale_stack.shで構築したBDG環境を削除するシェルスクリプトです。今回の構築検証作業を終え、BDG環境を削除するときに使用します。
- autoscale-web.yaml
autoscale-web.yamlは、LBaaS v2に対応したロードバランサーを構築するための設定ファイルです。YAML形式で記述されています。
「resource:」セクションで、ロードバランサーのリソースを設定しています(図14)。
「lb」リソースで、type:に「OS::Neutron::LBaaS::LoadBalancer」と指定することで、ロードバランサーが作成されます。
この他、「listener」リソースにはListenするポートやプロトコルの設定、「pool」リソースにはロードバランスするグループや方法の設定、「lb_floatingip」リソースにはロードバランサーに付与するフローティングIPが記述されています(図15)。
続いて、「web_server_group」リソースでは、ロードバランスするサーバの設定が記述されています(図16)。
web_server_groupリソースでは、type:に「OS::Heat::AutoScalingGroup」を指定してオートスケール設定のサーバを作成します。設定の詳細は「autoscale-web-lb-member.yaml」を参照するようになっています。
- autoscale-web-lb-member.yaml
「autoscale-web-lb-member.yaml」は、ロードバランス先のサーバを作成するための設定ファイルです(図17)。
サーバの作成においては、パラメータ「user_data:」の値を環境に合わせて修正しておく必要があります。設定するパラメータは以下の通りです(表9)。併せて、Proxyのない環境の場合は「export http_proxy」と「export https_proxy」の記述は不要なため、行頭への「# 」の追加でコメントアウトしておきます。
パラメータ名 | 役割 |
---|---|
NAMESERVER | DNSリゾルバを指定 |
PROXY | proxyサーバを指定(※Proxyのない環境ならば指定不要です) |
PORT | proxyサーバのポートを指定(※Proxyのない環境ならば指定不要です) |
なお、構築するサーバをwebサーバとして機能させるために「httpd」が必要となりますが、今回の構築例で使用しているイメージにはhttpdがインストールされていません。そこで、このときにyumリポジトリからhttpdをインストールしておきます。パラメータ「user_data:」の中に「yum install –y httpd」と記述しておくと、サーバ起動時にyumリポジトリからhttpdをダウンロードし、構築するサーバにインストールされます。
また、パラメータ「user_data:」の中では、Webサーバの動作確認ができるようにcgiの設定をしています。具体的には、「index.cgi」を稼働させて、Horizon上の「Webサーバのインスタンス名表示枠」の色をブルーかグリーンで表示させるように記述してあります。
ここまでの設定が終われば、シェルスクリプトによる起動が可能となります。シェルスクリプト内でHeatコマンドを実行するので、まず、以下のコマンドで環境変数を読み込みます。
#source /root/keystone_admin
起動コマンドは以下の通りです。
#./create_autoscale_stack.sh blue
#./create_autoscale_stack.sh green
シェルスクリプトの実行により、以下の環境が作成されます。
- Externalネットワークとルーター
- テナントネットワーク「www-bule」と「www-green」
- ロードバランサー(ブルー系、グリーン系それぞれ1つ)
- インスタンス4つ(ブルー系、グリーン系それぞれ2つ)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- OpenStackが今求められる理由とは何か? エンジニアにとってなぜ重要なのか?
スピーディなビジネス展開が収益向上の鍵となっている今、システム整備にも一層のスピードと柔軟性が求められている。こうした中、なぜOpenStackが企業の注目を集めているのか? 今あらためてOpenStackのエキスパートに聞く。 - いまさら聞けないOpenStack〜よく知られた「常識」と知っておくべき「常識」
日本OpenStackユーザ会の全面協力を得て、OpenStackを徹底的に深掘りする本特集。第2回はレッドハット クラウドエバンジェリストの中井悦司氏が「OpenStackでできること」「OpenStackを使う上で必要なこと」を分かりやすく解説する。 - いまさら聞けない「DevOps」
最近さまざまなイベントやブログエントリで見かける「DevOps」。この言葉をひもとき、なぜ「Dev」と「Ops」が衝突するのか、その解決に必要な要素とは何かを分かりやすく解説します。 - 継続的デリバリ/デプロイを実現する手法・ツールまとめ
バージョン管理や継続的インテグレーションとも密接に関わる継続的デリバリ/デプロイメントの概要や主なツール、経緯、実践事例を紹介。実践手法として「ブルーグリーン・デプロイメント」「Immutable Infrastructure」が注目だ。 - 現代のソフトウェア/サービス開発で構成管理が重要になった5つの理由
「DevOps」という言葉にもあるように、ソフトウェア構成管理は、インフラ運用に取り入れられるなど、変わりつつある時代だ。本連載では、そのトレンドにフォーカスして、現在のソフトウェア開発に有効な構成管理のノウハウをお伝えする