CentOS 下 Nginx + Tomcat 配置负载均衡之一
前言
为什么要做负载均衡?
当你网站是一个企业站、个人博客的时候,或者访问量比较小的时候,一台服务器完全应付的了,那就完全没必要做负载均衡。但是,如果你的网站是平台级别,用户至少百万级别了,一台服务器明显撑不住了,那就要考虑多台服务器,这个时候每个服务器分配多少用户,负载均衡是最好的解决方式。举个大的不是很恰当的栗子:淘宝网。
对于互联网服务,负载平衡器通常是一个软体程序,这个程序侦听一个外部端口,互联网用户可以通过这个端口来访问服务,而作为负载平衡器的软体会将用户的请求转发给后台内网服务器,内网服务器将请求的响应返回给负载平衡器,负载平衡器再将响应发送到用户,这样就向互联网用户隐藏了内网结构,阻止了用户直接访问后台(内网)服务器,使得服务器更加安全,可以阻止对核心网络栈和运行在其它端口服务的攻击。
当所有后台服务器出现故障时,有些负载平衡器会提供一些特殊的功能来处理这种情况。例如转发请求到一个备用的负载平衡器、显示一条关于服务中断的消息等。负载平衡器使得IT团队可以显著提高容错能力。它可以自动提供大量的容量以处理任何应用程序流量的增加或减少。(摘自维基百科)
怎么做?
这里我们用 Nginx 做负载均衡,nginx 是一款面向性能设计的 HTTP ,稳定性高的反向代理服务器,可以做负载均衡和 HTTP缓存。
具体操作?
1. 安装nginx
参考:https://blog.csdn.net/u014225733/article/details/81011892
2. 安装tomcat
参考:https://mp.csdn.net/postedit/81015059
3. 复制两份tomcat解压包
[root@bogon software]# mv apache-tomcat-8.5.32 tomcat1
[root@bogon software]# cp -r tomcat1 tomcat2
4. 修改tomcat2的默认端口(三处),和tomcat1区别开
参考:https://blog.csdn.net/kzdwts/article/details/79368188
[root@bogon ~]# cd /software/tomcat2/conf/
[root@bogon conf]# vi server.xml
将8080改为8081
将8005改为9005
将8009改为9009
5. 修改tomcat1和tomcat2的默认欢迎页(待会nginx路由到相应的tomcat服务器上时可以从页面上直接看出来)
[root@bogon ~]# cd /software/tomcat2/conf/
[root@bogon conf]# vi web.xml
[root@bogon ~]# cd /software/tomcat1/conf/
[root@bogon conf]# vi web.xml
分别在tomcat1和tomcat2 的webapp目录下新建对应欢迎页myIndex1.html,myIndex2.html
[root@bogon ROOT]# cd /software/tomcat1/webapps/ROOT/
[root@bogon ROOT]# touch myIndex1.html
[root@bogon ROOT]# echo 'the index page of tomcat111111111111111111111' > myIndex1.html
[root@bogon ROOT]# cd /software/tomcat2/webapps/ROOT/
[root@bogon ROOT]# touch myIndex2.html
[root@bogon ROOT]# echo 'the index page of tomcat222222222222222222222' > myIndex2.html
重新分别启动两个tomcat实例
[root@bogon tomcat2]# ./bin/startup.sh
[root@bogon tomcat1]# ./bin/startup.sh
查看启动状态可以看到两个tomcat都正常启动了
访问浏览器可以看到都能正常访问到其修改后的欢迎页面
5. 修改nginx配置文件 nginx.conf
[root@bogon tomcat2]# vi /usr/local/nginx/conf/nginx.conf
upstream myTomcatServer {
server localhost:8080;
server localhost:8081;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://myTomcatServer;
}
6. 使配置文件生效
[root@bogon tomcat2]# cd /usr/local/nginx/
[root@bogon nginx]# ./sbin/nginx -s reload
7. 访问浏览器(默认端口80或者省略不写)
可以看到会交替访问到tomcat1和tomcat2上,这就是最简单的负载均衡配置!
8. nginx也支持通过配置下游服务器的权重来处理不同量的用户请求
如下所示:
upstream myTomcatServer {
server localhost:8080 weight=1;
server localhost:8081 weight=3;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://myTomcatServer;
}
来各复杂的栗子吧?
重启一篇,在这里!