LoginSignup
71
75

More than 5 years have passed since last update.

新時代到来か!?Windows AzureでCentOSを使った時の勘所

Last updated at Posted at 2014-06-12

はじめに

巷ではAWSが流行っているが、Azureを使用してサービス構築をする機会があったので、その時に色々馴染みがない仕組みが多かったので勘所を書いてみる。

Windows Azureの特徴

  • Microsoftが提供しているがLinuxも使用できる
  • CentOSもパッケージを提供されているが、なんとサポートがついてる
  • データ転送の料金についてAzureデータセンターに入ってくるデータは無料

こんなかんじで作ってみた

例えば下記の様な構成で構築するときに必要だったことをあげてみる。
webが2台、DBが2台で冗長化構成にする。Userからはhttp(port 80)でアクセス出来るようにする。

[図1]構成サンプル
azure3.png

[表1]構成マトリックス

hostname private ip ssh port affinity vnet subnet availability service name strage data strage
vmweb01 10.0.1.4 30101 vmAffinity01 vmNetwork01 vmSubWeb vmAvaWeb vmweb vmStg01 stgWeb01
vmweb02 10.0.1.5 30102 stgWeb02
vmdb01 10.0.2.4 30201 vmSubDb vmAvaDb vmdb stgDb01
vmdb02 10.0.2.5 30202 stgDb02

1.構築のトピック

1-1.ネーミングセンスが問われる!?

上記の図や表の通り、色々なところに名前を付けなければならないのではじめに決めておいたほうが手戻りが少ない。なぜなら、何も知らずに作り始めたら丸々3回全部作りなおすことにな(ry

1-2.透明なロードバランサ!?

ナニ言ってんだと言われそうだが、Azureにロードバランサという名前で機能が見えない。Traffic Managerというのがあるがこれは ロードバランサではない

じゃあどこにあるのかというと、クラウドサービス(上記vmweb部分)毎にロードバランサのような負荷分散をしてくれるものがある。エンドポイントを指定してあげると ラウンドロビン で振り分けてくれる

クラウドサービス 負荷分散名 hostname global port private port
vmweb vmHttpWeb vmweb1 80 10080
vmweb2 80 10080

上記のような場合に、http://vmweb.cloudapp.netへアクセスするとvmweb1(またはvmweb2)の10080 portへラウンドロビンでアクセスすることになる。

1-3.定期メンテに耐える構成を!

どんなタイミングで起きるかまだ良くわかっていないが定期メンテナンスでvmが再起動されるらしい。

全台停止等が起きないように対策が必要だが下記の方法を取ることである程度回避できる

  • 可用性セット(avvalability set)に入れることで同時にvmは落ちない
  • 可用性セットに沢山vmを入れ過ぎない。メンテは実施されるので確立が上がる。

2.グローバルIPをコロコロ変えられないようにしたい!

課題
初期設定のままだとサーバを停止/起動するとグローバルIPが開放されてしまう。
また、定期メンテナンスなどで再起動されてしまうと予定外に設定変更されてしまう。

対策
可用性セット(availability set)を設定することで1つのグローバルIPに対して複数のサーバを存在させることで開放されないようにする。

1台目

azure vm create vmweb 5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-65-20140415 azuser
--ssh 30101
--ssh-cert ./key/myCert_azure.pem
--vm-name=vmweb1
--affinity-group=vmAffinity01
--virtual-network-name=vmNetwork01
--subnet-names=vmSubWeb
--availability-set=vmAvaWeb
--vm-size=small

2台目

azure vm create vmweb 5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-65-20140415 azuser
--ssh 30102
--ssh-cert ./key/myCert_azure.pem
--vm-name=vmweb2
--affinity-group=vmAffinity01
--virtual-network-name=vmNetwork01
--subnet-names=vmSubWeb
--availability-set=vmAvaWeb
--vm-size=small
--connect=vmweb   <---(追加)

こんな方法もある

2014/5/7にReserved IP AddressesがリリースされたのでWindows power shellを使うことで固定できるらしい(未検証)

3.プライベートIPも固定したい!

課題
グローバルIPと同様に初期設定のままだとDHCPでの割り当てのため、サーバを停止/起動するとprivate IPも変更されてしまう。

対策
azure power shellを使用して固定する。

Set-AzureStaticVNetIP -VM (Get-AzureVM -ServiceName vmweb -Name vmweb2) -IPAddress 10.0.1.5 | Update-AzureVM

4.DiskI/O分散するためデータストレージを追加するべし!

azure cliを使用してOS用のストレージとは別にデータストレージを追加することでI/Oを分散させること出来る。

ただ、azure cliはLinuxやmacなどで使えるがWindows power shellに比べると対応が遅いのでmac使いの人とかには環境が統一できなくてちょっと不便なところも。

azure vm disk attach-new vmweb1 1000 http://vmweb.blob.core.windows.net/vhd-store/vmweb001.vhd

vmでディスクをマウントする

fdisk /dev/sdc
mkfs -t ext4 /dev/sdc1
mkdir /data
mount /dev/sdc1 /data
cp -p /etc/{fstab,fstab.`date +"%Y%m%d"`}
blkid
vi /etc/fstab

fstabに設定を追加する

UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /data   ext4   defaults   1   2

5.swap領域は自分で追加!!

初期設定時はswap領域がないので追加する

cp -p /etc/{waagent.conf,waagent.conf.`date +"%Y%m%d"`}
vi /etc/waagent.conf
waagent.conf
@@ -39,10 +39,10 @@
 ResourceDisk.MountPoint=/mnt/resource

 # Create and use swapfile on resource disk.
-ResourceDisk.EnableSwap=n
+ResourceDisk.EnableSwap=y

 # Size of the swapfile.
-ResourceDisk.SwapSizeMB=0
+ResourceDisk.SwapSizeMB=10000

 # Respond to load balancer probes if requested by Windows Azure.
 LBProbeResponder=y
vi /etc/fstab
/mnt/resource/swapfile swap swap defaults 0 0

6.大規模に作るならコア数に上限(クォータ制限)を解除!

課題
初期設定時はCPU Core数を全VMで20までしか使用できない。

対策
これを解除するのには、管理ポータルにてサポートへ連絡する。100コアまでは比較的容易にあげてくれるが、200コアとかになると審査が必要なため時間がかかるようだ。

Windows_Azure.png

7.その他

結局のところ...

メリット

  • 性能はそれなりに担保されているので上り通信コストが抑えられることでサービスによっては恩恵を受けられる
  • ベンチャー企業へのサポートプログラムがある
  • 活発に機能拡張が行われている
  • まだ使っている人が少ないので技術的に先行できる可能性がある
  • 見積もりツールが見やすい気がする

デメリット

  • まだ発展途上な感じは否めない
  • AWSと比べてしまうとまだ基本機能は不足している
  • Windows Power shell、azure cli、管理ポータルの順に機能が追加されるのでコマンドを色々使わなければならないのが若干煩雑になる
  • サポートに問い合わせて数日待ってからの対応だったりするものがあるので時間がかかるときがある

まとめ

AWSでうまくいかない事があれば、Azureに乗り換えを検討してみるのもアリかもしれない。

参考サイト

  1. Microsoft Azure 開発者向け技術情報
  2. Microsoft Azure サポート チーム サイト
  3. How to attach a data disk to the new virtual machine
  4. Load Balancing Virtual Machines
  5. linux スワップ(swap)領域の作成
  6. あまりにも良くあるAzure問答集
  7. 請求書払いへの変更申し込みについて
  8. Azure サブスクリプション使用制限機能の設定変更について
71
75
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
71
75