Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

内部負荷分散を試してみる

だいぶ以前(2014/5)より内部負荷分散(Internal Load Balancer) が利用可能になってたのですが、試したことがなかったのでやってみました。現時点では、管理ポータルから作業することはできずコマンドラインからの作業でしか定義できません(azure command line tools は未確認)

内部負荷分散は、仮想ネットワークのサブネットに定義しますが、従来のアフィニティグループと紐づいている仮想ネットワークには定義できません。リージョナル仮想ネットワークにのみ定義できるので注意が必要です。

構成

テストする構成は以下の通り。

  • test01/test02/test03 の仮想マシンを作成 (今回はUbuntu)
  • test01とtest02でhttpを負荷分散する。test03 はアクセスする人。

f:id:StateMachine:20150204181646p:plain

まずは、上記構成の環境を構築しますが、そこは割愛します。

Interlan Load Balancer の作成

Add-AzureInternalLoadBalancerコマンドレットを使い定義します。IPアドレスは指定しなくても、任意のアドレスに割り当ててくれます。

Add-AzureInternalLoadBalancer -InternalLoadBalancerName myilb `
     -ServiceName svname -SubnetName Subnet-1 `
     -StaticVNetIPAddress 10.0.0.10

Get-AzureInternalLoadBalancer で、定義内容を確認できます。

PS C:\> Get-AzureInternalLoadBalancer svname

InternalLoadBalancerName : myilb
ServiceName              : svname
DeploymentName           : test01
SubnetName               : Subnet-1
IPAddress                : 10.0.0.10
OperationDescription     : Get-AzureInternalLoadBalancer
OperationId              : e9511d27-622b-6aaf-b14a-2a7b2e065a59
OperationStatus          : Succeeded

エンドポイントの追加

エンドポイントの追加は、パブリックエンドポイトと同じくAdd-AzureEndpointコマンドレットで行います。InternalLoadBalancerName 引数を指定するのがポイントです。

Get-AzureVM svname test01 |
Add-AzureEndpoint -Name http -Protocol tcp -LocalPort 80 -PublicPort 80 `
-ProbePort 80 -ProbeProtocol tcp -InternalLoadBalancerName myilb -LBSetName myilb |
Update-AzureVM

これをtest02 に対しても行います。

確認は、Get-AzureEndpointコマンドレットで出来ます。

PS C:\> Get-AzureVM svname test01 | Get-AzureEndpoint http

LBSetName                : myilb
LocalPort                : 80
Name                     : http
Port                     : 80
Protocol                 : tcp
Vip                      : 10.0.0.10
ProbePath                : 
ProbePort                : 80
ProbeProtocol            : tcp
ProbeIntervalInSeconds   : 15
ProbeTimeoutInSeconds    : 31
EnableDirectServerReturn : False
Acl                      : {}
InternalLoadBalancerName : myilb
IdleTimeoutInMinutes     : 
LoadBalancerDistribution : 

確認

test01/test02には適宜httpサーバーを起動しておきましょう。test03から

curl http://10.0.0.10/

で、レスポンスがゲットできれば問題なく動いているでしょう。負荷分散されているtest01/test02からcurlしても、自分に戻ってくる場合はレスポンスが得られないので注意(確認を横着してちょっとはまった)。交互に接続されるみたいなので、ラウンドロビンっぽい動作になっているように見えます。

HPC計算ノードの自動拡縮

HPC Pack 2012 R2 Update1から、Paasで展開したAzureの計算ノードの個別操作が可能になっているのすが、それを利用した計算ノードの自動拡縮スクリプトが付属しています。

HPC Pack クラスター内の Azure コンピューティング リソースの拡大と縮小

詳しくは上記URLを参照。スクリプト自身が提供されているので、なにをどうやっているかはスクリプトを読めばざっくり確認できるかと思います。

ざっくり指定できるパラメータは以下のような感じです。

  • ノードを増やすチェック間隔を指定できる(分)
  • ノードを減らすチェック間隔を指定できる(分)
  • 初期ノード数を指定できる
  • キューに溜まったジョブ数を閾値として利用できる
  • アクティブなタスク数を閾値として利用できる

ちなみに、1ジョブ -- 複数タスクという関係性。

以下、実行してみたところ。

f:id:StateMachine:20150203181213p:plain

と、拡大判定したところ

f:id:StateMachine:20150203181532p:plain

これで、コスト削減が図れますね。

Android 入門 第二版

なんどかAndroid記事は書いたりしていたのですが余りそれ以上に進めてはいなくて、今回「アプリを作ろう!Android入門(第二版)ゼロから学ぶアプリの作成から公開まで」を頂きましたので、その書評など。

アプリを作ろう!  Android入門 第2版

アプリを作ろう! Android入門 第2版

ざっと流れ(目次)としては、

  1. Androidとアプリについて知ろう
  2. アプリを作る準備をしよう
  3. Eclipseでアプリ作成を始めよう
  4. アプリでJavaの基本を学ぼう
  5. アプリに画像を組み込もう
  6. アプリを完成させよう
  7. アプリから画面を予備だそう
  8. アプリをAndroid端末で動かそう
  9. アプリを公開しよう

以上のとおりで、約300ページ弱のボリュームとなっています。これからも分かるように、開発や言語について未経験な方でも、取り組める内容となっていますし、1つのアプリ開発を題材に最初から最後まで一通り経験できるチュートリアル的な内容にもなっています。

昨今は、開発環境としてAndroid Studioなども出てきていますが、本書籍ではEclipseをベースとして利用しています。 まま見過ごされがちなIDEや言語(Java)など説明も充実しており、まずはアプリ開発に取り組んでみたいと思われる方にうってつけの内容だと思います。

このように、まずは一通りためして、アプリを完成させるまでを経験するにはうってつけの1冊かと思います。

以上