1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM CloudのALBのWeighted Round Robinを使って業務時間外のSorryサーバーへの割り振りを自動化する

Last updated at Posted at 2025-05-26

やりたいこと

IBM CloudのApplication Load Balancerのロードバランシングの方式のうち、Weighted Round Robin(重み付きラウンドロビン)を利用して、ロードバランシングの比重の変更をしてみます。重みづけを0にするとそのサーバーには接続が転送されなくなるので、これを利用して、業務時間外のサーバーへのアクセスをSorry Serverに振るようにすることなどが出来ます。

IBM Cloud Docsより

重みづけしたラウンドロビン
割り当てられた重みに比例して各インスタンスに要求を転送します。 例えば、インスタンスA、B、Cがあり、それぞれの重みが60、60、30に設定されている場合、インスタンスAとBは同数の接続を受け、インスタンスCは半分の接続を受ける。

想定される利用方法

業務時間9:00-17:00はサーバーA、業務時間外17:00-9:00はサーバーB(Sorry Server)に振り分けられるよう、時刻によって割り振りの比重を変える。

検証構成・用意するリソース

スクリーンショット 2025-05-23 8.11.53.png

  • Client PC
  • Public ALB
  • VSI
    • 業務用サーバー gyomuyo-vsi
    • Sorryサーバー sorry-vsi

手順

  1. ALBをオーダー
  2. 業務サーバーを想定してwebページを作成
  3. ALBのロードバランシング設定を変える

0. 準備

ALBからの割り当て先として2台のVSIをオーダーします。またVSIにSecurity groupを設定しておきます。こちらの詳細は省略します。

1. ALBをオーダー

IBM Cloud portalを開き、Infrastructure> Network> Load balancersからALBをオーダーします。
スクリーンショット 2025-05-23 11.16.19.png

  • Location: jp-tok
  • Name: egawa-alb-kensyo
  • subnet: tok-01,tok-02
  • Type: Public
  • DNS Type: Public
  • Security group: Client PCを通すものに設定
    Back-end pool等は3で設定するので一旦空欄で作成します。

2. 業務時間にアクセスされるサーバーを想定してwebページを作成

gyomuyo-vsiを業務用サーバーと想定してwebページを準備しておきます。
Apacheをインストール

dnf -y install httpd

Apacheを起動

service httpd start

起動時にApacheも自動起動するよう設定

systemctl enable httpd 

ステータスを確認

service httpd status

webページを作成

vi /var/www/html/index.html

表示するwebページをhtmlで記述
スクリーンショット 2025-05-23 9.39.57.png
gyomuyo-vsiのIPアドレスにアクセスしてみます。
スクリーンショット 2025-05-23 9.45.05.png
同様にsorry-vsiも準備します。
スクリーンショット 2025-05-23 9.47.16.png

3. ALBのロードバランシング設定を変える

ALBのBack-end poolを作成

1でオーダーしたALBのBackend-poolを作成します。
スクリーンショット_2025-05-23_9_59_13.png
Methodは"Weighted round robin"を選択します。
その他の項目はデフォルトのままで大丈夫です。
スクリーンショット_2025-05-23_10_02_24.png
続いて、Backend-poolに含めるメンバーを追加します。
スクリーンショット_2025-05-23_10_07_02.png
もう一度Attachをクリック
スクリーンショット_2025-05-23_10_10_41.png
Backend-poolに追加するVSIを選択します。
スクリーンショット_2025-05-23_10_12_47.png
"Weight"の値で、ALBからバックエンドプールの各メンバー(サーバー)へのロードバランシングの比重を設定します。重みづけは、0 から 100 までの範囲の任意の値を用いることができます。画像の通り、各サーバーの重みはデフォルトで50になっています。たとえばこれを0にするとそのサーバーには接続が転送されなくなります。

ALBのfront-end listenerを設定

ALB画面の"front-end listeners"を選択し作成をクリックします。
Back-end poolは作成したものを選択します。listner portを80に設定し、その他の項目はデフォルトのままにします。
スクリーンショット_2025-05-23_11_24_20-2.png

Back-end poolとfront-end listenerが登録できたので、Client PCからALBのホストネームにアクセスしてみます。
スクリーンショット 2025-05-23 10.30.58.png
業務用サーバーに接続されました。何度かリロードしてみると50:50の割合で2つのサーバーにアクセスしていることがわかります。

重みづけを変えてみる

続いて、重みをUIで変えてみます。
業務用サーバーを0、Sorryサーバーを1にしてみます。
スクリーンショット_2025-05-23_10_39_31.png
Sorryサーバーにのみ振られるようになりました。
スクリーンショット 2025-05-23 10.41.50.png

重みは以下のコマンドでも変更可能です。

(例)メンバーAの重みを1、メンバーBの重みを0に設定
ibmcloud is load-balancer-pool-member-update [backend pool ID] [memberA ID] --weight 1
ibmcloud is load-balancer-pool-member-update [backend pool ID] [memberB ID] --weight 0

参照:https://cloud.ibm.com/docs/cli?topic=cli-vpc-reference&locale=ja#load-balancer-pool-member-update

backend pool IDやmember IDは以下のコマンドで取得可能です

ibmcloud is load-balancer-pool [loadbalancer ID/name] [backendpool ID/name]

参照:https://cloud.ibm.com/docs/cli?topic=cli-vpc-reference&locale=ja#load-balancer-pool-view

APIも提供されているので、APIを呼び出すスクリプトを作成することで時刻に応じたアクセスの振り分けをするよう自動化するという使い方ができます。

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?