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データベースで列を追加、削除、変更する方法

推薦する

Reactの仮想DOMとdiffアルゴリズムの詳細な説明

仮想DOMの役割まず、仮想 DOM の出現によってどのような問題が解決されるのかを知る必要があります...

DockerでSpring Bootアプリケーションを実行する方法

ここ数日、dockerでSpring Bootアプリケーションを実行する方法を勉強してきました。以前...

Docker ベースの Redis マスタースレーブ クラスタの実装

目次1. Redisイメージを取得する2. 6つのRedisコンテナを作成する3. Redisコンテ...

MySQL の異常なエラー ERROR: 2002 を解決する方法

最近、MySQL の起動中にエラーが発生しました。エラー メッセージは次のとおりです。 エラー 20...

Tomcat の構成と最適化ソリューションの詳細な説明

サービス.xml Server.xml 構成ファイルは、コンテナー全体を構成するために使用されます。...

WindowsでMysql5.7.17のインストールと起動に失敗する問題を解決する

マシンに初めて MySQL をインストールします。オペレーティングシステムはwin7ですmysqlの...

ソースコード分析からTomcatがサーブレットの初期化を呼び出す方法の詳細な説明

目次導入1. Tomcatを起動するコード2. Tomcatフレームワーク3. コンテナを作成する ...

MySQL 外部キー制約 (FOREIGN KEY) ケースの説明

MySQL 外部キー制約 (FOREIGN KEY) はテーブルの特別なフィールドであり、主キー制約...

WeChatミニプログラムのすべてのページがログインされていることを確認する方法

目次現状解決さらなる解決策やっと現状WeChat ミニプログラムには、ホームページ、個人ページ、いく...

MySQL データベースのホットスタンバイにおける問題点の分析

以前、MySQL データベースのデュアルマシン ホット スタンバイの設定方法を紹介しました。ご興味の...

シェルでパスワードなしでMySQLデータベースに素早くログインする方法

背景Shell の mysql-client を介して MySQL データベースにログインする場合、...

Ubuntu 20.04 では、隠し録音ノイズ低減機能が有効になります (推奨)

最近、 Ubuntu 20.04でkazamを使用して録音しているときに、問題が見つかりました。シス...

Docker でタイムゾーンの問題に対処する方法

背景ここ 2 日間 Docker を使用していたところ、コンテナの起動後に date -R の出力タ...

Vueは秒殺しのカウントダウンコンポーネントを実装する

この記事では、2番目のキルカウントダウンコンポーネントを実装するためのVueの具体的なコードを参考ま...

Javascriptのtry catchの2つの機能についてお話しましょう

プログラムは上から下へ順番に実行され、いくつかの制御文によって実行経路を変更することができます。制御...