本記事について
本記事では、A10ネットワークス社のロードバランサ製品である Thunder シリーズについて、ロードバランサ機能の基礎知識及び基本設定方法を説明します。
本記事では以下のような内容を含んでいます。
- ロードバランサ利用時のネットワーク構成パターン
- ロードバランサと仮想サーバ
- ロードバランサ機能の設定構造
- ロードバランサ機能の設定方法
- ロードバランサ機能の状態確認方法
動作確認環境
本記事は以下の環境にて動作確認した結果に基づいて作成されています。
- A10 vThunder
- version 5.2.1-P11
ロードバランサ利用時のネットワーク構成パターン
ロードバランサを利用する場合のネットワーク構成として、以下の2パターンがあります。
- インライン構成
- ワンアーム構成
インライン構成
インライン構成とは、以下図のように端末とサーバ間の通信経路上にロードバランサを配置するような構成です。この構成では通信経路が分かりやすいといった点があります。
ワンアーム構成
ワンアーム構成とは、以下図のようにロードバランサを端末とサーバ間の通信経路から枝分かれさせるような形でロードバランサを配置する構成です。この構成ではロードバランサが使用するポート数が1つで済むといった点がありますが、通信経路が複雑になるという点もあります。
通信経路に関する注意点
ロードバランサを介したサーバへの通信に対するサーバからの戻りの通信は必ずロードバランサを通る経路でなければなりません。サーバから直接接続元に戻り通信があった場合、接続元端末では当該戻り通信についてはアクセス時の宛先アドレスと異なるアドレスからの通信に見えるため、通信エラーとなります。
特に、ワンアーム構成の場合はサーバのルーティング設定次第で戻りの通信がロードバランサを通らない場合が発生し得るため、ルーティング設定には注意が必要です。
ロードバランサ機能では仮想サーバを利用する
A10 Thunder でロードバランサ機能を利用する場合、A10 Thunder 上に仮想サーバを構築することになります。仮想サーバはバーチャル IP (VIP) を持ち、ユーザからの通信を受け付けることになります。サーバを利用するユーザには、実際のサーバのアドレスではなく、仮想サーバのアドレスをサーバのアドレスとして案内します。ユーザは案内された仮想サーバのアドレス宛に通信するためロードバランサを介してサーバと通信することになります。
ロードバランサ機能の設定構造
ロードバランサ機能の設定は主に以下の3要素から構成されます。
- リアルサーバ
- サービスを提供する実際のサーバのアドレスとサービスポートを示す設定です
- サービスグループ
- サービスを提供するサーバとサービスポートの組のリストです
- サーバのプールに該当します
- 仮想サーバ
- サービスユーザからのアクセスを受け付けます
- 仮想サーバにサービスグループを紐づける設定を行います
①②③の各要素に細かいオプション設定がありますが、基本的な設定構造としては「①リアルサーバ」を「②サービスグループ」で参照し、「②サービスグループ」を「③仮想サーバ」で参照する形で設定します。
ロードバランサ機能の設定方法
ここでは各設定要素について、オプション設定は無視して最低限の設定のみを行う場合の設定方法について説明します。
リアルサーバの設定方法
ロードバランサ機能の設定を行うためにはまずリアルサーバの設定を行います。リアルサーバの設定は以下の構文で設定します。
slb server <サーバ設定名> <サーバのIPアドレス>
port <ポート番号> <プロトコル(tcpまたはudp)>
※port は複数設定可能
例えば IP アドレスが 10.1.1.10、ポートが 53/TCP、53/UDP の2つの場合の設定は以下のようになります。
slb server SampleServer 10.1.1.10
port 53 tcp
port 53 udp
サービスグループの設定方法
リアルサーバの設定ができたら次はリアルサーバをまとめたリストであるサービスグループを設定します。
slb service-group <サービスグループ設定名> <プロトコル(tcpまたはudp)>
member <サーバ設定名> <ポート番号>
※port は複数設定可能
例えばポートが 53/UDP のリアルサーバ SampleServer1、SampleServer2 を含むサービスグループの設定は以下のようになります。
slb service-group SampleServiceGroup udp
member SampleServer1 53
member SampleServer2 53
仮想サーバの設定方法
サービスグループの設定までできたら最後に仮想サーバを設定します。
slb virtual-server <仮想サーバ設定名> <仮想 IP アドレス>
port <仮想サーバの受付ポート番号> <プロトコル>
service-group <サービスグループ名>
※port は複数設定可能
例えば仮想 IP アドレスが 192.168.200.100、受付ポート番号が 53/UDP、サービスグループが SampleServiceGroup の仮想サーバの設定は以下のようになります。
slb virtual-server VirtualDNSServer 192.168.200.100
port 53 udp
service-group SampleServiceGroup
なお仮想サーバの待ち受けポート番号は、サービスグループに含まれるリアルサーバのポート番号と異なる番号にすることもできます。
また port 設定で指定できるプロトコルについては最もシンプルな L4 レベルでのロードバランスを行う場合は tcp または udp を指定することになります。ここでは詳しく説明しませんが、Web 通信を対象にして HTTP ヘッダ操作をしたい場合は http や https を、SSL オフロードを行いたい場合は https を設定します。このほかにも様々なプロトコルを設定することが可能です。
ロードバランサ機能の設定例
ここでは以下のネットワーク構成を想定して、2台のHTTPサーバで L4 レベルのロードバランスを行う場合の設定例を示します。
まずリアルサーバの設定は以下のようになります。
slb server HTTPServer01 10.1.1.10
port 80 tcp
slb server HTTPServer02 10.1.1.11
port 80 tcp
次に上のリアルサーバ2台を含むサービスグループの設定を以下のように行います。
slb service-group HTTPServerGroup tcp
member HTTPServer01 80
member HTTPServer02 80
最後に上のサービスグループを適用した仮想サーバ設定を以下のように行います。
slb virtual-server HTTPVirtualServer 192.168.200.110
port 80 tcp
service-group HTTPServerGroup
以上でロードバランサ機能の基本的な設定は完了です。
ロードバランサ機能の状態確認コマンド
ロードバランサ機能に関しては以下のような状態確認を確認コマンドを使用して行います。
- リアルサーバの状態確認コマンド
- show slb server
- サービスグループの状態確認コマンド
- show slb service-group
- 仮想サーバの状態確認コマンド
- show slb virtual-server
- ヘルスチェックの状態確認コマンド
- show health stat
show slb server では各リアルサーバのポート別状態とコネクション数やパケットの統計情報を確認できます。
vThunder#show slb server
Total Number of Servers configured: 2
Total Number of Services configured: 2
Current = Current Connections, Total = Total Connections
Fwd-pkt = Forward packets, Rev-pkt = Reverse packets
Service Current Total Fwd-pkt Rev-pkt Peak-conn State
---------------------------------------------------------------------------------------
HTTPServer01:80/tcp 0 1 7 8 0 Up
HTTPServer01: Total 0 1 7 8 0 Up
HTTPServer02:80/tcp 0 1 560 2335 0 Up
HTTPServer02: Total 0 1 560 2335 0 Up
show slb service-group では各サービスグループについて所属するサーバのサービスポートの状態とコネクション数やパケットの統計情報を確認できます。
vThunder#show slb service-group
Total Number of Service Groups configured: 1
Current = Current Connections, Total = Total Connections
Fwd-p = Forward packets, Rev-p = Reverse packets
Peak-c = Peak connections
Service Group Name
Service Current Total Fwd-p Rev-p Peak-c
-----------------------------------------------------------------------------------
*HTTPServerGroup State: All Up
HTTPServer01:80 0 1 7 8 0
HTTPServer02:80 0 1 560 2335 0
show slb virtual-server では各仮想サーバについて状態とサービスポート別にサービスグループのコネクション数やパケットの統計情報を確認できます。
vThunder#show slb virtual-server
Total Number of Virtual Services configured: 1
Virtual Server Name IP Current Total Request Response Peak
Service-Group Service connection connection packets packets connection
----------------------------------------------------------------------------------------
*HTTPVirtualServer 192.168.200.110 All Up
port 80 tcp 0 2 567 2343 0
HTTPServerGroup 80/tcp 0 2 567 2343 0
Total received conn attempts on this port: 2
show health stat では、前半でヘルスチェックの統計情報、後半で各リアルサーバの各ポート別のヘルスチェック状態を確認できます。
vThunder#show health stat
Health monitor statistics
Total run time : 5 hours 55 minutes 21 seconds
Number of burst : 0
max scan jiffie : 95
min scan jiffie : 1
average scan jiffie : 2
Opened socket : 280
Open socket failed : 0
Close socket : 278
Connect failed : 0
Send packet : 278
Send packet failed : 0
Receive packet : 278
Receive packet failed : 0
Retry times : 0
Timeout : 0
Unexpected error : 0
Conn Immediate Success : 0
Socket closed before l7 : 0
Socket closed without fd notify : 0
SSL Post Handshake Packet : 0
Timeout with Packets : 0
Configured health-check rate(/500ms) : Auto configured
Current health-check rate(/500ms) : 1
External health-check max rate(/200ms) : 2
Total number : 4
Status UP : 4
Status DOWN : 0
Status UNKN : 0
Status OTHER : 0
IP address Port Health monitor Status Cause(Up/Down) Reason(Up/Down) Retry PIN
--------------------------------------------------------------------------------------------------------------------------
10.1.1.10 default UP 11 /0 @0 ICMP Receive OK 0 0 /0 0
10.1.1.10 80 default UP 20 /0 @0 TCP Verify Connection OK 0 0 /0 0
10.1.1.11 default UP 11 /0 @0 ICMP Receive OK 0 0 /0 0
10.1.1.11 80 default UP 20 /0 @0 TCP Verify Connection OK 0 0 /0 0
ヘルスチェックについて詳しくは以下の記事を参照してください。
まとめ
- ロードバランサ利用時のネットワーク構成にはインライン構成とワンアーム構成の2パターンがある
- ロードバランサ機能では VIP を持った仮想サーバを構築する
- ロードバランサ機能の設定には、リアルサーバ、サービスグループ、仮想サーバの3要素がある
A10 Thunder の設計構築に役立つ関連記事一覧
- 基礎知識
- ロードバランサ
- ヘルスチェック
- aFleX
Amazon アフィリエイトリンク
以下は Amazon アフィリエイトリンクです。インフラエンジニアにそこそこおすすめなアイテムです。
note メンバーシップへの参加もお待ちしています!
【アフィリエイト】おすすめ WordPress テーマ【SWELL】
当サイトでは WordPress テーマとして SWELL を使用しています。以前は無料・高機能テーマとして知られる Cocoon を使用していて Cocoon も使いやすかったのですが、SWELL を使い始めてからは SWELL のほうが圧倒的に使いやすいなと思いました。そして何より読み込み速度が速い。SWELL を使い始めてから、過去の Cocoon のブログを見直したときに「あれ、こんなに表示遅かったっけ?」という感覚になりました。
また SWELL はデフォルトでもオシャレなデザインですが柔軟にカスタマイズすることもでき個性のあるサイトを作成できます。さらにブログパーツや広告タグといった再利用可能なブログの「部品」も作成することができ、ブログ作成効率も高いです。
技術ブログやアフィリエイト等での収益化を見据えたブログの作成に SWELL は最適です。初見では価格が高いなと思うと思いますが、私としては SWELL を採用して良かったしそれ以上の価値があると感じています。
ブログの新設やテーマ変更を考えている人は一度 SWELL を検討してみてください。
以下の画像リンクから詳細な情報を確認できます。
レンタルサーバーを探している人には安定性に定評のあるエックスサーバーをお勧めします。
当サイトもエックスサーバーを使用しています。WordPress のインストールも簡単にできます。
コメント