/etc/hosts
だと複数サーバーに1個の DNS 名をつけて 負荷分散や冗長化などができないので、 proxy を挟むことにしました。 そこに letsencrypt の証明書も入れようとすると、 別途設定するのは面倒なので、 dokku-letsencrypt
が使えるように Dokku の 1 アプリとしてまとめました。
動作確認環境
Gluster + Minio 側:
- Raspbian GNU/Linux 10 (buster)
- glusterfs-server 5.5-3
- minio version RELEASE.2020-05-29T14-08-49Z
Dokku 側:
- Ubuntu 18.04.4 LTS
- dokku version 0.20.4
- dokku-postgres 1.11.5
- dokku-letsencrypt 0.9.3
dokku-proxy-to-minio
https://docs.min.io/docs/setup-nginx-proxy-with-minio.html の設定例と nginx.conf.sigil を元にして dokku-proxy-to-minio を作成しました。
proxy としての動作には必要ないのですが、 Dokku の proxy 設定を動かすために nginx:alpine
をベースイメージとして web コンテナーを動かすようにしています。
使い方
README に書いたように MINIO_SERVERS
にバックエンドの minio を設定しておきます。
今回は 前の記事 で設定した minio gateway nas
で動かしている minio を指定しています。
$ dokku apps:create proxy-to-minio
-----> Creating proxy-to-minio...
$ dokku config:set proxy-to-minio MINIO_SERVERS="minio1.example.com:9000 minio2.example.com:9000 minio3.example.com:9000"
-----> Setting config vars
MINIO_SERVERS: minio1.example.com:9000 minio2.example.com:9000 minio3.example.com:9000
-----> Restarting app proxy-to-minio
! App proxy-to-minio has not been deployed
デプロイ
普通の Dokku アプリとして git push
でデプロイします。
$ git clone https://github.com/znz/dokku-proxy-to-minio
$ git remote add dokku dokku@dokku.me:proxy-to-minio
$ git push dokku master
dokku-letsencrypt
DOKKU_LETSENCRYPT_EMAIL
を設定して証明書を作成しました。
$ dokku config:set --no-restart proxy-to-minio DOKKU_LETSENCRYPT_EMAIL=your@email.tld
$ dokku letsencrypt:auto-renew proxy-to-minio
dokku-postgres
dokku-postgresからMinioにバックアップする記事に書いたように dokku postgres:backup-deauth
で消してから登録し直しました。
Dokku のハマりどころ
CHECKS
や nginx.conf.sigil
は docker イメージの中に入れておかないと 最初にデプロイした時のものがずっと使われて変更が反映されませんでした。