長いので先に結論
結論を先に書くと、ALBはWebDAVを通してくれます。よかったですね。
素朴な疑問
AWSの新しいロードバランサ、Application Load Balancer(ALB)がリリースされました1。
プロトコル面ではWebSocketやHTTP/2のサポートなどが目新しいところですけども、果たしてWebDAVは通るんだろうか?
と云うわけで調べてみたものの、意外にも類例が見つからなかったので試してみました。
やってみた
テスト構成
今回は以下の構成でテストを行いました。
セキュリティグループ、ターゲットグループ、ACM(SSL)の設定は割愛します。
EC2インスタンスの設定
下記構成のEC2インスタンスを2つ作成し、各サブネットに1つずつ配置しました。
EC2インスタンスのOSはAmazon Linux2を使用しました。
インストールしたパッケージはhttpd24
のみです。
http24の設定ファイルには手を加えず、/etc/httpd/conf.d/webdav.conf
ファイルを作成し下記内容を追加しています。
DavLockDB /tmp/DavLock
Alias /dav/ /var/www/dav/
<Directory "/var/www/dav/">
Dav on
Options None
AllowOverride None
AuthType Basic
AuthName WebDAVoverALBTest
AuthUserFile /var/www/.htpasswd
<RequireAll>
Require valid-user
</RequireAll>
</Directory>
WebDAVのローカルディレクトリは/var/www/dav/
、HTTP上のディレクトリは/dav/
になるよう設定しています。また/healthcheck
でヘルスチェックできるようにしています。
ALBの設定
次にELBの作成に移ります。
まずはロードバランサタイプの選択から。もちろんここはALBを選びます。
SSL証明書の設定。ここでは事前にACMで作成したものを使用しました。
セキュリティグループの設定。HTTPSが開いているだけのものを事前に作成してあります。
ターゲットの登録。EC2インスタンスは事前にターゲットグループへ登録済みです。
ALBを作成しましたので、続いて「ルールの表示/編集」に移ります。
ルールを追加し、/dev/fuga/
へのアクセスは2つ目のターゲットグループへフォワードするよう設定します。
手元の環境では、上記の設定でWebDAVの読み書きが2つのEC2インスタンスに振り分けられることを確認しました。
あとがき
今どきWebDAVを採用する機会は少ないでしょうし、ましてや同一ホスト名で複数サーバに振り分ける用途がどれだけあるかは分かりませんが、参考になれば幸いです。