keepalivedの+ LVS + nginxのnginxの高可用性クラスタを構築します

  nginxのは、その上のリバースプロキシ、要求流通支援、非常に便利な機能のロード・バランシング、キャッシング、およびのための非常に良いツールです。要求処理に、nginxのは、モデルベースのイベントリスナーであるファイルディスクリプタモデルを使用し、それは非常に効率的なリクエスト処理効率を有し、単一の同時容量は数百万人に達することができます。nginxの受信要求がアプリケーションサーバロードバランシング戦略のその次のレベルに配布することができ、これらのサーバは通常、クラスタ内に配備され、これが不十分のパフォーマンスは、アプリケーション・サーバーは、マシンのトラフィックの方法を追加することによって拡張することができます。nginxの規模の、いくつかの大規模なサイトのボトルネックが、パフォーマンスはスタンドアローンの同時実行がキャップされるようnginxの、とnginxのから来て、そして自分自身をnginxのこの場合、クラスタモデルをサポートしていませんので、この時間これは特に重要です。
  
  keepalivedのツールは、状態検出サーバとフェイルオーバーです。その設定ファイルでは、サーバは、スタンバイサーバは要求の状態を検知するように構成することができます。要求200は、ステータスコードが返された場合、正常でない場合にkeepalivedのは、サーバ要求を指定するには、設定時に提供されるサービスの要求を送信し続ける可能性があり、それが、これはkeepalivedのだろう、と、サーバの状態が正常であることを示し、サーバーをオフライン、オンライン状態にし、バックアップサーバにオフ。
  
  LVSは、負荷分散ツールの4階建てです。四ロードバランシング所謂、対応7つのネットワークプロトコル、例えばHTTPプロトコルなどの一般的なプロトコルは、7つに基づいて、及びLVS、すなわちレイヤ4プロトコルに作用している:トランスポート層、ネットワーク層、データリンクそして、物理層。ここでは、主要なトランスポート層プロトコルは、TCPとUDPプロトコルであります、それは主支持TCPとUDP LVS方法です。LVSは、4つの負荷分散に位置していますので、それもあり、nginxの要求処理が7のネットワーク上に構築されているようなので、要求を処理する能力は、非常に一般的なサーバーよりも高くなって、負荷分散LVS nginxのです10回以上。
  
  上記の説明を通じて、我々は大規模なサイトで見つけることができ、アプリケーションサーバは、横展開することができ、nginxの水平展開をサポートしていない場合、nginxのは、パフォーマンスのボトルネックになるだろう。私たちはLVSとnginxのを組み合わせた場合、その後、あなたは様々なnginxのサーバーにバランスの取れた分布を要求する負荷分散LVSを介して複数のnginxのサーバーを展開することができ、その後、nginxのサーバーから配布SOおよびLVSは、負荷分散ツールです各アプリケーションサーバに、私たちはnginxのの横方向の拡張を実現するように。性質上nginxのにアプリケーションサーバであるため、それがまた下がってもよいので、これはkeepalivedのnginxの障害検出およびスイッチングサービスと連携して実現することができます。言い換えれば、keepalivedの+ LVS + nginxのことで、私たちは、高可用性クラスタモデルを達成しているnginxの。
  
  上記の説明では、我々はkeepalivedの+ LVS + nginxのnginxのがするクラスタモデルを実現することに注意しますが、私たちは、それ自体がIPとポートでnginxのを、使用している場合、デフォルトでは、ポート80と443を聞きます、その後、LVSは異なるIPとポート、それを使用してサーバーのnginxのへの要求を実現する方法ですか?この本IP、仮想IPを通じて達成いわゆる仮想IP IP外普通、外部クライアントの要求を提供されているされ、仮想IP、スケジューリングやロードバランシングポリシーの設定のための要求を受信した後、LVS、選択ターゲットnginxのサーバーは、その後、サーバに要求を転送します。ここではそこに二つの概念はLVSであり、スケジューラは、負荷分散戦略である、いわゆるスケジューラは、LVSは、三つの主要なスケジューラがあること方法で、要求と応答のデータを処理する参照します:
  
  ネットワークアドレス変換(VS経由で仮想サーバー / NAT): このアプローチの主な原則は、ユーザーがLVSは、ロードバランシングアルゴリズムに基づいて、リクエスト対象のIPパケットをターゲット処理サービスを選択し、仮想IPに要求を送信していることですアドレス変更は、ターゲットサーバのために計算され、サーバーに送信されました。応答パケットの場合、レスポンスデータディスパッチャのソースアドレスが変更された仮想アドレスのIPでターゲットサーバに戻ります。このように、クライアントは、その形態は、単一のサーバを対象としています。しかし、このアプローチの欠点は、要求がケースよりも大きい場合に、スケジューラによって必要とされるすべての応答データが、その後、スケジューラは、システム全体のボトルネックになることです。
  
  IPトンネリング(VS /仮想サーバーを経由して TUN): これを解決するための主な方法は、VS / NATにある、応答データは、スケジューラによって発行されます。VS / NATと同様に、データのディスパッチャは、まだ要求を受信し、ターゲットIPパケットのターゲットサービスのIPを変更しますが、ターゲット・サービス処理されたデータ、後に直接送信元IP応答パケットう仮想IPを変更し、その後、クライアントに要求を送信します。このようにして、応答データは、スケジューラへの復帰を必要とせずに、それぞれの処理対象のサービスによって実行され、このように大幅にシステムのスループットを向上させるだけでなく、原因一般的な要求メッセージパケットにスケジューラ、より少ない数に応答しますそれだけでは、システム全体の負荷が各サーバーに均等に共有される、要求パケットを処理する必要があります。
  
  直接ルーティング(VS /経由仮想サーバー DR): VS / TUNに関して、このようには、主な違いは、VS / NATのIPアドレスが目標サービスIPアドレスを変更するための要求メッセージである、ということで、VS / DRは、これは、IPアドレスのVS / TUNが、最終的には、送信データがMACアドレスで変換する必要がありますされているため、このような方法で、より効率的になり、直接宛先アドレスにMACアドレス要求パケットを変更することです。
  
  1.環境準備
  
  1. VMware社。
  
  2. 4 CentOs7仮想ホスト:172.16.28.130、172.16.28.131、172.16.28.132、172.16.28.133
  
  3.システムサービス:LVS、keepalivedの
  
  4 Webサーバー:nginxの
  
  5.クラスター構造:LVS DRモード
  
  2.ソフトウェアがインストールされて
  
  上4台の仮想マシンは、我々は次の方法でクラスタを構築する:
  
  172.16.28.130 LVS + keepalivedの
  
  172.16.28.131 LVS + keepalivedの
  
  172.16.28.132 nginxの
  
  172.16.28.133 nginxの
  
  ここでは、172.16.28.130とLVS + keepalivedの作業機械として172.16.28.131 2台のマシンが使用し、それは主に、負荷分散や障害検出およびオフラインのためにこれら二つのマシンの役割であり、我々は172.16.28.132と172.16使いますアプリケーションサーバ、主に外部のサービス・プロバイダーとして.28.133二つのマシン。4台のサーバ全体のバックエンドサービスとして、クラスター、および両方の仮想IPを提供することが172.16.28.120です。これは、サービスが二つのサーバ、二つのサーバ、マスタサーバとして1、バックアップサーバーとして1 LVS検出し、両方のロードバランシング設定にまったく同じですされた場合keepalivedの、注意すべきです。通常の状況下では、クライアントが仮想IPを要求すると、LVSは、マスタサーバに要求を転送し、サーバーが負荷分散ポリシーに従って構成されたマスター・アプリケーション・サーバーを選択し、処理するためのアプリケーション・サーバーにリクエストを送信します。いくつかの点で、LVSが原因マスタサーバの障害のためにダウンしている場合、keepalivedのフェールオーバの機能を実行するために、サービスラインを提供するためのマシンで、バックアップ、障害や障害オフラインを検出します。
  
  搭載keepalivedの+ 2.1 LVS
  
  取付172.16.28.131 172.16.28.130とIPVS上とkeepalivedの:
  
  #は、IPVS搭載
  
  ipvsadmののインストール須藤YUM
  
  位keepalivedの装着
  
  須藤YUMインストールkeepalivedの
  
  nginxの上に取り付けられ、172.16.28.132 172.16.28.133:
  
  #インストールがnginxの
  
  須藤YUM nginxのインストール
  
  :あなたがそうでなければ、LVS + keepalivedの2つのマシンが2台のnginxのサーバーまでを要求することはできません、両方のnginxのサーバー上でファイアウォールをオフにする必要があり、それを注意してください
  
  #は、ファイアウォールのオフ
  
  firewalld.service systemctl禁止を
  
  2つのロードバランシングマシンを参照してください:LVSサポートするかどうか
  
  はgrep ip_vs | sudoのlsmodを
  
  使用すると、次のような結果が表示された場合のその後のサポート#を
  
  [zhangxufeng @ localhostの〜] $ sudoをlsmodの|はgrepのip_vs
  
  145 497 0 ip_vs
  
  nf_conntrack 137 239 1 ip_vs
  
  12644 3 XFS libcrc32c、ip_vs、nf_conntrack
  
  上記の場合をその後、あなたは上記のコマンドで見ることができ、IPVSを開始した後、コマンドはsudo ipvsadmのを実行し、何も結果を命じるません。IPVSを開始した後、私たちは、親機としての/ etc / keepalivedの/編集keepalived.confファイルディレクトリで、我々は172.16.28.130マシン、マスター・ノードは、以下のように構成することができます:
  
  #無料の構成参加
  
  global_defsを{
  
  LVSで指定director1 ID番号をlvs_id
  
  }
  
  #設定VRRP
  
  LVS {vrrp_instance
  
  状態マスター#は、現在のノードを指定すると、マスタノードであります
  
  ここで、インタフェースens33位ens33は、カードの名前は、ifconfigコマンドまたはIP ADDRが見ることができるされ
  
  、ここで指定された51位virtual_router_id仮想ルーティングID、マスタノードとバックアップノードが同じ指定する必要がされている
  
  優先度151#は、現在のノードの優先値を指定しますノードよりも高い優先順位、マスターバックアップノード大きい
  
  advert_int 1位秒でVRRPアドバタイズ指定した間隔を送信
  
  認証{
  
  デフォルトでは、パス#認証をAUTH_TYPE
  
  123456#アクセスパスワード認証auth_pass
  
  }
  
  virtual_ipaddress {
  
  172.16.28.120 #は、仮想IPを指定
  
  }
  
  }
  
  #仮想サーバーの構成- WWWサーバの
  
  #の舞台裏、実際のホスト構成
  
  VIRTUAL_SERVER 172.16.28.120 80 {
  
  delay_loop#1ヘルスチェック間隔
  
  のRR#負荷分散戦略lb_algoを、ここに投票され
  
  たDR#スケジューリングlb_kindは、タイプは、ここではDRである
  
  persistence_time#1は、時間の長さの本当のホストに同じ要求ヒットする期間を指定し
  
  たプロトコルのTCP#は、実際のホストプロトコルタイプ舞台裏アクセスを指定します
  
  実構成サーバ1つの#
  
  #は、実際のホストを指定したIP 1、ポート
  
  172.16.28.132 80 {real_server
  
  重量#1は、重量の現在のホストを指定する
  
  TCP_CHECKを{
  
  10#指定されたタイムアウトハートビートチェックCONNECTION_TIMEOUT
  
  nb_get_retry 3位ハートビートタイムアウトを指定します繰り返し回数後
  
  3#がどのくらい遅延前に指定delay_before_retry
  
  }
  
  }
  
  #2実構成サーバー
  
  172.16.28.133は{80 real_server
  
  重量www.tdcqpt.cn。1#は、ホストの現在の重量指定
  
  TCP_CHECKを{
  
  CONNECTION_TIMEOUT#10と命名ハートビートタイムアウトチェック
  
  nb_get_retry反復をハートビートタイムアウト#の後に指定されている。3
  
  delay_before_retry。3#を試みる前にどのくらいの時間遅延を指定
  
  }
  
  }
  
  }
  
  上記ほぼマスターを設定し、バックアップノードのkeepalivedのマスタノードの構成でありますそれは同じ、ちょうど別の状態とその優先順位のパラメータです。以下は、完全な構成のバックアップ・ノードであります:
  
  #無料の構成参加
  
  global_defsを{
  
  lvs_id director2#指定されたLVSのID
  
  }
  
  #VRRPの設定
  
  LVS {vrrp_instance
  
  BACKUP#は現在のノードを指定して状態は、マスターノードである
  
  ここでは、インタフェースens33番号のens33は、カードの名前は、ifconfigコマンドを使用して表示できているかのIP addrは
  
  51 virtual_router_idここ#です仮想ルーティングID、マスタノードとバックアップノードが同じ指定する必要が指定する
  
  優先順位を150#は、現在のノードの優先順位を指定し、ノードよりも優先、マスターバックアップノード大きな値より高い
  
  #1 advert_intはVRRP広告を送る指定します秒単位の間隔、
  
  {認証
  
  デフォルトでAUTH_TYPEパス#認証、
  
  パスワード認証にアクセスする123456#auth_pass
  
  }
  
  virtual_ipaddress {
  
  172.16.28.120#は仮想IPを指定
  
  }
  
  }
  
  #www.dongfangyuld.com WWW仮想サーバーの設定サーバー
  
  #真の背景をホストの構成
  
  80 {172.16.28.120 VIRTUAL_SERVER
  
  delay_loop。1#ヘルスチェック間隔
  
  のRR#負荷がポーリングポリシー、均衡lb_algo
  
  lb_kind DR#スケジューラタイプが、これはDRのある
  
  persistence_timeは。1つの#長さは、要求が同じ実ホストを打つ指定します時間の長さ
  
  、プロトコルTCP#が、実際のホストプロトコルタイプの舞台裏のアクセスを指定
  
  #1コンフィギュレーション・サーバ本当の
  
  1が実際のホストとポートを指定する#のIP
  
  172.16.28.132 80 {real_server
  
  重量#1は、重量の現在のホストを指定
  
  TCP_CHECK {
  
  10#を指定CONNECTION_TIMEOUTをハートビートタイムアウトチェック
  
  nb_get_retryの繰り返しハートビートタイムアウトが#3の後に指定されて
  
  delay_before_retryを。3#はどのくらい遅れしようとする前に指定します
  
  }
  
  }
  
  #2実構成サーバ
  
  172.16.28.133が{80 real_server
  
  重量現在のホストを指定。1#を重量
  
  TCP_CHECKは{
  
  #10 CONNECTION_TIMEOUTハートビートタイムアウトチェックを指定します
  
  ハートビートタイムアウトが#の後に指定されている。3 nb_get_retryの繰り返しは
  
  delay_before_retry。3位試みる前に遅延時間を指定
  
  }
  
  }
  
  }
  
  マスターとバックアップマスターがダウンしたときに含まれるように設定として、理由はまったく同じになり、バックアップはに従って設定することができますシームレスハンドオーバサービス。
  
  LVS + keepalivedのマシンの設定が完了したら、我々は次の設定nginxのは、2台のアプリケーションサーバーを装備しています。ここでは、アプリケーション・サーバーが、そのステータスコード200でプロファイルを返すように配置されているようnginxの、そしてホストは、現在のIPアドレスを返し、次のように設定されている:
  
  オートをworker_processes;
  
  #PIDは/run/nginx.pid、
  
  イベント{
  
  worker_connections 786;
  
  }
  
  HTTP {
  
  サーバー{
  
  80を聞いて、
  
  ここで#200が直接戻りステータスコードとテキストである
  
  LOCATION / {
  
  default_typeテキスト/ HTML、
  
  200を返す"!こんにちは、サーバー[email protected] nginxのwww.kunlunyule.com \ N-" ;
  
  }
  
  }
  
  }
  
  自動worker_processes。
  
  /Run/nginx.pid PID#;
  
  イベント{
  
  worker_connections 786;
  
  }
  
  HTTP {
  
  サーバー{
  
  聞く80;
  
  ここで#200が直接戻りステータスコードとテキストである
  
  LOCATION / {
  
  default_type www.renheyuLe.comテキスト/ HTML;
  
  戻る200「ハロー!、N- \ nginxのサーバー[email protected] ";
  
  }
  
  }
  
  }
  
  あなたが見ることができ、テキストがホストIPで二つのマシンを返却同じではありません。nginxの設定後、起動するには、次のコマンドで実行することができる:
  
  sudoのはnginxのを
  
  私たちは、スケジューラ、上記LVS私たちは、このモードでは、以前に記載されているDRモードを使用するためのnginxを開始した後、我々は、仮想IPを設定する必要があり、クライアントの応答が直接クライアントに戻し実サーバで、実サーバは仮想ソースIP IPの応答パケットを変更する必要があり、IPは、ここでのこの役割を果たしている仮想構成です。:私たちは、次の書き込み、/etc/init.d/lvsrsファイルを編集
  
  #/ binに/ bashのを!
  
  ifconfigコマンドLO:0 172.16.28.120 172.16.28.120までのネットマスク255.255.255.255ブロードキャスト
  
  ルートの追加-host 172.16.28.120 DEV LO:0
  
  "0"> / PROC / SYS / NET /のIPv4 / ip_forwardエコー
  
  エコー」1" > / PROC / SYS / NET /のIPv4 / CONF / LO / arp_ignore
  
  エコー"2"> / PROC / SYS / NET /のIPv4 / CONF / LO / arp_announce
  
  「1"エコーwww.chenghylpt.com>は、/ proc / sys / net / IPv4の/ confに/すべて/ arp_ignore
  
  エコー"2">は、/ proc / sys / net / IPv4の/ confに/すべて/ arp_announceの
  
  出口0
  
  LO: ;ホストのネットワークカードの現在の本当の名前ことを示している
  
  仮想IPを示し;:172.16.28.120は、
  
  スクリプトファイルを実行完了後に書き込むことができます。そして、keepalivedのマシン上の2つのLVS + keepalivedのサービス起動するには:
  
  sudoのサービス開始はkeepalivedの
  
  最後のLVSは、以下のコマンドを使用して、+ keepalivedの戦略の構成を表示することができます:
  
  ipvsadmの-ln [zhangxufeng keepalivedの@ localhostの] $ sudoの
  
  IP仮想サーバーのバージョンを1.2.1(サイズ= 4096)
  
  ProtのをlocalAddress:ポートスケジューラ旗
  
  - > [リモート:
  
  RR 172.16.28.120:80 TCP
  
  - > 172.16.28.132:80ルート1つの0 0
  
  試験2.2クラスタ
  
  上記の手順によれば、我々は+ keepalivedの+ nginxのクラスタ構成LVSを完了しました。ブラウザで、あなたはhttp://172.16.28.120にアクセスすることができ、我々は次の応答を見ることができます:
  
  !こんにちは、nginxのサーバー[email protected]
  
  繰り返しブラウザを更新した後、次のように、ブラウザのスイッチでテキストを見ることができます:生産LVS負荷分散戦略ので、これはです
  
  !こんにちは、nginxのサーバー[email protected]
  
  3.まとめ
  
  keepalivedのこの記事で最初LVSと作品を説明したが、その後、その作品のいくつかのモデルを導入しましたLVS + keepalivedの+ nginxのnginxの詳細に説明するために、クラスタのアプローチを構築し、注意を必要とする問題について説明します。

おすすめ

転載: www.cnblogs.com/qwangxiao/p/11278978.html