Maison > Article > développement back-end > Planificateur de charge Nginx + double partage de charge et de session Tomcat + base de données back-end MySQL
Cet article présente principalement le planificateur de chargement Nginx + le double partage de charge et de session Tomcat + la base de données back-end MySQL. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
Planificateur de chargement Nginx + double chargement Tomcat et réplication de session + base de données backend MySQL Environnement :IP | 作用 |
---|---|
192.168.2.5 | nginx |
192.168.2.6 | tomcat1 |
192.168.2.7 | tomcat2 |
192.168.2.8 | mysql |
从nginx官网下载最新版 wget http://nginx.org/download/nginx-1.13.9.tar.gz[root@192 ~]# yum -y install pcre-devel zlib-devel gcc gcc-c++ make[root@192 ~]# useradd -M -s /sbin/nologin nginx[root@192 ~]# tar zxf nginx-1.13 9.tar. .gz -C /usr/src[root@192 ~]# cd /usr/src/nginx-1.13.9/[root@192 nginx-1.13]#. ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install[root@192 ~]# ln -s / usr/local/nginx/sbin/nginx /usr/local/sbin
Ne démarrez pas nginx
③Deux hôtes Tomcat pour l'installationjdk从官网下载需要许可,允许之后下载至本地,导入主机 tomcat从官网downloads找到tomcat7.0或者更高版本 wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.86/bin/apache-tomcat-7.0.86.tar.gz[root@192 ~]# tar zxf jdk-7u65-linux-x64.gz -C /usr/src[root@192 ~]# tar zxf apache-tomcat-7.0. gz -C /usr/src[root@192 ~]# mv jdk1.7.0_65/ /usr/local/java[root@192 ~]# mv apache-tomcat- 7.0.54/ /usr/local/tomcat7[root@192 ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java export CATALINA_HOME=/usr/local/tomcat7 export PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$PATH[root@192 ~]# source / etc/profile[root@192 ~]# java -version
java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)[root@192 ~]# version catalina.sh
Using CATALINA_BASE: /usr/local/tomcat7 Using CATALINA_HOME: /usr/local/tomcat7 Using CATALINA_TMPDIR: /usr/local/tomcat7/temp Using JRE_HOME: /usr/local/java Using CLASSPATH: /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar Server version: Apache Tomcat/7.0. Server built: May 19 2014 10:26:15 Server number: 7.0.86.0 OS Name: Linux OS Version: 3.10.0-327.el7.x86_64 Architecture: amd64 JVM Version: 1.7.0_65-b17 JVM Vendor: Oracle CorporationDémarrer Tomcat
[ root@192 ~]# /usr/local/tomcat7/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat7 Using CATALINA_HOME: /usr/local/tomcat7 Using CATALINA_TMPDIR: /usr/local/tomcat7/temp Using JRE_HOME: /usr/local/java Using CLASSPATH: /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar Tomcat started.Test d'accèshttp://192.168.2.6:8080
http:/ /192.168.2.7:8080④Deux hôtes modifient le fichier de configuration Tomcat
[root@192 ~]#cd /usr/local/tomcat7/conf
....... <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat-1"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="/web/webapp1" path="" reloadable="true"/>[root@192 ~]#mkdir - p /web/webapp1 [root@192 ~]#vim /web/webapp1/index.jsp
<%@page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>tomcat-1</title> </head> <body> <h1><font color="red">Session serviced by tomcat</font></h1> <table aligh="center" border="1"> <tr> <td>Session ID</td> <td><%=session.getId()%></td> <% session.setAttribute("abc","abc");%> </tr> <tr> <td>Create on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html>Redémarrez Tomcat
[root@192 ~]#shutdown sh
[ root@192 ~]#startup.sh
Remarque : Le deuxième hôte est différent dans jvmRoute="tomcat-2" dans server.xml et dans index.jsp< ;title>tomcat-2< /title>
L'accès au test montre que les identifiants de session des deux hôtes Tomcat sont différents et que les préparatifs sont terminéshttp://192.168.2.6:8080http://192.168.2.7:80082. Configuration du partage de sessionÉtapes :①Deux hôtes configurent le cluster de partage de session
[root@ 192 ~] #vim /usr/local/tomcat7/conf/server.xml
....... <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat-1"> <!--For clustering, please take a look at documentation at: /docs/cluster-howto.html (simple how to) /docs/config/cluster.html (reference documentation) --> <!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> --> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> <Channel className="org.apache.catal ina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="192.168.2.5" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" temDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster> <!-- Use the LockOutRealm to prevent attempts to guess user passwords via a brute-force attack --> <Realm className="org.apache.catalina.realm.LockOutRealm"> <!-- This Realm uses the UserDatabase configured in the global JNDI resources under the key "UserDatabase". Any edits that are performed against this UserDatabase are immediately available for use by the Realm. --> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="/web/webapp1" path="" reloadable="true"/>[root@192 ~]#mkdir /web/webapp1/WEB-INF[root @192 ~ ]#cp /usr/local/tomcat7/conf/web.xml WEB-INF/[root@192 ~]#vim WEB-INF/web.xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <distributable/> #添加这个单词,必须有这一步,否则用户的session没法使用
Si le pare-feu est activé, activez ce qui suit
[root@192 ~]#firewall-cmd --add-port=45564/udp --permanent
[root@192 ~]#firewall-cmd --add-port=4000/tcp --permanent
[root@192 ~]#firewall-cmd --reload
[root@192 ~]#shutdown.sh
[root@192 ~]#startup.sh
Remarque : les deux configurations Tomcat n'ont besoin que de être le même Pointez sur l'adresse IP du deuxième hôte dans la section Récepteur
②Configurer nginx[root@192 ~]#vim /usr/local/nginx/conf/nginx.conf
....... http { ....... upstream tomcat_server { server 192.168.2.6:8080 weight=1; server 192.168.2.7:8080 weight=1; } #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; proxy_pass http://tomcat_server; }Démarrez nginx, visitez l'adresse nginx et actualisez la page pour tester l'accès[root@192 ~]#nginxhttp://192.168.2.5 3. Connectez la base de données mysql Étapes : ① Le conteneur mysql dans 192.168.2.8 est utilisé comme serveur de base de données, configurez mysql :
mysql>grant tous les privilèges sur
. à javauser@'192.168.2.%' identifié par '123.com';
②下载mysql-connector-java-5.1.22-bin.jar 复制到tomcat7/lib/目录下(两台tomcat都需要配置)
[root@192 ~]# cp mysql-connector-java-5.1.22-bin.jar /usr/local/tomcat7/lib/
③配置context.xml
[root@192 ~]# cp /usr/local/tomcat7/conf/context.xml /usr/local/tomcat7/conf/context.xml.bak
[root@192 ~]# vim /usr/local/tomcat7/conf/context.xml
<Context> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="javauser" password="123.com" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.2.8:3306/javatest"/>
④配置web.xml
[root@192 ~]# vim /web/webapp1/web.xml
...... <distributable/> <description>MySQL Test App</description> <resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/TestDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
⑤编写连接数据库jsp文件
[root@192 ~]# vim /web/webapp1/test.jsp
<%@ page language="java" import="java.sql.*" pageEncoding="GB2312"%> <html> <head> <title>MySQL</title> </head> <body> connect MySQL<br> <% String driverClass="com.mysql.jdbc.Driver"; String url="jdbc:mysql://192.168.2.8:3306/javatest"; String username = "javauser"; String password = "123.com"; Class.forName(driverClass); Connection conn=DriverManager.getConnection(url, username, password); Statement stmt=conn.createStatement(); ResultSet rs = stmt.executeQuery("select * from testdata"); while(rs.next()){ out.println("<br>foo:"+rs.getString(2)+"bar:"+rs.getString(3)); } rs.close(); stmt.close(); conn.close(); %> </body></html>
⑥重启tomcat,测试连接
[root@192 ~]# shutdown.sh
[root@192 ~]# startup.sh
http://192.168.2.5/test.jsp
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
ThinkPHP5.0 Linux Apache/Nginx重写URL配置
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!