漢なら Google Compute Engine 10 万ノード立てて分散レイトレーシングしたいですよね!
でも GCE の標準機能だと, 同時に 16 instances までしかインスタンス起動のリクエストを発行できません… 1 バッチ 10 秒で出来たとしてもインスタンスの起動だけでも 10 sec * 100K / 16 = 62500 sec = 17 時間半もかかってしまいます…
そこで replica pool で練習してみましょう.
残念ながら replica pool はまだプレビュー版です.
Web から Replica Pool API を有効にしておきます.
以下のように gcloud cli もアップデートして機能を有効にしておきます.
$ gcloud components update preview
以下のような感じでレプリカ(インスタンス)のタイプなどを指定するテンプレートファイル my-replica-pool-template.json を作ります.
{ "template": {
"vmParams": {
"machineType": "n1-standard-1",
"baseInstanceName": "my-replica",
"disksToCreate": [{
"boot": "true",
"initializeParams": {
"sourceImage": "https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20131120",
"diskSizeGb": "10"
}
}],
"networkInterfaces": [{
"network": "default",
"accessConfigs": [{
"type": "ONE_TO_ONE_NAT",
"name": "External NAT"
}]
}]
}
}
}
Replica pools でインスタンスの起動
my-pool という名前で 100 インスタンス(100 replicas)立ててみます.
$ gcloud preview replica-pools --zone us-central1-a create --size 100 --template my-replica-pool-template.json my-pool
Replica pool my-pool is being created.
Web console で確認してみます!
あら素敵. あっというまに 100 インスタンス立ちました. 素晴らしい.
ただし現在は 500 replicas per pool, 5 Pools per project(per project?)という制約があります.
Replica pool の削除.
delete コマンドで pool 指定で replicas の一括削除ができます.
$ gcloud preview replica-pools --zone us-central1-a delete my-pool
Cool! これでインスタンス数多く立てたい日も安心ですね!
TODO
- レプリカに名前はランダムで付くようなので, 特定のレプリカ単位の操作をしたいときにどうするか?
- 外部 IP 振ると大変なことになりそうなので外部 IP 振らなくても管理できる方法を探す.