负载均衡nginx与tomcat的双剑合璧

      首先我们需要知道何为负载均衡,简单的说便是是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行。

      在实际的应用中,我们总能听到一些如新浪、微信等出现宕机的情况,而很多时候别人出现了宕机而你没有出现,这个时候不用怀疑是假消息,只能说你所处的那个地区的通过DNS也即是域名服务器进行了客户端的负载均衡,故而其他地方出现了宕机而你的那里并未受到影响。我们应该知道负载均衡有许多种,也可以理解为有许多层的负载均衡,一层接一层的通过负载均衡来保证了服务的稳定及高可用等特性。 

       如我们学习java的开发者,总会接触到的tomcat便可以与nginx组成一层负载均衡,而我们需要知道nginx同样是作为一个软件安装在服务器中,而服务器同样有着其上限,故而若服务器出现了某些不可控因素如断电或某些工程把电缆挖断了等等导致不能提供服务了,那么nginx这个时候又有何用呢!故而我们需要将nginx也作为下一层负载均衡来进行配置,而nginx想要形成一层负载均衡那应当配置有lvs(几乎现行的linux版本都已内置)与keepalived来进行结合,其原理便是通过lvs与keepalived得到虚拟ip地址,相当于拥有了虚拟ip地址后便可以将该地址分配给不同的nginx,从而形成了一层负载均衡,到此这里便是大多数的开发者需要了解的了。

        而这里主要介绍nginx与tomcat来配置出一层负载均衡。环境为windows。之后会介绍在阿里云服务器环境为centos7中进行配置。

  1.   首先各位应当安装好tomcat,tomcat的安装这里不做赘述,这里便给出nginx的官网链接nginx下载链接
  2.   当下载完成之后进行解压即可,之后得到的文件夹中可以直接点击其中nginx.exe之后会出现命令窗口一闪而过
  3.   之后你便可以在浏览器中使用localhost:80 不出意外的情况你便可以看到一个Welcome to nginx!页面
  4.   当然你若启动不成功,或许是nginx默认的80端口被其他的应用如httpd占用了,而这个时候你便去百度一下查看端口的命令即可,得到相应的pid号去任务管理器寻找对应的pid号进行结束任务即可
  5.   当成功的看到nginx的欢迎页面后,那么便可以着手于大干一场了。
  6.   而这个时候你可以先将nginx进行关闭,在windows中关闭服务是相当简单的,你只需要打开任务管理器中的详细信息查找nginx.exe便可以直接点击结束任务
  7.   现在让我们去对tomcat操作一番,接下来我们便是找到tomcat的位置,一般情况下直接进行安装的tomcat都是被包含于:Apache Software Foundation这个文件夹中,反正不管tomcat位于何处,你只需找到tomcat这个文件夹即可
  8.   之后我们便进入tomcat文件夹中,在这里我们可以看到好些个文件夹如:bin、conf、webapps等
  9.  我们首先进入bin文件夹中,找到形如 Tomcat9w.exe 的程序,当然你的版本数字或许不同,不过那个w应该还是会有的,我们双击运行它,之后便可以得到一个程序的面板,我们可以看到它有 Start 、Stop等的按钮,不过这个时候相信你并未打开过tomcat,那么我们便点击 Start 运行,之后我们便可以打开浏览器输入 localhost:8080 便可以得到一个Apache Tomcat 的经典页面
  10.  而我们便可以将tomcat9w.exe 在桌面创建一个快捷方式,以便后面的使用。
  11.  到了这里我们可以知道nginx占用的端口是80,而tomcat占用的端口是8080,而我们也知道搭建负载均衡的条件便是需要多个tomcat配合一个nginx进行搭建,当然我们也可以选择安装多个tomcat,但是这里我们就直接使用一个tomcat来配置出多个端口即可,之前我们已经知道tomcat一般占用8080端口,而这时我们便需要打开tomcat的conf文件夹中的server.xml 文件了
  12.   如何搭建出多个tomcat的端口呢?我们已经打开了server.xml,打开它后便可找到一行 <Service name="Catalina"> 我们找到它后便一路下拉找到 </Service> 这一行从我们写过html的经验来看形如<Service  >  </Service> 应当是一个整体,而实际上它们确实一个模块,且又通过Service的单词意思可以知道其为服务的意思,那么自然而然的联想到多个服务了
  13.  那么我们便直接从<Service name="catalina"> 开始复制,直接一路下拉直到</Service>,这样便得到了一个模块,那么我们便在 </Service>的下方,进行粘贴即可。
  14.  现在我们已经粘贴了一段<Service > </Service>代码,而我们知道端口是不能同时为两个服务来运行的,故而我们需要修改粘贴这一段中的 <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    Connector Port=“你想修改为的端口号” ,反正不能为已经使用了的端口号,这里我们将其该为 9090
  15.   之后便继续向下找到 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 这里便将port改为8010,反正和之前的不一样即可
  16.  再一路向下找到 <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">   这里我们将
    appBase修改为webapps2
  17.  到了这里,我们不可掉以轻心的直接重启tomcat,我们可不能忘了还有一件事情,新加入的端口 9090 我们并未在电脑上开放这个端口,故而打开防火墙和网络保护,进入高级设置找到入站规则点击新建规则 ,之后会看到规则类型,我们选择端口,之后填入 9090 端口一路向下即可,到此便成功的开放了 9090 端口
  18.  到此tomcat便已经成功的配置了两个端口,分别为 8080 与 9090 接下来便将tomcat重新打开,便是打开之前的tomcat9w.exe再Start运行,若之前未关tomcat则先Stop之后,再Start即可,然后我们在浏览器中输入 localhost:8080 与 localhost:9090 不出意外的话,两个都能成功的看到经典的tomcat小猫页面,当然若9090不成功的话,你便打开tomcat文件夹,找到webapps这个文件夹,打开它并将它里面的所有文件进行复制到webapps2文件夹里面,因为之前设置appBase=webapps2,所以可以看到多了一个webapps2文件夹
  19. 这样再重新启动一下tomcat,相信便可以成功了
  20.  而这个时候我们便可以在tomcat的webapps与webapps2两个文件夹中新建一个test文件夹,在webapps的test文件夹中新建一个hello.html文件在其中写入
    <html> <body> <p> 这里是第一个端口8080</p> </body> </html>
  21.  在webapps2的test文件夹中同样建立名称一样的hello.html文件在其中写入
    <html> <body> <p> 这里是第2个端口 9090 </p> </body> </html>
    到此我们便可以测试一下是否能成功的打开 hello.html文件
  22.  再重启一下tomcat,在浏览器中输入localhost:8080/test/hello.html  若能成功看到,则再输入localhost:9090/test/hello.html若能看到,那么棒极了,距离成功一步之遥了
  23.   现在我们可以将tomcat保持在开启状态,现在进入到nginx的文件夹找到 conf文件夹,进入其中打开 nginx.conf 在其中写入如下所示:便是在其中加入 upstream tomcat{}  与 location / {  proxy_pass  }
    ​
    http {
        include       mime.types;
        default_type  application/octet-stream;
        
       ## 便是输入这里 两个端口 8080  9090
        upstream tomcat{
            server localhost:8080;
            server localhost:9090;
           
        }
    	
       
    
        sendfile        on;
       
        keepalive_timeout  65;
    
       
        server {
            listen       80;
            server_name  localhost;
    
    
            
           ##### location这里 proxy_pass 
    
            location / {
                #将所有请求交给Tomcat集群去处理
                proxy_pass http://tomcat;
                root   html;
                index  index.html index.htm;
            }
    
    ​
  24.   之前已经关闭了nginx,故而现在重新启动nginx,之后我们便可以在浏览器中输入localhost/test/hello.html 因为nginx已经监听了8080,9090端口
  25.   不出意外的话,便可以看到成功的打开hello.html文件,之后看到 这里是第一个端口 8080 这句话 ,然后我们再刷新一下应该就能看到 这里是第二个端口 9090 这句话。
  26.  至此便成功的实现了一个极简的 负载均衡 。

    以上便是在windows环境下搭建的简单版的负载均衡,而与添加test项目类似,你便可以将相同的javaweb服务添加到webapps文件夹与webapps2文件夹下即可。

     之后再写阿里云服务器上的搭建。其实都类似。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值