佛泽善缘赵芸 發表於 2023-8-4 00:00:00

详解基于Centos7+Nginx+Tomcat8的负载均衡服务器的搭建

<p>
        由于工作的需求,在使用中,需要搭建负载均衡,研究了apache+tomat负载均衡的方案,并且通过检索相关的文章,进行了比较发现,apache负载负载均衡在使用的效率上,远远不如nginx的效率高,因此决定使用nginx来进行服务的搭建。最初yum安装了nginx,但是不知道什么原因,nginx的服务可以正常启动,静态页面也可以正常访问,但是就是无法正常的搭建虚拟主机和负载均衡。对引没有深究原因,决定把他卸载,然后手动安装。</p>
<p>
        手动安装好nginx后,一切正常,虚拟主机,负载均衡的配置全部没有任何问题。顺利启用,具体的配置文件如下:</p>
<p>
        在conf的nginx.conf的文件中加入了:include vhost/*.conf;  以引入vhost目录下的所有的.conf文件,为了以后配置起来简单,当然如果需要的话,也可以一个一个添加。</p>
<p>
        因为做负载的服务为api服务,在这里conf文件的名字就叫做api.xxx.com.conf,打开文件的配置如下:</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="详解基于Centos7+Nginx+Tomcat8的负载均衡服务器的搭建" alt="详解基于Centos7+Nginx+Tomcat8的负载均衡服务器的搭建" height="242" src="https://zhuji.jb51.net/uploads/img/202305/74557047ac6ad6e041216641fae6bc6a.jpg" width="495"></p>
<p>
        在此没有使用ip轮询的方式,而使用的是usstream 的方式,具体这几个方式有什么不同,大家可以百度或google一下相关的介绍。需要注意的是proxy_pass,在此配置的为upstream 的名字,其它的不允许使用,如果直接配置ip地址,则不会实现负载均衡。</p>
<p>
        其中 weight表示的权重,数越大,权重越高,分配到的机会越大, backup表示的是热备服务器,即在前两个负载都出现问题的时候,热备服务器就会自动承担这些访问。</p>
<p>
        至此nginx负载均衡配置器配置完成,但是因为涉及到负载之后,若是普通的网址,在访问的时候,就会再现session丢失的情况,因此这个时候,就要处理session 丢失的问题,要处理此问题,有多个解决方案,一个是使用cookies代理,另外 一个实现session的共享,在此使用的是session的共享,在实现共享,需要在tomcat进行相关的配置,要实现这个需求,在此配置的session的共享服务器为redis内存服务,主要是为了保证数据的高效读取与存储,在使用redis进行session共享,必须要添加以下几个名:</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="详解基于Centos7+Nginx+Tomcat8的负载均衡服务器的搭建" alt="详解基于Centos7+Nginx+Tomcat8的负载均衡服务器的搭建" src="https://zhuji.jb51.net/uploads/img/202305/5212def978a735239f4e9f0c933b7dc2.jpg">这个几个包,支持tomcat8没有任何问题,其它版本的具体支持情况如何,没有进行相关的测试。</p>
<p>
        然后修改tomcat中的配置文件:</p>
<p>
         <img style="max-width:100%!important;height:auto!important;"title="详解基于Centos7+Nginx+Tomcat8的负载均衡服务器的搭建" alt="详解基于Centos7+Nginx+Tomcat8的负载均衡服务器的搭建" src="https://zhuji.jb51.net/uploads/img/202305/6b28ad53391f89b8fdd8e21ed0b891be.jpg"></p>
<p>
          在此看到的10.0.0.x的地址,全部是内网完成的, 外网不通,只有负责负载的服务器才直接连接的外网。</p>
<p>
          在这个时候,可以顺利启动tomcat服务器,与nginx服务器了,但是在此之前,必须要先启动nginx服务器,否则tomcat可能会出现启动失败的情况。nginx服务可以顺利启动</p>
<p>
        <strong>三处配置如下:</strong></p>
<p>
        nginx.conf中添加的引用内容</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_102206">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">include vhost/*.conf;</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        <strong>负载均衡配置:</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterxml" id="highlighter_829945">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                        <div class="line number15 index14 alt2">
                                                                15</div>
                                                        <div class="line number16 index15 alt1">
                                                                16</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="xml plain">upstream api.xxx.com {</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">server 10.0.0.12:8080 weight=5;</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">server 10.0.0.15:8081 weight=5 ;</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">server 10.0.0.16:8080 weight=5 backup;</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="xml plain">}</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="xml plain">server {</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">listen    80;</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="xml spaces"> </code><code class="xml plain">server_name api.xxx.com;</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="xml spaces"> </code><code class="xml plain">location /</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="xml spaces">  </code><code class="xml plain">{</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="xml spaces">   </code><code class="xml plain">proxy_set_header host $host;</code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="xml spaces">   </code><code class="xml plain">proxy_set_header x-real-ip $remote_addr;</code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                        <code class="xml spaces">   </code><code class="xml plain">proxy_set_header x-forwarded-for $remote_addr;</code>
</div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="xml spaces">   </code><code class="xml plain">proxy_pass http://api.xxx.com;</code>
</div>
                                                                <div class="line number15 index14 alt2">
                                                                        <code class="xml spaces">    </code><code class="xml plain">}</code>
</div>
                                                                <div class="line number16 index15 alt1">
                                                                        <code class="xml plain">}</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        <strong> tomcat配置</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterxml" id="highlighter_786903">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="xml plain">&lt;</code><code class="xml keyword">valve</code> <code class="xml color1">classname</code><code class="xml plain">=</code><code class="xml string">"com.radiadesign.catalina.session.redissessionhandlervalve"</code> <code class="xml plain">/&gt;</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="xml plain">&lt;</code><code class="xml keyword">manager</code> <code class="xml color1">classname</code><code class="xml plain">=</code><code class="xml string">"com.radiadesign.catalina.session.redissessionmanager"</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="xml spaces">       </code><code class="xml color1">host</code><code class="xml plain">=</code><code class="xml string">"10.0.0.16"</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="xml spaces">       </code><code class="xml color1">port</code><code class="xml plain">=</code><code class="xml string">"10000"</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="xml spaces">       </code><code class="xml color1">database</code><code class="xml plain">=</code><code class="xml string">"0"</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="xml spaces">       </code><code class="xml color1">maxinactiveinterval</code><code class="xml plain">=</code><code class="xml string">"60"</code> <code class="xml plain">/&gt;</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        关于怎么安装tomcat,nginx,redis的不是这个的讨论范围。</p>
<p>
        如果需要请查看</p>
<p>
        详解CentOS7.0安装与配置Tomcat-7 </p>
<p>
        centos7安装nginx的两种方法介绍</p>
<p>
        详解在Redis在Centos7上的安装部署</p>
<p>
        以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。</p>
<p>
        原文链接:http://www.cnblogs.com/fly_binbin/p/5459124.html</p>
頁: [1]
查看完整版本: 详解基于Centos7+Nginx+Tomcat8的负载均衡服务器的搭建