24
hbstudy#41 × IDCF クラウドハンズオン Fabric と Monit を使って オートスケーリングを自作してみよう 2013年2月2日 @tafujish

Hbstudy41 auto scaling

Embed Size (px)

DESCRIPTION

#hbstudy

Citation preview

hbstudy#41 × IDCF クラウドハンズオン

Fabric と Monit を使って

オートスケーリングを自作してみよう

2013年 2月 2日

@tafujish

hbstudy#41×IDCF クラウドハンズオン

2 / 24

目次

0. この文書について .................................................................. 3

1. IDCF クラウド上に仮想マシンを作成してみる .......................................... 4

1) ポータルサイトから作業用の仮想マシンを作成 .................................... 4

2) SSH接続するためのネットワーク設定 ............................................. 4

2. Fabricをインストールして触ってみる ................................................ 5

1) 作業用 VM(CentOS 6.3)に SSHログイン ............................................ 5

2) Fabricをインストール .......................................................... 5

3) 秘密鍵を設置 .................................................................. 5

4) fabfileを作成し実行 ........................................................... 5

3. Fabricから Redis をインストールしてみる ............................................ 7

1) EPELリポジトリを追加し、Redis をインストール .................................. 7

4. Fabricから API経由で仮想マシンを作成してみる ...................................... 8

1) リポジトリを追加し、APIツールインストール ..................................... 8

2) APIキーとシークレットキーを設置 ............................................... 9

3) 仮想マシン作成 ............................................................... 10

4) /etc/hostsに名前登録 ......................................................... 12

5. 作成した仮想マシンを Fabric からセットアップしてみる .............................. 13

1) ユーザー追加 ................................................................. 13

2) sshd設定 ..................................................................... 13

3) /etc/hostsに名前登録 ......................................................... 14

4) Redisのクライアントをインストール ............................................ 15

5) コンテンツを設置 ............................................................. 15

6) Monitインストール ............................................................ 17

7) Web公開 ...................................................................... 18

6. 自動でスケールアウトしてみる ..................................................... 18

1) cronスクリプト設置 ........................................................... 19

2) 負荷をかけます ............................................................... 21

7. [Appendix]ロードバランサーに自動追加 ............................................. 22

hbstudy#41×IDCF クラウドハンズオン

3 / 24

0. この文書について

この文書は、hbstudy#41のハンズオンにて、IDCフロンティアのクラウドサービス セルフタイプ(以

下、IDCFクラウド)を用い、オートスケーリング構成を作成する手順です。

動作検証は行っておりますが、自己責任でどうぞご利用ください。

hbstudy#41×IDCF クラウドハンズオン

4 / 24

1. IDCF クラウド上に仮想マシンを作成してみる

※IDCF クラウドの操作方法については、エントリーガイド(pp.21-27)を参照してください

1) ポータルサイトから作業用の仮想マシンを作成

https://noahcloud.jp/ へアクセスし、配布したユーザ名/パスワードにてログインします。

以下の設定で仮想マシンを作成します。

テンプレート [LATEST] CentOS 6.3 64-bit

VMタイプ M4 ( Hourly ) 2CPU, 4GB RAM

ディスク選択 必要ありません

仮想マシン名 任意

グループ名 任意

SSH Keys SSH鍵生成

※生成後、秘密鍵をローカルにコピーしてください

2) SSH 接続するためのネットワーク設定

ポータルサイトで TCP22 番を開放するようポートフォーワーディングルールとファイアウォール

を設定します。

※ここでの設定は、仮想マシン作成後(ステータスが Running)になった後に実施してください

「リソース」>「ネットワーク」>「ファイアウォール」にて、TCP22番を開けます。

この後、HTTPも使うので、TCP80 番も開けてください。

「リソース」>「ネットワーク」>「ポートフォーワーディング」にて、TCP22 番を転送します。

※ネットワーク設定については、エントリーガイド(pp.29-31)を参照してください

hbstudy#41×IDCF クラウドハンズオン

5 / 24

2. Fabric をインストールして触ってみる

1) 作業用 VM(CentOS 6.3)に SSH ログイン

ローカルの環境から、作成した仮想マシンに SSH 接続します。

2) Fabric をインストール

以下のコマンドで、Python 他必要なパッケージをインストールします。

# yum install python python-devel gcc -y

次に、pip(Python パッケージ管理ツール)をインストールします。

# curl http://python-distribute.org/distribute_setup.py | python

# curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

Fabricのインストールは超カンタン。

# pip install fabric fexpect

3) 秘密鍵を設置

Fabricは SSHで接続します。仮想マシン作成時に保管した SSH秘密鍵を、作業用 VMに設置します。

# vi ~/.ssh/id_rsa

~保存した秘密鍵の内容をコピペ~

# chmod 600 ~/.ssh/id_rsa

※SCP 等のファイル転送でもかまいません

4) fabfile を作成し実行

fabfile.py という名前でファイルを作成し、以下の内容を記述します。

今後は、このファイルに追記していくことになります。

ここでの内容は、「uname –s」コマンドでホストタイプを確認する host_type 関数を作成します。

hbstudy#41×IDCF クラウドハンズオン

6 / 24

【~/fabfile.py】

from fabric.api import *

def host_type():

run('uname -s')

Fabricは次のように実行します。

# fab –H [ホスト名または IPアドレス] <コマンド>

# fab -H localhost host_type

[localhost] Executing task 'host_type'

[localhost] run: uname -s

[localhost] out: Linux

[localhost] out:

Done.

Disconnecting from localhost... done.

コマンドオプション等詳細はヘルプをどうぞ。

# fab --help

複数のサーバを指定して実行する場合は、「,」で繋げます。

# fab –H localhost,host1,host2 check_hostname

hbstudy#41×IDCF クラウドハンズオン

7 / 24

3. Fabric から Redis をインストールしてみる

1) EPELリポジトリを追加し、Redis をインストール

オートスケール用のデータ格納先として Redisを使います。Redis は EPEL リポジトリからパッケー

ジインストールします。Fabric のコードは、fabfile.py に追記していきます。

【~/fabfile.py】

from fabric.contrib.files import *

def setup_repo_epel():

sudo("""

yum -y localinstall \

http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

""")

def setup_redis():

setup_repo_epel()

sudo("""

yum -y install redis

""")

comment("/etc/redis.conf",r"bind 127.0.0.1")

sudo("""

chkconfig redis on

service redis restart

""")

※epel-release-6-8.noarch.rpmがなければ最新のバージョンに置き換えてください

Fabric を実行します。Redis サービスが起動できれば成功。

# fab -H localhost setup_redis

[localhost] Executing task 'setup_redis'

[localhost] sudo:

yum -y localinstall

http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm

~略~

[localhost] out: redis-server を起動中: [ OK ]

[localhost] out:

hbstudy#41×IDCF クラウドハンズオン

8 / 24

[localhost] out:

Done.

Disconnecting from localhost... done.

4. Fabric から API 経由で仮想マシンを作成してみる

1) リポジトリを追加し、API ツールインストール

IDCFから提供している CloudStack APIを実行するためのコマンドラインツールをインストールする

ため、IDCFのリポジトリ追加と APIツールを yum インストールします。

【~/fabfile.py】

def install_idcf_api():

run("""

yum -y localinstall \

http://repo.cloud.idc.jp/Linux/CentOS/6/idc/x86_64/idcf-release-8-0.0.idcf.el6.noarch.rpm

yum -y install idcf.compute -y

idcf-compute-api -v

""")

Fabric を実行します。idcf-compute-api コマンドを実行してバージョンがでれば成功。

# fab -H localhost install_idcf_api

[localhost] Executing task 'install_idcf_api'

[localhost] run:

yum -y localinstall

~略~

[localhost] out: idcf-compute-api v0.10.0

[localhost] out:

Done.

Disconnecting from localhost... done.

hbstudy#41×IDCF クラウドハンズオン

9 / 24

2) API キーとシークレットキーを設置

API アクセスのための情報を、~/idcfrcに記述します。

【~/.idcfrc】

[account]

host=https://api.noahcloud.jp/portal/client/api

api_key=ここに APIキーを入れる

secret_key=ここにシークレットキーを入れる

API キーおよび秘密鍵は、IDCF クラウドのポータル右上の「マイプロファイル」をクリックすると

表示されます。(最新のエンドポイントの情報は FAQ を参照します)

hbstudy#41×IDCF クラウドハンズオン

10 / 24

3) 仮想マシン作成

API ツールを使ってスケールさせる WEBサーバー用仮想マシンを作成します。仮想マシン作成のジョ

ブ投入後、作成完了まで確認し続けます。ID は下記のものを利用し、keypare(SSH 秘密鍵)は、作

業用仮想マシン作成時に作成した鍵の名前を指定します。

テンプレート:[LATEST] CentOS 6.3 64-bit 2008

VMタイプ:S2 ( Hourly ) 1CPU, 2GB RAM 22

ゾーン:jp-east-t1v 1

【~/fabfile.py】

import json

import os,sys,time

SCALE_GROUP = "sclgrp"

def setup_idcf_vm(displayname="scale"):

resp = local("""

idcf-compute-api deployVirtualMachine \

--keypair {keypair} \

--displayname {displayname} \

--group {group} \

--templateid {templateid} \

--serviceofferingid {serviceofferingid} \

--zoneid {zoneid}

""".format(keypair="testkey", #your ssh-key name

displayname=displayname,

group=SCALE_GROUP,

templateid="2008", #(2008) [LATEST] CentOS 6.3 64-bit

serviceofferingid="22", #(22) S2

zoneid="1"),capture=True)

print resp

retval = json.loads(resp, 'UTF-8')

ret = retval["deployvirtualmachineresponse"]

vm_id = ret["id"]

jobid = ret["jobid"]

wait_job(jobid)

hbstudy#41×IDCF クラウドハンズオン

11 / 24

print "__vmid__,%d" %vm_id

def wait_job(jobid):

while True:

resp = local("""

idcf-compute-api queryAsyncJobResult --jobid {jobid}

""".format(jobid=jobid),capture=True)

retval = json.loads(resp, 'UTF-8')

ret = retval["queryasyncjobresultresponse"]

if ret["jobstatus"] == 1:

print resp

break

else:

time.sleep(30)

Fabric を実行します。仮想マシンができあがり、IP アドレス等の設定情報が返ってくれば成功。

# fab -H localhost setup_idcf_vm:displayname=scale00

[localhost] Executing task 'setup_idcf_vm'

~略~

[localhost] local:

idcf-compute-api queryAsyncJobResult --jobid 123294

{

"queryasyncjobresultresponse": {

"jobid": 123294,

"jobprocstatus": 0,

"jobresult": {

"virtualmachine": {

~略~

"jobresultcode": 0,

"jobresulttype": "object",

"jobstatus": 1

}

}

hbstudy#41×IDCF クラウドハンズオン

12 / 24

Done.

4) /etc/hosts に名前登録

作業用 VMの hosts に今作成した仮想マシンの名前を「monitor」として登録します。

※以降の手順では、IPアドレスではなく「monitor」という名前を使います

【~/fabfile.py】

def setup_hosts(ip=None,host_name=None):

print ip

print host_name

if ip and host_name:

append("/etc/hosts",

["{0} {1}".format(ip,host_name)],

use_sudo=True)

Fabric を実行します。IPアドレスは、今作成された仮想マシンの IPアドレスに変更してください。

# fab -H localhost setup_hosts:ip=10.1.2.124,host_name=monitor

hbstudy#41×IDCF クラウドハンズオン

13 / 24

5. 作成した仮想マシンを Fabric からセットアップしてみる

1) ユーザー追加

作成した仮想マシンに、ユーザー:devops を作成し、sudo の実行権限設定をします。

【~/fabfile.py】

SUDOERS = "devops"

def setup_sudoers(user=SUDOERS):

run("""

useradd {user}

usermod -a -G wheel {user}

mkdir -p -m 700 /home/{user}/.ssh

cp /root/.ssh/authorized_keys /home/{user}/.ssh/

chown -R {user}:{user} /home/{user}

chmod 600 /home/{user}/.ssh/authorized_keys

""".format(user=user))

uncomment("/etc/pam.d/su",r"auth\s+sufficient\s+pam_wheel.so\s+trust use_uid")

uncomment("/etc/sudoers",r"%wheel\sALL=\(ALL\)\s+NOPASSWD:\sALL")

Fabric を実行します。devops ユーザーで SSHログインできれば成功。

# fab -H monitor setup_sudoers

[monitor] Executing task 'setup_sudoers'

~略~

Done.

Disconnecting from monitor... done.

# ssh devops@monitor

~略~

[devops@ホスト名 ~]$

[devops@ホスト名 ~]$ exit

#

2) sshd設定

作成した仮想マシンに、sshd の設定をします。root ログイン禁止、空のパスワード禁止。

hbstudy#41×IDCF クラウドハンズオン

14 / 24

【~/fabfile.py】

def sshd_config(user=SUDOERS):

comment("/etc/ssh/sshd_config",r"^PermitRootLogin yes")

uncomment("/etc/ssh/sshd_config",r"PermitEmptyPasswords no")

append("/etc/ssh/sshd_config",

["PermitRootLogin no",

"AllowUsers {0}".format(user)])

run("service sshd restart")

Fabric を実行します。実際にログインして確認しても OK。

失敗して二度とログインできなくなったら仮想マシンを再作成!

# fab -H monitor sshd_config

[monitor] Executing task 'sshd_config'

~略~

[monitor] out: sshd を起動中: [ OK ]

[monitor] out:

[monitor] out:

Done.

Disconnecting from monitor... done.

3) /etc/hosts に名前登録

作成した仮想マシンの hosts にデータ格納先(Redis)サーバを「redis-server」として登録します。

Fabric は先ほど作ったものを利用します。

※IPアドレスは、作業用 VM の IPアドレスに変更してください。

# ifconfig eth0

~略~

# fab -u devops -H monitor setup_hosts:ip=10.1.1.94,host_name=redis-server

[monitor] Executing task 'setup_hosts'

10.1.2.23

redis-server

[monitor] sudo: echo '10.1.2.23 redis-server' >> /etc/hosts

Done.

Disconnecting from monitor... done.

hbstudy#41×IDCF クラウドハンズオン

15 / 24

4) Redis のクライアントをインストール

Redis のパッケージをインストールするのみです。

【~/fabfile.py】

def setup_redis_cli():

setup_repo_epel()

sudo("""

yum -y install redis

""")

# fab -u devops -H monitor setup_redis_cli

[monitor] Executing task 'setup_hosts'

~略~

Done.

Disconnecting from monitor... done.

5) コンテンツを設置

Python CGI をコンテンツとして作成します。

今回はホスト名を表示するだけ。

【~/hello_py.cgi】※http://repo.cloud.idc.jp/Tmp/hello_py.cgi に置いてます

#!/usr/bin/python

# -*- coding: utf-8 -*-

html = '''

<HTML>

<HEAD>

<TITLE>test</TITLE>

</HEAD>

<BODY>

<HR>

<DIV ALIGN="center">

<H1>%s</H1>

<HR>

</DIV>

</BODY>

hbstudy#41×IDCF クラウドハンズオン

16 / 24

</HTML>

'''

import socket

name = socket.gethostname()

print html % name

今作成したコンテンツを、サーバーにアップロードします。

【~/fabfile.py】

from fabric.operations import *

def setup_cgi():

sudo("""

yum -y install httpd

chkconfig httpd on

service httpd start

""")

put("~/hello_py.cgi","/var/www/cgi-bin/hello_py.cgi",use_sudo=True)

sudo("chmod 755 /var/www/cgi-bin/hello_py.cgi")

run("curl -s http://localhost/cgi-bin/hello_py.cgi | sed -e 's/<[^>]*>//g'")

# fab -u devops -H monitor setup_cgi

~略~

[monitor] out: i-1063-23685-VM

[monitor] out:

Done.

Disconnecting from monitor... done.

hbstudy#41×IDCF クラウドハンズオン

17 / 24

6) Monit インストール

WEB サーバの負荷状況は monit から監視します。

まず、Monitの監視設定を作成します。

1 分のロードアベレージが 2を超えたら、Redisにプッシュします。

【~/loadavg.rc】

check system loadavg

if loadavg (1min) > 2 then exec "/usr/bin/redis-cli -h %(redis_server)s rpush

scale:%(scale_group)s:up %(host_name)s"

※2行目の if からは 1行で書いてください

次に Monitをインストールする Fabfileを作成します。

【~/fabfile.py】

def hostname():

return run("hostname")

def setup_monit():

setup_repo_epel()

sudo("""

yum -y install monit

""")

upload_template("loadavg.rc","/etc/monit.d",use_sudo=True,backup=False,

context=dict(redis_server="redis-server",

host_name=hostname(),

scale_group=SCALE_GROUP))

sudo("""

chkconfig monit on

service monit restart

""")

Fabric を実行します。Monit のサービスが起動できれば成功。

# fab -u devops -H monitor setup_monit

~略~

[monitor] out: monit を起動中: monit: generated unique Monit id ~ and stored to

'/root/.monit.id'

[monitor] out: [ OK ]

hbstudy#41×IDCF クラウドハンズオン

18 / 24

Done.

Disconnecting from monitor... done.

7) Web 公開

ポータルサイトで HTTP をロードバランシング設定し公開します。

「リソース」>「ネットワーク」>「ロードバランサー」にて、80番のルールを作成し、作成した

サーバを分散先として登録します。

※ロードバランサー設定については、エントリーガイド(pp.32)を参照してください

http://【公開 IP アドレス】/cgi-bin/hello_py.cgi

へ接続し動作確認。

hbstudy#41×IDCF クラウドハンズオン

19 / 24

6. 自動でスケールアウトしてみる

1) cronスクリプト設置

Redis の状態を見て、スケールアウトさせるスクリプトを設置します。

まず、スクリプトの中で実行する、稼働中の VMの数える Fabricを作成します。

【~/fabfile.py】

def count_idcf_vms():

with hide('running', 'stdout', 'stderr'):

resp = local("""

idcf-compute-api listVirtualMachines --state Running

""",capture=True)

retval = json.loads(resp,'UTF-8')

ret = retval["listvirtualmachinesresponse"]

count = ret["count"]

print count

動作を確認します。

# fab -u devops -H monitor count_idcf_vms

[monitor] Executing task 'count_idcf_vms'

2

Done.

スケールを制御するスクリプトを設置します。

【~/scale.sh】※http://repo.cloud.idc.jp/Tmp/scale.sh に置いてます

#!/bin/bash

queue="scale:sclgrp:up"

lock_key="scale:sclgrp:lock"

incrd_key="scale:sclgrp:incrd"

path="`dirname $0`"

log_file="scale.log"

log() {

echo [`date`] $1 >> ${path}/${log_file}

hbstudy#41×IDCF クラウドハンズオン

20 / 24

}

log "-------------------------"

queue_count=$(redis-cli llen $queue | awk '{print $1}')

log "queue_count: $queue_count"

if [ $queue_count -gt 0 ]; then

vm_name=$(redis-cli lpop $queue | awk '{print $1}')

log "queued by: $vm_name"

locked=$(redis-cli get $lock_key | awk '{print $1}')

incrd=$(redis-cli get $incrd_key | awk '{print $1}')

if [ -z "$locked" ]; then

locked=0

fi

if [ -z "$incrd" ]; then

incrd=0

fi

log "locked: $locked"

log "incrd: $incrd"

vm_count=$(fab -f ~/fabfile.py -H localhost count_idcf_vms | awk 'NR==2 {print $0}')

log "vm_count: $vm_count"

if [ $locked -lt 1 ]; then

redis-cli incr $lock_key

redis-cli incr $incrd_key

fab -f ~/fabfile.py -H localhost setup_idcf_vm:displayname=scale_$incrd

redis-cli set $lock_key 0

redis-cli del $queue

else

log "not deploying new vm"

fi

fi

# cd ~

# chmod +x scale.sh

# crontab –e

*/3 * * * * /root/scale.sh

hbstudy#41×IDCF クラウドハンズオン

21 / 24

2) 負荷をかけます

stress コマンドで負荷をかけます。

【~/fabfile.py】

def setup_stress():

sudo("yum -y install stress")

def do_stress():

run("stress --cpu 8 --timeout 10m")

stress コマンドをインストール後、実行します。

# fab -u devops -H monitor setup_stress

# fab -u devops -H monitor do_stress

以上で、負荷がかかり始め、数分で VMが作成されるはずです。ポータルサイトをご覧ください。

VM が作られるまでの過程を確認するには、monitor サーバーで Monitの動作を確認。

SSH で別セッションを張ってみてください。

[devops@ホスト名 ~]$ tail -f /var/log/monit

[JST Dec 6 16:11:33] error : 'loadavg' loadavg(1min) of 3.5 matches resource limit

[loadavg(1min)>2.0]

[JST Dec 6 16:11:33] info : 'loadavg' exec: /usr/bin/redis-cli

redis-serverでスケールスクリプトの動作を確認。

# tail -f ~/scale.log

[Thu Dec 6 18:34:01 JST 2012] -------------------------

[Thu Dec 6 18:34:01 JST 2012] queue_count: 0

[Thu Dec 6 18:35:01 JST 2012] -------------------------

[Thu Dec 6 18:35:01 JST 2012] queue_count: 1

[Thu Dec 6 18:35:01 JST 2012] queued by: i-1063-16861-VM

[Thu Dec 6 18:35:01 JST 2012] locked: 0

[Thu Dec 6 18:35:01 JST 2012] incrd: 0

[Thu Dec 6 18:35:02 JST 2012] vm_count: 2

ポータルから scale_0 という仮想マシンができていることを確認してください。

作成されていれば成功。

hbstudy#41×IDCF クラウドハンズオン

22 / 24

7. [Appendix]ロードバランサーに自動追加

時間が余ればこちらもお試しください。

自動で作成された仮想マシンが、自動でロードバランサーに組み込まれるところを作ります。

ポータルから設定したロードバランサーのルール ID を確認します。

# idcf-compute-api listLoadBalancerRules

{

"listloadbalancerrulesresponse": {

"count": 1,

"loadbalancerrule": [

{

"account": "hbstudy1",

"algorithm": "roundrobin",

"cidrlist": "",

"domain": "70000001277",

"domainid": 1278,

"id": 42849,

以下略

ロードバランサーに追加する Fabric を作成します。

【~/fabfile.py】

def add_balancing_server(vmid):

resp = local("""

idcf-compute-api assignToLoadBalancerRule\

--id {id} \

--virtualmachineids {virtualmachineids}

""".format(id="42849", #your ID of the load balancer rule

virtualmachineids=vmid),capture=True)

print resp

※ルールの ID は先に確認したものに置き換えてください。

hbstudy#41×IDCF クラウドハンズオン

23 / 24

スケールスクリプトを修正します。(赤字のところを追記)

【~/scale.sh】※http://repo.cloud.idc.jp/Tmp/scale2.sh に置いてます

#!/bin/bash

queue="scale:sclgrp:up"

lock_key="scale:sclgrp:lock"

incrd_key="scale:sclgrp:incrd"

path="`dirname $0`"

log_file="scale.log"

log() {

echo [`date`] $1 >> ${path}/${log_file}

}

log "-------------------------"

queue_count=$(redis-cli llen $queue | awk '{print $1}')

log "queue_count: $queue_count"

if [ $queue_count -gt 0 ]; then

vm_name=$(redis-cli lpop $queue | awk '{print $1}')

log "queued by: $vm_name"

locked=$(redis-cli get $lock_key | awk '{print $1}')

incrd=$(redis-cli get $incrd_key | awk '{print $1}')

if [ -z "$locked" ]; then

locked=0

fi

if [ -z "$incrd" ]; then

incrd=0

fi

log "locked: $locked"

log "incrd: $incrd"

vm_count=$(fab -f ~/fabfile.py -H localhost count_idcf_vms | awk 'NR==2 {print $0}')

log "vm_count: $vm_count"

if [ $locked -lt 1 ]; then

redis-cli incr $lock_key

redis-cli incr $incrd_key

# fab -f ~/fabfile.py -H localhost setup_idcf_vm:displayname=scale_$incrd

hbstudy#41×IDCF クラウドハンズオン

24 / 24

vm_id=$(fab -f ~/fabfile.py -H localhost setup_idcf_vm:displayname=scale_$incrd |

grep "__vmid__" | cut -d',' -f2)

fab -f ~/fabfile.py -H localhost add_balancing_server:vmid=$vm_id

redis-cli set $lock_key 0

redis-cli del $queue

else

log "not deploying new vm"

fi

fi

この後、負荷をかけて自動で作成された仮想マシンはロードバランサーに追加されます。

ポータルからロードバランサーの設定を確認してみてください。

この状態では、追加された仮想マシンでは httpdが動おらず、ヘルスチェックに失敗するので HTTP

の通信は分散されません。

httpd のインストール、コンテンツのアップロードが必要です。

まだ時間が余っている人は考えてみてはいかがでしょうか。。。。

ここまでの fabfile は以下の URLに置いています。

http://repo.cloud.idc.jp/Tmp/fabfile.py