La pratique rend parfait - vous construisez un regroupement Nginx + Tomcat culturel et éducatif, l'équilibrage de charge et statique et dynamique de séparation

La pratique rend parfait - vous construisez un regroupement Nginx + Tomcat culturel et éducatif, l'équilibrage de charge et statique et dynamique de séparation

avant-propos

Assurément tout le monde pour Nginx et Tomcat sont très familiers avec, Nginx est largement utilisé, non seulement pour les ressources Web statiques est très sympathique, mais aussi proxy inverse très pratique et charge logiciel d'équilibrage. Tomcat associé à des services de back-end qui construisent groupe Nginx + Tomcat.

Pour les amis directs veulent voir le contenu de la troisième pratique de sauvegarde directe peut obtenir après ce lien de l'article dans le paquet.

Tout d'abord, la structure et construire une topologie de cluster

1.1 icône architecture cluster

Nginx + groupe Tomcat structure schématique comme suit:

La pratique rend parfait - vous construisez un regroupement Nginx + Tomcat culturel et éducatif, l'équilibrage de charge et statique et dynamique de séparation

1.2 Environnement et de la planification système Adresse

Utilisez trois serveurs Centos7 (7.4), prévu comme suit:

serveur Mode NIC adresses IP
nginx NAT 20.0.0.128
Tomcat1 NAT 20.0.0.130
Tomcat2 NAT 20.0.0.136

1.3 topologie est la suivante

La pratique rend parfait - vous construisez un regroupement Nginx + Tomcat culturel et éducatif, l'équilibrage de charge et statique et dynamique de séparation

1.4 Ressources connexes Logiciel

Liens: https://pan.baidu.com/s/1Qdla-vrpcspcAKJucZdSUg
Code d'extraction: 40it

En second lieu, les idées de construction et d'une partie centrale de la configuration

Selon la structure ci-dessus, afin de compléter la pratique, un besoin de trier l'idée de construire, le fonctionnement clair et la configuration de la partie centrale.

1, tout d'abord, nous devons compiler les services d'installation correspondants (packages dans le lien ci-dessus) sur trois serveurs, services de dépistage sont normaux;

2, puis sur la base de fonctions de base: l'équilibrage de charge et la séparation dynamique, étape par étape, de la nécessité justification claire

D'après l'équilibrage de charge

L'équilibrage de charge est configuré sur les serveurs Nginx, ont besoin d'être configuré pour nginx fichier de configuration principal, le module d'équilibrage de charge à l'aide du module amont et l'algorithme nécessaire (ci-après, en utilisant un algorithme simple d'équilibrage de charge round-robin pondéré) correspondant. Configuration de base:

#server指令外层
upstream tomcat-server {
                server 20.0.0.130:8080 weight=1;
                server 20.0.0.136:8080 weight=1;
        }
#server指令中
location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://tomcat-server;
        }

Adresse du serveur d'accès, vous pouvez Round Robin deux serveurs Tomcat réel pour accéder au back-end.

séparation dynamique

Nous savons que pour Nginx, son soutien aux ressources statiques est très sympathique, et Tomcat pour les pages web dynamiques de support java est très bon. Il est donc nécessaire pour obtenir la séparation dynamique doit être donné un serveur nginx statique demande est en cours d'exécution, Tomcat est responsable des demandes de traitement des fichiers dynamiques similaires.

Le cas utilisant le serveur nginx et un serveur Tomcat pour la séparation dynamique. La finale sera combiné avec des images fixes de sorte que les poignées de nginx, en utilisant des pages dynamiques de poignée Tomcat.

Configuration de base:

serveur nginx:

location ~.*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
            root html/demo;
            expires 30d;
        }
location ~.*.jsp$ {       ##匹配jsp页面跳转代理服务器池
           proxy_pass http://tomcat-server;
           proxy_set_header Host $host;
        }
 location / {
            root   html;
            index  index.html index.htm;
            #proxy_pass http://tomcat-server;
        }

tomcat serveur:


        <Context docBase="/usr/local/tomcat/webapps/demo" path="" reloadable="false">
         </Context>

3, lors du déploiement et de la configuration, la vérification nécessaire

Eh bien, à peu près les processus et la configuration de base terminée, vous pouvez commencer une démonstration complète de ce cas.

En troisième lieu, le processus de déploiement et de la pratique

Charger le programme d'installation cluster d'équilibrage

3.1 Configuration du déploiement de deux serveurs tomcat

En raison de déployer deux tomcat processus serveur presque identique (sauf les parties des pages affichées incohérentes, bien sûr, est de vérifier l'équilibrage de charge), et ne semble pas l'article trop long, nous démontrons tomcat1 déployé sur le serveur.

3.1.1 Installer jdk

====================================================================================
tomcat1
[root@localhost ~]# hostnamectl set-hostname tomcat1
[root@localhost ~]# su
[root@tomcat1 ~]# cd /opt/
[root@tomcat1 opt]# ls
apache-tomcat-9.0.16.tar.gz  jdk-8u91-linux-x64.tar.gz  rh
[root@tomcat1 opt]# tar zxf jdk-8u91-linux-x64.tar.gz -C /usr/local/
[root@tomcat1 opt]# vim /etc/profile  #声明环境变量
#末尾
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_NAME}/bin:$PATH
[root@tomcat1 opt]# source /etc/profile

3.1.2 déployer l'installation de tomcat

[root@tomcat1 opt]# ls
apache-tomcat-9.0.16.tar.gz  jdk-8u91-linux-x64.tar.gz  rh
[root@tomcat1 opt]# tar zxf apache-tomcat-9.0.16.tar.gz -C /usr/local/
[root@tomcat1 opt]# cd /usr/local/
[root@tomcat1 local]# ls
apache-tomcat-9.0.16  bin  etc  games  include  jdk1.8.0_91  lib  lib64  libexec  sbin  share  src
[root@tomcat1 local]# mv apache-tomcat-9.0.16/ tomcat
[root@tomcat1 local]# cd tomcat/
[root@tomcat1 tomcat]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@tomcat1 bin]# ls  #将下面中的启动脚本和关闭脚本建立软链接
bootstrap.jar       ciphers.sh                    daemon.sh     setclasspath.bat  startup.sh            version.bat
catalina.bat        commons-daemon.jar            digest.bat    setclasspath.sh   tomcat-juli.jar       version.sh
catalina.sh         commons-daemon-native.tar.gz  digest.sh     shutdown.bat      tomcat-native.tar.gz
catalina-tasks.xml  configtest.bat                makebase.bat  shutdown.sh       tool-wrapper.bat
ciphers.bat         configtest.sh                 makebase.sh   startup.bat       tool-wrapper.sh
[root@tomcat1 bin]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin
[root@tomcat1 bin]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin

#创建站点目录以及文件(web页面)
[root@tomcat1 local]# mkdir -p /web/webapp1
[root@tomcat1 local]# cd /web/webapp1/
[root@tomcat1 webapp1]# vim index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
 <head>
    <title>JSP test1 page</title>  #网页标题名字
 </head>
 <body>
    <% out.println("Welcome tomcat1 Web");%> #网页内容为:welcome tomcat1 web 唯一需要在tomcat2上面更改配置的部分(再次声明这样是为了验证效果,生产环境中是一致的哈~)
 </body>
</html>
[root@tomcat1 webapp1]# vim /usr/local/tomcat/conf/server.xml #配置服务文件在149行添加context标签语句 
148       <Host name="localhost"  appBase="webapps"
149             unpackWARs="true" autoDeploy="true">
150          <Context docBase="/web/webapp1" path="" reloadable="false">
151          </Context>
[root@tomcat1 webapp1]# startup.sh #开启服务
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_91/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@tomcat1 webapp1]# netstat -ntap | grep 8080 #检查tomcat服务是否开启
tcp6       0      0 :::8080                 :::*                    LISTEN      2020/java 

[root@tomcat1 webapp1]# systemctl status firewalld.service  #查看防火墙对防火墙进行设置
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 日 2020-04-05 11:04:32 CST; 19min ago
   ......
[root@tomcat1 webapp1]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
success
[root@tomcat1 webapp1]# firewall-cmd --reload
success

3.2 Configuration de déploiement du serveur nginx

3.2.1 compiler et installer manuellement le service de nginx (ici ne dit pas beaucoup ha)

[root@nginx opt]# tar zxf nginx-1.12.0.tar.gz -C /usr/local/
[root@nginx opt]# yum install -y gcc gcc-c++ make zlib-devel pcre-devel

[root@nginx opt]# useradd -M -s /sbin/nologin nginx
[root@nginx opt]# cd /usr/local/nginx-1.12.0/
[root@nginx nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module
[root@nginx nginx-1.12.0]# make && make install
[root@nginx nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

3.3 Validation d'équilibrage de charge Configuration

3.3.1upstream module d'équilibrage de charge

[root@nginx nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf
#在nginx.conf的gzip下面写入tomcat服务器池,tomcat-server表示一个名称,可以理解为服务器的域名
#gzip  on;

    upstream tomcat-server {
                server 20.0.0.130:8080 weight=1;#根据加权轮循算法调度访问后端的tomcat服务器
                server 20.0.0.136:8080 weight=1;
                }
location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://tomcat-server; #配置代理服务器
        }
[root@nginx nginx-1.12.0]# nginx -t #检查配置文件的语法
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@nginx nginx-1.12.0]# nginx #启动服务
[root@nginx nginx-1.12.0]# netstat -napt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      53804/nginx: master 
[root@nginx nginx-1.12.0]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@nginx nginx-1.12.0]# firewall-cmd --reload
success

3.3.2 Vérifier l'équilibrage de charge

Accès client sur l'adresse du serveur nginx, puis rafraîchissement, à la suite des deux graphiques suivants:

La pratique rend parfait - vous construisez un regroupement Nginx + Tomcat culturel et éducatif, l'équilibrage de charge et statique et dynamique de séparation

La pratique rend parfait - vous construisez un regroupement Nginx + Tomcat culturel et éducatif, l'équilibrage de charge et statique et dynamique de séparation

Procédé de séparation dynamique pour atteindre démo

Le seul mouvement pour atteindre l'objectif de la séparation, de sorte que vous pouvez faire la démonstration nécessaire, en utilisant le serveur nginx et un serveur tomcat.

3.4 accès analogique aux ressources dynamiques et statiques (page web non identiques)

Pour des raisons administratives, il est recommandé d'écrire les services de gestion d'un manuscrit

[root@nginx nginx-1.12.2]# vim /etc/init.d/nginx  ##编写service启动脚本
#!/bin/bash
# chkconfig: - 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
    start)
        $PROG
        ;;
    stop)
        kill -s QUIT $(cat $PIDF)
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    reload)
        kill -s HUP $(cat $PIDF)
        ;;
    *)
                echo "Usage: $0 {start|stop|restart|reload}"
                exit 1
esac
exit 0
[root@nginx nginx-1.12.2]# chmod +x /etc/init.d/nginx 
[root@nginx nginx-1.12.2]# chkconfig --add nginx

3.4.1 annotation temporaire configuration de service proxy nginx d'origine

location / {
            root   html;
            index  index.html index.htm;
            #proxy_pass http://tomcat-server;
        }

3.4.2 modifier les fichiers du répertoire par défaut du site (page d'affichage) (déclaration nginx comme un accès terminal de traitement de demande de ressource statique)

[root@nginx html]# vim index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p><em>this is a static web page.</em></p> #em表示斜体
</body>
</html>

serveur de redémarrage pour accéder au service à ce moment, on obtient:

La pratique rend parfait - vous construisez un regroupement Nginx + Tomcat culturel et éducatif, l'équilibrage de charge et statique et dynamique de séparation

Jsp écrire une 3.4.3 page dynamique tomcat1

#创建一个站点目录demo,编写一个jsp脚本
vim /usr/local/tomcat/webapps/demo/index.jsp 
<!DOCCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/ html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>动态页面</title>
</head>
<body>
<div>动态页面1</div>
</body>
</html>

更改server.xml
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Context docBase="/usr/local/tomcat/webapps/demo" path="" reloadable="false">
         </Context>
        <!--<Context docBase="/web/webapp1" path="" reloadable="false">
         </Context> -->

Ensuite, le temps nécessaire emplacement sur le serveur nginx pour l'accès aux fichiers de Jump configurer l'accès IP:

location ~.*.jsp$ {       ##匹配jsp页面跳转代理服务器池
           proxy_pass http://tomcat-server;
           proxy_set_header Host $host;
        }

3.4.4 test de vérification

La pratique rend parfait - vous construisez un regroupement Nginx + Tomcat culturel et éducatif, l'équilibrage de charge et statique et dynamique de séparation

3.5 Accès dynamique tomcat à la même page Web, les ressources statiques disponibles sur nginx

Utiliser une image comme fichier jsp contenant une des images au format jpg récupérés à partir du serveur nginx

La configuration spécifique est la suivante

Sur nginx: nécessité de créer un catalogue de démonstration (nom démo et répertoires sur le tomcat doit être le même) stocké jpg

#首先取消上面的代理注释内容,因为测试的时候访问的是20.0.0.128
server {
        listen       80;
        server_name  localhost;

        location ~.*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
            root html/demo;
            expires 30d;
        }
        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        location ~.*.jsp$ {       ##匹配jsp页面跳转代理服务器池
           proxy_pass http://tomcat-server;
           proxy_set_header Host $host;
        }
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://tomcat-server;
        }

matou:

fichier jsp, ajoutez un lien de l'image:

[root@tomcat1 demo]# vim /usr/local/tomcat/webapps/demo/index.jsp 
<!DOCCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/ html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>动态页面</title>
</head>
<body>
<div>动态页面1</div><br>
<img src="cat.jpg"> #添加的内容
</body>
</html>
~         

ressources jsp: Dans le répertoire de démonstration sous

[root@tomcat1 demo]# ls
index.jsp

ressource image: répertoire html

[root@nginx html]# ls
50x.html  demo  index.html
[root@nginx html]# cd demo/
[root@nginx demo]# ls
cat.jpg
[root@nginx demo]# 

A cet accès de service du point de redémarrage nginx 20.0.0.128

La première visite au texte + image, parce qu'il n'y a pas de deuxième configuration associée sur le serveur secondaire pour accéder au contenu et le contenu est toujours la même qu'avant l'équilibrage de charge.

La pratique rend parfait - vous construisez un regroupement Nginx + Tomcat culturel et éducatif, l'équilibrage de charge et statique et dynamique de séparation

La pratique rend parfait - vous construisez un regroupement Nginx + Tomcat culturel et éducatif, l'équilibrage de charge et statique et dynamique de séparation

Un bref résumé

En fait, combinée à la pratique, nous pouvons comprendre comment combiner à l'équilibrage de la statique et la séparation dynamique et charge la construction nginx + tomcat groupe servi. Si la dernière ressource dynamique représentée par un texte dynamique, les ressources statiques, plus ce chaton mignon au nom de (statique compréhension et séparation dynamique), conjointement avec la charge avant d'équilibrage pour améliorer tomcat2 la configuration du serveur peut être basé sur l'algorithme d'équilibrage de charge.

En bref, nous devons être très familier avec le fichier de configuration pour les modules de fonction, et enfin besoin de comprendre comment les différents modules ou des instructions en fonction du contexte de l'accès au saut, correspondant à la gestion des relations nécessite une vision claire (logique).

Je suppose que tu aimes

Origine blog.51cto.com/14557673/2485054
conseillé
Classement