NginxはLVS-DRモードを構築します

1環境への準備

1.1サーバーとIPの計画

LVSサーバー
VIP(仮想IP):192.168.51.103
DIP(フォワーダーIP /イントラネットIP):192.168.51.4
2つのNginxサーバー(RealServer)
RIP(リアルIP /イントラネットIP):192.168.51.5
RIP(実際のIP /イントラネットIP):192.168.51.6

1.2NetworkManagerサービスを停止します

サーバーは仮想マシンを使用しており、停止する必要があるため、3つのサーバーは次の2行のコマンドを別々に実行しますNetworkManager。そうしないと問題が発生します。

[root@localhost network-scripts]# systemctl stop NetworkManager
[root@localhost network-scripts]# systemctl disable NetworkManager

2LVSノードとipvsadmを構成します

2.1サブインターフェイスを作成する

LVS服务器

[root@localhost network-scripts]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# ls
ifcfg-ens33      ifcfg-lo     ifdown-eth   ifdown-isdn  ifdown-routes  ifdown-TeamPort  ifup-aliases  ifup-ippp  ifup-plip   ifup-ppp     ifup-Team      ifup-wireless      network-functions-ipv6
ifdown       ifdown-ippp  ifdown-post  ifdown-sit     ifdown-tunnel    ifup-bnep     ifup-ipv6  ifup-plusb  ifup-routes  ifup-TeamPort  init.ipv6-global
ifcfg-ens33.bak  ifdown-bnep  ifdown-ipv6  ifdown-ppp   ifdown-Team    ifup             ifup-eth      ifup-isdn  ifup-post   ifup-sit     ifup-tunnel    network-functions
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:1

2.2構成ファイルを変更する

[root@localhost network-scripts]# vi ifcfg-ens33:1
BOOTPROTO=static
DEVICE=ens33:1
ONBOOT=yes
IPADDR=192.168.51.103
NETMASK=255.255.255.0

2.3構成の更新

[root@localhost network-scripts]# service network restart

2.4ipvsadmをインストールします

  • AlibabaCloudは仮想IPをサポートしていないようです。公式ウェブサイトの負荷分散を購入してください
  • TencentCloudは最大10個の仮想IPをサポートしているようです
ipvsadm -Ln

[root@localhost network-scripts]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

32つのRSの仮想IPを構成します

2台のRSマシンの構成は同じであり、次の操作を実行する必要があります两台机器上都进行操作

3.1構成のコピー

[root@localhost network-scripts]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# ls
ifcfg-ens33       ifdown-eth   ifdown-isdn  ifdown-routes  ifdown-TeamPort  ifup-aliases  ifup-ippp  ifup-plip   ifup-ppp     ifup-Team      ifup-wireless      network-functions-ipv6
ifcfg-ens33.bak  ifdown       ifdown-ippp  ifdown-post  ifdown-sit     ifdown-tunnel    ifup-bnep     ifup-ipv6  ifup-plusb  ifup-routes  ifup-TeamPort  init.ipv6-global
ifcfg-lo         ifdown-bnep  ifdown-ipv6  ifdown-ppp   ifdown-Team    ifup             ifup-eth      ifup-isdn  ifup-post   ifup-sit     ifup-tunnel    network-functions
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:1

3.2構成の変更

[root@localhost network-scripts]# vi ifcfg-lo:1
DEVICE=lo:1
IPADDR=192.168.51.103
NETMASK=255.255.255.255
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback

3.3構成の更新

方式一

[root@localhost network-scripts]# ifup lo

方式二

[root@localhost network-scripts]# service network restart

42つのRS用にarpを設定します

4.1arpの概要

ARP応答レベルと通知動作。

1.arp-ignore:ARP応答レベル(処理要求)

  • 0:マシンがipで構成されている限り、要求に応答できます
  • 1:要求されたターゲットアドレスは、要求に応答する前に、対応するネットワークインターフェイスに到達します

2. arp-announce:ARPアナウンス動作(応答を返す)

  • 0:マシン上のすべてのネットワークインターフェイスが外部に通知され、すべてのネットワークカードが通知を受信できます
  • 1:可能な限り、このネットワークカードとアナウンスと一致しないターゲットを避けてください
  • 2:このウェブサイトの漫画レポートのみ

4.2構成ファイルを変更する

[root@localhost network-scripts]# vi /etc/sysctl.conf
# configration for lvs
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

4.3構成の更新

[root@localhost network-scripts]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

4.4ゲートウェイを追加する

[root@localhost network-scripts]# route add -host 192.168.51.103 dev lo:1

セットアップ开机添加

[root@localhost network-scripts]# echo "route add -host 192.168.51.103 dev lo:1" >> /etc/rc.local

5ipvsadmを使用してクラスタールールを構成します

5.1LVSノードの作成

ユーザーがデータにアクセスするためのクラスタースケジューラ

[root@localhost network-scripts]# ipvsadm -A -t 192.168.51.103:80 -s rr -p 5
  • -A:クラスターを追加します
  • -t:tcpプロトコル
  • IPアドレス:クラスターのアクセスIPを設定します。これはLVSの仮想IPです。
  • -s:負荷分散のアルゴリズムを設定します。rrはポーリングを意味します
  • -p:接続の持続時間を設定します

5.22台のRS実サーバーを作成する

[root@localhost network-scripts]# ipvsadm -a -t 192.168.51.103:80 -r 192.168.51.5:80 -g
[root@localhost network-scripts]# ipvsadm -a -t 192.168.51.103:80 -r 192.168.51.6:80 -g

5.3ルールベースに保存

保存しないでください。再起動は無効になります

[root@localhost network-scripts]# ipvsadm -S

5.4クラスターを確認する

查看集群列表

[root@localhost network-scripts]# 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.51.103:80 rr persistent 5
  -> 192.168.51.5:80              Route   1      0          0         
  -> 192.168.51.6:80              Route   1      0          0    

查看集群状态

[root@localhost network-scripts]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.51.103:80                   0        0        0        0        0
  -> 192.168.51.5:80                     0        0        0        0        0
  -> 192.168.51.6:80                     0        0        0        0        0

5.5その他のコマンド

# 重启ipvsadm,重启后需要重新配置
service ipvsadm restart
# 查看持久化连接
ipvsadm -Ln --persistent-conn
# 查看连接请求过期时间以及请求源ip和目标ip
ipvsadm -Lnc
# 设置tcp tcpfin udp 的过期时间(一般保持默认)
ipvsadm --set 1 1 1
# 查看过期时间
ipvsadm -Ln --timeout

详细的帮助文档

ipvsadm -h
man ipvsadm

6関連情報

  • ブログ投稿は簡単ではありません、注意と賞賛に一生懸命働いたすべての人、ありがとう

おすすめ

転載: blog.csdn.net/qq_15769939/article/details/113676872