記事ディレクトリ
- LVS + keepalived負荷分散+高可用性クラスター
-
- 1。概要
- 2.実験
-
- 実験紹介
- 1.実験計画
- 2.ツールキットをインストールし、ファイアウォールを閉じます(DR1およびDR2)
- 3.構成ファイル(DR1およびDR2)を編集します。
- 4.ネットワークカードファイル(DR1)を編集します。
- 5.ネットワークカードファイル(DR2)を編集します。
- 6.構成ファイルを編集する(DR1およびDR2)
- 7. httpツールキットをインストールします(WEB1およびWEB2)
- 8.ネットワークカード情報の編集(WEB1およびWEB2)
- 9.設定ファイルを編集します(WEB1およびWEB2)
- 10. Apacheがサーバー(WEB1およびWEB2)にメインインターフェイスを作成します。
- 11. keepalived構成ファイル(DR1およびDR2)を編集します
- 12. keepalivedサービスを開き、ネットワークカード(DR1およびDR2)を再起動します
- 13.テスト(WIN10)
- 3、問題の要約
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.保存して終了し、ネットワークカードを再起動します
サービスネットワークの再起動