本番環境で 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 -y install keepalived
vi 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
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
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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

Windowsでnginxを構成する方法は? nginxをインストールし、仮想ホスト構成を作成します。メイン構成ファイルを変更し、仮想ホスト構成を含めます。 nginxを起動またはリロードします。構成をテストし、Webサイトを表示します。 SSLを選択的に有効にし、SSL証明書を構成します。ファイアウォールを選択的に設定して、ポート80および443のトラフィックを許可します。

Linuxでは、次のコマンドを使用して、nginxが起動されるかどうかを確認します。SystemCTLステータスNGINXコマンド出力に基づいて、「アクティブ:アクティブ(実行)」が表示された場合、NGINXが開始されます。 「アクティブ:非アクティブ(dead)」が表示されると、nginxが停止します。

Linuxでnginxを開始する手順:nginxがインストールされているかどうかを確認します。 systemctlを使用して、nginxを開始してnginxサービスを開始します。 SystemCTLを使用して、NGINXがシステムスタートアップでNGINXの自動起動を有効にすることができます。 SystemCTLステータスNGINXを使用して、スタートアップが成功していることを確認します。 Webブラウザのhttp:// localhostにアクセスして、デフォルトのウェルカムページを表示します。

Nginxクロスドメインの問題を解決するには2つの方法があります。クロスドメイン応答ヘッダーの変更:ディレクティブを追加して、クロスドメイン要求を許可し、許可されたメソッドとヘッダーを指定し、キャッシュ時間を設定します。 CORSモジュールを使用します。モジュールを有効にし、CORSルールを構成して、ドメインクロスリクエスト、メソッド、ヘッダー、キャッシュ時間を許可します。

nginxの実行ステータスを表示する方法は次のとおりです。PSコマンドを使用してプロセスステータスを表示します。 nginx configuration file /etc/nginx/nginx.confを表示します。 NGINXステータスモジュールを使用して、ステータスエンドポイントを有効にします。 Prometheus、Zabbix、Nagiosなどの監視ツールを使用します。

NGINXサーバーを起動するには、異なるオペレーティングシステムに従って異なる手順が必要です。Linux/UNIXシステム:NGINXパッケージをインストールします(たとえば、APT-GetまたはYumを使用)。 SystemCtlを使用して、NGINXサービスを開始します(たとえば、Sudo SystemCtl Start NGinx)。 Windowsシステム:Windowsバイナリファイルをダウンロードしてインストールします。 nginx.exe実行可能ファイルを使用してnginxを開始します(たとえば、nginx.exe -c conf \ nginx.conf)。どのオペレーティングシステムを使用しても、サーバーIPにアクセスできます

質問への回答:304変更されていないエラーは、ブラウザがクライアントリクエストの最新リソースバージョンをキャッシュしたことを示しています。解決策:1。ブラウザのキャッシュをクリアします。 2.ブラウザキャッシュを無効にします。 3.クライアントキャッシュを許可するようにnginxを構成します。 4.ファイル許可を確認します。 5.ファイルハッシュを確認します。 6. CDNまたは逆プロキシキャッシュを無効にします。 7。nginxを再起動します。
