Alibaba Cloud Server Load Balancer で Sorry Page を構成する

前の記事でこのブログを提供する Web サーバの前段に Alibaba Cloud Server Load Balancer を導入しました。 Load Balancer を導入した目的は2つあり、1つ目が SSL 処理の offload 、2つ目は Web サーバの不具合時の Sorry Page の表示です。 今回は、Sorry Page に関する話となります。

事前に調べなかった私も悪いのですが、 Alibaba Cloud Server Load Balancer の設定画面から Sorry Page に関する設定が見つかりません。 Document Center も見ていますが、見つかりません。 Sorry Page の機能を持っていない可能性があります。 ただ、Server Load Balancer としてすべての Backend サーバが停止していれば何かしらのメッセージをクライアントに返すはずです。 まずはそこから確認してみます。

まずは動作の挙動の確認のために Apache を停止します。

https://bigriver.jp にアクセスします。 502 Bad Gateway の応答が Server Load Balancer から返ってくることが確認出来ました。

やりたいことはこの 502 Bad Gateway のメッセージを人間が見てわかりやすいメッセージに変えることです。 もう一度、Document Center や Internet 上の情報を探しますが Backend Server がすべて停止している場合のメッセージを変更する方法が見つかりません。

仮に Alibaba Cloud Server Load Balancer が Sorry Page の機能を利用できないとすると、解決策は以下の2つとなりそうです。

  1. Backend Server を1台追加する。 Active/Standby を構成し、Standby 側で Sorry Page を構成する。
  2. Global Traffic Manager で Sorry Page を構成する(出来るかどうかの調査から)

1つ目の方法は簡単ですが、Sorry Page だけのために ECS インスタンスを1台追加するのもちょっとどうかと思います。 コスト的には 1vCPU、0.5GBの t5 インスタンスで 5.430 USD / Month です。

本当は OSS にシンプルな html ファイルをおいて、OSS を Backend に出来ればそれで済む話です。 ただ、Server Load Balancer から OSS を Backend に指定することは出来ないようです(Backend の指定の画面では ECS インスタンスしかリストされない)。 あとは OSS 同様に安価に実装できる Simple Application Server や Function Compute などが Backend に指定出来ても良いのですが難しそうです。

2つ目の Global Traffic Manager を利用する方法ですが、こちらも Document Center を見る限りは Sorry Page の機能は持っていなそうです。 まあ、それもも含めて実際にインスタンスを購入し試してみるアリです。

今回のまとめとしては、 Alibaba Cloud Server Load Balancer では Backend サーバーが全て停止している際のメッセージを変更することが出来ない可能性が高いこと、有効な Backend が存在しない場合にクライアントに返すメッセージは 502 Bad Gateway になるということでした。

以上