nginx をベースにした Web クラスター プロジェクトをすばやく構築する方法を説明します。

nginx をベースにした Web クラスター プロジェクトをすばやく構築する方法を説明します。

1. プロジェクト環境

8台のcentos7/8サーバー、nginx 1.21.1、ab、nfs4、
zabbix、keepalived 2.1.5、ansible、bind

2. プロジェクトの説明

nginxをベースにした 4/7 層負荷分散 Web クラスター プロジェクトを構築する

企業のビジネス環境をシミュレートして、高同時実行性高可用性を備えたWeb クラスターを構築します。

ストレス テストを使用して、クラスター全体のパフォーマンスをテストし、ボトルネックを特定し、継続的に最適化します。

3. プロジェクトの手順

1. インストール

Ansible サービスをインストールして展開し、他のサーバーとのパスワードなしのチャネルを確立し、nginx と zabbix をインストールして展開するためのプレイブックを作成します。

2. 構成

Ansible 経由で nginx と zabbix をデプロイし、nginx の長時間接続、同時実行数、ワーカー プロセス数、速度制限、および zabbix の関連構成を構成し、Web サイトのコンテンツをアップロードします (WordPress ブログ システムや flask インターフェイス Web サイトの構築など)。

3. 負荷分散を実装する

2台のサーバーをデュアルVIPロードバランサーとして使用し、nginxの4/7層ロードバランシング機能を使用し、重み付けラウンドロビンスケジューリングアルゴリズムを使用します。

4. サーバーを構築する

ウェブサイトのデータの一貫性を確保するためにNFSサーバーを構築し、バックエンドのリアルサーバー/バックエンドサーバーが起動時に自動的にマウントされるように設定します。

5. ストレステスト

ABソフトウェアを使用してクライアントのストレステストを実行します

6. 監視

ウェブクラスタ全体のパフォーマンスを監視するために、zabbix/prometheus監視プラットフォームに関連サーバーと監視項目を追加します--「zabbix

7. 高可用性

keepalived ソフトウェアを使用して、ロードバランサーの可用性を高め、単一障害点を防止します--》keepalived

8. ドメイン名の解決

Web クラスター全体のドメイン名解決を実行する DNS サーバーを構築します。DNS ドメイン名解決のロード バランシングにより、ユーザー アクセス用に 2 つの VIP を 1 つのドメイン名にバインドし、トラフィックを異なるロード バランサーにインポートします。

9. パフォーマンスを向上させる

パフォーマンスを向上させるために、Web クラスター全体を最適化してください。カーネル パラメータ、nginx パラメータを最適化し、キャッシュの追加などの対策を検討してください。

10. Ansibleを使用してプレイブックを作成する

Ansible を使用して、nginx、zabbix、keepalived、ab、nfs などのすべてのソフトウェアをインストールするためのプレイブックを作成してみてください。

IV. プロジェクト概要

1. 1から複数まで、クラスターの概念を徐々に理解する
2. 高性能と高可用性について一定の理解があり、システムのパフォーマンス指標とパラメータについて一定の理解があり、ブレインスプリット現象とその回避方法について一定の理解がある
3. ワンクリックの展開とインストールについてある程度理解しました。これは非常に便利で高速です。今後はより優れた自動化操作を試してみたいと思います--》ansible
4. ストレステスト中のクラスター全体のボトルネックを全体的に把握する
5. システムの最適化についてある程度理解しており、コストを増やすことなくパフォーマンスを向上させる必要があると感じています。
6. 監視についても多少経験があります。監視は非常に基本的な運用と保守の作業です。問題を事前に検出し、早期に警告することができます。
7. 将来の大規模クラスター学習の基盤を築き、全体的な計画能力を向上させる
8. トラブルシューティング機能が改善されました
9. zabbix、keepalived、ansible、nginx、nfs、ab、bind など、多くの基本的な機能ソフトウェアの調整について一定の理解を持っている。
10. DNS ロードバランシングとレイヤー 4/7 ロードバランシングについてある程度理解している

5. ウェブサイト構築に関する注意事項

1. Web サイトのコンテンツを決定する必要があります: ブログ、インターフェイス Web サイト、テスト ページなど。データの一貫性の問題: NFS、SAN、クラウド ストレージ、NAS など。

2. カーネルパラメータの最適化:

[root@docker ~]# sysctl -p
ネット.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
カーネル.core_uses_pid = 1
ネット.ipv4.tcp_syncookies = 1
カーネル.msgmnb = 65536
カーネル.msgmax = 65536
net.ipv4.conf.all.promote_secondaries = 1
net.ipv4.conf.default.promote_secondaries = 1
net.ipv6.neigh.default.gc_thresh3 = 4096
net.ipv4.neigh.default.gc_thresh3 = 4096
カーネル.ソフトロックアップ_パニック = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
カーネル.shmmax = 68719476736
カーネル.printk = 5
カーネル.sysrq = 1
カーネル.numa_balancing = 0
[root@docker ~]# ulimit
無制限
[root@docker ~]# ulimit -a
コアファイルサイズ(ブロック、-c)無制限
データセグメントサイズ (キロバイト、-d) 無制限
スケジュール優先度 (-e) 0
ファイルサイズ(ブロック、-f)無制限
保留中のシグナル (-i) 14826
最大ロックメモリ (キロバイト、-l) 64
最大メモリサイズ (キロバイト、-m) 無制限
開いているファイル (-n) 100001
パイプサイズ (512 バイト、-p) 8
POSIX メッセージ キュー (バイト、-q) 819200
リアルタイム優先度 (-r) 0
スタックサイズ (kbytes, -s) 8192
CPU時間(秒、-t)無制限
最大ユーザープロセス数 (-u) 14826
仮想メモリ (キロバイト、-v) 無制限
ファイルロック (-x) 無制限
[ルート@docker ~]#

ab -c 2000 -n 100000 http://192.168.0.92/

nginx ベースの Web クラスター プロジェクトの構築に関するこの記事はこれで終わりです。より関連性の高い nginx Web クラスター プロジェクトのコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • 高可用性 Web クラスターを実装するための Keepalived+Nginx+Tomcat サンプル コード
  • ソフトウェア ロード バランサを使用して Web サーバー クラスターを実装する (iis+nginx)
  • nginx+apache+mysql+php+memcached+squid でクラスタ Web 環境を構築します

<<:  CSS 配送先住所平行四辺形線スタイルの例コード

>>:  時間別にグループ化された MySQL クエリ ステートメント

推薦する

Docker クロスホストネットワークの実装 (手動)

1. Macvlan の紹介Macvlan が登場する前は、イーサネット カードに複数の IP ア...

Vueドロップダウンリストの2つの実装方法の比較

Vueドロップダウンリストの2つの実装最初の方法はv-forを使用する <el-select ...

HTML CSS に基づく検索アイコン付き検索ボックス機能を実装する

序文フロントエンドで非常に便利な、小さなアイコン付きの検索ボックスを作成する方法をご紹介します。エフ...

コマンドを使用してMySQLデータベース(de1)を作成する方法

1. MYSQLに接続するフォーマット: mysql -h ホストアドレス -u ユーザー名 -p ...

Docker で Spring-boot プロジェクトをデプロイするためのサンプル コード

1. 基本的な Spring-boot クイックスタート1.1 クイックスタート pom.xml は...

IDEA の Docker プラグインを介して Springboot プロジェクトを公開する方法の詳細なチュートリアル

1. Dockerfileを書く(1)プロジェクト名を右クリックして新しいテキストファイルを作成し、...

MySQL 8.0 のタイムゾーン問題を解決する手順

ソフトウェアバージョンウィンドウズ: ウィンドウズ10 MySQL: mysql-8.0.16-wi...

コンパイル、インストールから設定ファイルの説明まで、中国語でnginxの詳細な説明

この記事では、コンパイルとインストールから設定ファイルの説明まで、Nginx について詳しく紹介しま...

ウェブページにプレーヤーを埋め込む埋め込み要素の自動開始が false 無効

最近、仕事でサウンド ファイルを再生するために Web ページにプレーヤーを埋め込む必要に迫られまし...

MySQL-8.0.26 構成グラフィックチュートリアル

はじめに: 最近、会社のプロジェクトでデータベースのバージョンが変更されました。ここでは、MySQL...

Reactの状態管理の3つのルールのまとめ

目次序文No.1 焦点No.2 複雑な状態ロジックの抽出No.3 複数状態操作の抽出要約する序文Re...

ZabbixはLinuxシステムサービスのプロセスを監視

Zabbix は Linux システムのサービス ユニットを監視するためのルールを自動的に検出します...

Tomcat が応答データグラムを書き戻すタイミングの詳細な分析

疑問が生じるこの質問は、ファイルのダウンロードを記述しているときに発生しました。HttpServle...

js の一般的でない演算子と演算子の概要

一般的な演算子と JavaScript の演算子の概要カテゴリオペレーター算術演算子+、–、*、/、...

フロントエンドのパフォーマンス最適化を学習するための準備として、HTML ページのレンダリング プロセスを理解する (続き)

昨夜、ブラウザのレンダリングプロセスに関するエッセイを書きましたが、小さなコードで説明しただけでした...