Centos7 LVS 負荷分散 DR モデルのスタンドアロンおよび高可用性の実践

1. 負荷分散クラスターの種類

負荷分散テクノロジーの種類: レイヤー 4 負荷分散テクノロジーに基づく、レイヤー 7 負荷分散テクノロジーに基づく

負荷分散の実装方法:ハードウェア負荷分散装置、ソフトウェア負荷分散

ハードウェア負荷分散製品: F5、Sangfor、Radware

ソフトウェア負荷分散製品: LVS (Linux Virtual Server)、Haproxy、Nginx、Ats (Apache Traffic Server)

2. LVS は、TCP/UDP ロード バランシングをサポートする 4 層 (トランスポート層) ロード バランサです。

ロードスケジューラ、サーバープール、共有ストレージの3層構造。

スキーマオブジェクト:

  • VS : 仮想サーバー (ディレクターとも呼ばれる)、負荷分散サーバー
  • RS : 実サーバー、実サーバー、クラスター内の各ノード
  • VIP : 外部にサービスを提供するディレクターのIP
  • DIP : Director は内部で RS と通信します
  • RIP : 実サーバーのIP
  • CIP : クライアント IP

3. LVS の 4 つの動作モード

LVS-NAT (NAT モード)

原則: クライアントはリクエスト パケットをロード バランサーに送信し (CIP->VIP)、ロード バランサーはパケットを変更してサーバーに送信し (CIP->RIP)、サーバーは処理後にパケットをロード バランサーに返します。 (RIP->CIP)、ロード バランサーはデータ パケットを再調整し、クライアントに返します (VIP->CIP)。このモードでは、トラフィックが送受信されるかどうかに関係なく、トラフィックは通過する必要があります。ロードバランサー。

LVS-DR (ダイレクトルーティングモード)

原則: DR モードの実装では、RS が LVS の VIP にバインドされる必要があり、VIP は単一 RS の内部でのみ認識され、外部からは認識されないことが保証されます。リクエストがロード バランサー (CIP->VIP) に到達すると、LVS はネットワーク フレームの MAC アドレスを特定の RS の MAC に変更し、処理のために対応する RS にパケットを転送するだけで済みます。RS はLVS パケットから転送されたメッセージを受信すると、リンク層では MAC が独自のものであることがわかり、ネットワーク層では IP も独自のもの (事前に関連付けられた LVS の IP) であることがわかり、パケットは正当に受信されます。 、RS は応答時に LVS を経由せずに直接クライアントに戻ります。
DR モードのトラフィックは lvs を通過しなくなり、戻り値は lvs を 1 回通過するだけで直接クライアントに返されるため、DR モードは最高のパフォーマンスを発揮するモードです。

LVS-TUN (IP トンネル (Tunnel) モード、一般的には使用されません)

原理: ロードバランサは、クライアントから送信されたデータパケット(CIP->VIP)を新しいIPヘッダマーク(DIP-(CIP-VIP)-RIP)でカプセル化し、RSに送信します。パケットのヘッダを解凍し、復元します。データ パケットを取得し、処理後にロード バランサを経由せずにクライアントに直接返します。RS はロード バランサから送信されたデータ パケットを復元する必要があるため、IPTUNNEL プロトコルをサポートしている必要があることに注意してください。したがって、RS カーネルでは、IPTUNNEL オプションをコンパイルしてサポートする必要があります。
​ 

FULL-NAT モード (双方向変換モード、一般的には使用されません)

原則: クライアントはロード バランサー VIP (CIP->VIP) へのリクエストを開始し、ロード バランサーはリクエストを受信し、それがバックエンド サービスに対するリクエストであることを認識し、リクエスト メッセージに対して full-nat を実行し、ソース IP を変更します。 DIP{ に変更し、ターゲットを変更します。IP はバックエンド RS の RIP に変換され、バックエンドに送信されます。RS はリクエストを受信した後に応答します。応答元 IP は RIP ターゲット IP または DIP です。 、内部ルートがロード バランサーにルーティングされ、ロード バランサーは応答レポート テキストを受信し、full-nat を実行します。送信元アドレスを VIP に、宛先アドレスを CIP に変更して、クライアントに戻ります。

4.LVS負荷分散アルゴリズム

静的負荷分散

  • rr (ラウンドロビン、ポーリング)

  • wrr (重み付けラウンドロビン、重み付けラウンドロビン)

  • sh (ソースハッシュ、ソースアドレスハッシュ)

  • dh (宛先ハッシュ、宛先アドレス HASH)


動的負荷分散

  • lc (リード接続、最小接続)

    • シンプルなアルゴリズム: アクティブ * 256 + 非アクティブ (誰が選択するか)
  • wlc (加重最小接続)

    • 単純なアルゴリズム: (アクティブ * 256 + 非アクティブ) / 重み (誰が選択するか)
  • sed (最小予想遅延)

    • 単純なアルゴリズム: (アクティブ + 1) * 256 / 重み (誰が選択するか)
  • nq (決してキューに入れない、決してキューに入れない)

  • LBLC (地域ベースの最小接続性)

  • LBLCR (レプリケーションを使用したローカリティベースの最小接続)

5. DRモデルの構築を実現

(1)、ノードの準備
        node1: 192.168.2.168 ----ロードバランサとして

        ノード2:192.169.2.136

        ノード3:192.168.2.134

(2)、構築を開始します

 lvs ロード バランサーの vip ネットワーク サブインターフェイス (node1) を構成します。

ifconfig enp0s3:2 192.168.2.100/24
# 撤掉命令
ifconfig enp0s3:2 down

RSサーバー(node02、node03)の設定

arp プロトコルを変更する (arp_ignore、arp_announce)

cd /proc/sys/net/ipv4/conf/enp0s3
# 修改协议(注意不可使用vi进行修改)
echo 1 > arp_ignore
echo 2 > arp_announce
# 查看是否修改成功
cat arp_ignore
cat arp_announce
# 退回到all目录进行全局修改
cd ../all
echo 1 > arp_ignore
echo 2 > arp_announce

隠しVIPを設定(node2\node3)

ifconfig lo:2 192.168.2.100 netmask 255.255.255.255

 http サービスを構築します (node2\node3)

# 安装httpd服务
yum install httpd -y
# 启动服务
service httpd start
# 创建主页(用于测试服务)
vi /var/www/html/index.html
# index填充内容node2
node2:form 192.168.2.136
# index填充内容node3
node3:form 192.168.2.134

 ブラウザを開いて httpd サービスが成功したかどうかをテストします。

 LVS サービス構成 (node01)

# 安装ipvsadm
yum install ipvsadm
# 配置LVS入口规则(采用轮询机制),IP为新创建的enp0s3:2对应ip
ipvsadm -A -t 192.168.2.100:80 -s rr
#配置出口规则(192.168.2.136\192.168.2.134 分别是node2、3的ip,分配权重为1)
ipvsadm -a  -t 192.168.2.100:80  -r  192.168.2.136 -g -w 1
ipvsadm -a  -t 192.168.2.100:80  -r  192.168.2.134 -g -w 1

設定が成功したかどうかを確認する

ipvsadm -ln

確認

ブラウザアクセス 192.168.2.100、クレイジー F5、ブラウザがノード 2 とノード 3 の間で切り替わるかどうかを確認し、コマンド netstat -natp を使用してノード 1 ~ 3 のソケット接続をそれぞれ確認します。ノード 1 にはソケット レコードがないことがわかりますが、ソケット レコードは、ロード バランサーがクライアントとの接続を確立しないことをさらに説明しています。
6. DR+キープアライブ高可用性構築

(1)、ノードを準備します

        ノード1: 192.168.2.168 --lvs ホスト

        ノード2:192.169.2.136

        ノード3:192.168.2.134

        ノード 4: 192.168.2.181 --lvs スタンバイ マシン

注: 手動で構築されている場合、lvs スタンドアロン バージョン (node1) は、インストールされている IP を最初に削除できます。

# 卸载ipvsadm
ipvsadm -C
# 这里安装过enp0s3:2
ifconfig enp0s3:2 down

Node2 と Node3 はスタンドアロン バージョンの構成をオンのままにします

keeplived をインストールします (node1\node4)

# 安装keeplived服务
yum install keepalived ipvsadm -y
# 修改配置
cd /etc/keepalived/
# 备份配置文件
cp keepalived.conf keepalived.conf.bak
# 打开并修改配置文件
vi keepalived.conf
# 修改配置(node1为master配置,node4配置区别地方有特殊说明,其余地方和node相同)
# vrrp_strict # 注意一定要注解掉,否则配置的vip接口ping不通
vrrp_instance VI_1 {
    state MASTER   # node4 BACKUP
    interface enp0s3 # 设置自己虚拟机使用的虚拟网络
    virtual_router_id 51
    priority 100    # node4 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass root # 主备机服务器密码要设置一致
    }
    virtual_ipaddress {
        192.168.2.100/24 dev enp0s3label  enp0s3:2
    }
}

# 注意virtual_server 只保留一个
virtual_server 192.168.2.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR   # 负载模式设置成DR
    nat_mask 255.255.255.0 #设置子网掩码
    persistence_timeout 0 # 多少秒内访问同一个服务器
    protocol TCP

    real_server 192.168.2.136 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.2.134 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

keepalived.conf をノード 4 にコピーし、対応する設定を変更します。上記の手順を参照してください (区別を変更するだけです)。

scp  ./keepalived.conf  root@node04:`pwd`

keepalived サービスを開始します (node1\node4)

# 启动服务
systemctl start keepalived
# 停止服务
systemctl stop keepalived

検証: ブラウザーにアクセスすると、成功を示すノード 2 またはノード 3 のホームページの結果が返されます。

おすすめ

転載: blog.csdn.net/qq_21875331/article/details/121746161