とりあえずHTTP LBとSSLを試したいという欲求のもと、試しました。
別にLBである必要はないけどやりたいからやりました。
すでに立ててたowncloudをバックエンドにします。
その時の記事はコチラ
今回の要素としてはこんな感じです。
- Google Cloud Platform
- Compute Engine
- Cloud Storage
- HTTP Load Balancer
- Docker
- Docker Compose
- Let's Encrypt
インスタンスグループ作成
バックエンドにするためにグループ作ります。
gcloud compute instance-groups unmanaged create "owncloud-group" --zone "asia-east1-a"
gcloud compute instance-groups unmanaged add-instances "owncloud-group" \
--zone "asia-east1-a" \
--instances "owncloud-1-vm"
ロードバランサーの設定
とりあえずHTTPのみ有効にしときましょう。
コマンドのっけようと思ったんだけど、LBの画面はコマンドラインの生成をしてくれないので画面のSSいれます。
もうできちゃってますけど、ロードバランサーの作成
HTTP(S) 負荷分散の設定を開始
上から順に設定していきます。
バックエンドサービス作ります。
さっき作ったインスタンスグループを入れて下さい。
あとは基本デフォルトで問題ないはず。
ヘルスチェックも80番ポートのチェックしときましょう。
パスのルールとかはとりあず全部通しとけばいいです。
カスタマイズしたい人はどうぞ。
フロントエンドの設定でとりあえずHTTPだけなので、そのまんまで良いですけど、ドメインのAレコード設定しなきゃいけないのでIPはエフェメラルじゃなくて静的IPを振ってあげましょう。
これで一旦終わり。
Let's Encrypt
証明書作りましょう。
今回は他に実行する場所もないのでowncloud動かしてるサーバ上で実行します。
更新の自動化もしちゃいます。
Certbotインストール
証明書の作成
基本は総合ポータル呼んでやれば問題なしです。
ただ、最初書いてるとおりstandalone
でやったんですがサーバ止めろと言われでもサーバ動かしてないといけなくてツラくてどうしようもなくてwebroot
にしました。
証明書作成できればいいんです。
webrootについてはこちらを見てください。
certbot-auto certonly --webroot -w WEBROOT_DIR -m MAIL_ADDRESS -d DOMAIN --agree-tos
MAIL_ADDRESS
にはドメインの管理用のメールアドレス、DOMAIN
は証明書を作成するドメインを指定してください。
これで証明書ができます。
別にこのowncloudサーバに直接インストールするわけではないので、WEBROOT_DIR
は書き込み可能な場所ならどこでもいいと思います。
/etc/letsencrypt/
に証明書吐き出されてるので後で使います。
LBの設定
LBの設定をしましょう。
まずは証明書リソースの作成
sudo gcloud compute ssl-certificates create owncloud-cert \
--certificate /etc/letsencrypt/live/DOMAIN/cert.pem \
--private-key /etc/letsencrypt/live/DOMAIN/privkey.pem \
--description "owncloud certification."
んで、LBのターゲットプロキシに証明書を設定
gcloud compute target-https-proxies create owncloud-https-lb-target-proxy \
--ssl-certificate owncloud-cert \
--url-map owncloud-http-lb
ああ、あとフロントエンドの設定もHTTPのみ設定してたんでHTTPSを追加しときましょう。
HTTPSオンリーにしてHTTPがいらなければHTTPの方は消して下さい。
証明書の更新を自動化
Let's Encryptの証明書は3ヶ月で切れるので、更新を自動化しとくといいです。
たぶんこんな感じで行けると思います。
certbot-auto renew
gcloud compute ssl-certificates update owncloud-cert \
--certificate /etc/letsencrypt/live/DOMAIN/cert.pem \
--private-key /etc/letsencrypt/live/DOMAIN/privkey.pem \
--description "owncloud certification."
更新されてなかったらgcloudも実行しないようにしといた方がいい気もする。
まとめ
HTTP LB、ほとんど使わなくても素で18ドルくらいかかります。
なので今回構築だけしてSSLのインストールして満足したので消しましたw