LVS + keepalived負荷分散+高可用性クラスター

記事ディレクトリ

LVS + keepalived負荷分散+高可用性クラスター

1。概要

1. Keepalivedのケーススタディ

エンタープライズアプリケーションでは、単一のサーバーがアプリケーションの単一障害点のリスクを負います

単一障害点が発生すると、エンタープライズサービスが中断され、大きな損害が発生します

2. Keepalivedツールの概要

LVSおよびHA用に特別に設計されたヘルスチェック] Cツール

自動フェイルオーバー(フェイルオーバー)をサポート

サポートノードのヘルスチェック(ヘルスチェック)

公式サイト:http://www.keepalived.org/

3. Keepalived実装原理の分析

1. KeepalivedはVRRPホットバックアッププロトコルを採用

Linuxサーバーのマルチマシンホットバックアップ機能を実現

2. VRRP(Virtual Routing Redundancy Protocol)は、ルーターのバックアップソリューションです。

複数のルーターで構成される-ホットスタンバイグループ。共有仮想IPアドレスを介して外部サービスを提供します

各ホットスタンバイグループでは、同時に1つのメインルータだけがサービスを提供し、他のルータは冗長状態にあります

現在オンラインのルーターに障害が発生した場合、他のルーターは設定された優先順位に従って仮想IPアドレスを自動的に引き継ぎ、サービスを提供し続けます

3. Keepalivedはマルチマシンホットバックアップを実現でき、各ホットバックアップグループは複数のサーバーを持つことができます

2.実験

実験紹介

ケース:負荷分散+高可用性クラスター
1. Keepalivedの設計目標は、高可用性LVS負荷分散クラスターを構築することです。ipvsadmツールを呼び出して、デュアルシステムホットバックアップだけでなく、仮想サーバーを作成してサーバープールを管理できます
。2. Keepalivedを使用します。 LVSクラスタを構築することは使用する方が簡単かつ容易である
3.主な利点は、
可用性を向上させるためにLVS負荷スケジューラのホットスタンバイスイッチングを実現
、サーバー・プール内のノードのヘルスチェックを実行し、自動的に回復した後に失敗したノード、および再結合を削除

ケーストポロジー
■LVS + Keepalivedに基づくLVSクラスター構造では、少なくとも2つのホットスタンバイロードスケジューラと4つ以上のノードサーバーが含まれます

マーク

1.実験計画

5台すべてのマシンがホストオンリーモードを使用

DR1:192.168.100.128

DR2:192.168.100.129

WEB1:192.168.100.201

WEB2:192.168.100.202

クライアント:192.168.100.20

2.ツールキットをインストールし、ファイアウォールを閉じます(DR1およびDR2)

setenforce 0

iptables -F

yum install keepalived ipvsadm -y

3.構成ファイル(DR1およびDR2)を編集します。

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1 ##リダイレクト応答を閉じるためのproc応答
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p ##構成ファイルを有効にする

4.ネットワークカードファイル(DR1)を編集します。

## DR1ネットワークカード構成ファイル

cd / etc / sysconfig / network-scripts /

cp -p ifcfg-ens33 ifcfg-ens33:0

vim ifcfg-ens33

マーク

vim ifcfg-ens33:0

systemctl restart network ##編集後にネットワークカードを再起動します

マーク

5.ネットワークカードファイル(DR2)を編集します。

cd / etc / sysconfig / network-scripts /

cp -p ifcfg-ens33 ifcfg-ens33:0

vim ifcfg-ens33

マーク

vim ifcfg-ens33:0

systemctl restart network ##編集後にネットワークカードを再起動します

マーク

6.構成ファイルを編集する(DR1およびDR2)

cd /etc/init.d/

vi dr.sh

#!/ bin / bash
GW = 192.168.100.1
VIP = 192.168.100.10
RIP1 = 192.168.100.201
RIP2 = 192.168.100.202
case "$ 1" in
start)
/ sbin / ipvsadm --save> / etc / sysconfig / ipvsadm
systemctl start ipvsadm
/ sbin / ifconfig ens33:0 $ VIPネットマスク255.255.255.255ブロードキャスト$ VIP up
/ sbin / route add -host $ VIP dev ens33:0
/ sbin / ipvsadm -A -t $ VIP:80 -s rr
/ sbin / ipvsadm- a -t $ VIP:80 -r $ RIP1:80 -g
/ sbin / ipvsadm -a -t $ VIP:80 -r $ RIP2:80 -g
echo "ipvsadm starting ----------- -------- [ok]」
;;
停止)
/ sbin / ipvsadm -C
systemctl stop ipvsadm
ifconfig ens33:0 down
route del $ VIP
echo "ipvsamd stoped --------------------- [ok]"
;;
status)
if [!-e / var / lock / subsys / ipvsadm];その後、
「ipvsadm stoped ------------------------」をエコーし​​、
exit 1
else
echo "ipvsamd Runing --------------------- [ok]"
fi
;;
*)
echo "Usage:$ 0 {start | stop | status}"
exit 1
esac
exit 0

chmod + x dr.sh ##ファイル実行許可
サービスdr.sh start ## Add fileを追加します

マーク

7. httpツールキットをインストールします(WEB1およびWEB2)

yum install httpd -y

8.ネットワークカード情報の編集(WEB1およびWEB2)

cd / etc / sysconfig / network-scripts /

cp -p ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0

DEVICE = lo:0
IPADDR = 192.168.100.10
NETMASK = 255.255.255.0
ONBOOT = yes

マーク

vim ifcfg-ens33

TYPE =“ Ethernet”
PROXY_METHOD =“ none”
BROWSER_ONLY =“ no”
BOOTPROTO =“ static”
DEFROUTE =“ yes”
IPV4_FAILURE_FATAL =“ no”
IPV6INIT =“ yes”
IPV6_AUTOCONF =“ yes”
IPV6_DEFROUTE =“ yes”
IPV6_FAILURE
IPV6_ADDR_GEN_MODE =“ stable-privacy”
NAME =“ ens33”
DEVICE =“ ens33”
UUID =“ c6759283-4ba1-4bb4-88c8-8edc352c2017”
ONBOOT =“ yes”
IPADDR =“ 192.168.100.201”
NETMASK =“ 255.255.255.0”
GATEWAY =「192.168.100.1」

マーク

マーク

systemctl restart network ##ネットワークカードを再起動します

9.設定ファイルを編集します(WEB1およびWEB2)

cd /etc/init.d/

vim web.sh

#!/ bin / bash
VIP = 192.168.100.10
case "$ 1" in
start)
ifconfig lo:0 $ VIP netmask 255.255.255.255 broadcast $ VIP
/ sbin / route add -host $ VIP dev lo:0
echo "1"> / proc / sys / net / ipv4 / conf / lo / arp_ignore
echo“ 2”> / proc / sys / net / ipv4 / conf / lo / arp_announce
echo“ 1”> / proc / sys / net / ipv4 / conf / all / arp_ignore
echo“ 2”> / proc / sys / net / ipv4 / conf / all / arp_announce
sysctl -p> / dev / null 2>&1
echo“ RealServer Start OK”
;;
stop)
ifconfig lo:0 down
route del $ VIP / dev / null 2>&1
echo“ 0”> / proc / sys / net / ipv4 / conf / lo / arp_ignore
echo“ 0”> / proc / sys / net / ipv4 / conf / lo / arp_announce
エコー「0」>
echo "0"> / proc / sys / net / ipv4 / conf / all / arp_announce
echo "RealServer Stopd"
;;
*)
echo "Usage:$ 0 {start | stop}"
exit 1
esac
exit 0

chmod + x web.sh

service web.sh start

10. Apacheがサーバー(WEB1およびWEB2)にメインインターフェイスを作成します。

cd / var / www / html /

<h1>これはkgc webです!</ h1> ## web1メインインターフェイスのコンテンツ

<h1>これはテストWebです!</ h1>メインインターフェイスの## web2Content

systemctl restart httpd ##サービスを再起動します

マーク

マーク

11. keepalived構成ファイル(DR1およびDR2)を編集します

cd / etc / keepalived /

vim keepalived.conf

global_defs {

smtp_server 127.0.0.1 ##ローカルを指す

router_id LVS_01 ##名前を指定してください、バックアップサーバーは別の名前です

}

vrrp_instance VI_1 { state MASTER ##バックアップサービスはBACKUP virtual_router_id 10 ##グループ番号は同じ優先度です100 ##優先度のバックアップはメインよりも小さいです... 認証{ auth_type PASS auth_pass 1111 ##パスワード情報を変更する必要はありません} virtual_ipaddress { 192.168.100.10 ##仮想アドレス} }











virtual_server 192.168.100.10 80 { lb_kind DR ## LVSモード


real_server 192.168.100.201 80 { 体重1 TCP_CHECK { connect_port 80 ##添加端口CONNECT_TIMEOUT 3 nb_get_retry 3 delay_before_retry 3 } } 192.168.100.202 80 {real_server 重量1 TCP_CHECK { connect_port 80 CONNECT_TIMEOUT 3 nb_get_retry 3 delay_before_retry 3 } }
















}

scp keepalived.conf [email protected]:/ etc / keepalived /

vim keepalived.conf ##別のスケジューリングホスト構成ファイルの変更内容は次のとおりです。

マーク

12. keepalivedサービスを開き、ネットワークカード(DR1およびDR2)を再起動します

systemctl start keepalived.service

サービスネットワークの再起動

13.テスト(WIN10)

マーク

3、問題の要約

LSBの開始に失敗した解決:ネットワークの問題の起動/停止

1. systemctl restart networkを実行すると、次のエラーが発生します

(systemctlによる)ネットワークの再起動:network.serviceのジョブが失敗しました。詳細については、「systemctl status network.service」および「journalctl -xn」を参照してください。

マーク

2.上記のプロンプトに従って、systemctl status network.serviceを実行して、次の同様の情報を出力します

[root @ localhost〜]#systemctl status network.service

network.service-LSB:ネットワークの起動/停止

ロード済み:ロード済み(/etc/rc.d/init.d/network)

アクティブ:失敗(結果:終了コード)2014年11月5日15:30:10 CST以降; 1分5秒前

11月05 15:30:10 localhost.localdomain network [2920]:RTNETLINK回答:ファイルが存在します

11月05 15:30:10 localhost.localdomain network [2920]:RTNETLINK回答:ファイルが存在します

11月05 15:30:10 localhost.localdomain network [2920]:RTNETLINK回答:ファイルが存在します

11月05 15:30:10 localhost.localdomain network [2920]:RTNETLINK回答:ファイルが存在します

11月05 15:30:10 localhost.localdomain network [2920]:RTNETLINK回答:ファイルが存在します

11月05 15:30:10 localhost.localdomain network [2920]:RTNETLINK回答:ファイルが存在します

11月05 15:30:10 localhost.localdomain network [2920]:RTNETLINK回答:ファイルが存在します

11月05 15:30:10 localhost.localdomain systemd [1]:network.service:制御プロセスが終了しました、コード=終了ステータス= 1

11月5日15:30:10 localhost.localdomain systemd [1]:* LSBの開始に失敗しました:ネットワークの起動/停止*

11月5日15:30:10 localhost.localdomain systemd [1]:ユニットnetwork.serviceが障害状態に入りました。

3.解決策、ネットワークカードを再起動して自動的に接続する

systemctl stop NetworkManager

systemctl enable NetworkManager

systemctl start NetworkManager

サービスネットワークの再起動

4.上記の方法では問題を解決できないため、構成ファイルを変更します

##このIP判断は/ arpingですばやく特定できるというコメント

vim / etc / sysconfig / network-scripts / ifup-eth

マーク

5.保存して終了し、ネットワークカードを再起動します

サービスネットワークの再起動

おすすめ

転載: blog.csdn.net/weixin_39608791/article/details/108375488