サーバ負荷分散の役割
コマンドの前にサーバ負荷分散の必要性について説明します。
そんなこと分かっているという方は読み飛ばしてください。
サーバ負荷分散は、特定の処理を2台のサーバで一緒にやるという事になります。
これのメリットは1台が壊れてももう1台が動いていれば処理が途切れる事がありません。
また、大量に処理が来ても2台なので処理しきれます。
具体的にどうやっているかというと、間に負荷分散ができる装置が入って処理を振り分けます。
今回はIPCOMに処理の振り分けをやる設定の説明になります。
IPCOMで処理の振り分けを行うイメージ
ニュースサイトにはサーバAとサーバBがあります。
IPCOMをサーバXという名前にしてインターネットに公開しているとします。
2台のクライアントから同時にリクエストが出たとします。
サーバXさん。ニュースを見たいです。
サーバXさん。ニュースを見たいです。
サーバXとなっているIPCOMは2つのリクエストを2台のサーバに振り分けます。
クライアントAの処理はサーバAお願いします。
クライアントBの処理はサーバBお願いします。
わかりました。
クライアントAにニュースを送ります。
わかりました。
クライアントBにニュースを送ります。
ありがとう。見れました。
ありがとう。見れました。
このように、IPCOMは複数のサーバの代表になることで一度リクエストを受け取り、実際のサーバに振り分けます。
設定コマンド
負荷分散の設定コマンドはIPCOMログイン後に、管理モード、設定モード、設定の読み込みを行った後に入力できます。
IPCOM>admin
Password:xxxx←表示はされませんがここでadminのパスワードを入力
IPCOM#configure ←設定モードに変更
IPCOM(config)#load running-config ←実行中の設定を読み込み
IPCOM(edit)#←この状態で入力していきます。
一番シンプルな設定コマンドはこちらになります。
①実際のサーバを2台設定する IPCOM(edit)#slb real-server 10-1-1-1 IPCOM(edit-slb-real)# distribution-address 10.1.1.1 IPCOM(edit-slb-real)# exit IPCOM(edit)#slb real-server 10-1-1-2 IPCOM(edit-slb-real)# distribution-address 10.1.1.2 IPCOM(edit-slb-real)# exit ②代表IPを設定して実際のサーバを紐づける IPCOM(edit)#slb-rule 100 IPCOM(edit-slb-rule)# virtual-server 10.1.1.100 80/tcp IPCOM(edit-slb-rule)# distribution-rule 100 IPCOM(edit-dist-rule)# monitor level ping IPCOM(edit-dist-rule)# real-server 10-1-1-1 IPCOM(edit-dist-rule-real)# exit IPCOM(edit-dist-rule)# real-server 10-1-1-2 IPCOM(edit-dist-rule-real)# exit
この設定を行うと宛先10.1.1.100 80のパケットは下記どちらかへ転送されます。
- 10.1.1.1
- 10.1.1.2
上の例は単純な設定の場合ですが、実際には下記項目を指定します。
- 振り分ける方法
- 稼働確認と停止時の動き
- 復旧時の動き
振り分ける方法
デフォルトでは実際のサーバがAとBの2台あればA→B→A→Bと、順番に振り分けを行います。
デフォルトで入っているコマンド
distribution-mode round-robin
実際にはこの赤色線の部分に入っています。
IPCOM(edit)#slb-rule 100
IPCOM(edit-slb-rule)# virtual-server 10.1.1.100 80/tcp
IPCOM(edit-slb-rule)# distribution-rule 100
IPCOM(edit-dist-rule)# distribution-mode round-robin
デフォルトから変更したい場合は振り分け方法によってコマンドを決めます。
AとBのうちAに80%、Bに20%で振り分けたい場合。
distribution-mode weighted-round-robin real-server 10-1-1-1 weight 80 exit real-server 10-1-1-2 weight 20 exit
赤線で振り分け比率を変える事を宣言して、青線でそれぞれの比率を指定します。
コネクションの少ないほうに振り分けたい場合。
distribution-mode minimum-connection
AとBにそれぞれ振り分けていてもBに接続しているクライアントが先に接続を終了していくと、Bは処理がなくなります。
そうなった時に順番としてはAだとしてもコネクションの少ないBに振り分けるので負荷が均等になります。
稼働確認と停止時の動き
サーバが動いているかチェックする方法を指定します。
例では赤線の部分で指定しています。
この指定は実際のサーバに対してPingを実行して動いているかチェックします。
IPCOM(edit)#slb-rule 100
IPCOM(edit-slb-rule)# virtual-server 10.1.1.100 80/tcp
IPCOM(edit-slb-rule)# distribution-rule 100
IPCOM(edit-dist-rule)# monitor level ping
Pingの他にポートでもチェックできます。
ポートをチェックする事を指定して、その後にエラーだった場合の動作を書きます。
IPCOM(edit)#slb-rule 100 IPCOM(edit-slb-rule)# virtual-server 10.1.1.100 80/tcp IPCOM(edit-slb-rule)# distribution-rule 100 IPCOM(edit-dist-rule)# monitor level port IPCOM(edit-dist-rule)# error-action tcp reset
この例だと故障したサーバへ接続していたクライアントにセッションのリセットを通知します。
これによってクライアントはリアルタイムで接続失敗になるので、もう一度接続を試して故障していない方のサーバに振り分けられて通信ができるようになります。
復旧時の動き
デフォルトでは停止したサーバが復旧すると自動的に負荷分散の対象になって処理を開始します。
デフォルトで入っているコマンド
recovery-action switch-back
実際にはこの赤色線の部分に入っています。
IPCOM(edit)#slb-rule 100
IPCOM(edit-slb-rule)# virtual-server 10.1.1.100 80/tcp
IPCOM(edit-slb-rule)# distribution-rule 100
IPCOM(edit-dist-rule)# distribution-mode round-robin
IPCOM(edit-dist-rule)# recovery-action switch-back
自動復旧のほうが機能的だと思うかもしれませんが、リクエストを受けるとエラーになって再起動してしまう問題が発生したとします。
そんな時自動復旧だと完全に治ってないのにリクエストを受け付けるが、また停止していまう。と言う事になってしまいます。
それを回避するには事前に自動復旧しないように設定しておきます。
復旧時の処理を手動にするコマンド
recovery-action maintenance
この設定を入れると一度故障したサーバは手動で操作しないと振り分け対象になりません。
10.1.1.1が完全復旧後に振り分け対象に戻すコマンド
clear maintenance slb real-address 10.1.1.1
このコマンドは設定ではなく、復旧時に直接実行する必要があります。
設定を保存する
設定が終わったら保存しましょう。
保存するコマンド
IPCOM(edit)#save Do you overwrite "running-config" by the current configuration? (y|[n]):y ←yを入力 Do you update "startup-config" for the restarting system? (y|[n]):y ←yを入力
この表示が出ればOK
The configuration was committed and saved to startup-config.
編集モードを終了しておきます。
IPCOM(edit)#end
クラスター(装置冗長化)の場合は同期コマンドも実行します。
IPCOM#sync cluster Thes System:primary primary ("設定日の日付") -> secondary("前回設定日の日付") Are you sure? (y|[n]):y ←yを入力
同期処理のログが沢山出力されますが、
最後にこの表示が出ればOKです。
[INFO]The synchronization was completed.
確認コマンド
現在のサーバ状態確認コマンド
show slb status detail
結果
slb-rule=100 vip=10.1.1.100 dist-rule=100 dist-mode=round-robin 10-1-1-1(10.1.1.1)/type:primary backup-priority:-- action state:up 80/tcp:up operation state:active shift time to maintenance: connection:10 10-1-1-2(10.1.1.2)/type:primary backup-priority:-- action state:up 80/tcp:up operation state:active shift time to maintenance: connection:10
例で設定したサーバ名2つとその稼働確認のポートがアップしていて正常だということが確認できます。
統計情報の確認コマンド
show slb statistics distribution all
結果
slb-rule=100 vip=10.0.0.100 vport=80/tcp --------------------- dist-rule class-map real mode now peak peak time --------------------- 100 10-1-1-1(10.1.1.1) current-connection 10 10 2022/05/23(Mon)00:00:00 total-connection 10 -- ----/--/--(---)--:--:-- <中省略> 100 10-1-1-2(10.1.1.2) current-connection 10 10 2022/05/23(Mon)00:00:00 total-connection 10 -- ----/--/--(---)--:--:-- <以下省略>
currentは現在接続している数で、
totalは今まで合計値です。
他にも情報が沢山出てきますが、上2つを覚えておけば確認には困らないと思います。
IPCOMの確認コマンドをまとめた記事もあります。
ネットワークはどうやって覚える?
ネットワークといっても基本用語が分からないと都度ネットで調べたりして時間がかかってしまいます。基礎から学ぶと実際のネットワークを見た時に、その構成の理由を理解できるようになります。
無料でやるならネット上の学習サイトを参考にするといいです。
こちらはネットワークの基礎から説明している無料のWEBサイトになります。
>>基礎から学べるWEBサイトを見てみる
実際に使われるコマンドなど実戦形式で覚えたい方はCCNAの学習をおススメします。
私もこのWEBサイトで勉強して資格を取りました。
>>CCNA学習用WEBサイトを見てみる
過去にネットでの学習でつまずいた方には専門書をオススメします。
本なら基礎から学べる事はもちろん、読者視点で分かりやすい解説になっています。
一人で集中してコツコツ進めたい方は書籍を試してください。
本ではわからない所が多すぎたり、誰かに質問したい場合はオンラインスクールを見てみましょう。
カウンセリングから目的に応じた学習プランと教材を提供してくれるので、ネットワークを覚える敷居がとても低くなります。
誰かに相談できるのは心強いです。
>>ネットワークの基本資格CCNAのオンラインスクールを見てみる
まとめ
今回はIPCOMを代表サーバに設定して、実際のサーバに振り分けるサーバ負荷分散の設定コマンドについて説明しました。
サーバ負荷分散はネットワークで必ず使われる機能なので、稼働確認や復旧時の動作がどうなっているかは押さえておきましょう。