springmvc+tomcat+nginx实现单一负载均衡

目录 视频下载

上一节我们把负载均衡的相关定义以及nginx的安装与指令作了一个解释,不过还没有对我们的Java项目进行配置,这里我将继续把负载均衡的相关知识点为大家一一介绍,如果对上一节还不是很了解的,可以看会上一节的文章,欢迎订阅我的头条号:一点热。

上一章节:java项目如何实现单一的nginx负载均衡

我们上一节说到只有一个nginx服务器,所以用户访问服务器是经过nginx的,由nginx根据URL规则指向用户去访问那个服务器,同时我们也说到,这样的服务器设计的弊端就是,当改nginx超过了负载的压力的时候,nginx就不在工作,这样就导致用户无法进行相应的操作了。为了使大家更加容易理解,我把图片重新画了一下,如下图

springmvc+tomcat+nginx实现单一负载均衡由上图可以看到,用户进入经过nginx,然后只要我们对nginx配置相应的规则,让它去转发到不同的服务器。这里我们给出三个匹配规则来进行处理,如果url是包含有login的则会转发到192.168.1.101或者是192.168.1.102这两台机器,比如是当然你如果只有一台机器的话,也可以填写一个IP地址。比如是遇到http://api.yeehot.com/login/api/qq,那么会根据权重,用户访问到192.168.1.101或者192.168.1.102服务器。

了解了nginx的转发规则之后我们应该如何配置nginx,上一节我们已经说过如何安装nginx了,在安装后,我们可以对nginx进行配置,如果安装我上一节的nginx版本以及安装路径的话,我们的配置文件会在/usr/nginx-1.10.0/conf/nginx.conf,一定要注意的是不是我们解压的那个文件的配置文件,

我们可以输入vi /usr/nginx-1.10.0/conf/nginx.conf,打开nginx.conf,这里我为了可以让大家方便阅读,把Nginx的配置做了一个说明,

#user nobody;

#进程数,定义了nginx执行时的进程数

worker_processes 4;

#更改worker进程的最大打开文件数限制

worker_rlimit_nofile 65535;

#错误日志

error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

#pid logs/nginx.pid;

# nginx连接的设置。

events {

use epoll;

worker_connections 65535;

}

http {

#——————Nginx后端服务器配置,这里我使用默认的轮询请求方式——————

#登陆后端服务器配置,配置规则是, ip:port,#weight,代表权重,权重越大,代表访问到改IP的服务器的几率越大。

upstream loginserver {

server 192.168.1.101:8080 weight=50;

server 192.168.1.102:8080 weight=50;

}

#评论后端服务器配置

upstream commentserver {

server 192.168.1.103:8080 weight=50;

server 192.168.1.104:8080 weight=50;

}

#聊天后端服务器配置

upstream chatserver {

server 192.168.1.105:8080 weight=50;

server 192.168.1.106:8080 weight=50;

}

#—————–Nginx后端服务器配置结束——————————————-

include mime.types;

default_type application/octet-stream;

#log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘

# ‘$status $body_bytes_sent “$http_referer” ‘

# ‘”$http_user_agent” “$http_x_forwarded_for”‘;

#access_log logs/access.log main;

sendfile on;

#tcp_nopush on;

#keepalive_timeout 0;

keepalive_timeout 65;

#gzip on;

server {

#监听的端口,80

listen 80;

#转发的域名,根据这个域名来转发下面的规则

server_name api.yeehot.com;

#字符集

charset utf-8;

#保存路径

root /mnt/yeehot;

index index.html index.htm index.php;

#默认的访问地址

location / {

index index.html index.htm;

}

#转发规则,当URL遇到login的时候,会转发到loginserver

location /login {

proxy_pass http://loginserver;

}

location /comment {

proxy_pass http://commentserver;

}

location /chat {

proxy_pass http://chatserver;

}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html

#

#错误页面

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

}

以上的配置,主要是后端服务器的配置,端口的监听,域名的配置,已经url转发规则的配置,配置好后,我们还需要重启nginx,输入指令,nginx -s reload

spring mvc+tomcat的配置

我们这里假设用户已经打包好了springmvc项目包,以及安装好tomcat的情况下,由于spirng mvc包只是运行在tomcat服务器下的,这样我们只需要对我们的tomcat进行配置就可以了

我们打开tomcat的conf/server.xml,找到Host name=”localhost” appBase=”webapps”,这一段代码,并且修改成如下的

<Host name=”localhost” appBase=”webapps”

unpackWARs=”true” autoDeploy=”true”>

<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs”

prefix=”localhost_access_log.” suffix=”.txt”

pattern=”%h %l %u %t &quot;%r&quot; %s %b” />

<–添加以下这一项代码,docBase是项目的路径–>

<Context docBase=”/Users/yeehot/Downloads/apache-tomcat-7.0.69/webapps/YeehotProgramKing” path=”” debug=”0″ reloadable=”false” />

</Host>

以上配置目的就是将tomcat设置成默认访问的目录,比如是原来需要访问的地址是

http://api.yeehot.com:8080/YeehotProgramKing/login/api/qq

现在只需要访问http://api.yeehot.com:8080/login/api/qq

由于我们刚刚配置nginx的时候配置后端服务器是如下的格式

upstream loginserver {

server 192.168.1.101:8080 weight=50;

server 192.168.1.102:8080 weight=50;

}

这个说明我们访问到该IP的机器的时候监听到的是8080端口,而tomcat也是使用8080端口,而我们Nginx监听的是api.yeehot.com:80端口,这样nginx的工作就是我们访问api.yeehot.com:80/login/api/qq的时候,nginx会根据我们的“login”的规则,转发到loginserver这里,然后会根据192.168.1.101和192.168.1.102的权重分配到其中一台机器,并转向到该机器的8080端口,由于我们刚刚已经配置默认的访问路径,那么我们就可以访问到该springmvc的项目了。

今天的课程就讲到这里,下一节继续讲负载均衡的相关知识,欢迎大家订阅我的头条号,欢迎大家交流与指出不足,我会慢慢改正,同时欢迎大家收藏与转发,同时也请大家请勿转载到其它地方,如果真的要转载,麻烦与我联系。我的头条号:一点热。