負荷分散の設定

LVS(Linux Virtual Server)とは、

Linuxサーバをロードバランサとして使用するためのソフトウェア。

クライアントからの複数のリクエストをリアルサーバ(バックエンドサーバ)に

振り分ける機能を提供する。

 

※リアルサーバ:実際のサービス(http)などを提供するサーバ

※ロードバランサ:仮想サーバともいう。クライアントからのリクエストを

         代わりに受け付けて、リアルサーバに処理を割り振る。

 

LVSの主要コンポーネント

 IPVS:カーネルモジュールの【ip_vs】として実装。

 lvsd:デーモン。

 ipvsadm:LVSの管理ユーティリティ。コマンド。

 

実際の設定方法

設定する前に、

リアルサーバのデフォルトゲートウェイを仮想サーバの内側(リアルサーバ側)に設定しておくこと。

これを設定しないとリアルサーバ -> クライアントへのパケットが配送されない

 

#LVSのインストール

dnf -y install ipvsadm

#ipフォワードを設定

echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf

sysctl -p

 

#ipvsサービスの起動

touch /etc/sysconfig/ipvsadm

systemctl start ipvs.service

systemctl enable ipvs.service

#テーブルのクリア

ipvsadm -C

#-A:仮想サーバの追加 -t:TCPの指定 -s:負荷分散のスケジューリングアルゴリズムの指定
ipvsadm -A -t 192.168.1.50:80 -s wlc

#-a:仮想サーバにリアルサーバを追加 -r:リアルサーバの指定 -m:フォワーディング方式にマスカレーディング(NAT)を指定
ipvsadm -a -t 192.168.1.50:80 -r 10.0.2.11:80 -m
ipvsadm -a -t 192.168.1.50:80 -r 10.0.2.12:80 -m

#テーブルの確認

ipvsadm -l

 

 

エラー発生時

systemctl restart ipvsadm.service
Job for ipvsadm.service failed because the control process exited with error code.
See "systemctl status ipvsadm.service" and "journalctl -xe" for details.
● ipvsadm.service - Initialise the Linux Virtual Server
Loaded: loaded (/usr/lib/systemd/system/ipvsadm.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sat 2020-08-22 07:55:50 JST; 13s ago
Process: 28426 ExecStart=/bin/bash -c exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm (code=exited
Main PID: 28426 (code=exited, status=1/FAILURE)

8月 22 07:55:50 centos8-LB02 systemd[1]: Starting Initialise the Linux Virtual Server...
8月 22 07:55:50 centos8-LB02 bash[28426]: /bin/bash: /etc/sysconfig/ipvsadm: そのようなファイルやディレ
8月 22 07:55:50 centos8-LB02 systemd[1]: ipvsadm.service: Main process exited, code=exited, status=1/FA
8月 22 07:55:50 centos8-LB02 systemd[1]: ipvsadm.service: Failed with result 'exit-code'.
8月 22 07:55:50 centos8-LB02 systemd[1]: Failed to start Initialise the Linux Virtual Server.

要するに、

/etc/sysconfig/ipvsadm

上記のファイルを作成していなかった。

 

#ファイルを作成

touch /etc/sysconfig/ipvsadm

#サービスの起動

systemctl start ipvsadm.service
systemctl enable ipvsadm.service
Created symlink /etc/systemd/system/multi-user.target.wants/ipvsadm.service →
/usr/lib/systemd/system/ipvsadm.service.

 

無事に起動できた。

 

centos にある「/etc/sysconfig」というディレクトリは、

通常の設定ファイルとは別のシステムの設定ファイルが置かれている。

今回の場合は、「/etc/sysconfig/ipvs」ファイルには「ipvsサービス」起動時に

「lvsdデーモン」に引き渡す引数を記述するために使用されている。