Skip to content

isucon/isucon6-final

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ISUCON6 final

当日のレギュレーションも参照してください。

ディレクトリ構成

├── ansible      # 競技者用インスタンスのセットアップ用ansble
├── azure        # 競技者用インスタンスのdeploy to Azure
├── bench        # ベンチマーカーのソースコード
├── portal       # ポータルサイトのソースコード
├── provisioning # 運営側(portal/bench/proxy)のセットアップ用ansible
└── webapp       # 各言語の参考実装

競技者用アプリケーション

DockerだけインストールされていればOS等は問わない。

webapp 以下を競技用マシンの /home/isucon/webapp に置けばセットアップ完成。

起動方法などは webapp/README.md に書いた。

portal, bench, proxy

portalに試しにログインしたい

  • 一般アカウント
    • user: 1 pass: y8aaZLdAXAXn
  • 運営アカウント
    • user: 9999 pass: Btw5R5fskVvXOzT

編集する場合は、/portal/cmd/importteams/main.go/portal/data/teams.tsv を参照のこと

portal

最初に起動する必要がある。consulが起動している。

bench

最低1台起動している必要がある。

proxy

VM名にはproxyと含む必要がある。consulが動くために最低3台必要なので、proxyは2台以上起動する必要がある。proxyは以下のような挙動をする。

  • portalと同じconsulのクラスタの一員になる
  • proxyはセットアップ時に、portalからnginxの設定を取得して設定を反映する
  • portalは参加者のIPアドレスが変更されたら、consul event -name="nginx_reload" -node="proxy"を叩く
    • /usr/local/bin/nginx_reloadを叩く
    • 全proxyはportalからnginxの設定を取得して設定を反映する
  • proxyは投入されると、consulのクラスタにjoinする
    • /usr/local/bin/update_membersを叩く
    • portalはmemberが増えたら、portalのDBに登録して、ベンチマーカーに渡す

proxyを減らす場合は以下の手順が必要

  • 減らすインスタンス上でconsul leaveと打つ

proxy全台をconsulで操作したい

  • proxy全台のnginxを起動したい
    • consul exec -node proxy "sudo systemctl start nginx"
  • consulのイベントを発行する
    • consul event -name="nginx_reload" -node="proxy"

Azure-CLIを使う方法

install

npm install azure-cli -g

login

azure login
azure account list
azure account set <ID>

Portalデプロイ例

parameters.json
{
    "vmName":{
        "value": "isucon6f-ex-portal(change name if you want)"
    },
    "sshPublicKey": {
        "value": "ssh-rsa ...(your ssh-public-key)"
    }
}

portalが要求する変数を書いておく。

command
azure group deployment create --template-file deploy.json -e parameters.json isucon6-final-dev
  • -e
    • パラメータ設定用ファイルの指定
  • --template-file
    • テンプレートファイルの指定