Nginx + Tomcat + keepalived動的および静的分離高可用性ロードバランシングクラスター

Nginx + Tomcat

1.Nginxの概要

最大50,000の同時接続の応答をサポートします。
強力な静的リソース処理機能を備えています
。安定した動作
。メモリやCPUなどのシステムリソースの消費量は非常に少ないです。
現在、多くの大規模なWebサイトでは、バックプロキシおよびロードバランサーとしてNginxサーバーを使用しています。サイト全体の負荷同時実行性を改善するためにWebサイトプログラムを終了する

2.Nginxの動的および静的分離の原則

場所フィールド
で照合します。.htmlで終わるファイルの場合はローカル処理に送信されます。.jspで終わるファイルの
場合はTomcatに送信されます。

3.Tomcatの重要なディレクトリ

目次 効果
置き場 起動とシャットダウンのTomcatスクリプトを保存する
conf Tomcatのさまざまな構成ファイルを保存します
doc Tomcatドキュメントを保存する
lib Tomcatの実行に必要なライブラリファイルを保存します
ログ Tomcatの実行時にログファイルを保存します
src Tomcatのソースコードを保存します
webapps TomcatのメインWebパブリッシングディレクトリ
作業 jspコンパイル後に生成されたクラスファイルを保存します

NFSストレージサーバーの展開

1. nfs-utils、rpcbindソフトウェアパッケージをインストールします

yum -y install nfs-utils rpcbind

2.共有ディレクトリを作成します

mkdir /opt/tomcat1
mkdir /opt/tomcat2

javascriptテストページを編集して写真をアップロードする

vim /opt/tomcat1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP web1 test</title>
</head>
<body>
<% out.println("Welcome to test site");%>
<div>动态页面</div><br/><img src="web1.jpg" />
</body>
</html>
vim /opt/tomcat2/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP web2 test</title>
</head>
<body>
<% out.println("Welcome to test2 site");%>
<div>动态页面</div><br/><img src="web2.jpg" />
</body>
</html>

3.共有ディレクトリ

vi /etc/exports
/opt/tomcat1 192.168.2.16(ro)
/opt/tomcat2 192.168.2.17(ro)

マウントを表示

showmount -e

ここに画像の説明を挿入します

Webクラスター

Java環境変数を構成する

1.xftpは2つのファイルをアップロードし、
ここに画像の説明を挿入します
解凍して移動します

tar xf jdk-8u91-linux-x64.tar.gz
mv jdk1.8.0_91/ /usr/local/java

2.環境変数を構成します

vi /etc/profile

追加

export JAVA_HOME=/usr/local/java
export JAVA_JRE=/usr/local/java/jre
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/lib:$JAVA_JRE/bin:$JAVA_JRE/lib

実行して表示する

source /etc/profile
echo $PATH

ここに画像の説明を挿入します
ここに画像の説明を挿入します

テスト

バージョンを表示

java -version

ここに画像の説明を挿入します
ここに画像の説明を挿入します

テストする.javaファイルを編集します

vim HelloWorld.java
public class HelloWorld {
    
    
        public static void main (String[] args) {
    
    
                System.out.println("helloworld!");
        }
}
javac HelloWorld.java
java HelloWorld

ここに画像の説明を挿入します
ここに画像の説明を挿入します

Tomcatをデプロイする

1.解凍、移動

tar xf apache-tomcat-8.5.16.tar.gz
mv apache-tomcat-8.5.16 /usr/local/tomcat8

2.ソフト接続を確立します

ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup
ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown
ln -s /usr/local/tomcat8/conf/server.xml /etc/tomcat.xml

リンク後

tomcatup:Tomcatをオンにする
tomcatdownTomcatをオフにする
/etc/tomcat.xml:構成ファイル

Tomcatを開く

tomcatup

ここに画像の説明を挿入します
ここに画像の説明を挿入します

オンになっているかどうかを確認します

netstat -anpt | grep java

ここに画像の説明を挿入します
ここに画像の説明を挿入します

Tomcatをテストします

1.Webディレクトリを作成します

mkdir -p /tomcat/web

2.nfsをローカルディレクトリにマウントします

tomcat1

mount 192.168.2.18:/opt/tomcat1 /tomcat/web

tomcat2

mount 192.168.2.18:/opt/tomcat2 /tomcat/web

取り付け状況を確認してください
ここに画像の説明を挿入します
ここに画像の説明を挿入します

3.Webサイトのルートディレクトリを設定します

構成ファイルの編集

vi /etc/tomcat.xml
   <Context docBase="/tomcat/web" path="" reloadable="false">
      </Context>

ここに画像の説明を挿入します

4.アクセステスト

リブート

curl http://localhost:8080

ここに画像の説明を挿入します

ここに画像の説明を挿入します

スケジューラー

nginx-1.12.2.tar.gz、keepalived-2.0.13.tar.gzをアップロードします

nginxをコンパイルしてインストールします

yumインストールの依存関係

yum -y install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel

ngxinが使用するログイン不可能なアカウントを作成します

useradd -M -s /sbin/nologin nginx

解凍する

tar xf nginx-1.12.2.tar.gz
cd nginx-1.12.2/

構成内容

 ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

コンパイルしてインストールする

make && make install -j 8

nginxソフト接続を確立します

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

Nginx構成ファイルのソフト接続

ln -s /usr/local/nginx/conf/nginx.conf /etc/

nginxが正常に実行できることを確認します

nginx -t

ここに画像の説明を挿入します

ここに画像の説明を挿入します

nginxステータスを表示する

netstat -anpt | grep nginx

ここに画像の説明を挿入します

プロンプトが開始されない

nginxを起動します

nginx

nginxを再起動します

killall -1 nginx

nginxを閉じる

killall -3 nginx

追加

upstream服务池
upstream tomcat_server {
            server 192.168.2.16:8080 weight=1;
             节点      ip地址  端口号  权重
            server 192.168.2.17:8080 weight=1;
}

       location ~ \.jsp$ {
            proxy_pass http://tomcat_server;  
}                                          服务地址池名

jspでリンクされている画像は、nginxルートディレクトリにアップロードする必要があります。画像がアップロードされていない場合、画像は読み込まれません。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

キープアライブをインストールします

xftpアップロードキープアライブファイル、解凍

tar xf keepalived-2.0.13.tar.gz

コンパイルツールとプラグインをインストールする

yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel

ディレクトリを切り替え、コンパイルしてインストールします

cd keepalived-2.0.13/
./configure --prefix=/
make && make install

システム管理サービスに参加し、起動後に自動的に開始するように設定します

cp keepalived/etc/init.d/keepalived /etc/init.d/
systemctl enable keepalived.service

メインスケジューラ構成ファイルを編集します

vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   router_id Nginx_01
   }

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.100
    }
}
}

代替スケジューラ構成ファイルを編集する

vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id Nginx_02
   }

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 140
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.100
    }
}

リブート

テスト

ip addrは、
ここに画像の説明を挿入します
ここに画像の説明を挿入します
メインルートスケジューラの障害テストをテストするか、ネットワークカードを無効にするか、キープアライブを無効にします。
ここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
キープアライブを再起動します

ここに画像の説明を挿入します
ここに画像の説明を挿入します

Nginxモニタリングスクリプト

スクリプトの役割は、nginxサービスに問題がある場合にkeepalivedをオフに
することです。メインスケジューラがNginxサービスにのみ問題があり、他のすべて(keepalived)が正常であるとすると、VIPはにジャンプしません。バックアップスケジューラ、およびバックアップスケジューラを有効にできません。、次の状況が表示されます。

ここに画像の説明を挿入します
ここに画像の説明を挿入します
キープアライブ構成ファイルを編集し、次のコンテンツを追加します

! Configuration File for keepalived

global_defs {
   router_id Nginx_01
   }

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight -20
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
    chk_nginx
    }

    virtual_ipaddress {
        192.168.2.100
    }
}

スクリプトの編集

vi /etc/keepalived/nginx_check.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
killall -3 nginx
nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi

スクリプトの機能は、nginxのステータスを検出することです。閉じている場合は再度開き、失敗した場合はkeepalivedを閉じます。

おすすめ

転載: blog.csdn.net/weixin_50345511/article/details/111029144