nginx高可用性クラスタの実装プロセス

nginx高可用性クラスタの実装プロセス

この記事は主に、nginx 高可用性クラスタの実装プロセスを紹介します。この記事のサンプルコードは非常に詳細で、皆さんの学習や仕事に一定の参考値があります。困っている友人は参考にしてください。

1. 構成:

(1) 2台のnginxサーバーが必要 (2) Keepalivedが必要 (3) 仮想IPが必要

2. 高可用性構成の準備

(1) 2台のサーバーが必要です: 192.168.180.113 と 192.168.180.112 (2) 両方のサーバーに nginx をインストールします (3) 両方のサーバーに keepalived をインストールします

3. 2台のサーバーにkeepalivedをインストールする

(1)yumコマンドを使ってインストールする

(2)インストール後、etc内にkeepalivedというディレクトリが作成され、keepalived.confというファイルが作成されます。

[root@topcheer dev]# yum install keepalived -y
読み込まれたプラグイン: fastestmirror、langpacks
キャッシュされたホストファイルからミラー速度をロードする
 * ベース: mirrors.cn99.com
 * epel: ftp.riken.jp
 * 追加情報: mirrors.cn99.com
 * 更新情報: mirror.lzu.edu.cn
gitlab_gitlab-ce/x86_64/署名 | 836 B 00:00:00
gitlab_gitlab-ce/x86_64/署名 | 1.0 kB 00:00:00 !!!
gitlab_gitlab-ce-source/署名 | 836 B 00:00:00
gitlab_gitlab-ce-source/signature | 951 B 00:00:00 !!!
依存関係を解決しています--> トランザクションを確認しています---> パッケージ keepalived.x86_64.0.1.3.5-16.el7 がインストールされます--> パッケージ keepalived-1.3.5-16.el7.x86_64 に必要な依存関係 libnetsnmpmibs.so.31()(64 ビット) を処理しています--> パッケージ keepalived-1.3.5-16.el7.x86_64 に必要な依存関係 libnetsnmpagent.so.31()(64 ビット) を処理しています--> トランザクションを確認しています---> パッケージ net-snmp-agent-libs.x86_64.1.5.7.2-43.el7 がインストールされます--> 依存関係の解決が完了しました​
依存関係の解決
==========================================================================================================================================
 パッケージ アーキテクチャ バージョン ソース サイズ === ...
インストール中:
 キープアライブド x86_64 1.3.5-16.el7 ベース 331 k
依存関係をインストールします:
 net-snmp-agent-libs x86_64 1:5.7.2-43.el7 ベース 706 k
​
取引概要= ...
1 つのパッケージ(+ 1 つの依存パッケージ)をインストールします
​
合計ダウンロード数: 100万
設置サイズ: 3.0M
パッケージをダウンロードしています:
(1/2): net-snmp-agent-libs-5.7.2-43.el7.x86_64.rpm | 706 kB 00:00:00
(2/2): keepalived-1.3.5-16.el7.x86_64.rpm | 331 kB 00:00:00
--------------------------------------------------------------------------------------------------------------------------------------------------------------
合計 1.8 MB/秒 | 1.0 MB 00:00:00
トランザクションチェックを実行中
トランザクションテストの実行
トランザクションテストが成功しました
トランザクションの実行
 インストール中: 1:net-snmp-agent-libs-5.7.2-43.el7.x86_64 1/2
 インストール中: keepalived-1.3.5-16.el7.x86_64 2/2
 検証中: keepalived-1.3.5-16.el7.x86_64 1/2
 検証中: 1:net-snmp-agent-libs-5.7.2-43.el7.x86_64 2/2
​
インストール済み:
 キープアライブド.x86_64 0:1.3.5-16.el7
​
依存関係としてインストール:
 ネットSNMPエージェントライブラリ.x86_64 1:5.7.2-43.el7
​
完了!

4. 設定ファイルを変更する

マスターとスレーブの両方を交換する必要がある

[root@topcheer keepalived]# cat keepalived.conf
グローバル定義 {
  通知メール{
  メールアドレス
  フェイルオーバー@firewall.loc
  [email protected]
  }
  通知メール送信者 [email protected]
  SMTPサーバー 192.168.180.113
  SMTP_接続タイムアウト 30
  ルータID LVS_DEVEL
  }
  vrrp_script chk_http_port {
  スクリプト "/usr/local/src/nginx_check.sh"
  間隔 2 # (検出スクリプトの実行間隔)
  重量2
  }
  vrrp_インスタンス VI_1 {
   state BACKUP # バックアップサーバでMASTERをBACKUPに変更する
   interface ens33 //ネットワークカード virtual_router_id 51 # マスターマシンとバックアップマシンの virtual_router_id は同じである必要があります priority 40 # マスターマシンとバックアップマシンの優先度は異なります。マスターの値は大きく、バックアップの値は小さくなります advert_int 1
  認証
   認証タイプ PASS
   認証パスワード 1111
  }
  仮想IPアドレス{
  192.168.180.114 // VRRP H 仮想アドレス}
}

スクリプト:

[root@topcheer src]# cat nginx_check.sh
#!/bin/bash
A=`ps -C nginx ▒Cヘッダーなし |wc -l`
[ $A -eq 0 ]の場合
  ローカル
  睡眠2
  if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
    キルオールキープアライブ
  フィ
fi[root@topcheer src]#

両方のサーバーでnginxとkeepalivedを起動します

nginx を起動します: ./nginx gitlab 独自の nginx を 112 にインストールしたので、起動する必要はありません。keepalived を起動します: systemctl start keepalived.service

5. テスト

113でnginxとkeepalivedをオフにすると、112に切り替わることがわかります。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • 高可用性 Web クラスターを実装するための Keepalived+Nginx+Tomcat サンプル コード
  • Nginx は高可用性クラスタ構築を実装します (Keepalived+Haproxy+Nginx)

<<:  Vue で webSocket を使用してリアルタイムの天気を更新する方法

>>:  MySQLデータベースで列を追加、削除、変更する方法

推薦する

権限の問題によりMySQLの設定ファイルmy.cnfを起動できない問題の解決方法

この記事では、権限の問題により MySQL 構成ファイル my.cnf を起動できない場合の関連する...

Vueはmockjsを使用してシミュレートされたデータケースの詳細を生成します

目次プロジェクトにmockjsをインストールするVueプロジェクトでmockjsを使用する基本的なプ...

sqlite3 から mysql に移行するときに起こりうる問題のコレクション

簡単な説明適切な読者: モバイル開発sqlite3 データを mysql に移行する場合、多くの構文...

Mysqlは実行中のトランザクションを照会し、ロックを待機する方法

navicatを使用してテストと学習を行います。まず、 set autocommit = 0;を使用...

MySQL のタイムスタンプと日付時刻のタイムゾーンの問題によって生じる DTS の落とし穴の詳細な説明

目次MySQL で現在の時刻を表現するにはどうすればよいでしょうか?結論は確認するピットMySQL ...

HTML タグ: サブタグと sup タグ

今日はあまり使わないHTMLタグ「subタグ」と「supタグ」を紹介します。関連記事: HTML タ...

Vue+Springbootでインターフェースシグネチャを実装するためのサンプルコード

1. 実装のアイデアインターフェース署名の目的は、リクエストパラメータが改ざんされていないか、リクエ...

Vue の大容量ファイルアップロードとブレークポイント再開アップロードの実装

目次ファイルアップロードのための2つのソリューションファイルストリーム(フォームデータ)に基づくクラ...

Docker-compose を使用して GitLab をデプロイする方法

Docker-compose は GitLab をデプロイします1. Dockerをインストールする...

MySQL コマンドラインモードアクセス操作 MySQL データベース操作

使用環境cmd モードで、mysql --version と入力します (インストールされている M...

VSCode+CMake+Clang+GCC 環境構築チュートリアル (Win10 の場合)

大学院入試に備えて、C/C++ を使って基本的なデータ構造とアルゴリズムを実装する予定です。アルゴリ...

ノード スキャフォールディングを使用してトークン検証を実装するサーバーを構築する方法

コンテンツスキャフォールディングを使用してノードプロジェクトを素早く構築するデータベースとやり取りす...

jQuery キャンバスは QR コード付きのポスターを生成します

この記事では、jQuery キャンバスを使用して QR コード付きのポスターを生成するための具体的な...

Vue2.x と Vue3.x のルーティングフックの違いの詳細な説明

目次vue2.xプレコンセプト:ルーティングフックのカテゴリルーティングとコンポーネントの概念(フッ...

VMWare Linux MySQL 5.7.13 のインストールと設定のチュートリアル

この記事では、参考までにVMWare LinuxにMySQL 5.7.13をインストールするチュート...