1つは、クラスターの負荷分散の原則
1.1エンタープライズクラスタアプリケーションの概要
■クラスターの意味
- クラスター、クラスター、クラスター
- 複数のホストで構成されますが、全体としては外部的にのみ表示されます
■問題
- インターネットアプリケーションでは、サイトのハードウェアパフォーマンス、応答速度、サービスの安定性、データの信頼性などの要件がますます高くなっているため、単一のサーバーではそれができません
■ソリューション
- 高価なミニコンピューターとメインフレームを使用する
- 通常のサーバーを使用してサービスクラスターを構築する
1.2エンタープライズクラスタの分類-1
■クラスターのターゲットの違いに応じて、3つのタイプに分類できます。
- 負荷分散クラスター
- 高可用性クラスター(1つはアクティブ、1つはスタンバイ)
- 高性能計算クラスター(超高性能クラスター)
■負荷分散クラスター
- アプリケーションシステムの応答性を向上させ、可能な限り多くのアクセス要求を処理し、待ち時間を目標として削減して、高い同時実行性と高負荷(LB)の全体的なパフォーマンスを実現します。
- LBの負荷分散は、マスターノードの分散アルゴリズムに依存します
1.3エンタープライズクラスタの分類-2
■高可用性クラスター
- アプリケーションシステムの信頼性を向上させ、中断時間を可能な限り削減するには、サービスの継続性を確保し、高可用性(HA)フォールトトレランス効果を実現します
- HAの動作モードには、デュプレックスモードとマスタースレーブモードが含まれます
■高性能コンピュータクラスタ
- アプリケーションシステムのCPUコンピューティング速度を向上させ、ハードウェアリソースと分析機能を拡張し、大規模なスーパーコンピューターと同等のハイパフォーマンスコンピューティング(HPC)機能を獲得することを目的としています。
- 高性能コンピューティングクラスタの高性能は、「分散コンピューティング」と「並列コンピューティング」に依存しています。複数のサーバーのCPU、メモリ、その他のリソースは、専用のハードウェアとソフトウェアを介して統合され、大規模なスーパーコンピュータだけが持つコンピューティング機能を実現します。
1.4負荷分散クラスターアーキテクチャ
■負荷分散構造
- 最初のレイヤー、ロードスケジューラー(ロードバランサーまたはディレクター)
- 2番目の層、サーバープール(サーバープール)
- 第3層の共有ストレージ(Share Storage)
2.負荷分散の作業モードをマスターする
2.1負荷分散クラスターの動作モードの分析
■負荷分散クラスタは現在、企業で最も一般的に使用されているクラスタタイプです
■クラスタ負荷スケジューリングテクノロジーには3つの動作モードがあります
- アドレス変換
- IPトンネル
- 直接ルーティング
2.2 NATモード
■アドレス変換
- NATモードと呼ばれるネットワークアドレス変換
- ファイアウォールのプライベートネットワーク構造と同様に、ロードスケジューラはすべてのサーバーノードのゲートウェイとして機能します。つまり、クライアントのアクセス入口として機能し、クライアントへの応答として各ノードのアクセス出口としても機能します。
- サーバーノードはプライベートIPアドレスを使用し、ロードスケジューラと同じ物理ネットワーク上にあり、セキュリティは他の2つの方法よりも優れています
2.3 TUNモード
■IPトンネル
- IPトンネル、略してTUNモード
- オープンネットワーク構造を採用しているため、ロードスケジューラはクライアントのアクセスポータルとしてのみ機能し、各ノードはロードスケジューラを通過するのではなく、独自のインターネット接続を介してクライアントに直接応答します。
- サーバーノードはインターネットのさまざまな場所に散在し、独立したパブリックIPアドレスを持ち、専用IPトンネルを介してロードスケジューラと通信します。
2.4 DRモード
■直接ルーティング
- DRモードと呼ばれる直接ルーティング
- TUNモデルの構造に似たセミオープンネットワーク構造を採用していますが、ノードはどこにでも散在しているわけではなく、スケジューラーと同じ物理ネットワーク上に配置されています
- ロードスケジューラは、ローカルネットワークを介して各ノードサーバーに接続され、専用のIPトンネルを確立する必要はありません。
2.5 LVS Virtual Server-1について
■LVSロードスケジューリングアルゴリズム
- ラウンドロビン
- 受信したアクセス要求は、クラスター内の各ノード(実サーバー)に順番に割り当てられ、サーバーの実際の接続数やシステム負荷に関係なく、各サーバーは同等に扱われます
- 加重ラウンドロビン
- スケジューラーによって設定された重み値に従って要求を分散します。重み値を持つノードが最初にタスクを取得し、より多くの要求が割り当てられます
- 強力なパフォーマンスを持つサーバーがより多くのアクセストラフィックを負担するようにする
2.6 LVS Virtual Server-2について
■LVSロードスケジューリングアルゴリズム
- 最小接続
- 実サーバーによって確立された接続数に応じて割り当て、接続数が最も少ないノードへの受信アクセス要求に優先順位を付けます
- 加重最小接続
- サーバーノードのパフォーマンスが大きく異なる場合、実サーバーに合わせて重みを自動調整できます
- パフォーマンスの高いノードは、アクティブな接続負荷の割合が高くなります
2.7 ipvsadmツールを使用する
■LVSクラスターの作成と管理
2.8 NFS共有ストレージサービス-1
■ネットワークファイルシステム、ネットワークファイルシステム
- RPC(リモートプロシージャコール)に依存する
- nfs-utils、rpcbindソフトウェアパッケージをインストールする必要がある
- システムサービス:nfs、rpcbind
- 共有構成ファイル:/ etc / exports
2.9 NFS共有ストレージサービス-2
■NFSを使用して共有リソースを公開する
- nfs-utils、rpcbindソフトウェアパッケージをインストールする
- 共有ディレクトリを設定する
- NFSサービスプログラムを起動します。
- マシンによって公開されたNFS共有ディレクトリを表示する
2.10 NFS共有ストレージサービス-3
■クライアントのNFS共有リソースにアクセスする
- rpcbindパッケージをインストールして、rpcbindサービスを開始します。
- NFS共有ディレクトリを手動でマウントする
- fstab自動マウント設定
3、LVS-NAT展開の実践
IP地址规划:
1、调度器
对外公网:20.0.0.6(NAT) 业务端口号:80 开启路由转发功能 ###不用配网关
私有网络:192.168.200.21(VM1) ###不用配网关
2、WE1
私有网络:192.168.200.22(VM1)网关:192.168.200.21
3、WE2
私有网络:192.168.200.23(VM1)网关:192.168.200.21
4、存储
私有网络:192.168.200.24(VM1)网关:192.168.200.21
环境配置:
关闭防火墙、关闭核心防护、安装yum源 ###四台都要这样的环境。前面的博客教过,这里不写了。
调度器服务器配置:
###添加一块网卡###
[root@localhost ~]# nmcli connection ###查看一下加的新的网卡UUID号
1b17e3d8-6882-3d70-8ab8-c14fa3796a5a ### 保存新的UUID号
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ ###进入到这个目录里
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36 ###复制ens33 创建新的ens36
[root@localhost network-scripts]# vi ifcfg-ens36 ###编辑里面的名字,把33改成36,uuid改成刚刚查看保存的,ip地址改成192.168.200.21,和一个子网掩码就好了,别的不需要。
[root@localhost ~]# yum -y install ipvsadm.x86_64 ###安装负载均衡分发策略工具
[root@localhost ~]# modprobe ip_vs ###加载这个模块
[root@localhost ~]# cat /proc/net/ip_vs ###查看一下这个模块加载情况
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
1、创建虚拟服务器
[root@localhost ~]# ipvsadm -A -t 20.0.0.6:80 -s rr ###添加虚拟主机,-t是给客户用的后面加ip地址,-s调用算法 rr允许
2、添加服务器节点
[root@localhost ~]# ipvsadm -a -t 20.0.0.6:80 -r 192.168.200.22:80 -m ###配置去web1服务器的
[root@localhost ~]# ipvsadm -a -t 20.0.0.6:80 -r 192.168.200.23:80 -m ###配置去web2服务器的
3、保存LVS策略
[root@localhost ~]# ipvsadm-save > /opt/ipvsadm ###保存策略追加到/opt/ipvsadm
4、开启调度服务器路由转发功能
[root@localhost ~]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1 ###在最后添加一条
[root@localhost ~]# sysctl -p ###刷新生效一下
net.ipv4.ip_forward = 1
存储服务器配置:
[root@localhost ~]# rpm -q nfs-utils ###查看一下nfs是否安装
package nfs-utils is not installed ###没有安装
[root@localhost ~]# yum -y install nfs-utils ###安装一下nfs
[root@localhost ~]# rpm -q rpcbind ###查看一下rpcbind是否安装
rpcbind-0.2.0-42.el7.x86_64 ###安装了,如果没有安装就yum安装一下 ,yum -y install rpcbind
[root@localhost ~]# mkdir /opt/51xit /opt/52xit ###创建两个目录
[root@localhost opt]# echo 'this is 51xit' >/opt/51xit/index.html ###在51xit目录里创建一个网页
[root@localhost opt]# echo 'this is 52xit' >/opt/52xit/index.html ###在52xit目录里创建一个网页
[root@localhost opt]# vi /etc/exports ###发布出去
/opt/51xit 192.168.200.0/24(rw,sync)
/opt/52xit 192.168.200.0/24(rw,sync)
[root@localhost opt]# systemctl restart nfs rpcbind ###重启一下
[root@localhost opt]# systemctl enable nfs rpcbind ###开机自启
[root@localhost opt]# showmount -e ###检查一下服务
Export list for localhost.localdomain:
/opt/52xit 192.168.200.0/24 ###这两个就是刚刚共享出去的
/opt/51xit 192.168.200.0/24 ###这两个就是刚刚共享出去的
WE1配置:
[root@localhost ~]# rpm -q nfs-utils ###查看一下nfs是否安装
package nfs-utils is not installed ###没有安装
[root@localhost ~]# yum -y install nfs-utils ###安装一下nfs
[root@localhost ~]# rpm -q rpcbind ###查看一下rpcbind是否安装
rpcbind-0.2.0-42.el7.x86_64 ###安装了,如果没有安装就yum安装一下 ,yum -y install rpcbind
[root@localhost ~]# showmount -e 192.168.200.24 ###查看一下是否显示共享的
Export list for 192.168.200.24:
/opt/52xit 192.168.200.0/24
/opt/51xit 192.168.200.0/24
[root@localhost ~]# yum -y install httpd ###安装Apache服务
[root@localhost ~]# systemctl restart httpd ###重启Apache服务
[root@localhost ~]# systemctl enable httpd ###开机自启Apache
[root@localhost ~]# mount 192.168.200.24:/opt/51xit /var/www/html/ ###临时挂载
###测试:浏览器输入192.168.200.22就能显示51的网页###
[root@localhost ~]# vi /etc/fstab ###永久挂载
192.168.200.24:/opt/51xit /var/www/html nfs defaults,_netdev 0 0
WE2配置:
[root@localhost ~]# rpm -q nfs-utils ###查看一下nfs是否安装
package nfs-utils is not installed ###没有安装
[root@localhost ~]# yum -y install nfs-utils ###安装一下nfs
[root@localhost ~]# rpm -q rpcbind ###查看一下rpcbind是否安装
rpcbind-0.2.0-42.el7.x86_64 ###安装了,如果没有安装就yum安装一下 ,yum -y install rpcbind
[root@localhost ~]# showmount -e 192.168.200.24 ###查看一下是否显示共享的
Export list for 192.168.200.24:
/opt/52xit 192.168.200.0/24
/opt/51xit 192.168.200.0/24
[root@localhost ~]# yum -y install httpd ###安装Apache服务
[root@localhost ~]# systemctl restart httpd ###重启Apache服务
[root@localhost ~]# systemctl enable httpd ###开机自启Apache
[root@localhost ~]# mount 192.168.200.24:/opt/52xit /var/www/html/ ###临时挂载
###测试:浏览器输入192.168.200.22就能显示52的网页###
[root@localhost ~]# vi /etc/fstab ###永久挂载
192.168.200.24:/opt/52xit /var/www/html nfs defaults,_netdev 0 0
测试:浏览器输入20.0.0.6,显示的内容51xit,等一会刷新就会变成52xit,就实现了负载均衡