記事のディレクトリ
LVSの基礎
A、LVSの基礎
1. LVSのコンセプト
効果
Linux仮想サーバ、ロードバランサは、統合コア機能は、主に、通常は(ファイアウォールの背後)のユーザアクセスなどの入り口で、4層で働いて、アリの4 SLBを高並行性と負荷分散の問題に対処するには(サーバロードバランス)は、LVS + keepalivedの認識に基づいています
プロセスへのアクセス:
CIP < - > VIP == DIP < - > RIP
LVS-関連用語:
-
VS:仮想サーバー、Directorサーバー(DS)
-
ディスパッチャ(スケジューラ)、ロードバランサ
-
RS:実サーバ(LVS)、上流のサーバー(nginxの)
-
バックエンドサーバ(haproxy)
-
CIP:クライアントのIP
-
VIP:仮想IPはVS外部ネットワークのIPを提供
-
DIP:IPネットワーク内のIPディレクターVS
-
RIP:実サーバのIP
2. LVS原則
こうした、青3、および4 LVS層がバランスとして、サーバ、および直接顧客の要求に応答する能力が、前方のバックエンドサーバへのユーザからの要求、パケットの入力など、通常のデータ・パケット・フロー、カーネル空間とユーザ空間に行くためには流れないが、パケットを変更するためのLVSは、送り出された後に
3. LVSクラスタ・タイプ
-
LVS-NAT:変更要求パケットの送信先IP、送信先IPマルチDNAT
欠点は、要求パケットと応答パケットがあまりにも多くの圧力対、対となっているということで、障害問題の一つのポイントがあります
-
LVS-DR:新しいMACアドレス操作パッケージ
のみ応答パケットは、対を介して中継局によって送信された応答メッセージを渡します。しかし、VSとRS間のルートを越えることはできません
-
LVS-TUN:元の要求のIPパケットに加えて、新しいIPヘッダに加え
あなたは全体でルーティングの問題を解決することができますが、一般的に使用されていません
-
LVS-fullnat:変更要求パケットの送信元と宛先のIP
ほとんど、特段の利点がありません
すべてのモデルはLVS先天性欠損症を解決することはできません、バックエンドサーバーをチェックし、RSを解決することはできません
クラスターツールLVS 4
-
ipvsadmの:ユーザ空間コマンドラインツール、ルール・マネージャは、クラスタサービスとRealServerを管理するために使用されます
==注意:== LVSルールがカーネルに格納され、ipvsadmの唯一の管理ツールに関係なく、インストールは正規の役割に影響を与えないかどうかの
root@z2:~# apt install ipvsadm
-
IPVS:netfilterのフックINPUT上のカーネルスペースフレームワーク
LVSを見るのLinuxカーネルサポート
root@z1:~# grep -i -A 10 "ipvs" /boot/config-4.15.0-54-generic
5. LVSスケジューリングアルゴリズム
-
静的なアルゴリズム
- RR:ラウンドロビン、世論調査
- WRR:加重RR、WRR
- SH:ソースハッシュ、セッション粘着性、ハッシュの送信元IPアドレスを実装して、同じIPアドレスからの要求に常に達成するために、セッションにバインドされた、RSの最初のピックに送られます
- DH:デスティネーションハッシュ;宛先アドレスのハッシュ、RSへの最初のラウンドロビンスケジューリング、後続の要求は、同じ宛先アドレスに送信されますが、常にRSの最初のピックに転送され、典型的な使用シナリオは、前方のシーン内のプロキシキャッシュですブロードバンド事業者:のような負荷分散、
-
動的方法:メインスケジューリングオーバーヘッド=小さい値RSが現在の各RSの負荷状態とスケジューリングアルゴリズムに従ってスケジュールします
-
LC:最小接続
長い接続されたアプリケーションのためのオーバーヘッド= activeconns * 256 + inactiveconns(小さい、ピック)最小接続スケジューリングアルゴリズムが現在接続の最小数とサーバへの新しい接続要求を割り当てることで、最小接続スケジューリングアルゴリズムが動的スケジューリング短く、それが現在アクティブなサーバロードバランシングの数でサーバに接続されていると推定され、スケジューラニーズリクエストがアボート右接続またはタイムアウト、接続マイナス1は、システムの実装、我々はまた、紹介の接続、サーバープラス1に送出されたときに、各サーバーを記録することは、接続の数を確立しているときにサーバーの値それは、サーバがスケジュールすることなく使用することができないことを示し、0です。このアルゴリズムは、次のアルゴリズムWLCとそう、重いウェイトにより、サーバーのパフォーマンスの問題、いくつかのサーバーのパフォーマンス、いくつかの貧弱なサーバーのパフォーマンス、著名なパフォーマンスを無視します
-
WLC:加重LC
デフォルトのスケジューリング方法 オーバーヘッド= /重量(activeconnsは256 + inactiveconns *)LCアルゴリズムの使用は、古いものと新しいサーバーのパフォーマンスを考慮することはできませんので、それは(小さい、誰を選びます) -
SED:最短Expection遅延
初期結合重みより高い優先オーバーヘッド=(activeconns + 1)* 256 /重量かかわらず、その重量も大きい非アクティブな接続、の、我々は要求を受信するための大きな権利サーバーを好むが、負荷は最初は空になったときの質問は、発生しますが、大規模なサーバーの重量は、すべての要求が行くだろう、非常に忙しくなりますサーバーの主要な、比較的小さな重量上記のヘア権も要求を受信していない、非常に忙しいので、次のアルゴリズムNQがありました。
-
NQ:決してキューは、
最初のラウンド均一に、その後の分散SED -
LBLC:場所に基づくLC
ダイナミックDHアルゴリズムを使用すること:フォワードプロキシが負荷状態に応じて実施キャッシュクラスタのクライアント要求パケットの宛先IPアドレスが変更されているため、ローカリティベース最低の接続は、任意のバックエンドを想定すると、主にキャッシュ・クラスタ・システムのため、スケジューリング要求パケットの宛先IPアドレスの負荷分散アルゴリズムサーバーはすべての要求は、サーバー上に実質的にバランスの取れた負荷で設計されたアルゴリズム、スケジューリング要求と同じサーバーに同じ宛先IPアドレスを扱うことができ、およびプライマリサーバのメモリキャッシュの局所性を向上させるためにヒット率、クラスタ全体システムの処理能力を調整します。
-
LBLCR:レプリケーションとLBLC
LBLCを持つ関数をコピーし、問題LBLC偏荷重を解決するため、RSの重負荷から軽負荷へコピー
-
二、ipvsadmの一般的な使用法
インストール
root@z2:~# apt install ipvsadm
結果のファイル
root@z2:~# ll /sbin/ipvsadm
-rwxr-xr-x 1 root root 68912 May 24 2019 /sbin/ipvsadm*
root@z2:~# ll /sbin/ipvsadm*
-rwxr-xr-x 1 root root 68912 May 24 2019 /sbin/ipvsadm*
-rwxr-xr-x 1 root root 573 Feb 9 2015 /sbin/ipvsadm-restore*
-rwxr-xr-x 1 root root 744 Feb 9 2015 /sbin/ipvsadm-save*
メインプログラム:/ sbinに/ ipvsadmの
ツールの保存ルール:/ sbinに/ ipvsadmの-保存
ルールリロードツール:/ sbinに/ ipvsadmの復元
/etc/ipvsadm.rules:設定ファイルを
ipvsadmのコマンド
コア機能:
クラスタサービス管理:追加、削除、変更
RSクラスタサービス管理:追加、削除、変更、ビュー
コマンド
-
ipvsadmの-A | E-仮想サービス[ -sスケジューラ] [-p [タイムアウト]] [-Mネットマスク] [-pe persistence_engine] [-b SCHED-フラグ]
リスニングVS新サービスのアドレスを追加します。サーバが複数を追加することもできます -
ipvsadmの-D仮想サービス
サービス対レコードを削除するには
-
ipvsadmの-C
カーネルテーブル対すべてのレコードをクリアします。
-
ipvsadmの-R
仮想サーバーのルールを復元
-
ipvsadmの-S [-n]
仮想サーバーのルール保存、それが読める形式のオプションを出力-R
-
ipvsadmの-a |電子仮想サービス-rサーバアドレス[オプション]
実際のバックエンドサーバのアドレスが対を聞いている追加
-
ipvsadmのは、仮想サービス-rサーバアドレスを-d
削除バックエンドサーバーのアドレスが対を聞いています
-
ipvsadmの-L | L [仮想サービス] [オプション]
すべての対のリストを表示します
-
ipvsadmの-Z [仮想サービス]
#仮想テーブルサービスカウンターは、(現在の接続数などをクリア)クリアされます
-
ipvsadmの--set TCP、UDP tcpfin
#タイムアウト値を設定します
-
ipvsadmの--startデーモン状態[-mcastインタフェースインターフェイス] [-syncid SID]
同期デーモンを起動します。彼はマスターであってもよいし、バックアップの後ろに、LVSルータマスターまたはバックアップを説明するために使用されています。VRRP機能では、この機能を使用することも可能keepalivedの。
-
ipvsadmの--stop-daemonの状態
ストップ同期デーモン
オプション
-t --tcp-service service-address #说明虚拟服务器提供的是tcp 的服务[vip:port] or [real-server-ip:port]
-u --udp-service service-address #说明虚拟服务器提供的是udp 的服务[vip:port] or [real-server-ip:port]
-f --fwmark-service fwmark #说明是经过iptables 标记过的服务类型。
-s --scheduler scheduler #使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是: wlc.
-p --persistent [timeout] #持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。
-M --netmask #子网掩码
-r --real-server server-address #真实的服务器[Real-Server:port]
-g --gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i --ipip #指定LVS 的工作模式为隧道模式
-m --masquerading #指定LVS 的工作模式为NAT 模式
-w --weight weight #真实服务器的权值
--mcast-interface interface #指定组播的同步接口
-c --connection #显示LVS 目前的连接 如:ipvsadm -L -c
--timeout #显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout
--daemon #显示同步守护进程状态
--stats #显示统计信息
--rate #显示速率信息
--sort #对虚拟服务器和真实服务器排序输出
--numeric -n #输出IP 地址和端口的数字形式
IPVS出力項目の説明
1. ipvsadmの-Ln
root@director:~# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.0.0.100:80 wrr
-> 192.168.1.104:80 Route 1 0 5
-> 192.168.1.105:80 Route 1 0 6
- フォワードフォワード、順方向電流が送られ、
- 重量重量
- ActiveConn現在アクティブな接続
- InActConnない現在アクティブな接続
2. ipvsadmの-Ln --stats
root@director:~# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 10.0.0.100:80 27 171 0 11140 0
-> 192.168.1.104:80 13 80 0 5272 0
-> 192.168.1.105:80 14 91 0 5868 0
-statsオプションは力でその記事転送ルール以来の統計です
- Conns(予定接続)接続の数を転送しました
- パケットの数へのinpkts(受信パケット)
- OutPkts(送信パケット)パケット数
- フローにInBytes(受信バイト)(バイト)
- OutBytes(送信バイト)フロー(バイト)
3. ipvsadmの-Ln --rate
root@director:~# ipvsadm -Ln --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS
-> RemoteAddress:Port
TCP 10.0.0.100:80 1 4 0 251 0
-> 192.168.1.104:80 0 2 0 109 0
-> 192.168.1.105:80 0 2 0 142 0
-rateオプションが表示レート情報にあります
- 第二のコネクタあたりのCPS(現在の接続レート)
- InPPS(パケットレートで電流)1秒あたりのパケット数
- OutPPS(現在アウトパケット速度)秒当たりのパケット数
- 第二の流れに(バイト率の電流)InBPS(バイト)
- OutBPS第二の流れに(現在アウトバイト率)(バイト)
あなたはipvsamコマンドを使用します感じるが、生産プロセスはほとんどのマシンの直接的ipvsadmの直接管理を使用していないが、実現キープアライブているが
第三に、純度のルール
ipvsadmの-保存画面に印刷されたデフォルトのルール
root@z2:~# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.20.1.102:80 rr
-> 192.168.1.103:8080 Masq 1 0 3
-> 192.168.1.104:8080 Masq 1 0 13
root@z2:~# ipvsadm-save
-A -t 10.20.1.102:http -s rr
-a -t 10.20.1.102:http -r 192.168.1.103:http-alt -m -w 1
-a -t 10.20.1.102:http -r 192.168.1.104:http-alt -m -w 1
あなたはipvsadmのセーブファイルにリダイレクトを使用して、使用することができます回復をipvsadmのを復元
root@z2:~# ipvsadm -C
root@z2:~# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
root@z2:~# ipvsadm-restore < /data/ipvs.log
root@z2:~# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.20.1.102:80 rr
-> 192.168.1.103:8080 Masq 1 0 0
-> 192.168.1.104:8080 Masq 1 0 0