技術共有

lvs の DR モードと keepalive のスプリット ブレイン

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

DRモード:

lvs nat アドレス変換の 3 つのモード

DRダイレクトルートモード

トンネルモード

スケジューラは、LVS クラスタ全体で最も重要であり、NAT モードでは、リクエストの受け入れ、負荷分散アルゴリズムに従ってトラフィックの転送、およびクライアントへの応答の送信を担当します。

DR モード: スケジューラは引き続き要求を受け入れる責任を負い、負荷分散アルゴリズムに従ってトラフィックを RS に転送し、応答は RS によってクライアントに直接応答されます。

ダイレクト ルーティング ダイレクト ルーティングは、レイヤー 2 転送モードです。レイヤ 2 はデータ フレームを転送します。送信元 MAC アドレスと宛先 MAC アドレスに基づいて転送します。

データ パケットの送信元 IP と宛先 IP は変更されず、データ パケットは MAC アドレスに基づいて転送されます。

DR モードでは、LVS も仮想 IP アドレスを維持し、すべてのリクエストは第 2 層を介して転送されるため、クライアントのリクエストがスケジューラに到達すると、負荷分散アルゴリズムに従って RS が選択されます。 VIP が変更されると、サーバーの MAC アドレスが RS の MAC アドレスになり、RS はリクエストを処理した後、スケジューラを必要とせずに、メッセージ内のクライアントの送信元 MAC アドレスに基づいて応答をクライアントに直接送信できます。

1. スケジューラは VIP で構成され、VIP アドレスも RS 上で構成されます。

VIP アドレスが競合しています。スケジューラと RS は両方とも同じネットワーク セグメント上にあり、ARP 通信は LAN 全体にブロードキャストされ、すべてのデバイスが受信しているため、混乱しています。

lo のループバック応答をブロックして、本機の物理 IP アドレスのみが応答するようにする方法。

カーネルパラメータを変更します。

arp_igrone=1

システムの物理 IP アドレスのみが要求に応答します。 lo は ARP リクエストに応答しません。

2. メッセージが返されたとき、VIP アドレスはまだ存在します。クライアントはどのように応答を受け取ることができますか?

アープアナウンス=2

システムは、ARP 要求に応答するために IP パケットの送信元アドレスを使用せず、物理インターフェイスの IP アドレスを直接送信します。

ノードサーバー構成:

DRモードの実装:

nginx1 RS1 192.168.233.100

nginx2 RS2 192.168.233.110

192.168.233.200 のVIP

test1 スケジューラ 192.168.233.10

テスト2クライアント192.168.233.20

ルート追加 -host 192.168.233.100 dev lo:0

IPアドレスを192.168.233.100に設定します。

スケジューラー (test1)、クライアント (test2)、rs1 (nginx1)、rs2 (nginx2) のファイアウォールと防御メカニズムをオフにします。

  1. [root@test1 ~]# systemctl stop firewalld
  2. [root@test1 ~]# setenforce 0

スケジューラはカーネルをロードし、ipvsadm ツールをインストールします。

  1. [root@test1 ~]# modprobe ip_vs
  2. [root@test1 ~]# yum -y install ipvsadm*

VIPアドレスを作成する

  1. [root@test1 ~]# cd /etc/sysconfig/network-scripts/
  2. [root@test1 network-scripts]# vim ifcfg-ens33:0
  3. DEVICE=ens33:0
  4. ONBOOT=YES
  5. IPADDR=192.168.233.200
  6. NETMASK=255.255.255.255
  7. [root@test1 network-scripts]# ifup ens33:0

スケジューラの応答パラメータを変更する

  1. [root@test1 network-scripts]# vim /etc/sysctl.conf
  2. net.ipv4.ip_forward=0
  3. #关闭数据包转发功能
  4. net.ipv4.conf.all.send_redirects=0
  5. #禁止系统发送icmp重定向的消息
  6. net.ipv4.conf.default.send_redirects=0
  7. #禁止默认网络接口发送ICMP重定向的消息
  8. net.ipv4.conf.ens33.send_redirects=0
  9. #禁止ens33设备,禁止发送ICMP重定向消息

VIP および負荷分散アルゴリズムを指定する

  1. [root@test1 opt]# ipvsadm -C
  2. [root@test1 opt]# ipvsadm -A -t 192.168.233.200:80 -s rr
  3. #指定vip和负载均衡的算法

実サーバー指定モードとバックアップを追加

  1. [root@test1 opt]# ipvsadm -a -t 192.168.233.200:80 -r 192.168.233.100:80 -g
  2. [root@test1 opt]# ipvsadm -a -t 192.168.233.200:80 -r 192.168.233.110:80 -g
  3. [root@test1 opt]# ipvsadm-save /etc/sysconfig/ipvsadm
  4. [root@test1 opt]# systemctl restart ipvsadm

2 つの実サーバー (nginx1 nginx2) を構成します   

2 つのサーバーのアクセス ページを nginx1 と nginx2 に設定します。

  1. [root@nginx1 ~]# vim /usr/local/nginx/html/index.html
  2. nginx1
  3. [root@nginx1 ~]# systemctl restart nginx
  4. [root@nginx2 ~]# vim /usr/local/nginx/html/index.html
  5. nginx2
  6. [root@nginx2 ~]# systemctl restart nginx

自分で訪問してテストしてください2 つのサーバーのループバック アドレス用のループバック インターフェイスを作成します。

  1. [root@nginx1 ~]# cd /etc/sysconfig/network-scripts/
  2. [root@nginx1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
  3. [root@nginx1 network-scripts]# vim ifcfg-lo:0
  4. DEVICE=lo:0
  5. IPADDR=192.168.233.200
  6. NETMASK=255.255.255.255
  7. ONBOOT=yes
  8. [root@nginx1 network-scripts]# ifup lo:0

IP アドレスを 192.168.233.100 に設定し、lvs の VIP としてループバック インターフェイスに追加します。これは、ルーティング モードを通じて RS に転送され、VIP が実サーバーを識別できるようになります。

[root@nginx1 network-scripts]# route add -host 192.168.233.200 dev lo:0

実サーバーのカーネル応答のチューニング

  1. [root@nginx1 ~]# vim /etc/sysctl.conf
  2. net.ipv4.conf.lo.arp_ignore = 1
  3. #设置回环接口忽略来自任何接口的ARP请求
  4. net.ipv4.conf.lo.arp_announce = 2
  5. #设置回环地址仅仅公告本地的ip地址,但是不响应ARP请求
  6. net.ipv4.conf.all.arp_ignore = 1
  7. #设置所有接口忽略来自任何接口的ARP请求
  8. net.ipv4.conf.all.arp_announce = 2
  9. #设置所有接口仅仅公告本地的ip地址,但是不响应ARP请求

試験結果

lvs の 3 つの動作モード:

NAT DR タン

利点: アドレス変換パフォーマンスは WAN の中で最高であり、長距離にわたるデータ パケットの送信を実現できます。

単純な専用チャネルの構成

短所: パフォーマンスのボトルネックによりクロスネットワーク セグメントがサポートされず、VPN を開く必要がある (コストがかかる)

RS の要件: Unlimited では、非物理インターフェイスでの ARP 応答を禁止し、トンネル モードをサポートする必要があります。

RS 数量 10-20 個 100 個 100 個

面接の質問:

LV の 3 つのモードとその違いについて簡単に説明します。

面接の質問:

キープアライブのスプリット ブレインを解決するにはどうすればよいですか?

lvs クラスターの高可用性アーキテクチャは、スケジューラーの高可用性のみを目的としています。

vrrp に基づいて、メイン スケジューラーとバックアップ スケジューラーが実装されます。

高可用性 HA アーキテクチャ

メインスケジューラとバックアップスケジューラ(複数)

メインスケジューラが正常に動作している場合、スタンバイは完全な冗長状態になります(未定)。メイン スケジューラに障害が発生した場合にのみ、スタンバイがクラスタの動作に参加しません。メイン スケジューラが機能を回復した後、プライマリは引き続きクラスタへの入り口となります。スタンバイは引き続き冗長状態になります (優先度に応じて)。

Keeplive は、vrrp プロトコルに基づいた LVS 高可用性ソリューションを実装します。

1. マルチキャストアドレス:

224.0.0.18 はマルチキャスト アドレスに基づいて通信し、プライマリ デバイスとセカンダリ デバイスは相手が生存しているかどうかを判断するメッセージを送信します。

2. 優先順位に基づいてプライマリとセカンダリの位置を決定します

3. フェイルオーバー。プライマリ マシンがハングアップしても、バックアップ マシンは動作し続けます。マスター マシンが回復しても、バックアップ マシンは待機し続けます。

4. プライマリとセカンダリの切り替えは、VIP アドレスの切り替えです。

キープアライブは LVS 専用に表示されますが、LVS 専用ではありません。