nginx のインストールと構成、負荷分散については、私が書いた別の記事「nginx Load Balancing in Practice」を読むことができます。負荷分散については、私が書いた別の記事を読むことができます。2 つの記事のうち、1 つは「」です。 lvs+keepalived ロード バランシング」、もう 1 つは「haproxy+keepalived ロード バランシング」です。 3 つのロード バランシングの違いについては、再版した記事「Software Level Load Balancer (LVS)」/HAProxy/Nginx を参照してください。 )、設定手順に直接進みましょう:
1. システム環境
[プレーン] ビュー
普通のコピー
- システム バージョン: CentOS リリース 5.9 (最終) x86 32 ビット
- nginx バージョン: 1.2.8
- キープアライブ バージョン: 1.2 .4
-
- メインキープアライブ: 192.168.207.130
-
- キープアライブから:192.168.207.131
-
-
- VIP: 192.168.207.140
- WEB_1:192.168.207.129 ポート 80
- WEB_2:192.168.207.130 8080 ポート
- WEB_3:192.168.207.131 8080 ポート
2. 192.168.2 のカスタム nginx 設定ファイル
07 .130 および 192.168.207.131 で動作します
[プレーン] ビュー
普通のコピー
- useraddnginx
- vi/usr/local/nginx/conf/nginx.conf
普通のコピー
- #ユーザーを実行
#グローバルエラーログとPIDファイル error_logログ/エラー。ログ/nginx.pid; worker_connections 1024;したがって、nginx によってサポートされる接続の合計数は、worker_processes * work_connections に等しくなります }- #http サーバーを設定し、そのリバース プロキシ機能を使用して負荷分散サポートを提供します
- http {
- #MIME タイプを設定します
- include mime.types ; #これは nginx についてですマルチメディアの種類はサポートされていますか? conf/mime.types にアクセスして、どのマルチメディアがサポートされているかを確認できます
- #デフォルトのデータ型
- Log_format main '$remote_addr - $remote_user [$time_local] '"$request" $status $bytes_sent '"$http_referer" "$http_user_agent" '
- '"$gzip_ratio"' ;
'"$http_referer" "$http_user_agent" ' '"$http_range" "$sent_http_content_range" -
large_client_header_buffers 4 4k;
- #gzip モジュールを有効にする
- #gzip 上; gzip_types text/plain
-
#postpone_output 1 460;
- #アクセスログの設定
- access_log logs/access.log main
- client_header_timeout 3 分;
- send_timeout 3 分
- tcp_nopush オン;
- tcp_nodelay オン
- keepalive_timeout 65;ロードバランシングサーバーリストを設定します. サーバー 192.168.207.131:8080 重み = 5;
} サーバー {#これは Web サービスを設定するように設定されています、ポート 8080 を監視します -
;
サーバー名 192.168.207.131; #これはシステム IP によって変わります ページ 500 502 503 504 /50x.html; # location = /50x.html { html; } -
#仮想ホストを設定するA Server_name 192.168.207.140;#VIP はこちら
-
#Charset GB2312;#これの訪問ログを設定します仮想ホスト
-
access_log Logs/Threeb.access.log Main;
- #/img/*、/js/*、/css/* リソースにアクセスする場合は、squid を介さずにローカル ファイルを直接取得しますキャッシュ効果が向上します l #Location ~^/(IMG | JS | CSS)/{
-
#root/data3/html
-
#有効期限
-
#}#"/" 負荷分散を有効にする
- local/{
- proxy_pass http:// mysvr;#
proxy_set_header Host $host; proxy_set_header proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_ size 128k; Proxy_time_timeout 90; keepalived 設定ファイルをカスタマイズする [プレーン] ビュー
普通のコピー
- vi /etc/keepalived/keepalived.conf
- 内容は以下の通りです:
- [プレーン]ビュー
普通のコピー
- global_defs {
- notification_email {
- root@localhost.localdomain }
- notification_email_from Notice@keepalived.com
- smtp_server 127.0.0.1
- smtp_connect_timeout 30
- router_id LVS_DEVEL
- }
-
- vrrp_script chk_http_port {
- スクリプト "/etc/keepalived/check_ng inx.sh" ##モニタリング時間
- モニタリング時間 VI_1 {
- , アウト アウト アウト アウト アウト クリーン アウト クリーン アウト outcel outcel'lib' out' field' ish ' そうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいはいto to to to to to to to to to to self to to to to to to to to to to to to to to to重み値 MASTRE は BAUCKUP より大きくなければなりません
auth_pass 1111 } track_script { chk_http_port 0 ### 表示
普通のコピー
- vi /etc/keepalived/check_nginx.sh
内容は以下の通りです:
[プレーン]ビュー
普通のコピー
- !/bin/bash
- A =`ps -C nginx --no-header |wc -l`
if [$ a -eq 0] then ## ある場合プロセスなし、ゼロ/usr/local/nginx/sbin/nginx の価値があります sleep 3 if [`ps -c nginx- -no-header |wc -l` -eq 0 ];then ️ - ここで、nginx が起動しているかどうかを確認します。3 秒経っても起動していない場合は、keepalived プロセスも終了します。引き継いで高いものを提供できるここで、keepalived サービスは高可用性を提供し、nginx はバックエンド Web サーバーの負荷分散を提供します。
次のように、スクリプトに実行権限を追加する必要もあります [プレーン]ビュー
普通のコピー
- chmod +x /etc/keepalived/check_nginx.sh
5. サービスを開始してテストします
まず、WEB_1 でシステム auto I を使用します。昨夜、Apache Web サーバーを導入しました。この場合、check_nginx.sh スクリプトを使用して nginx を自動的に起動するため、マスター/スレーブの keepalived を起動するだけで済みます。 すべてが始まります。
http://192.168.207.140 にアクセスして、順番に 3 つのバックエンド Web サーバーのコンテンツにアクセスしますここでは、高可用性をテストするためにメインの keepalived サービスをオフにしますその後、スレーブの /var/log/ に保存されますkeepalived サーバーのメッセージには次のようなログがありました
[プレーン] ビュー
普通のコピー
- Apr 19 17:42:44 localhost Keepalived_vrrp: VRRP_Instance(VI_1) MASTER STATEへの移行
Apr 19 17:42:45 localhost Keepalived_vrrp : VRRP_Instance(VI _1) マスター状態に入ります
Apr 19 17:42:45 localhost Keepalived_vrrp: VRRP_Instance(VI_1) プロトコル VIP を設定します
Apr 19 17:42:45 localhost Keepalived_vrrp: VRRP_Instance(VI_1) 192.168.207.1 の eth0 で無償 ARP を送信します。 40
4月19 17:42:45 localhost Keepalived_vrrp: ネットリンク リフレクター レポート IP 192.168.207.140 が追加されました
Apr 19 17:42:45 localhost Keepalived_healthcheckers: ネットリンク リフレクター レポート IP 192.168.207.140 が追加されました - 。 4月19日 17:42:45 localhost avahi-daemon[4204]: eth0 に 192.168.207.140 の新しいアドレス レコードを登録しています。
引き続き http://192.168.207.140 にアクセスすると、引き続き 3 つのバックエンド Web サーバーにアクセスできます
その後、元の所有者の keepalived を開くと、元のスレーブ keepalived サーバーのログ表示を確認できます
[プレーン]ビュー
普通のコピー
- Apr 19 17:42:50 localhost Keepalived_vrrp: VRRP_Instance(VI_1) 192.168.207.140 の eth0 で無償 ARP を送信
- 4 月 1 9 44:06 localhost Keepalived_vrrp: VRRP_Instance(VI_1) を受信しましたより高い優先広告
- Apr 19 17:44:06 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
- Apr 19 17:44:06 localhost Keepalived_vrrp: VRRP_Instance (VI_1) プロトコルを削除しています
- Apr 19 17:44:06 localhost Keepalived_vrrp: ネットリンク リフレクター レポート IP 192.168.207.140 が削除されました
- Apr 19 17:44:06 localhost Keepalived_healthcheckers: ネットリンク リフレクター レポート IP 192.168.207.140 が削除されました
- 4月19日17:44: 06 localhost avahi-daemon[4204]: eth0 の 192.168.207.140 のアドレスレコードを撤回しました。元のマスター/スレーブ結果が復元されたことを意味します。
実稼働環境では、バックエンド マシンもハングアップする可能性がありますが、心配する必要はありません。nginx はセッションを適切なバックエンド Web サーバーに自動的に割り当てます
OK、こちらもう終わりです。個人テストを練習してください。成功を祈っています
出典: http://blog.csdn.net/zmj_88888888/article/details/8825471
上記では、nginx+keepalived の高可用性ロード バランシングをその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。