OpenStackCeilometer+Heatを使ったオートスケール(第4回)応用編、LB配下でVMがスケールアウト
OpenStackのオートスケールを実用的に使います。仮想LoadBarancer配下でVMをスケールアウトさせることができると、VMの負荷が高まった際に仮想LoadBarancer配下他のVMへ負荷分散させられます。負荷分散が必要なときだけ台数が増えるので、平常時のランニングコストを減らすことができます。
テクノロジーコラム
- 2016年02月22日公開
4部構成となっています。
テーマは「仮想Load Balancer配下でVMを増やす」
今回はOpenStackのオートスケールをもう少し実用的に使ってみたいと思います。
仮想LoadBarancer配下でVMをスケールアウトさせることができると、
VMの負荷が高まった際に仮想LoadBarancer配下他のVMへ、負荷分散をさせることができるようになります。
負荷分散が必要なときだけ台数が増えるので、平常時のランニングコストを減らすことができます。
やりたいことを簡単に図解するとこんな感じです。
まずはHeat-Templateを用意します。
OpenStackのheat-template内にあるコードを使いますのでダウンロードしてください。
https://github.com/openstack/heat-templates/blob/master/hot/autoscaling.yaml
https://github.com/openstack/heat-templates/blob/master/hot/lb_server.yaml
Heatの動かし方は、第三回の説明を参照ください
ただし今回は[autoscale_env.yml]に必要な変数が増えていますので注意してください。
参考までに今回必要な変数を記載しておきます。
[autoscale_env.yml]
parameters: image: d8fd4061-3c57-4204-86c7-bf8c4b476b21 key: ceilo_key flavor: m1.tiny database_flavor: m1.tiny network: 108380e3-6ad1-4008-987c-471ab514ce3d subnet_id: 2e476e0d-50ee-45b4-947f-055119bcc0de external_network_id: 9b15e507-004e-41eb-b209-752337684621 |
第二回同様にテンプレート解説です。
Heat-Templateを元に解説していきます。(1) 仮想Load Balancer配下にVMを増やしたいので、まずは仮想Load Balancerを作ります。
(2) Ceilometerでの監視設定を作ります。ここの詳細は第2回と同じですので、そちらをご確認ください。
(3) LB配下でスケールイン、スケールアウトするVMは、ここから呼ばれる"lb_server.yml"で設定します。
Propertiesで仮想Load Balancerのpool_idを渡します。
(4) 仮想Load Balancer配下に追加したいVMを作ります。この段階ではまだ仮想Load Balancerには組み込まれていないです。
(5) 受け取ったpool_idを利用して、VMを仮想Load Balancerに繋げます。
(6) Heat実行後、仮想マシンに負荷をかけると、仮想Load Balancer配下でVMがスケールアウトします。
実際に動かしてみると、負荷をかける前と後でVMが増えていることが分かると思います。
図 17 オートスケール前のインスタンス状態
図 18 オートスケール後のインスタンス状態
ちゃんと仮想Load Balancerにも組み込まれていますね。
図 19 オートスケール前のLBの状態
図 20 オートスケール後のLBの状態
LB配下でVMをオートスケールさせる方法も簡単にできました。
さいごに
Ceilometer + Heatでのオートスケールは以上です。
オートスケールを考慮したアプリケーションの設計概念、Heat-templateの書き方、実行方法について4週にわたって連載してきましたが如何だったでしょうか。
オートスケールはクラウドネイティブなアプリケーション開発に無くてはならないものなので、OpenStackやAWSを扱うのであれば押さえておきたいスキルです。
NTTソフトウェアではOpenStackを構築するだけでなく、実際に自分たちで使っているからこそ分かる知見やノウハウも蓄え続けているので、皆様がお困りの際にはきっとお手伝いできると思います。
もしもOpenStackに関するお困りごとがございましたら、お気軽にお問い合わせ頂けると幸いです。
4部構成となっています。
NTTソフトウェア株式会社
クラウドセキュリティ事業部
クラウド事業ユニット