検索
ホームページ運用・保守Nginx本番環境で Nginx 高可用性を実装する方法

準備作業:

192.168.16.128

192.168.16.129

2 台の仮想マシン。 nginxのインストール

nginxのインストール

yumソースファイルの更新:

rpm -ivh http://nginx.org/packages/centos/7/noarch/rpms/nginx-release-centos-7-0.el7.ngx.noarch.rpm
wget -o /etc/yum.repos.d/centos-base.repo http://mirrors.aliyun.com/repo/centos-7.repo

nginxのインストール:

yum -y install nginx

操作コマンド:

systemctl start nginx; #启动nginx
systemctl stop nginx; #停止nginx

高可用性とは何ですか?

高可用性 HA (高可用性) は、分散システム アーキテクチャの設計において考慮する必要がある要素の 1 つであり、通常、システムがサービスを提供できない時間を短縮することを指します。デザイン。システムが常にサービスを提供できる場合、可用性は 100% ですが、予期しない状況が発生することがあります。したがって、サービスの障害を可能な限り減らすように努めることしかできません。

問題は解決しましたか?

実稼働環境では、外部サービスを提供するリバース プロキシとして nginx がよく使用されますが、nginx にはいつかサーバーのダウンタイムなどの障害が発生することは避けられません。 nginx がダウンすると、外部から提供されたすべてのインターフェイスにアクセスできなくなります。

サーバーが 100% 利用可能であることを保証することはできませんが、この悲劇を回避する方法を見つける必要があります。現在、私たちは keepalived を使用して nginx

の高可用性を実現しています。

デュアル マシン ホット バックアップ ソリューション

このソリューションは、国内企業の間で最も一般的な高可用性ソリューションです。デュアル マシン ホット バックアップとは、実際には1 台のサーバーはサービスを提供しており、もう 1 台は特定のサービスを待機状態にあり、一方のサーバーが利用できない場合、もう一方のサーバーが代わりにサービスを提供します。

キープアライブとは何ですか?

keepalived ソフトウェアは元々、LVS クラスタ システム内の各サービス ノードのステータスを管理および監視する LVS 負荷分散ソフトウェア用に設計されましたが、その後、高可用性を実現するために vrrp (仮想ルーター) が追加されました。プロトコル、仮想ルーター冗長化プロトコル)機能。したがって、キープアライブは、LVS ソフトウェアを管理できるだけでなく、他のサービス (nginx、haproxy、mysql など) の高可用性ソリューション ソフトウェアとしても使用できます。メカニズム

keepalived 高可用性サービス間のフェイルオーバー転送は、vrrp を通じて実装されます。

keepalived サービスが正常に動作している場合、メイン マスター ノードは継続的に (マルチキャスト) ハートビート メッセージをバックアップ ノードに送信し、バックアップ ノードがまだ生きていることを伝えます。 、ハートビート メッセージを送信できず、スタンバイ ノードはマスター ノードからのハートビートを検出し続けることができないため、独自の引き継ぎプログラムを呼び出して、マスター ノードの IP リソースとサービスを引き継ぎます。プライマリ マスター ノードが回復すると、バックアップ ノードはプライマリ ノードの障害時に引き継いだ IP リソースとサービスを解放し、元のバックアップの役割に戻ります。

実装プロセス

keepalived のインストール

yum を使用して直接インストールでき、依存関係が自動的にインストールされます:

yum -y install keepalived

ホスト (192.168.16.128) keepalived 設定ファイルを変更する

yum インストールにより、/etc/keepalived に設定ファイルが生成されます:

vi keepalived.conf

keepalived.conf:

#检测脚本
vrrp_script chk_http_port {
 script "/usr/local/src/check_nginx_pid.sh" #心跳执行的脚本,检测nginx是否启动
 interval 2       #(检测脚本执行的间隔,单位是秒)
 weight 2       #权重
}
#vrrp 实例定义部分
vrrp_instance vi_1 {
 state master   # 指定keepalived的角色,master为主,backup为备
 interface ens33   # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
 virtual_router_id 66 # 虚拟路由编号,主从要一直
 priority 100   # 优先级,数值越大,获取处理请求的优先级越高
 advert_int 1   # 检查间隔,默认为1s(vrrp组播周期秒数)
 #授权访问
 authentication {
  auth_type pass #设置验证类型和密码,master和backup必须使用相同的密码才能正常通信
  auth_pass 1111
 }
 track_script {
  chk_http_port   #(调用检测脚本)
 }
 virtual_ipaddress {
  192.168.16.130   # 定义虚拟ip(vip),可多设,每行一个
 }
}

Virtual_ipaddress は vip で構成でき、vip を通じてサービスにオンラインでアクセスできます。

#サーバーのネットワーク カードに応じてインターフェイスを設定する必要があります。通常の表示方法は ip addr です。


認証設定バックアップ マシンへの認可アクセスにも同じ設定が必要です。

バックアップ マシン (192.168.16.129) のキープアライブ構成ファイルを変更します。

#keepalived.conf:

#检测脚本
vrrp_script chk_http_port {
 script "/usr/local/src/check_nginx_pid.sh" #心跳执行的脚本,检测nginx是否启动
 interval 2       #(检测脚本执行的间隔)
 weight 2       #权重
}
#vrrp 实例定义部分
vrrp_instance vi_1 {
 state backup      # 指定keepalived的角色,master为主,backup为备
 interface ens33      # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
 virtual_router_id 66    # 虚拟路由编号,主从要一直
 priority 99       # 优先级,数值越大,获取处理请求的优先级越高
 advert_int 1      # 检查间隔,默认为1s(vrrp组播周期秒数)
 #授权访问
 authentication {
  auth_type pass #设置验证类型和密码,master和backup必须使用相同的密码才能正常通信
  auth_pass 1111
 }
 track_script {
  chk_http_port     #(调用检测脚本)
 }
 virtual_ipaddress {
  192.168.16.130     # 定义虚拟ip(vip),可多设,每行一个
 }
}

検出スクリプト:

#!/bin/bash
#检测nginx是否启动了
a=`ps -c nginx --no-header |wc -l`  
if [ $a -eq 0 ];then #如果nginx没有启动就启动nginx      
  systemctl start nginx    #重启nginx
  if [ `ps -c nginx --no-header |wc -l` -eq 0 ];then #nginx重启失败,则停掉keepalived服务,进行vip转移
    killall keepalived     
  fi
fi

スクリプト認証:chmod 775 check_nginx_pid.sh

説明: スクリプトは承認されている必要があります。承認されていない場合は、アクセス権限がありません。ここでは、2 つのサーバーが実行されています。

vip(virtual_ipaddress:192.168.16.130),

vip を通じてサービスに直接アクセスします。本番環境で。

nginx の失敗をシミュレートする:

2 つのサーバーがデフォルトでアクセスする nginx html ページを変更します。

最初に

192.168.16.130

にアクセスし、VIP 経由でアクセスすると、ページには

192.168.16.128

が表示され、サービスが現在メイン サーバーによって提供されていることを示します。

この時点で192.168.16.128メインサーバーは次のコマンドを実行します:

systemctl stop nginx; #停止nginx

vipに再度アクセスし(

192.168.16.130)、この時点ではまだページが表示されます: 192.168.16.128

、これはスクリプトの自動再起動です。

ここで、192.168.16.128 サーバーを直接閉じ、ここで vip (192.168.16.130

) にアクセスすると、ページに

192.168.16.129## が表示されることがわかります。 # その時点で、keepalived は自動的にフェイルオーバーし、エンタープライズ レベルの実稼働環境向けの高可用性ソリューションが確立されます。 keepalived にはメールによるリマインダーなどの多くの機能がありますが、それらは利用できません。ドキュメントを読むには公式 Web サイトにアクセスしてください。

以上が本番環境で Nginx 高可用性を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Nginxユニットvs他のアプリケーションサーバーNginxユニットvs他のアプリケーションサーバーApr 24, 2025 am 12:14 AM

nginxunitは、多言語プロジェクトや動的な構成要件に適した、apachetomcat、gunicorn、node.jsビルトインHTTPサーバーよりも優れています。 1)複数のプログラミング言語をサポートします。2)動的な構成リロード、3)高いスケーラビリティと信頼性を必要とするプロジェクトに適した組み込みの負荷分散機能を提供します。

Nginxユニット:アーキテクチャとその仕組みNginxユニット:アーキテクチャとその仕組みApr 23, 2025 am 12:18 AM

Nginxunitは、モジュラーアーキテクチャと動的な再構成機能により、アプリケーションのパフォーマンスと管理性を向上させます。 1)モジュラー設計には、マスタープロセス、ルーター、アプリケーションプロセスが含まれ、効率的な管理と拡張をサポートします。 2)動的再構成により、CI/CD環境に適した、実行時に構成をシームレスに更新できます。 3)多言語サポートは、言語ランタイムの動的なロードを通じて実装され、開発の柔軟性が向上します。 4)イベント駆動型モデルと非同期I/Oによって高性能が達成され、高い並行性の下でも効率的なままです。 5)申請プロセスを分離し、アプリケーション間の相互の影響を減らすことにより、セキュリティが改善されます。

Nginxユニットの使用:アプリケーションの展開と管理Nginxユニットの使用:アプリケーションの展開と管理Apr 22, 2025 am 12:06 AM

nginxunitを使用して、アプリケーションを複数の言語で展開および管理できます。 1)nginxunitをインストールします。 2)PythonやPHPなどのさまざまなタイプのアプリケーションを実行するように構成します。 3)アプリケーション管理に動的構成関数を使用します。これらの手順を通じて、アプリケーションを効率的に展開および管理し、プロジェクトの効率を向上させることができます。

Nginx vs. Apache:Webサーバーの比較分析Nginx vs. Apache:Webサーバーの比較分析Apr 21, 2025 am 12:08 AM

NGINXは、高い並行接続の処理に適していますが、Apacheは複雑な構成とモジュール拡張が必要な​​シナリオにより適しています。 1.Nginxは、高性能と低リソース消費で知られており、高い並行性に適しています。 2. Apacheは、その安定性とリッチモジュール拡張機能で知られています。これは、複雑な構成ニーズに適しています。

Nginxユニットの利点:柔軟性とパフォーマンスNginxユニットの利点:柔軟性とパフォーマンスApr 20, 2025 am 12:07 AM

Nginxunitは、動的な構成と高性能アーキテクチャにより、アプリケーションの柔軟性とパフォーマンスを向上させます。 1.動的構成により、サーバーを再起動せずにアプリケーション構成を調整できます。 2.高性能は、イベント駆動型および非ブロッキングアーキテクチャおよびマルチプロセスモデルに反映され、同時接続を効率的に処理し、マルチコアCPUを利用できます。

Nginx vs. Apache:パフォーマンス、スケーラビリティ、効率Nginx vs. Apache:パフォーマンス、スケーラビリティ、効率Apr 19, 2025 am 12:05 AM

NginxとApacheはどちらも強力なWebサーバーであり、それぞれがパフォーマンス、スケーラビリティ、効率の点で独自の利点と短所を備えています。 1)nginxは、静的なコンテンツを処理し、逆プロキシを逆にするときにうまく機能します。 2)Apacheは、動的コンテンツを処理するときにパフォーマンスが向上し、リッチモジュールサポートが必要なプロジェクトに適しています。サーバーの選択は、プロジェクトの要件とシナリオに基づいて決定する必要があります。

究極の対決:Nginx vs. Apache究極の対決:Nginx vs. ApacheApr 18, 2025 am 12:02 AM

Nginxは、高い並行リクエストの処理に適していますが、Apacheは複雑な構成と機能的拡張が必要な​​シナリオに適しています。 1.Nginxは、イベント駆動型の非ブロッキングアーキテクチャを採用しており、高電流環境に適しています。 2。Apacheはプロセスまたはスレッドモデルを採用して、複雑な構成のニーズに適したリッチモジュールエコシステムを提供します。

Nginx in Action:例と現実世界のアプリケーションNginx in Action:例と現実世界のアプリケーションApr 17, 2025 am 12:18 AM

Nginxは、Webサイトのパフォーマンス、セキュリティ、およびスケーラビリティを改善するために使用できます。 1)逆プロキシおよびロードバランサーとして、Nginxはバックエンドサービスを最適化し、トラフィックを共有できます。 2)イベント駆動型および非同期アーキテクチャを通じて、nginxは高い並行接続を効率的に処理します。 3)構成ファイルでは、静的ファイルサービスやロードバランシングなどのルールの柔軟な定義を可能にします。 4)最適化の提案には、GZIP圧縮の有効化、キャッシュの使用、およびワーカープロセスの調整が含まれます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。