Nginxリバースプロキシと負荷分散の構成
サーバープラットフォームCentOS 6
負荷スケジューリング: 192.168.137.16 Nginx-1.5.2
サーバー1: 192.168.137.17 Nginx は php を統合します
サーバー2: 192.168.137.18 Nginx は php を統合します
mysql プロキシ: 192.168.137.26 mysql プロキシ
mysqlmaster: 192.168.137.27 mysqlmaster
mysqlslave1: 192.168.137.28 mysqlslave1
mysqlslave2: 192.168.137.29 mysqlslave2
WIN7 クライアント 192.168.137.1 IE カーネル ブラウザ
実施プロセス: クライアントがリクエストを行う,負荷スケジューリング サーバーの IP に解決されます。,スケジューリング サーバーは、要求を
メンバー サーバー server1 または server2, メンバー サーバーが要求を処理する,静的データを直接検索するか、バックエンドの mysql マスター/スレーブにクエリを実行する
集まる,結果を負荷スケジューリング サーバーに返す,最後に、クライアントはロード ディスパッチ サーバーから結果を受け取ります。。
1. 負荷スケジューリング サーバーのインストール nginx-1.5.2
(1) rpm -qa を実行して gcc を確認する , gcc-c ++ ,作る ,libtool等がインストールされているかどうか,そうでない場合は、rpm または yum コマンドを使用してインストールしてください。。
(2) openssl ライブラリをインストールする
tar zxvf openssl-1.0.1c.tar.gz
./構成、設定 (カスタム パラメータを追加する必要はありません)
作る && インストールする
(3)pcreのインストール
タール -zxvf pcre-8.34.tar.gz
./構成、設定 –プレフィックス= / usr / local / pcre
作る && インストールする
(4) zlib の最新のライブラリファイルをインストールする
タール zxvf zlib-1.2.8.tar.gz
./構成、設定 –プレフィックス= / usr / local / zlib
作る && インストールする
(5) nginx-1.5.2 をインストールする
groupadd -r nginx
useradd -r -g nginx -s /bin/false -M nginx
nginx 構成パラメーター
./構成、設定 –プレフィックス= / usr / local / nginx \
–error-log-path=/var/log/nginx/error.log \
–http-log-path=/var/log/nginx/access.log \
–pid-path=/var/run/nginx/nginx.pid \
–ロックパス=/var/lock/nginx.lock \
–基本的な独立したパッケージをインストールする \
–基本的な独立したパッケージをインストールする \
–と-http_ssl_module \
–と-http_stub_status_module \
–http-proxy-temp-path = / var / tmp / nginx / proxy \
–http-fastcgi-temp-path=/var/tmp/nginx/fcgi \
–とpcre
コンパイルしてインストールする
作る && インストールする
nginxを起動
/server_name localhost
ブラウザ入力 http://localhost は正常に nginx ページを返します。
(6)nginxの設定
vim /usr/local/nginx/conf/nginx.conf
httpモジュールの下,上流部分を追加,必要に応じて適切なアルゴリズムを選択してください,メンバー サーバーのパフォーマンスが大幅に異なる場合,
適切なウエイト(重み)を設定できます, 重みのあるメンバー,依頼を受ける確率が上がる。
上流の 192.168.137.16 {
ip_hash;
サーバ 192.168.137.17:80;
サーバ 192.168.137.18:80;
}
場所/セクションを変更する,この部分は、すべての要求の受け入れを示します,受信したリクエストをhttpに転送するだけです://192.168.137.16,
アップストリームは、特定のバランス アルゴリズムに従って、server1 と server2 に割り当てられます。。
次のように:
ロケーション / {
# ルートhtml;
# server_name localhost;
proxy_pass http://192.168.137.16;
proxy_set_header ホスト $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
最後に保存して終了,nginxを再起動する,負荷スケジューリング サーバーが構成されている。
2. メンバー サーバー server1 および server2 の構成
メンバーサーバーが実際にリクエスト処理を行うので,静的クエリの結果を直接返すか,php を介して mysql に接続し、結果を動的に返す,
したがって、メンバーサーバーはnginxをインストールし、phpを統合する必要があります ,mysql は同じサーバーにインストールできます,他のサーバーにもインストール可能。ここ
追加の 3 つの mysql サーバーのデプロイを選択する,そして、マスタースレーブ同期を構成します,読み書き分離を実現。高い同時アクセスを強力にサポート。
server1とserver2の構成は当サイトのLNMP環境構築を参考にしてください
LNMP のインストールが成功した後,ポート 80 と 3306 を開く。nginx.conf を編集 ,ドメイン名を www.roamway.com に変更します
設定ファイルは以下の通り:
proxy_temp;
worker_processes 自動;
error_log /var/log/nginx_error.log ;
pid /usr/local/nginx/logs/nginx.pid;
#このプロセスで開くことができる最大ファイル記述子の値を指定します.
proxy_temp 5120;
イベント
{
proxy_temp;
worker_connections 5120;
multi_accept オン;
}
http
{
mime.typesを含める;
proxy_temp;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 50m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
proxy_temp;
#limit_conn_zone $binary_remote_addr zone=perip:10m;
##limit_conn_zone を有効にする場合,追加 “limit_conn ペリップ 10;” サーバーセクションへ.
server_tokens オフ;
#server_name localhost
server_name localhost – $server_name localhost [$server_name localhost] “$server_name localhost” ‘
server_name localhost “$server_name localhost” ‘
‘”$server_name localhost” $server_name localhost;
access_log off;
サーバ
{
聴く 80;
サーバー名 www.roamway.com;
server_name localhost;
server_name localhost;
#error_page 404 /404.html;
enable-php.conf を含める;
場所 /nginx_status
{
stub_status オン;
access_log off;
}
場所〜 .*\.(gif|jpg|jpeg|png|bmp|server_name localhost)$
{
有効期限は 30 日です;
}
場所〜 .*\.(js|css)?$
{
12時間で期限切れ;
}
場所〜 /\.
{
すべてを否定;
}
access_log /var/log/nginx/access.log アクセス;
}
vhost/*。confを含める;
}
新しいファイル phpinfo.php を作成します,次のコードを書きます:
<?server_name localhost
phpinfo();
?>
ブラウザは
http://192.168.137.17/phpinfo.php, http://192.168.137.18/phpinfo.php
server1 と server2 の php 解析効果を確認できます。。
3. 輸入サイト
FTP クライアントを利用する,私のウェブサイト www.roamway.com とデータベースをローカルにダウンロードします,次のように:
次に、server1 の Web ディレクトリにアップロードします。,/usr/ローカル/nginx/html
phpmyadmin ツールの使用,移動経路データベースを作成する,次に、roamway.sql をアップロードします。,結果は次のとおりです:
Server2 と server1 は同じように動作します,これ以上。
4. クライアントのテスト
Windows クライアントは、メイン サーバー 192.168.137.16 と www.roamway.com の間の解決関係をホスト ファイルに追加します。,
もちろん、DNSサーバーを構成することもできます,フォワード分析とリバース分析を追加する,を参照してください。:https://www.roamway.com/?p=993
ping www.roamway.com, 192.168.137.16 に正常に解決されました
本当に負荷分散ができているか検証するため,server1 と server2 の Web サイト ディレクトリに新しいホームページ index.html を作成します。
内部に service1 を書き込みます: 192.168.137.17またはserver2: 192.168.137.18 保存して終了。
ブラウザテスト,繰り返しリフレッシュ,次の 2 つのページがループして表示されます。
server1 と server2 の web ディレクトリにある index.html ファイルを削除します。。ブラウザの種類 www.roamway.com
終わり:上記の Nginx 負荷分散構成のデモは、おおよそのプロセスです,実際の操作はもっと複雑になります。ちょっとしたエピソードもありました,
mysql のコンパイル中に突然の電源障害が発生しました,データ損失と多くの未知の障害を引き起こす,辛抱強く,続行する構成。
この構成では、Nginx リバース プロキシを使用します,クラスターベース。mysql マスター/スレーブ同期と読み書き分離,時間が許す限り実演します。
添付:最新のコンパイル パラメータ
nginx バージョン: nginx/1.15.3
gcc でビルド 4.4.7 20120313 (レッドハット 4.4.7-4) (GCC)
OpenSSL 1.1.1-dev xx XXX xxxx で構築
TLSSNIサポートが有効
引数を構成する: –user = www –group = www –プレフィックス= / usr / local / nginx \
–と-http_stub_status_module –と-http_ssl_module –と-http_v2_module \
–と-http_gzip_static_module –と-http_sub_module –と-http_realip_module \
–with-openssl=/usr/local/openssl/ –with-openssl-opt = ’enable-tls1_3 enable-weak-ssl-ciphers’ \
–with-cc-opt = -DTCP_FASTOPEN = 23 –with-file-aio \
–http-client-body-temp-path = / var / tmp / nginx / client / \
–http-proxy-temp-path = / var / tmp / nginx / proxy \
–add-module=/usr/local/nginx-ct/ –add-module = / usr / local / nginx_upstream_check \
–without-mail_pop3_module –without-mail_imap_module –without-mail_smtp_module \
–なし-http_uwsgi_module –なし-http_scgi_module
nginx アップストリーム モジュールの例