下载并安装nginx和tomcat
nginx下载地址,选择版本1.12.2
http://nginx.org/en/download.html
tomcat下载,选择版本9.0.29
http://tomcat.apache.org/
注意:以上都是下载的解压版
在本机或虚拟机上安装多个tomcat
安装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首页title
为了区分不同的tomcat,我们还需要将tomcat的webapps/ROOT/index.jsp文件修改一下,将该文件的title标签值修改为对应的端口号,这样我们待会可以一下子看出tomcat切换了
启动三个tomcat,可以看到页面的title已经显示为了端口号
安装并配置nginx
安装nginx
将nginx的压缩包解压即可安装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
linux下nginx的相关命令
启动
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的负载均衡就实现了
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