Nginx負載調度器+雙Tomcat負載及會話共享+MySQL後端資料庫

不言
發布: 2023-04-02 20:44:02
原創
1969 人瀏覽過

這篇文章主要介紹了關於Nginx負載調度器雙Tomcat負載及會話共享MySQL後端資料庫,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

Nginx負載調度器雙重Tomcat負載及會話複製MySQL後端資料庫

環境:

##作用192.168.2.5nginx192.168.2.6#tomcat1192.168.2.7tomcat2#192.168.2.8一、session共享之前設定
IP
##mysql

步驟:

①關閉防火牆或開放埠80,8080,3306,關閉selinux

②安裝nginx

从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.9]# ./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

不啟動nginx

③兩台tomcat主機進行安裝

jdk从官网下载需要许可,允许之后下载至本地,导入主机
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.54.tar.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 ~]# catalina.sh version

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 Corporation
登入後複製
啟動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.
登入後複製
測試訪問
#http:// 192.168.2.6:8080http://192.168.2.7:8080
④兩台主機修改tomcat設定檔[root@192 ~]#cd /usr/local/tomcat7/conf [root@192 ~]#cp server.xml server.xml.bak


#[root@192 ~]#vim server.xml

.......
<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>
登入後複製
重啟tomcat

[root@192 ~] #shutdown.sh
[root@192 ~]#startup.sh

注意:第二台主機不同處server.xml中jvmRoute=”tomcat-2”,還有index. jsp中tomcat-2

#測試訪問看到兩台tomcat主機session ID不同,準備工作完成

http://192.168.2.6 :8080

http://192.168.2.7:8008

#二、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没法使用
登入後複製

如果開啟防火牆的話,開啟以下

[root@192 ~]#firewall-cmd --add-port=45564/udp --permanent[root@192 ~]#firewall-cmd --add-port=4000/tcp --permanent重啟tomcat[root@192 ~]#shutdown.sh[root@192 ~]#startup.sh②配置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;
        }
登入後複製
#[root@192 ~]#firewall-cmd --reload
注意:兩個tomcat配置一樣只要在Receiver段指對第二台主機ip位址即可
啟動nginx,訪問nginx地址刷新頁面測試訪問######[root@192 ~]#nginx######http://192.168.2.5######三、連接mysql資料庫######步驟:######①192.168.2.8中的mysql容器作為資料庫伺服器,設定mysql:###mysql>grant  all  privileges  on  ###to.###  all  privileges  on  ###to java @'192.168.2.%'  identified  by '123.com';######mysql> create database javatest#######mysql>use javatest######mysql>create table test#mysql>use javatest#####mysql>create table testdata(id int not null auto_increment primary key,foo varchar(25),bar varchar(10));######mysql>insert into testdata(foo,bar) values('hello','123.com');# #####mysql>select * from testdata;################id######foo######bar########################################################################################## ##########1######hello######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配置

以上是Nginx負載調度器+雙Tomcat負載及會話共享+MySQL後端資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!