1.クラスター化および分散
システムパフォーマンス拡張方法:スケール(比率)
- スケールアップ(比例して増加):垂直方向の拡張、上方への拡張、拡張、同じサービスを実行するより強力なコンピューター
- スケールアウト(外向きに拡張):水平方向の拡張、外向きの拡張、機器の追加、複数のサーバーの並列実行、割り当ての問題のスケジューリング、クラスター
垂直方向の拡張はもはや言及していません:
コンピューターのパフォーマンスの必要性が高まるにつれて、その価格も2倍になります
1台のコンピューターのパフォーマンスは制限されており、垂直方向に無期限に拡張することは不可能です。
マルチコアCPUは、1台のコンピューターでも並列化できることを意味するため、そもそも並列テクノロジーを使用するのが最適な理由
1.2。クラスター
クラスター特定の問題を解決するために複数のコンピューターを組み合わせて形成された単一のコンピューターシステム
クラスターは3つのタイプに分けられます
- LBロードバランシング。ロードバランシング、複数のホストで構成されるが、各ホストは、アクセス要求の一部を引き受けます
- HA高い可用性、高い可用性、SPOF(単一の接続障害)を回避
- 高性能コンピューティング、高性能www.top500.org
1.3、分散システム
分散ストレージ:Ceph、GlusterFS、FastDFS、MogileFS
分散コンピューティング:hadoop、Spark
分散型の一般的なアプリケーション
- 分散アプリケーション-サービスは、マイクロサービスを使用して、機能に応じて分割されます
- 分散静的リソース-静的リソースは異なるストレージクラスターに配置されます
- 分散データとストレージ-キー値キャッシングシステムを使用
- 分散コンピューティング-Hadoopクラスターなどの特別なサービスに分散コンピューティングを使用する
1.4。クラスターと分散
クラスター:同じビジネスシステムが複数のサーバーに展開されます。クラスターでは、各サーバーによって実装される機能に違いはなく、データとコードは同じです
分散:ビジネスは複数のサブビジネスに分割されているか、それ自体が別のビジネスであり、複数のサーバーに展開されています。分散型では、サーバーごとに実装される機能が異なり、データやコードも異なります。分散型サーバーごとの機能が合算され、1つのタスクの実行時間を短縮することで完全なビジネス分散が向上します。効率的ですが、クラスターは単位時間あたりに実行されるタスクの数を増やすことで効率を向上させます。
大規模なWebサイトの場合、訪問ユーザーが多く、クラスターが実装され、負荷分散サーバーが前面に配置され、次のサーバーが同じビジネスを完了します。ユーザーが対応するビジネスにアクセスすると、ロードバランサーは、バックエンドのどのサーバーの負荷状況に応じて応答を完了するサーバーを決定し、1つのサーバーがダウンすると、他のサーバーが起動する可能性があります。各分散ノードは異なるビジネスを完了します。1つのノードがダウンすると、ビジネスが失敗する可能性があります
1.4.1クラスター設計の原則
スケーラビリティ-クラスターの水平方向の拡張機能
可用性-ダウンタイムなし
パフォーマンス-アクセス応答時間
容量---単位時間あたりの最大同時スループット
1.4.2クラスターの設計と実装
ハードウェアリソースのパフォーマンスを向上させる—入口ファイアウォールからバックエンドWebサーバーまで、より高性能なハードウェアリソースを使用する
マルチドメイン名-DNSポーリングレコード解決
マルチエントリ-複数のパブリックネットワークIP入口へのレコードの解決マルチ
コンピュータルーム-同じ都市+リモート災害耐性
CDN(コンテンツ配信ネットワーク)-GSLB (グローバルサーバーロードバランス)に基づいて、グローバルロードバランシングを実現、など:DNS
1.4.3ビジネスレベル
階層化:セキュリティ層、負荷層、静的層、動的層、(キャッシュ層、ストレージ層)永続性と非永続性
セグメンテーション:機能に基づいて大規模なサービスを小規模なサービスに分割します
分散:特別なシナリオのサービスには、分散を使用します計算
2Linux仮想サーバーの概要
LVS:Linux仮想サーバー、ロードスケジューラ、カーネル統合、Zhang Wensong(huaming Zhengming)、Aliの4層SLB(Server Load Balance)は、LVS + keepalivedに基づいて実装されています
2.1LVSの動作原理
VSは、要求メッセージのターゲットIP、ターゲットプロトコル、およびポートに従って特定のRSにスケジューリングを転送し、スケジューリングアルゴリズムに従ってRSを選択します。LVSは、INPUTチェーンの位置で機能し、INPUTに送信されたトラフィックを「処理」するカーネルレベルの関数です。
2.1LVSクラスターシステムアーキテクチャ
2.3LVSの機能と組織構造
負荷分散のアプリケーションシナリオは、アプリケーションの可用性と信頼性を向上させるトラフィックの多いビジネスです。
2.3.1トラフィックの多いビジネスに適用
アプリケーションのトラフィック量が多い場合は、リスニングルールを構成することで、トラフィックをさまざまなECS(Elastic
Compute Service)インスタンスに分散できます。さらに、セッション永続化機能を使用して、同じクライアントから同じバックエンドECSに要求を転送できます。
2.3.2拡張アプリケーション
ビジネス開発のニーズに応じて、ECSインスタンスをいつでも追加および削除して、さまざまなWebサーバーおよびAppサーバーに適したアプリケーションシステムのサービス機能を拡張できます。
2.3.3単一の障害点を排除する
負荷分散インスタンスの下に複数のECSインスタンスを追加できます。一部のECSインスタンスに障害が発生すると、負荷分散により、障害のあるECSインスタンスが自動的にシールドされ、正常に実行されているECSインスタンスに要求が分散され、アプリケーションシステムが引き続き正常に機能するようになります。
2.3.4都市内災害復旧(マルチゾーン災害復旧)
より安定した信頼性の高い負荷分散サービスを提供するために、Ah Liクラウドは、同じ地理的領域の災害復旧を実現するために、各地区で利用可能な負荷分散以上のものを展開しました。メインアベイラビリティーゾーンにコンピュータールームの障害またはアベイラビリティーがない場合でも、ロードバランサーは非常に短い時間(たとえば、約30秒の中断)で別のバックアップアベイラビリティーゾーンに切り替えてサービス機能を復元できます。メインアベイラビリティーゾーンが復元されると、ロードバランサーも自動的に起動します。メインのアベイラビリティーゾーンに切り替えて、サービスを提供します。
ロードバランシングを使用する場合、複数のアベイラビリティーゾーンをサポートするリージョンにロードバランシングインスタンスを展開して、都市内の災害復旧を実現できます。さらに、独自のアプリケーションのニーズに基づいて、バックエンドサーバーの展開を検討することをお勧めします。各アベイラビリティーゾーンに少なくとも1つのECSインスタンスを追加すると、この展開モードでの負荷分散サービスの効率が最も高くなります。
次の図に示すように、負荷分散インスタンスの下のさまざまなアベイラビリティーゾーンでECSインスタンスをバインドします。通常の状況では、ユーザーアクセストラフィックはプライマリアベイラビリティーゾーンとバックアップアベイラビリティーゾーンのECSインスタンスに同時に転送されます。アベイラビリティーゾーンAに障害が発生すると、ユーザーアクセストラフィックはバックアップアベイラビリティーゾーンのECSインスタンスにのみ転送されます。この展開では、単一のアベイラビリティーゾーンの障害による外部サービスの利用不可を回避できるだけでなく、異なる製品間でアベイラビリティーゾーンを選択することで遅延を減らすことができます。
次の図に示す展開スキームが採用されている場合、つまり、複数のECSインスタンスが負荷分散インスタンスのプライマリアベイラビリティーゾーンにバインドされており、バックアップアベイラビリティーゾーンにECSインスタンスがありません。プライマリアベイラビリティーゾーンに障害が発生すると、バックアップアベイラビリティーゾーンに要求を受信するECSインスタンスがないため、ビジネスが中断されます。この展開方法は、明らかに、高い可用性を犠牲にして低レイテンシを実現することです。
2.3.5地域間の災害復旧
さまざまなリージョンに負荷分散インスタンスを展開し、対応するリージョンのさまざまなアベイラビリティーゾーンにECSをマウントできます。上位層は、クラウド解決をスマートDNSとして使用して、ドメイン名をさまざまなリージョンの負荷分散インスタンスのサービスアドレスに解決し、グローバルな負荷分散を実現します。特定の領域が利用できない場合は、対応する分析を一時停止して、すべてのユーザーのアクセスに影響がないことを確認します。
2.4LVSクラスタータイプの用語
VS:仮想サーバー、ディレクターサーバー(DS)、ディスパッチャー(スケジューラー)、ロードバランサー
RS:実サーバー(lvs)、アップストリームサーバー(nginx)、バックエンドサーバー(haproxy)
CIP:クライアントIP
VIP:仮想サービスIPVSエクストラネットIP仮想IPアドレス
DIP:ディレクターIP VSイントラネットIPは、主に内部ホストとの通信に使用されますIPアドレス
RIP:実サーバーIP実IP
アクセスプロセス:CIP <-> VIP == DIP <-> RIP
3LVS動作モードおよび関連コマンド
3.1 LVSクラスターの動作モード(4種類)
lvs-nat:要求メッセージのターゲットIPを変更します。マルチターゲットIP DnatのDNATは単なるポイントツーポイントサービスです
。lvs-dr:新しいMACアドレスを操作およびカプセル化します
。lvs-tun:元の要求IPメッセージに加えて新しいIPヘッダーlvs-を追加します。
fullnat:リクエストメッセージの送信元IPと宛先IPを変更します
1.ユーザーはにリクエストを送信します
2.スケジューリングアルゴリズム/リライトパケット
3.リクエストの処理
4.負荷分散マシンを介して応答を書き換えます
5、返信する
lvs-nat:本質は複数のターゲットIPを持つDNATであり、要求メッセージのターゲットアドレスとターゲットポートを選択したRSのRIPとPORTに変更することで転送を実現します
(1)RIPとDIPは同じIPネットワーク上にある必要があります。また、プライベートネットワークアドレスを使用する必要があります。RSゲートウェイはDIPを指す必要があります
(2)要求メッセージと応答メッセージの両方がDirectorによって転送される必要があります。これは、システムのボトルネックになりやすいです。
(3)ポートマッピングをサポートし、要求メッセージのターゲットPORTを変更します
( 4)VSはLinuxシステムである必要があり、RSは任意のOSシステムである可能性があります
SRCIP送信元アドレス
DstIP宛先アドレス
ポートの宛先アドレス
3.2 !!! LVSDRモード!!!
LVS-DR:ダイレクトルーティング、ダイレクトルーティング、LVSデフォルトモード、最も広く使用されている、転送用の要求メッセージのMACヘッダーを再カプセル化することにより、ソースMACはDIPが配置されているインターフェイスのMACであり、ターゲットMACは選択されたRSです。 RIPが配置されているインターフェイスのMACアドレス。送信元IP / PORTと宛先IP / PORTは変更されません。
DRモードの機能:
-
ディレクターと各RSはVIPで構成されています
-
フロントエンドルーターが、ターゲットIPがVIPである要求メッセージをDirectorに送信することを確認します
-
フロントエンドゲートウェイでVIPとDirectorのMACアドレスを静的にバインドします
- RSでarptablesツールを使用する
arptables -A IN -d $VIP -j DROP arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
- RSのカーネルパラメータを変更して、arp通知と応答レベルを制限します
-
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce
- RS RIPはプライベートネットワークアドレスまたはパブリックネットワークアドレスを使用できます。RIPとDIPは同じIPネットワーク上にあります。RIPゲートウェイはDIPをポイントして、応答メッセージがディレクターを通過しないようにすることはできません。
- RSとDirectorは同じ物理ネットワーク上にある必要があります
- 要求メッセージはDirectorを通過しますが、応答メッセージはDirectorを通過せず、RSによってクライアントに直接送信されます。
- ポートマッピングをサポートしていません(ポートは変更できません)
- ip_forwardを有効にする必要はありません
- RSはほとんどのOSシステムを使用できます
4.実験:DRモードでは、VIPは同じネットワークセグメント(誇張されたネットワークセグメント)に実装されていません
4.1実験環境の準備
実験に使用した5台のマシン
- クライアント
- ルーター
- LVSサーバー
- バックエンドRS1サーバー
- バックエンドRS2サーバー
1. 1つのルートホストネットワークカードがホストにブリッジされ、もう1つはNATモードです。そして、コア転送機能をオンにします。
vim /etc/sysctl.conf
#添加一下行
net.ipv4.ip_forward=1
sysctl -p
2.バックエンドサーバーRSはhttpdを個別にインストールし、テスト用に別のホームページを提供します。
yum install httpd -y
systemctl start httpd
echo webRS1>/var/www/html/index.html
echo webRS2>/var/www/html/index.html
3.LVSサーバーは2枚のネットワークカードをインストールします
4.2実験の特定のステップ
1.LVSサーバーを構成します
#安装ipvsadm
yum install ipvsadm -y
#配置两块网卡的ip 分别为DIP :192.168.16.8 VIP :10.0.0.0.100/32
#启用核心转发
vim /etc/sysctl.conf
#添加一下行
net.ipv4.ip_forward=1
sysctl -p
#配置后端RS服务器 (分别再后端服务器上面关闭lo网卡 ARP应答和广播请求
#管理ARP广播请求和应答
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
#配置lo网卡差点VIP
ifconfig lo:1 10.0.0.100/32
#使用curl命令行工具可以发现网页以1:2的权重被访问
while true; do curl 10.0.0.100;done
5. CentOS7.6では、nfsクライアントは/ etc / fatabを使用して起動時に自動的にマウントします
#创建共享文件夹
mkdir /data/nfs -pv
setfacl -m u:nobody:rwx /data/nfs
#安装nfs和rpc
yum install nfs-utils rpcbind -y
#修改配置文件
vim /etc/exports
/data/nfs 10.0.0.0/24(rw,all_squash,async)
#重读配置文件
exportfs -r
systemctl start nfs-server rpcbind
#在centos7 修改/etc/fstab 添加一下行
vim /etc/fstab
/data 10.0.0.8:/data/nfs nfs _netdev,noexec 0 0
6. CentOS7.6では、nfsクライアントはautofsを使用して、nfsを使用するときにリアルタイムのマウントを実現します
2つの方法
方法1:相対パス法
yum install autofs -y
vim /etc/auto.master
/data /etc/data.nfs
vim /etc/data.nfs
* 10.0.0.8:/data/nfs
方法2:絶対パス法
vim /etc/auto.master
/- /etc/nfs.auto
vim /etc/nfs.auto
/data/nfs -ftype=nfs,noexec 10.0.0.8:/data/nfs