バックグラウンド
前の章では、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 構成ファイルを使用して直接設定できます。このメソッド 実験的な構成。