🏐

さくらのエンハンスド LBのルール削除でハマったこと

に公開

エンハンスドLBのルールを消したらアクセスできない?

さくらのクラウドの「エンハンスドロードバランサ(エンハンスドLB)」を使っていて、「ルールを削除したらWebサーバーにアクセスできなくなった」という現象に出くわしました

設定を見直したところ、原因は サーバグループの指定が残っていたこと にありました

ルールを使っていない状態でも、サーバグループの影響を受けることを学んだので備忘録として残します


なにが起きたか?

状況は以下の通りです:

  • エンハンスドLBでWebサーバ1台にバランシング
  • 特定の送信元IPからのみアクセスできるようルールを設定していた
    特定の送信元IPからのみアクセスさせるルール
  • しばらくした後、ルールが不要になったのでルールを全て削除
    → アクセスすると「503 Service Unavailable」エラーが返ってきた

エンハンスドLBのサーバグループとは?

エンハンスドLBでは実サーバーを「サーバグループ」に所属させることができます
これはルール(振り分け)機能で使うためのもので、ロードバランシング先の実サーバを指定することができます
ルールを設定する際にはサーバーとサーバーグループを結びつける必要があります


さくらのクラウド公式マニュアル:エンハンスドロードバランサ ルール

ルール削除後もサーバグループが有効

ハマった問題はここです
エンハンスドLBの仕様として、サーバがサーバグループに所属している場合、ルールにマッチしないリクエストはそのサーバーに振り分けられません
つまり、ルールを削除しただけではダメで、実サーバの設定から「サーバグループの指定」も削除しなければなりませんでした

ルールを設定する前はサーバグループを設定しなくてもアクセスできていたので、ルール設定にサーバグループを指定したことをすっかり忘れていました

実サーバの設定時にサーバグループの欄で以下の注意書きもありました
ただ、ルールを設定するときはここは見ますが、削除するときは気付けないかもしれないです

グループが空(未指定)の実サーバはいずれのルールにもマッチしないリクエストが振り分けられます。

実サーバの設定のサーバグループ欄


対処法

対処法は2つ考えられます
複数人で管理する場合は対処法2の方がサーバグループの指定を意識しなくていいので、良いかもしれません

対処法1

ルールを削除する際は、実サーバーの編集 してサーバグループの指定を「空(未設定)」に戻す

対処法2

あらかじめ「ルールありきの構成」にしておく
実サーバを必ずサーバグループに所属させ、ルールを前提とした構成にしておけば、ルール削除時のミスが起きづらくなります


まとめ

エンハンスドLBからサーバ1台にバランシングすることは少ないかもしれませんが、開発段階や導入段階では発生しうると思います
エンハンスドLBのルール機能を使ったことがある環境では、サーバグループのことを思い出してください


参考リンク

Discussion