nginx下载地址,选择版本1.12.2 http://nginx.org/en/download.html tomcat下载,选择版本9.0.29 http://tomcat.apache.org/ 注意:以上都是下载的解压版
在本机或虚拟机上安装多个tomcat 安装tomcat这里示例在本机上安装三个tomcat 解压并修改tomcat文件夹名即可。图中圈中部分,忽略其他的tomcat
添加环境变量CATALINA_HOME,我这里因为还有其他tomcat所以配置的较多 在环境变量PATH中将刚才添加的三个CATALINA_HOME的lib和bin目录添加进去 %CATALINA_HOME%\lib;%CATALINA_HOME%\bin;
保存后分别进入三个tomcat的bin目录,记事本打开catalina.bat和startup.bat,将其中的CATALINA_HOME全部替换为上述添加的对应的环境变量,比如我这里第一个tomcat对应的环境变量是CATALINA_HOME2,就将文件中所有的CATALINA_HOME替换为CATALINA_HOME2。
上述修改完成后就可以分别成功启动了,但是因为默认都是使用的8080,8005和8009端口,还要进入tomcat的conf目录,修改server中的端口配置,我这里分别将另外两个tomcat的端口设置为了8081,8015,8019和8083,8035,8039(8082端口被我本机的其他应用占用了)
为了区分不同的tomcat,我们还需要将tomcat的webapps/ROOT/index.jsp文件修改一下,将该文件的title标签值修改为对应的端口号,这样我们待会可以一下子看出tomcat切换了 启动三个tomcat,可以看到页面的title已经显示为了端口号
将nginx的压缩包解压即可安装nginx 解压出来的路径如图所示
nginx的默认端口为80,打开nginx下的/conf/nginx.conf文件 在server一栏可以看到端口配置,这里因为本机80端口已被其他程序占用,修改为8888端口 同时还需要配置nginx的负载均衡策略,并且指定需要分发哪些tomcat的服务 这里创建一个upstream,设定其策略为权重型,权重越大分配访问次数越多。 其中upstream后的blance为自定义的服务名,你可以取名为任何,但是不能出现下划线 同时要保证你在proxy_pass后跟的就是你定义的服务名,如下所示 完整配置文件如下,这里已删除部分注释内容 文件server后的IP指的是tomcat所在服务器IP
#user nobody;
worker_processes 1;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#gzip on;
upstream blance{
server IP:8080 weight=1;
server IP:8081 weight=1;
server IP:8083 weight=3;
}
server {
listen 8888;
server_name localhost;
location / {
root html;
index index.html index.htm;
proxy_pass http://blance;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
实际上nginx的负载均衡策略有3种,这里不做详谈,大致了解和学习地址可见文章最后
启动nginx window版双击目录下的nginx.exe即可 或者在cmd模式下,进入nginx目录 输入命令 start nginx 或者 nginx.exe 停止nginx命令 #快速停止,不保存相关信息 nginx.exe -s stop #完整有序停止,保存相关信息 nginx.exe -s quit
启动 service nginx stop 或 systemctl stop nginx 重启 service nginx reload systemctl restart nginx 关闭 service nginx stop systemctl stop nginx 开机自启 systemctl enable nginx 取消开机自启 systemctl disable nginx
测试nginx启动后 进入local:8888,如下图可以看到,服务分配给了8080端口的tomcat 再次刷新发现服务又分配给了8083的tomcat。当访问次数达到一定数量后,其分配比例就会无限靠近我们之前设置的权重比例
到此tomcat+nginx的负载均衡就实现了
将客户端发起的请求,平均的分配给每一台服务器
upstream 名称 {
server 172.16.80.124:8080;
server 172.16.80.124:8081;
server 172.16.80.124:8083;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://名称;
}
}
权重
会将客户端的请求,根据服务器的权重值不同,分配不同的数量
upstream 名称 {
server 172.16.80.124:8080 weight=1;
server 172.16.80.124:8081 weight=10;
server 172.16.80.124:8083 weight=1;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://名称;
}
}
ip_hash
基于发起请求的客户端的ip地址不同,始终会将请求发送到指定的服务器上
upstream 名称 {
ip_hash;
server 172.16.80.124:8080;
server 172.16.80.124:8081;
server 172.16.80.124:8083;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://名称;
}
}
详细的nginx学习可在如下网址观看,可以更加详尽的了解nginx https://www.bilibili.com/video/BV1W54y1z7GM?p=14