Tomcat集群与Nginx负载均衡配置及所带来的问题(windows和linux)
本文目录
一. Tomcat集群方式(本文采用的是云服务器的形式,电脑配置优秀的小伙伴可以用虚拟机)
- 单机部署多应用集群
- 多机器部署集群
二. Nginx负载均衡的配置、策略以及对应的使用场景及特点
三. Nginx+Tomcat 实现负载均衡及集群并验证
四. 引出问题
- Tomcat集群带来了什么好处,为什么要集群?
- Tomcat集群又带来了什么样的问题,你有什么解决方案或思路吗?
- 请你说说Tomcat集群的实现原理
正文、
安装所需的tomcat和nginx.
windows:
tomcat:http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.40/bin/apache-tomcat-8.5.40-windows-x64.zip
nginx: http://nginx.org/download/nginx-1.15.12.zip
linux:
tomcat:http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.40/bin/apache-tomcat-8.5.40.tar.gz
nginx: yum install nginx
一. Tomcat集群(windows)
-
单机部署多应用集群
1.1 准备两个tomcat
1.2 添加环境变量
1.3 修改tocmat端口 /conf/service.xml
service port 节点端口修改 一个8005(默认) 一个 8055
connector port 一个8080(默认) 一个8088 URIEncoding=“UTF-8”避免中文乱码
还一个
启动/bin/startup.bat后查看日志文件是这样的
发现它启动的不是我们新安装的tomcat8.5,这是因为tomcat文件默认配置的环境变量,没有更改,所以它指向了我以前安装的tomcat7.0,改一下配置文件就ok了。
修改两个tomcat的 /bin/catalina.bat 和 startup.bat ,用文本编辑器打开,全文替换,CATALINA_HOME
CATALINA_HOME_0 ,CATALINA_HOME_1
替换后,启动startup.bat,验证下tomcat是否部署成功。
8080
8088 为了更好的区分我改了一个logo,\webapps\root\tomcat.png 替换即可
ok,到这tomcat的部署基本是没问题了,下面就要介入nginx实现负载均衡的效果。
安装后的目录
修改nginx配置 /conf/nginx.conf
在http节点下 添加以下配置
#集群服务名称
upstream tocmat{
#默认策略 轮询
server 127.0.0.1:8088;
server 127.0.0.1:8080;
#也可采取权重方式
#server 127.0.0.1:8088 weight =1;
#server 127.0.0.1:8080 weight =2;
#8080端口是8088端口的两倍
}
server {
listen 80; #监听的端口号
server_name localhost;
location / { # url 过滤, / 不过滤
proxy_pass http://tocmat; #请求转发的地址
}
}
ok,配置加好后,nginx根目录下 cmd命令行 执行 nginx -s reload
验证
如果出现刷新不变的情况下,关掉浏览器缓存即可。
效果如下(轮询策略 12 12 ),第一次。
第二次
ok,单机多应用集群部署已经完成。
二. Tomcat集群(linux)
- 多机器部署集群
2.1 准备两台云服务器或者两个虚拟机;
2.2 在linux上安装两个tomcat;
#使用wget下载tomcat
wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.40/bin/apache-tomcat-8.5.40.tar.gz
#解压
tar -zxvf apache-tomcat-8.5.40.tar.gz
#进入bin目录
cd apache-tomcat-8.5.40/bin
#开启tomcat
startup.sh
如果启动失败,检查一下是否是端口被占用,或者改下tomcat的启动端口
netstat -tunlp| grep 8080
这里已被占用,所以我们改下server.xml 重新配一下启动端口即可;
cd apache-tomcat-8.5.40/conf
vi servier.xml
改为8099端口
:wq #保存
再次启动,之后进入/logs 查看一下日志,可以看到已经启动成功了;
如果发现启动之后,页面无法访问,或卡死,在关闭tomcat出现以下错误
这是因为防火墙或端口未开放的问题,输入下命面令即可解决;
nc -lp 8099 &
过一会发现tomcat的页面成功打开了;
由于时间关系,我已经在第二台也部署了,方法和上面的是一样的,为了区分我换了个7.0版本的。相对单机来说,在多台机器上部署集群是容易的;接下来就开始使用nginx,实现负载均衡,任意一台机器上装一个nginx即可,这里我就在8099端口的那个机器上部署;
2.3 nginx实现负载均衡
#安装nginx
yum install nginx
#修改配置文件/etc/nginx/nginx.conf
vi /etc/nginx/nginx.conf
#添加以下配置
#注意 upstream 要和 proxy_pass相匹配,
#并且 upstream 有一定的命名规范:比如下划线_会引发400错误
upstream linux.tomcat{
server 47.101.168.240:8099;
server 203.195.246.160:8080;
}
server {
listen 80;
server_name 47.101.168.240;
location / {
proxy_pass http://linux.tomcat;
}
}
#保存 :wq
#启动
nginx -s reload
有可能会出现权限不足的问题, bash: ./nginx: Permission denied
解决方案,修改nginx.conf 在第一行中,将 #user nobody; 改成 user root;
ok,重新启动 nginx -s reload
在浏览器测试,可以看到已经成功;
二. Nginx负载均衡的配置、策略以及对应的使用场景及特点
后面更新...
更多推荐
所有评论(0)