ホームページ  >  記事  >  バックエンド開発  >  Nginx ロード スケジューラ + デュアル Tomcat ロードおよびセッション共有 + MySQL バックエンド データベース

Nginx ロード スケジューラ + デュアル Tomcat ロードおよびセッション共有 + MySQL バックエンド データベース

不言
不言オリジナル
2018-07-07 16:43:161956ブラウズ

この記事では主に、Nginx ロード スケジューラのデュアル Tomcat ロードとセッション共有 MySQL バックエンド データベースを紹介します。これには特定の参考値があります。今、共有します。必要な友人は参照してください。

Nginx Load スケジューラ デュアル Tomcat ロードとセッション レプリケーション MySQL バックエンド データベース

環境:

##IPFunction192.168.2.5nginx192.168.2.6tomcat1192.168.2.7tomcat2##192.168.2.8 1. セッション共有前の設定
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

を起動しないでください③インストール用の 2 つの 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 ~]# ソース /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 バージョン

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:8080

http://192.168.2.7:8080

④2 つのホストが Tomcat 構成ファイルを変更します
[root@192 ~]#cd /usr/local/tomcat7/conf


[root@192 ~]#cp サーバー.xml サーバー.xml.bak

[root@192 〜]#vim サーバー.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

注: 2 番目のホストは、server.xml の jvmRoute=”tomcat-2” とインデックスで異なります。tomcat-2< ;/title><p><strong></strong> jsp でテストアクセスすると、2 つの Tomcat ホストのセッション ID が異なることがわかり、準備は完了です</p> <p>http://192.168.2.6 :8080 </p>http://192.168.2.7:8008<blockquote> <br>2. セッション共有設定</blockquote> <h2>手順:</h2> <p>①2 台のホストでセッション共有クラスターを設定します</p> [root@ 192 ~]#vim /usr/local/tomcat7/conf/server.xml<p></p> <pre class="brush:php;toolbar:false">....... <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"/></pre> <br>[root@192 ~]#mkdir /web/webapp1/WEB-INF<p>[ root@192 ~]#cp /usr/local/tomcat7/conf/web.xml WEB-INF/</p> <p>[root@192 ~]#vim WEB-INF/web.xml</p> <pre class="brush:php;toolbar:false"><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没法使用</pre> <p></p> ファイアウォールが有効になっている場合は、次を有効にします <p><em></em>[root@192 ~]#firewall-cmd --add-port=45564/udp --permanent<br> <em></em> [root@192 ~]#firewall-cmd --add-port=4000/tcp --permanent<br> <em></em>[root@192 ~]#firewall-cmd --reload<br><em> </em>Tomcat を再起動</p>[root@192 ~]#shutdown.sh<p>[root@192 ~]#startup.sh<br><br></p>注: 2 つの Tomcat 設定は同じです。受信側セグメントが 2 番目のホストの IP アドレスを参照している限り <p><strong>#②nginx を設定します</strong>[root@192 ~]#vim /usr/local/nginx/conf/nginx.conf</p> <pre class="brush:php;toolbar:false">....... 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;         }</pre> <p>nginx を起動し、nginx アドレスにアクセスしてページを更新してアクセスをテストします<br></p>[root@192 ~]#nginx<p></p>http://192.168.2.5<p></p> 3. mysql データベースへの接続<blockquote></blockquote>手順:<h2></h2>①192.168.2.8 の mysql コンテナがデータベース サーバーとして機能し、mysql:<p>mysql>を設定し、</p> にすべての権限を付与します。 <p> '123.com' によって識別された javauser @'192.168.2.%' に;<br><em>mysql> データベースを作成 javatest</em></p>mysql>use javatest<p></p>mysql> create table testdata(id int not null auto_increment Primary key,foo varchar(25),bar varchar(10));<p></p>mysql>insert into testdata(foo,bar)values('hello','123. com');<p></p>mysql>select * from testdata;<p></p> <p></p> <table>id<thead><tr class="firstRow">foo<th></th>bar<th> </th> <th></th> </tr></thead>1<tbody><tr>こんにちは<td></td>123.com<td></td> <td></td> <p>②下载mysql-connector-java-5.1.22-bin.jar 复制到tomcat7/lib/目录下(两台tomcat都需要配置)<br>[root@192 ~]# cp mysql-connector-java-5.1.22-bin.jar /usr/local/tomcat7/lib/</p> <p>③配置context.xml<br>[root@192 ~]# cp /usr/local/tomcat7/conf/context.xml /usr/local/tomcat7/conf/context.xml.bak</p> <p>[root@192 ~]# vim /usr/local/tomcat7/conf/context.xml</p> <pre class="brush:php;toolbar:false"><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"/></pre> <p>④配置web.xml<br>[root@192 ~]# vim /web/webapp1/web.xml</p> <pre class="brush:php;toolbar:false">...... <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></pre> <p>⑤编写连接数据库jsp文件<br>[root@192 ~]# vim /web/webapp1/test.jsp</p> <pre class="brush:php;toolbar:false"><%@ 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></pre> <p>⑥重启tomcat,测试连接<br>[root@192 ~]# shutdown.sh<br>[root@192 ~]# startup.sh</p> <blockquote>http://192.168.2.5/test.jsp</blockquote> <p>以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!</p> <p>相关推荐:</p> <p class="comments-box-content"><a title="ThinkPHP5.0 Linux Apache/Nginx重写URL配置" href="http://www.php.cn/php-weizijiaocheng-406204.html" target="_blank">ThinkPHP5.0 Linux Apache/Nginx重写URL配置</a><br></p> <p class="mt20 ad-detail-mm hidden-xs"><a title="使用cronolog切割nginx访问日志,定时清理旧日志" href="http://www.php.cn/php-weizijiaocheng-406203.html" target="_blank">使用cronolog切割nginx访问日志,定时清理旧日志</a><br></p> </tr></tbody> </table><p>以上がNginx ロード スケジューラ + デュアル Tomcat ロードおよびセッション共有 + MySQL バックエンド データベースの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。</p></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="ThinkPHP5.0 Linux Apache/Nginx 書き換え URL 構成" href="http://m.php.cn/ja/faq/406204.html">ThinkPHP5.0 Linux Apache/Nginx 書き換え URL 構成</a></span><span>次の記事:<a class="dBlack" title="ThinkPHP5.0 Linux Apache/Nginx 書き換え URL 構成" href="http://m.php.cn/ja/faq/406206.html">ThinkPHP5.0 Linux Apache/Nginx 書き換え URL 構成</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="http://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/2.html" title="正規表現内のすべての式記号 (概要)" class="aBlack">正規表現内のすべての式記号 (概要)</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><div class="nphpFoot"><div class="nphpFootBg"><ul class="nphpFootMenu"><li><a href="http://m.php.cn/ja/"><b class="icon1"></b><p>ホームページ</p></a></li><li><a href="http://m.php.cn/ja/course.html"><b class="icon2"></b><p>コース</p></a></li><li><a href="http://m.php.cn/ja/wenda.html"><b class="icon4"></b><p>に質問</p></a></li><li><a href="http://m.php.cn/ja/login"><b class="icon5"></b><p>私の</p></a></li><div class="clear"></div></ul></div></div><div class="nphpYouBox" style="display: none;"><div class="nphpYouBg"><div class="nphpYouTitle"><span onclick="$('.nphpYouBox').hide()"></span><a href="http://m.php.cn/ja/"></a><div class="clear"></div></div><ul class="nphpYouList"><li><a href="http://m.php.cn/ja/"><b class="icon1"></b><span>ホームページ</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/course.html"><b class="icon2"></b><span>コース</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/article.html"><b class="icon3"></b><span>記事</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/wenda.html"><b class="icon4"></b><span>に質問</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/dic.html"><b class="icon6"></b><span>辞書</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/course/type/99.html"><b class="icon7"></b><span>マニュアル</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/xiazai/"><b class="icon8"></b><span>ダウンロード</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/faq/zt" title="特集"><b class="icon12"></b><span>特集</span><div class="clear"></div></a></li><div class="clear"></div></ul></div></div><div class="nphpDing" style="display: none;"><div class="nphpDinglogo"><a href="http://m.php.cn/ja/"></a></div><div class="nphpNavIn1"><div class="swiper-container nphpNavSwiper1"><div class="swiper-wrapper"><div class="swiper-slide"><a href="http://m.php.cn/ja/" >ホームページ</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/article.html" class="hover">記事</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/wenda.html" >に質問</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/course.html" >コース</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/faq/zt" >特集</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/xiazai" >ダウンロード</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/game" >ゲーム</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/dic.html" >辞書</a></div><div class="clear"></div></div></div><div class="langadivs" ><a href="javascript:;" class="bg4 bglanguage"></a><div class="langadiv" ><a onclick="javascript:setlang('zh-cn');" class="language course-right-orders chooselan " href="javascript:;"><span>简体中文</span><span>(ZH-CN)</span></a><a onclick="javascript:setlang('en');" class="language course-right-orders chooselan " href="javascript:;"><span>English</span><span>(EN)</span></a><a onclick="javascript:setlang('zh-tw');" class="language course-right-orders chooselan " href="javascript:;"><span>繁体中文</span><span>(ZH-TW)</span></a><a onclick="javascript:;" class="language course-right-orders chooselan chooselanguage" href="javascript:;"><span>日本語</span><span>(JA)</span></a><a onclick="javascript:setlang('ko');" class="language course-right-orders chooselan " href="javascript:;"><span>한국어</span><span>(KO)</span></a><a onclick="javascript:setlang('ms');" class="language course-right-orders chooselan " href="javascript:;"><span>Melayu</span><span>(MS)</span></a><a onclick="javascript:setlang('fr');" class="language course-right-orders chooselan " href="javascript:;"><span>Français</span><span>(FR)</span></a><a onclick="javascript:setlang('de');" class="language course-right-orders chooselan " href="javascript:;"><span>Deutsch</span><span>(DE)</span></a></div></div><script> var swiper = new Swiper('.nphpNavSwiper1', { slidesPerView : 'auto', observer: true,//修改swiper自己或子元素时,自动初始化swiper observeParents: true,//修改swiper的父元素时,自动初始化swiper }); </script></div></div><!--顶部导航 end--><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>