1. 概要これまで、Keepalived を使用して Nginx サービスのデュアルマシン アクティブ スタンバイ高可用性を実現してきましたが、解決されていない問題がいくつかありました。今日はそれらについて一緒に議論しましょう。 1) デュアルマシン アクティブ スタンバイ メカニズムでは、Keepalived サービスがダウンすると、スタンバイ マシンが自動的に有効になり、サービスが提供されます。ただし、過度の負荷により Nginx サービスがダウンすると、仮想 IP はスタンバイ マシンを指しません。 2) デュアルマシン アクティブ スタンバイの特徴は、1 台のマシンのみがサービスを提供し、スタンバイ マシンはホスト マシンの Keepalived サービスがダウンした後にのみサービスを提供するため、リソースが大幅に浪費されることです。 3) 現在、自社製品を運用するためにクラウドサーバーをレンタルすることが一般的ですが、クラウドサーバーは仮想IPをサポートしていますか? 本日は上記3つの質問について解説させていただきます。 2. Keepalivedを使用してNginxを自動的に再起動する2.1 シェルスクリプトでNginxを再起動するKeepalived は Nginx を直接起動することはできませんが、シェル スクリプトを実行することはできます。そのため、ここではシェル スクリプトを使用して Nginx を起動する必要があります。 /etc/keepalived ディレクトリに、新しいスクリプト check_nginx.sh を作成します。スクリプトの具体的な内容は次のとおりです。 #!/bin/bash # コマンドを実行して Nginx プロセスを表示し、変数 A に格納します。A=`ps -C nginx --no-header | wc -l` # ダウンしているかどうかを確認します。ダウンしている場合は再起動を試みます。再起動に失敗した場合は、Keepalivedを停止します。 [ $A -eq 0 ]の場合 ローカル 睡眠3 if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then キルオールキープアライブ フィ フィ スクリプトはインターネットから来ています 2.2 スクリプトに実行権限を与える# chmod +x /etc/keepalived/check_nginx.sh 2.3 Keepalived設定ファイルに設定を追加するKeepalived 設定ファイルを開きます。# vi /etc/keepalived/keepalived.conf 設定ファイルを変更し、vrrp_script と track_script の設定を追加します。設定は次のとおりです。 グローバル定義 { # グローバルに一意なホスト識別子 router_id server_a } vrrp_script check_nginx { スクリプト "/etc/keepalived/check_nginx.sh" interval 3 # シェルスクリプトを3秒ごとに実行します weight 10 # スクリプトが正常に実行されると、重みが10ずつ増加します } vrrp_インスタンス VI_1 { # マスターノードかバックアップノードかを識別します。値はMASTERまたはBACKUPです。 状態マスター #バインドされたネットワーク カード インターフェイス ens33 # 仮想ルータ ID、プライマリノードとバックアップノードが一致していることを確認する virtual_router_id 51 # 重み優先度 100 # 同期チェック時間、デフォルトの間隔は1秒ですadvert_int 1 # 認証と承認のためのパスワード。すべてのアクティブサーバーとスタンバイサーバーは同じ認証を持つ必要があります { 認証タイプ PASS 認証パスワード 1111 } トラックスクリプト { チェック_nginx } # 仮想IP 仮想IPアドレス{ 192.168.1.88 } } 2.4 Keepalived サービスを再起動する再起動後、Nginx が停止した後すぐに自動的に起動することがわかりました。 3. デュアルアクティブホットスタンバイの構築3.1 デュアルアクティブホットスタンバイの概要デュアルマシン マスター/スレーブ メカニズムにより、一度に 1 つのサーバーのみが外部にサービスを提供し、マスター マシンとバックアップ マシンの構成は同じであるため、リソースが大幅に浪費されます。 デュアルアクティブ ホット スタンバイは、この問題を解決します。デュアルアクティブ ホット スタンバイの原理は、2 つのサーバーが Keepalived を使用して互いのアクティブ バックアップとして機能するため、2 つの仮想 IP が必要になることです。次に、DNS ポーリング構成を使用して、ドメイン名がラウンドロビン方式で 2 つの仮想 IP にルーティングされ、最終的に高可用性が実現されます。 3.2 シナリオの説明仮想IP1: 192.168.1.88 仮想IP2: 192.168.1.66 サーバー IP (プライマリ): 192.168.1.144 BサーバIP(バックアップ): 192.168.1.22 3.3 Aサーバーの構成を変更する構成は次のとおりです。 ! keepalived の設定ファイル グローバル定義 { # グローバルに一意なホスト識別子 router_id server_a } vrrp_インスタンス VI_1 { # マスターノードかバックアップノードかを識別します。値はMASTERまたはBACKUPです 状態マスター #バインドされたネットワーク カード インターフェイス ens33 # 仮想ルータ ID、プライマリノードとバックアップノードが一致していることを確認する virtual_router_id 51 # 重み優先度 100 # 同期チェック時間、デフォルトの間隔は1秒ですadvert_int 1 # 認証と承認のためのパスワード。すべてのアクティブサーバーとスタンバイサーバーは同じ認証を持つ必要があります { 認証タイプ PASS 認証パスワード 1111 } # 仮想IP 仮想IPアドレス{ 192.168.1.88 } } vrrp_インスタンス VI_2 { # マスターノードかバックアップノードかを識別します。値はMASTERまたはBACKUPです 状態 バックアップ #バインドされたネットワーク カード インターフェイス ens33 # 仮想ルータ ID、プライマリノードとバックアップノードが一致していることを確認する virtual_router_id 52 # 重み優先度 80 # 同期チェック時間、デフォルトの間隔は1秒ですadvert_int 1 # 認証と承認のためのパスワード。すべてのアクティブサーバーとスタンバイサーバーは同じ認証を持つ必要があります { 認証タイプ PASS 認証パス 1111 } # 仮想IP 仮想IPアドレス{ 192.168.1.66 } } 3.4 Bサーバ構成の変更構成は次のとおりです。 ! keepalived の設定ファイル グローバル定義 { ルータID サーバB } vrrp_インスタンス VI_1 { # バックアップ状態 BACKUP に設定 インターフェースens33 仮想ルータID 51 # 重みはホスト優先度90より低く設定されています 広告_int 1 認証 認証タイプ PASS 認証パスワード 1111 } # 仮想IPはプライマリとバックアップの両方で同じvirtual_ipaddressに設定する必要があります 192.168.1.88 } } vrrp_インスタンス VI_2 { # マスター状態MASTERに設定 インターフェースens33 仮想ルータID 52 # 重みはホスト優先度100より低く設定されています 広告_int 1 認証 認証タイプ PASS 認証パスワード 1111 } # 仮想IPはプライマリとバックアップの両方で同じvirtual_ipaddressに設定する必要があります 192.168.1.66 } } 3.5 両方のサーバーでKeepalivedを再起動するKeepalived を再起動するだけです。 3.6 DNSラウンドロビンの設定問題を解決するには、ネットワーク オペレータにお問い合わせください。 4. クラウドサーバーの負荷分散現在、多くの企業は、コスト効率が高く、より安定しており、運用と保守を担当する専門家がいるため、自社製品を稼働させるためにクラウド サーバーをレンタルすることを選択しています。 ただし、クラウドサーバーを利用する場合は、クラウドサービス運営者の制約を受けることになります。 仮想 IP を例に挙げると、一部のクラウド サービス オペレーターはこれをサポートしていません。 仮想 IP がサポートされていない場合は、Keepalived ソリューションを放棄するしかありません。 しかし、Keepalived が使用できない場合でも、Nginx の高可用性を実現するソリューションはまだあります。多くのクラウド サービス プロバイダーが独自の負荷分散サービスを開始しています (例: Alibaba Cloud の負荷分散 SLB、Tencent Cloud の負荷分散 CLB)。直接レンタルできるので、自分で設定する必要はありません。 5. 概要今日はKeepalivedによるNginxの自動再起動、Keepalivedのデュアルアクティブホットスタンバイ高可用性の構築、クラウドサーバ負荷分散ソリューションについてお話しました。皆様のお役に立てれば幸いです。 これで、Keepalived を使用して Nginx の自動再起動とデュアルアクティブ ホット スタンバイの高可用性を実現する方法についての説明は終了です。Keepalived を使用して Nginx の自動再起動を実現する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Google ブラウザのラベルと入力間のスペースに関する小さな問題
>>: MySQL の暗黙的な型変換によって発生するインデックス障害の解決策
システム: Ubuntu 16.04LTS 1\公式サイトからmysql-5.7.18-linux-...
NTP は、ネットワーク上で時間を同期するための TCP/IP プロトコルです。通常、クライアントは...
公式ウェブサイトhttps://cli.vuejs.org/ja/ガイド/場合によっては、コンポーネ...
方法1: onclickイベントを使用する <input type="button&...
MySQL 5.7.17、現在最新バージョンのようです、ダウンロードアドレスここで、プラットフォーム...
初めてDockerを使用してイメージをローカルにパッケージ化してデプロイするまず、私のラップトップシ...
Nginx の最適化 - バージョン番号と Web ページのキャッシュ時間を非表示にするバージョン番...
1. サーバーのセットアップリモート リポジトリは実際にはローカル リポジトリと何ら変わりなく、純粋...
1. ElasticSearch とは何ですか? Elasticsearch も Java で開発さ...
1. 仮想ホストとは何ですか?仮想ホストは、特殊なテクノロジーを使用して、実行中のサーバーを論理的に...
ダウンロードアドレス: https://dev.mysql.com/downloads/mysql/...
//MySQL ステートメント SELECT * FROM `MyTable` WHERE `id...
これは、CSS 3.0 で実装されたテキストのホバーとジャンプ効果です。効果は次のとおりです。 以下...
ある達人がかつて、自分の妻のことを知るのと同じくらい、自分が管理するデータベースのことを知るべきだと...
123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...