【高可用性シリーズ|LVS】LVSのNATモデル詳細解説

バックグラウンド

 前の章では、LVS 全体の概念と機能を紹介しました。LVS のいくつかの重要な作業モデル (NAT、DR、TRUN) について言及しましたが、この章では、NAT の作業モデルを詳細に紹介し、一連のインフラストラクチャ実験を通じて理解を深めます。

前の章: LVS の詳細な説明

LVS NAT モデルの紹介

         NAT 経由の仮想サーバー (VS-NAT): アドレス変換を使用して仮想サーバーを実現. アドレス変換器は、外部からアクセスできる正当な IP アドレスを持ち、プライベート ネットワークからの発信パケットのアドレスを変更します.外部の世界では、パケットがアドレスから送信されたように見えます コンバーター自体、外部パケットがコンバーターに送信されると、パケットを内部ネットワークに送信する必要があるノードを決定できます. IP アドレスを保存し、偽装できるという利点があります.不利な点は、リクエスタに戻るため、効率が低いことです。データ パケットはスケジューラを通過するため、スケジューラに過度の負荷がかかります。  

 

  データ パケット フローのプロセスを上の図に示します。

(1) ユーザー要求が DirectorServer に到達すると、要求されたデータ メッセージは最初にカーネル空間の PREROUTING チェーンに到達します。このとき、メッセージの送信元 IP は CIP、宛先 IP は VIP です。

(2) PREROUTING インスペクションは、データ パケットの宛先 IP がローカル マシンであることを検出し、データ パケットを INPUT チェーンに送信します。

(3) IPVS は、データ パケットによって要求されたサービスがクラスタ サービスであるかどうかを比較し、クラスタ サービスである場合は、データ パケットのターゲット IP アドレスをバックエンド サーバの IP に変更し、データ パケットを POSTROUTING チェーンに送信します。このとき、メッセージの送信元 IP は CIP、宛先 IP は RIP であり、このプロセスで宛先 IP の変換が完了します。

(4) POSTROUTING チェーンは、ルーティングを介してデータ パケットをリアル サーバーに送信します。

(5) Real Server は、ターゲットが自身の IP であることを比較して検出し、応答メッセージの作成を開始して、それを Director Server に送り返します。このとき、メッセージの送信元 IP は RIP、宛先 IP は CIP です。

(6) Director サーバーは、クライアントに応答する前に、ソース IP アドレスを独自の VIP アドレスに変更してから、クライアントに応答します。このとき、パケットの送信元 IP は VIP、宛先 IP は CIP です。

 補充:

(1) lvs-nat の本質は、マルチターゲット IP の DNAT であり、リクエスト メッセージ内のターゲット アドレスとターゲット ポートをバックエンド リアル サーバーの IP とポートに変更します。

(2) DIP と Rip は、同じネットワーク セグメント上にあることが推奨されます (またはそうでない場合)。

(3) リクエストメッセージとそれに対応するメッセージは lvs サーバーを通過する必要があるため、lvs がアーキテクチャのボトルネックになります。

(4) リクエストメッセージの送信先ポートを変更するためのポートマッピングをサポート

(5) lvs サーバーは Linux システムである必要があり、実サーバーはどの OS システムでもかまいません。

LVS-NAT 実験 

 転送プロセス:

        1. クライアントがルーターにリクエストを送る;
        2. Linuxシステムでシミュレートされたルーターであるため、ルーターノードはIP転送機能を有効にすると同時に、iptableを介してポートマッピングを設定し、その情報をマッピングします.ルーターの 10.10.10.129 からバックエンド LVS の 192.168 .10.200 にアクセスする;
        3. lvs ノードに到着した後、lvs によって構成された LVS-NAT モデル (4 層の負荷) を介して NGinx ノードに転送する; 4.
        その後Nginxノードに到着すると、Nginxの7層の負荷分散を介してWebノードに転送します

 1. ネットワーク計画

装置 IP ゲートウェイ
クライアント 10.10.10.128/24 -
ルートリンク1 10.10.10.129/24 -
ルートリンク2 192.168.10.10/24 -
LVS-vip 192.168.10.100/24 192.168.10.10
nginx-1 192.168.10.12/24 192.168.10.100
nginx-2 192.168.10.13/24 192.168.10.100
ウェブ-1 192.168.10.15/24 -
ウェブ-2 192.168.10.16/24 -

 2.ルートノード構成

        Route ノードのルート転送を構成し、デバイス IP を構成します。実際の運用環境と組み合わせるには、ルーターでポート マッピングを有効にする必要があります。

##  由于是linux模拟的路由器,设置Route节点ip转发功能
root@Route:~# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
root@Route:~# sysctl -p


##开启端口映射
root@Route:~# iptables -t nat -A PREROUTING -d 10.10.10.129 -j DNAT --to 192.168.10.200

 

 3.LVS ノード構成

         1. ルート フォワーディングを設定する;
        2. IP アドレス、ルートを指すゲートウェイを設定する;
        3. キープアライブを設定して vip を設定する.
        4.ipvs 転送を構成する

3.1 ルート転送の構成

##  主备节点均配置

root@Lvs-Master:~#echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
root@Lvs-Master:~# sysctl -p

3.2 IP とゲートウェイの構成

 

 3.3 キープアライブの設定

###Master节点

root@Lvs-Master:~# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen
   }
   notification_email_from [email protected]
   smtp_server 192.168.65.129
   smtp_connect_timeout 30
   router_id keepalived-MASTER
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    garp_master_delay 10
    smtp_alert
    virtual_router_id 51
    priority 100
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.200
    }
    
}

##Backup节点
root@LVS-Backup:~# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen
   }
   notification_email_from [email protected]
   smtp_server 192.168.65.129
   smtp_connect_timeout 30
   router_id keepalived-MASTER
}


vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    garp_master_delay 10
    smtp_alert
    virtual_router_id 51
    priority 10
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.200
    }
}

 3.4 ipvs 転送の構成

##  主备节点均要配置
##192.168.10.12和192.168.10.13节点为后端的nginx服务器
##192.168.10.200为VIP

root@Lvs-Master:~# ipvsadm -A -t 192.168.10.200:80 -s rr
root@Lvs-Master:~# ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.12:80 -m
root@Lvs-Master:~# ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.13:80 -m

root@Lvs-Master:~# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.200:80 rr
  -> 192.168.10.12:80             Masq    1      0          0         
  -> 192.168.10.13:80             Masq    1      0          0   

4.Nginx ノード構成

         Nginx は 7 層の負荷分散を構成します!

root@proxy-1:/etc/nginx/conf.d# cat web1.conf 
upstream lvsservers {
	server 192.168.10.15:80;
	server 192.168.10.16:80;
}

server {
	listen 80;
	server_name lvs_test.com www.lvs_test.com;
	root /https;

	location / {
		proxy_pass http://lvsservers;
		include proxy_params;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}

}

 5. Web ノードを構成する

##  web1节点
root@web-1:~# cat /etc/nginx/conf.d/web.conf 
server {
	listen 80;
	server_name lvs_test.com www.lvs_test.com;

	location / {
		root /https;
		index index.html;
	}
}
root@web-1:~# cat /https/index.html 
web1
root@web-1:~#


##web2节点
root@web-2:~# cat /etc/nginx/conf.d/web.conf 
server {
	listen 80;
	server_name lvs_test.com www.lvs_test.com;

	location / {
		root /https;
		index index.html;
	}
}
root@web-2:~# cat /https/index.html 
web2
root@web-2:~#

6. テスト

 前述の keepalived の紹介で述べたように、keepalived は LVS のために生まれたため、LVS の 4 層転送を構成する場合、keepalived 構成ファイルを使用して直接設定できます。このメソッド 実験的な構成。

おすすめ

転載: blog.csdn.net/qq_43714097/article/details/126767512