小秦不吃鱼 發表於 2019-8-27 20:57:00

Linux搭建nginx负载均衡(两台服务器之间)

<h1><span style="font-family: &quot;Microsoft YaHei&quot;; font-size: 18pt">负载均衡种类</span></h1>
<p>第一种:通过硬件负载解决,常见的有NetScaler、F5、Radware和Array等商用的负载均衡器,价格比较昂贵</p>
<p>第二种:通过软件负载解决,常见的软件有LVS、Nginx、apache等,它们是基于Linux系统并且开源的负载均衡策略.</p>
<h1><span style="font-family: &quot;Microsoft YaHei&quot;; font-size: 18pt">nginx简介</span></h1>
<p>Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。</p>
<h1><span style="font-family: &quot;Microsoft YaHei&quot;; font-size: 18pt">nginx应用场景&nbsp;</span></h1>
<p>1)http服务器。Nginx是一个http服务可独立提供http服务。可以做网页静态服务器。&nbsp;<br>2)虚拟主机。能实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。&nbsp;<br>3)反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。</p>
<h1><span style="font-family: &quot;Microsoft YaHei&quot;; font-size: 18pt">环境配置</span></h1>
<p>操作系统:Centos&nbsp;Linux&nbsp;7.6</p>
<p>nginx版本:nginx-1.16.1</p>
<h1><span style="font-family: &quot;Microsoft YaHei&quot;; font-size: 18pt">服务器配置</span></h1>
<p><span style="font-family: &quot;Microsoft YaHei&quot;">服务器1:106.2.3.5 作为nginx负载服务(tomcat服务1)</span></p>
<p><span style="font-family: &quot;Microsoft YaHei&quot;">服务器2:182.3.5.6&nbsp; (tomcat服务2)</span></p>
<h1><span style="font-family: &quot;Microsoft YaHei&quot;; font-size: 18pt"><span style="font-family: &quot;Microsoft YaHei&quot;">结构图</span></span></h1>
<p><img src="https://img2018.cnblogs.com/i-beta/1772617/201912/1772617-20191210091938196-1073817659.png"></p>
<h1><span style="font-family: &quot;Microsoft YaHei&quot;; font-size: 18pt">安装部署</span></h1>
<p><span style="font-family: &quot;Microsoft YaHei&quot;">下载好nginx安装包:wget http://nginx.org/download/nginx-1.16.1.tar.gz</span></p>
<h2><span style="font-family: &quot;Microsoft YaHei&quot;; font-size: 14pt">1.安装nginx(服务器1)</span></h2>
<p>1)首先安装好编译环境</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel</pre>
</div>
<p>2)解压nginx</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # tar -zxf nginx-1.16.1.tar.gz</pre>
</div>
<p>切换到解压目录</p>
<p><img src="https://img2018.cnblogs.com/blog/1772617/201908/1772617-20190827113159217-609750900.png"></p>
<p>3)编译安装</p>
<p>首先创建nginx的临时文件,存放在/var/tmp/nginx</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # mkdir -p /var/tmp/nginx</pre>
</div>
<p>执行命令</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/tmp/nginx/client \
--http-proxy-temp-path=/var/tmp/nginx/proxy \
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \<br>--with-http_stub_status_module \<br>--with-http_ssl_module \<br>--with-http_realip_module<br></span></pre>
</div>
<p>出现如下图即成功</p>
<p><img src="https://img2018.cnblogs.com/blog/1772617/201908/1772617-20190827113837608-1362302717.png"></p>
<p>编译源码,安装nginx</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # make
</span><span style="color: rgba(0, 128, 128, 1)">2</span> # make install</pre>
</div>
<p>安装完成,查看安装目录</p>
<p><img src="https://img2018.cnblogs.com/blog/1772617/201908/1772617-20190827114310772-76458398.png"></p>
<p>4)启动nginx服务</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)"># cd sbin/
</span><span style="color: rgba(0, 128, 128, 1)">2</span> # ./nginx -c /usr/local/nginx/conf/nginx.conf</pre>
</div>
<p>查看nginx进程是否启动</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # ps -aux | grep nginx</pre>
</div>
<p><img src="https://img2018.cnblogs.com/blog/1772617/201908/1772617-20190827114741763-234398581.png"></p>
<p>注意:其中master为主进程worker为工作进程</p>
<p>&nbsp;5)退出nginx</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # ./nginx -s quit</pre>
</div>
<p>6)重启nginx</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)"># pwd
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)">/usr/local/nginx/sbin
</span><span style="color: rgba(0, 128, 128, 1)">3</span> # ./nginx -s reload</pre>
</div>
<p><span style="font-family: &quot;Microsoft YaHei&quot;">7)测试nginx</span></p>
<p>&nbsp;在浏览器上通过ip访问:http://localhost,出现如下界面即成功</p>
<p><img src="https://img2018.cnblogs.com/blog/1772617/201908/1772617-20190827115437697-445070403.png"></p>
<h2><span style="font-family: &quot;Microsoft YaHei&quot;; font-size: 14pt">&nbsp;2.安装tomcat服务(服务器1,服务器2)</span></h2>
<p>下载tomcat:https://tomcat.apache.org/</p>
<p><img src="https://img2018.cnblogs.com/blog/1772617/201908/1772617-20190827161647690-1578511475.png"></p>
<p>wget下载:&nbsp;wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.45/bin/apache-tomcat-8.5.45.tar.gz</p>
<p>我选择的是tomcat8版本</p>
<p>&nbsp;<img src="https://img2018.cnblogs.com/blog/1772617/201908/1772617-20190827161309423-2051165816.png"></p>
<p>1)解压到指定目录</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # tar -zxf apache-tomcat-8.5.45.tar.gz -C /usr/local/</pre>
</div>
<p>tomcat依赖于jdk,在安装tomcat服务之前先配置jdk的环境,可以参考我之前的jdk安装配置文章,这里不作介绍</p>
<p>2)配置tomcat服务</p>
<p>修改tomcat端口</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # cd /usr/local/apache-tomcat-8.5.45<span style="color: rgba(0, 0, 0, 1)">/conf
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)"># pwd
</span><span style="color: rgba(0, 128, 128, 1)">3</span> /usr/local/apache-tomcat-8.5.45<span style="color: rgba(0, 0, 0, 1)">/conf
</span><span style="color: rgba(0, 128, 128, 1)">4</span> # vi server.xml</pre>
</div>
<p>&nbsp;将默认的启动端口8080修改为8888端口</p>
<p><img src="https://img2018.cnblogs.com/blog/1772617/201908/1772617-20190827162614887-419329047.png"></p>
<p>修改之后保存退出</p>
<p>&nbsp;3)启动tomcat服务</p>
<p>进入tomcat的bin目录,启动startup.sh启动脚本</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)"># pwd
</span><span style="color: rgba(0, 128, 128, 1)">2</span> /usr/local/apache-tomcat-8.5.45<span style="color: rgba(0, 0, 0, 1)">/bin
</span><span style="color: rgba(0, 128, 128, 1)">3</span> # ./startup.sh</pre>
</div>
<p><img src="https://img2018.cnblogs.com/blog/1772617/201908/1772617-20190827163925096-636709488.png"></p>
<p>查看是否开启成功</p>
<p><img src="https://img2018.cnblogs.com/blog/1772617/201908/1772617-20190827164037354-82461173.png"></p>
<p>4)测试是否开启服务</p>
<p>通过浏览器访问http://ip:端口号。如下图所示则成功&nbsp;<img src="https://img2018.cnblogs.com/blog/1772617/201908/1772617-20190827164435789-1985650567.png"></p>
<p>5)编写测试负载的index.html文件</p>
<p>创建test目录存放测试页面</p>
<p>服务器1:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"># pwd
/usr/local/apache-tomcat-</span>8.5.45<span style="color: rgba(0, 0, 0, 1)">/webapps/<br></span></pre>
<p>&nbsp; # mkdir -p test<br>&nbsp; # ls test/<br>&nbsp; index.html</p>
<pre><span style="color: rgba(0, 0, 0, 1)"># vi test/index.html
&lt;!DOCTYPE html&gt;
&lt;html lang=</span>"en"<span style="color: rgba(0, 0, 0, 1)">&gt;
    &lt;head&gt;
      &lt;meta charset=</span>"UTF-8"<span style="color: rgba(0, 0, 0, 1)"> /&gt;
      &lt;title&gt;</span>106.53.73.200<span style="color: rgba(0, 0, 0, 1)">&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
      &lt;h1&gt;server1:</span>106.53.73.200<span style="color: rgba(0, 0, 0, 1)">&lt;/h1&gt;
    &lt;/body&gt;
&lt;/html&gt;</span></pre>
</div>
<p>&nbsp;服务器2:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"># pwd
</span>/usr/local/apache-tomcat-<span style="color: rgba(128, 0, 128, 1)">8.5</span>.<span style="color: rgba(128, 0, 128, 1)">45</span>/webapps/<span style="color: rgba(0, 0, 0, 1)">
# mkdir </span>-p test <br># ls test/<span style="color: rgba(0, 0, 0, 1)">
index.html
# vi test</span>/<span style="color: rgba(0, 0, 0, 1)">index.html
</span>&lt;!DOCTYPE html&gt;
&lt;html lang=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">en</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;
    &lt;head&gt;
      &lt;meta charset=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">UTF-8</span><span style="color: rgba(128, 0, 0, 1)">"</span> /&gt;
      &lt;title&gt;<span style="color: rgba(128, 0, 128, 1)">182.254</span>.<span style="color: rgba(128, 0, 128, 1)">184.102</span>&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
      &lt;h1&gt;server2:<span style="color: rgba(128, 0, 128, 1)">182.254</span>.<span style="color: rgba(128, 0, 128, 1)">184.102</span>&lt;/h1&gt;
    &lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>通过http://ip:port/项目名/测试页面访问</p>
<p>&nbsp;<img src="https://img2018.cnblogs.com/blog/1772617/201908/1772617-20190827203133041-1488433464.png"></p>
<p>&nbsp;</p>
<p><img src="https://img2018.cnblogs.com/blog/1772617/201908/1772617-20190827203113831-1829256663.png"></p>
<p>&nbsp;至此tomcat安装完成</p>
<h2><span style="font-family: &quot;Microsoft YaHei&quot;; font-size: 14pt">3.配置nginx负载(服务器1)</span></h2>
<p>&nbsp;1)修改配置文件nginx.conf</p>
<div class="cnblogs_code">
<pre># cd /usr/local/nginx/conf/<span style="color: rgba(0, 0, 0, 1)">
# vi nginx.conf</span></pre>
</div>
<p>配置负载均衡,配置完保存并退出</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"> #20190827添加
    upstream testTomcat{
      #设置分权,权重越高优先访问
      server </span><span style="color: rgba(128, 0, 128, 1)">106.53</span>.<span style="color: rgba(128, 0, 128, 1)">73.200</span>:<span style="color: rgba(128, 0, 128, 1)">8888</span> weight=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
      server </span><span style="color: rgba(128, 0, 128, 1)">182.254</span>.<span style="color: rgba(128, 0, 128, 1)">184.102</span>:<span style="color: rgba(128, 0, 128, 1)">8888</span> weight=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
    }

    server {
      listen       </span><span style="color: rgba(128, 0, 128, 1)">80</span><span style="color: rgba(0, 0, 0, 1)">;
      server_namelocalhost;

      #charset koi8</span>-<span style="color: rgba(0, 0, 0, 1)">r;

      #access_loglogs</span>/<span style="color: rgba(0, 0, 0, 1)">host.access.logmain;

      #所有请求都在这里去找分配
      location </span>/<span style="color: rgba(0, 0, 0, 1)"> {
            #root   html;
            indexindex.html index.htm;
            #使用test分配规则,即刚刚自定义添加的upstream节点
            proxy_pass http:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">testTomcat/test/;</span>
<span style="color: rgba(0, 0, 0, 1)">      }
}</span></pre>
</div>
<p>重新启动nginx服务</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> # /usr/local/nginx/sbin/nginx -s reload</pre>
</div>
<p>2)测试负载均衡</p>
<p>通过浏览器访问负载ip,出现下图即负载成功</p>
<p><img src="https://img2018.cnblogs.com/blog/1772617/201908/1772617-20190827205623118-1060402698.png"></p>
<p><img src="https://img2018.cnblogs.com/blog/1772617/201908/1772617-20190827205634398-1494657273.png"></p>

</div>
<div id="MySignature" role="contentinfo">
    不幸运的人也有被眷顾的权利<br><br>
来源:https://www.cnblogs.com/HeiDi-BoKe/p/11417155.html
頁: [1]
查看完整版本: Linux搭建nginx负载均衡(两台服务器之间)