nginxの負荷分散+ keepalivedの可用性
環境の準備
- 192.168.88.111:nginx + keepalivedのMASTER
- 192.168.88.112:nginx + keepalivedのBACKUP
- 192.168.88.113:JDK+Tomcat(Tomcatを実行すると、JDKが必要です)、index.htmlの内容 "88.113"
- 192.168.88.114:JDK+Tomcat(Tomcatを実行すると、JDKが必要です)、index.htmlの内容 "88.114"
- 192.168.88.115:vip
マシンは、そのようなので、上のvim、lrzsz(RZアップロードファイルをローカルに、ローカルにファイルをダウンロードSZ)、GCC、およびなど、いくつかの一般的なソフトウェアをインストールして最初にすべきであると述べました。
Nginxは、JDKとTomcatをダウンロードするには彼らの公式ウェブサイトに最新の安定版をインストールするには、ソースパッケージ(* .tar.gz形式)を使用しています。ソフトウェアパッケージとインストールスクリプト(UTF8形式で記述されたスクリプトは、Linuxのvimのエディタを使用することを忘れないようにそれをアップロードする:FF = UNIXを設定)します。mkdir /ルート/ install_packages私があったように、見つけるのは簡単、指定したフォルダの下にマシンに。
88.113から114取り付けJDK + Tomcatの
JDKをインストールします。
#ディレクトリにパッケージをインストールし
、CD /ルート/ install_packagesの #は、JDKインストールスクリプトの記述 Vimのinstall_javaを。SH #!/ binに/ のbash #PKNは、インストールパッケージの名録音の変数を定義する PKN = JDK-8u131-のLinux-x64のを。タール.gzを #指定されたパスにインストールパッケージを抽出 タール $ PKN -C -xfは/ usr / local /
の/ etc#/グローバル変数JAVA_HOME低背化=は/ usr / local / jdk1.8.0_131を追加 、 および変更はすぐには反映させて エコー " 輸出JAVA_HOMEを= /usr/local/jdk1.8.0_131 " >>の/ etc / プロファイル
ソースの/ etc / プロファイル #は4秒待ってから、スクリプトを実行ダウン
SLEEP 4
即時効果で、/ etc / profileを変数に#追加の環境を
エコー "輸出PATH = / sbinに:/ binにします。/ usr / sbinにします。/ usr / binに:は/ usr / local / sbinに:は/ usr / local / binに:$ JAVA_HOME / binに:$ JAVA_HOME / DB / binに:$ JAVA_HOME / JRE / ビン" >>は/ etc / プロファイル ソースの/ etc / プロファイルの
インストールが成功したかどうか#のJavaテスト、成功した場合、それはバージョン情報を表示します javaの - バージョン SHを。install_java SHの スクリプトの#実装、および同じパスにパッケージをインストールするためのスクリプト ソース /など/ プロファイル位になりは/ etc / profileの変更は、最終的なスクリプトが実行されているが、すぐに有効になりますが、変更は、ここで再び実行し、効果を取ることを確認してください Javaのインストールが成功したかどうか-version#のJDKのテストを
Tomcatをインストールします(比較的単純な、あなたがスタートを解凍することができ、故意にスクリプト記述されていません)
CD /ルートは/ install_packages 指定されたパスに#解凍インストールパッケージを タールのApache XF-tomcat- 8.5。43です。タール .gzを-Cは/ usr / local / インストール解凍パスに、名前の変更 #cdは/ usr / local / MVのApache-tomcat- 8.5。43のtomcat8 のCD #が起動Tomcatの SHは/ usr / local / tomcat8 / binに/起動。SHの 88.113と88.114で#は、それぞれ、サイトのルートディレクトリに2つのindex.htmlを、書き込む エコーを " <H1> 88.113 <の/ H1> " >は/ usr / local / tomcat8 / Webアプリケーション/ ROOT / index.htmlを エコー " <> 88.114 <の/ H1のH1> " > /usr/local/tomcat8/webapps/ROOT/index.html
88.111から88.112取り付けnginxの+ keepalivedの
nginxのインストール(マシンを再起動し、不備のスクリプトを、nginxのは、メッセージが見つからないスタート「の/ var /実行/ nginxの/ ...」間違っているが、スクリプトは明らかに罰金であることを、対応するパスを作成しています)。
CD /ルート/ install_packagesの
#は、nginxのインストールするためのスクリプトを書く のvim install_nginxを。SHの #変数、記録Tomcatのアーカイブ名を定義 PKN = nginx- 1.16。0。タール.gzを #依存関係をインストールし、ユーザーとグループを作成する にyum -y インストールしたzlibはzlibをOpenSSLのOpenSSLの-develのPCRE -devel PCRE- のdevel のgroupadd - R&LT nginxの は、useradd -s / sbinに/ nologinに-g nginxの- R&LT nginxの #解凍アーカイブ のtar XF $ PKN CD nginxの - 1.16。0 ます。mkdirは/ var / RUN / nginxの/。chownコマンド nginx.nginxの/ var / RUN / nginxの/ 。 /\#は、メイクファイル生成設定 --prefix =は/ usr / 指定されたローカルの\#のインストールパスを --sbinパス=は/ usr / sbinに/ nginxの\ --confパス=の/ etc / nginxの/ nginx.conf \#メインを指定しますプロファイルパス --error-ログパス=は/ var / log / nginxの/ error.logファイル\ --pid-パス=の/ var / RUN / nginxの/ nginx.pid \ --user = nginxの\ --group = nginxの\ --with- http_ssl_module メイク && makeは インストール #のコンパイルを、インストール#はnginxの起動 nginxの
nginxの負荷分散の設定(太字はロードバランシング設定です)
worker_processes 1。;一般にコアのCPUの数に等しく設定プロセスの#nginx番号、
#動作モード及び接続の最大数 イベント{ ; #epoll動作モードは、より良い選択ファイルディスクリプタを使用 worker_connections 1024 ;接続の最大数を単一のプロセス# } HTTP { のmime.typesを含みます。 ファイルアプリケーションdefault_type / OCTET -解釈されないストリーム、 のsendfile ON;#オープン効率的なファイル転送モードは keepalive_timeout 65 ;#長い接続時間を、秒単位で 上流tomcatserver {#weightは、重量、大きい値、より大きなチャンスポーリングです。サーバがfail_timeout時間max_fails回に表示されている場合は、接続が失敗し、サーバはnginxの考えはハングアップで、もはや時間fail_timeoutの中にサーバーをポーリングしない サーバー192.168。88.113:8080=重量4。 max_failsの= 3。 fail_timeout = 30秒; サーバー192.168。88.114:8080重量= 2 max_failsの= 3 fail_timeout = 1930; } サーバー{ 聞く 80を、 サーバ名www.kamin.com;#ドメインLOCATION / { proxy_pass HTTP:// tomcatserver ; 名前#httpと同じに上流、および名前を取ることができない、注意を払う必要があります後に「_」記号 } } }
keepalivedのをインストールして設定します
yumを インストール - Y keepalivedの vimのは/ etc / keepalivedの/ keepalived.conf 1!コンフィギュレーション・ファイルのためのkeepalivedの 2 3 global_defs { 4 notification_email {#基本不用、一般使用ZABBIX监控 5 747631184 @ qq.com 6 } 7 notification_email_from 747631184 @ qq.com 8 SMTP_SERVER 192.168。200.1 9 smtp_connect_timeout 30 10 ROUTER_ID nginx_master 異なるマシンに異なる#keepalivedマシンID、(114:nginx_backup) 。11 } 12は 13であるVI_1 {vrrp_instance 14 :keepalivedのを結合するVIP状態がマスターMASTER位マスタ、調製BACKUP(バックアップ114) MASTERに接続一つであり、常に 15 インターフェイスens32の NICの#名 16 virtual_router_id 51は、 パラメータの同じグループにkeepalivedの#は同一である必要があります 。17 、優先度150 #優先度、大きな値、より高い優先順位、リソースへのアクセス(グラブ優先値VIP)、BACKUPは、MASTERよりも小さくなければならない 18である advert_int 。1つの #ハートビート間隔 19 二つのマシン{#との間の認証パスワード通信 20は、 PASS AUTH_TYPE 21は AUTH_PASS 1111 22である } 23が virtual_ipaddress {VIPアドレス 24 192.168。88.115 / 24 25 } 26 }
インストールされたサーバはのは、ファイアウォールをオフにするために、彼らが互いに通信できることを確実にするために、または簡単に覚えているkeepalivedのスプリットブレイン状態が発生しました。特定のBaiduの。
テスト
通常の状況下で1. 192.168.88.115は、渡すことができるとVIPは常にMASTERマシンにリンクされていないkeepalivedのサービスに接続することになるので、流れは、MASTERマシンを移動する必要があります。
2.MASTERオフ、BACKUPオープン、通常の状況下では、まだ起動しないMASTER keepalivedのサービスで検出keepalivedのため、VIPはBACKUPに転送するので、192.168.88.115にアクセスすることができます。
問題は、考慮すべき
1.keepalivedサーバーのダウンタイムがkeepalivedのプロセスかどうかを検出することであるかどうかを判断するが、keepalivedのプロセスnginxのプロセスがなくなった場合は、nginxのようにkeepalivedの切り替えがショットを呼び出すませんので、私たちはnginxのプロセスが存在して監視するためのスクリプトを書く必要はないにkeepalivedの存在は、プロセスを強制終了します。
2.は、すべてのサービスとnginxのkeepalivedのサービスを再起動するためにマシンを再起動するには、ダウンタイムの後、keepalivedのサービスはyumを介してインストールされて、あなたはそれをnginxの、スタートからの起動を設定することができますか?