【Linux运维-集群技术进阶】Nginx+Tomcat实现Web服务器的负载均衡
2016-01-08 21:00
1196 查看
拓扑环境
服务器采用CentOS 7 最小安装模式,完全模拟生成环境,一台Nginx服务器,两台Tomcat服务器,实现一个简化的反向代理和负载均衡服务。
原理图
前置条件
JDK安装见:/article/2285381.html
Tomcat安装见:http://blog.csdn.net/u010028869/article/details/50379304
Nginx安装见:/article/3644993.html
反向代理负载均衡介绍见:/article/3644999.html
编写测试静态页
在229服务器编写 Login.html:
在Tomcat的webapps目录下,新建一个文件夹drp,并将login.html放到drp文件夹里。
同样的在230服务器上也新建文件:login.html,并上传到drp目录下。
编写完成后,启动229,230服务器上的Tomcat,并在windows上测试是否启动成功
分别输入url:
http://192.168.22.229:8080/drp/login.html
http://192.168.22.230:8080/drp/login.html
测试是否能够访问。
修改Nginx核心配置文件nginx.conf
下面配置文件中的几个关键点:
(1)进程数与每个进程的最大连接数
① nginx进程数,建议设置为和服务器cup核数相等,或者是核数的两倍
② 单个进程最大连接数,该服务器的最大连接数=连接数*进程数;
服务器支持最大并发数=(连接数*进程数) /2 ,因为反向代理是双向的。
(2)Nginx的基本配置
① 监听端口一般都为http端口:80;可以修改为其他,这里修改为8088。
② server_name :默认为localhost ,这里修改为服务器ip地址。
(3)负载均衡列表基本配置
① location / {}:负载均衡访问的请求,可以添加筛选,假如我们要对所有的jsp后缀的文件进行负载均衡时,可以这样写:location ~ .*.jsp$ {}
② proxy_pass:请求转向自定义的服务器列表,这里我们将请求都转向标识为http://mycluster 的负载均衡服务器列表;
③ 在负载均衡服务器列表的配置中,Server指令:指定服务器的ip地址,weight是权重,可以根据机器配置定义权重(如果某台服务器的硬件配置十分好,可以处理更多的请求,那么可以为其设置一个比较高的weight;而有一台的服务器的硬件配置比较差,那么可以将前一台的weight配置为weight=2,后一台差的配置为weight=1)。weigth参数表示权值,权值越高被访问到的几率越大;
(四)完整的配置文件示例
最基本的Nginx配置差不多就是上面这些内容,当然仅仅是最基础的配置。
在浏览器中进行负载均衡测试
在浏览器中输入 : http://192.168.22.227:8088/drp/login.html
不断刷新浏览器,访问的地址一直在变化,可以看到负载均衡的效果已经实现。
小结
这篇文章通过Nginx反向代理实现了Tomcat服务器集群的负载均衡效果。从这个Demo中,我们可以简单地感受到反向代理为我们所做的事情,并体会到什么是负载均衡。当然这次只是简单的使用了一下Nginx,做了一些很简单的配置,后续会做一些针对负载均衡的优化配置,还有就是Session共享的问题,以及Nginx高可用的问题,这些知识后续博客会介绍到,万丈高楼平地起,一步一步来。
服务器名称 | 系统版本 | 预装软件 | IP地址 |
---|---|---|---|
Nginx服务器 | CentOS 7 最小安装 | Nginx | 192.168.22.227 |
Web服务器A | CentOS 7 最小安装 | tomcat+jdk | 192.168.22.229 |
Web服务器B | CentOS 7 最小安装 | tomcat+jdk | 192.168.22.230 |
原理图
前置条件
JDK安装见:/article/2285381.html
Tomcat安装见:http://blog.csdn.net/u010028869/article/details/50379304
Nginx安装见:/article/3644993.html
反向代理负载均衡介绍见:/article/3644999.html
编写测试静态页
在229服务器编写 Login.html:
[code]<html> <head> <meta http-equiv="content-type" content="text/html;charset=gb2312" /> </head> <body> <h1>您正在访问:192.168.22.229</h1> </body> </html>
在Tomcat的webapps目录下,新建一个文件夹drp,并将login.html放到drp文件夹里。
[code] 完整目录:/usr/local/tomcat8/webapps/drp
同样的在230服务器上也新建文件:login.html,并上传到drp目录下。
[code]<html> <head> <meta http-equiv="content-type" content="text/html;charset=gb2312" /> </head> <body> <h1>您正在访问:192.168.22.230</h1> </body> </html>
编写完成后,启动229,230服务器上的Tomcat,并在windows上测试是否启动成功
分别输入url:
http://192.168.22.229:8080/drp/login.html
http://192.168.22.230:8080/drp/login.html
测试是否能够访问。
修改Nginx核心配置文件nginx.conf
下面配置文件中的几个关键点:
(1)进程数与每个进程的最大连接数
[code]#工作进程个数,一般跟服务器cpu核数相等,或者核数的两倍 worker_processes 2; #单个进程最大连接数 events{ worker_connections 1024; }
① nginx进程数,建议设置为和服务器cup核数相等,或者是核数的两倍
② 单个进程最大连接数,该服务器的最大连接数=连接数*进程数;
服务器支持最大并发数=(连接数*进程数) /2 ,因为反向代理是双向的。
(2)Nginx的基本配置
[code]#nginx基本配置 server{ listen 8088; #端口号 server_name 192.168.22.227; #服务名 }
① 监听端口一般都为http端口:80;可以修改为其他,这里修改为8088。
② server_name :默认为localhost ,这里修改为服务器ip地址。
(3)负载均衡列表基本配置
[code] #服务器集群 upstream mycluster{ #这里添加的是上面启动好的两台Tomcat服务器 server 192.168.22.229:8080 weight=1; server 192.168.22.230:8080 weight=1; } location /{ #将访问请求转向至服务器集群,mycluster和上面upstream mycluster 对应 proxy_pass http://mycluster; # 真实的客户端IP proxy_set_header X-Real-IP $remote_addr; # 请求头中Host信息 proxy_set_header Host $host; # 代理路由信息,此处取IP有安全隐患 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 真实的用户访问协议 proxy_set_header X-Forwarded-Proto $scheme; }
① location / {}:负载均衡访问的请求,可以添加筛选,假如我们要对所有的jsp后缀的文件进行负载均衡时,可以这样写:location ~ .*.jsp$ {}
② proxy_pass:请求转向自定义的服务器列表,这里我们将请求都转向标识为http://mycluster 的负载均衡服务器列表;
③ 在负载均衡服务器列表的配置中,Server指令:指定服务器的ip地址,weight是权重,可以根据机器配置定义权重(如果某台服务器的硬件配置十分好,可以处理更多的请求,那么可以为其设置一个比较高的weight;而有一台的服务器的硬件配置比较差,那么可以将前一台的weight配置为weight=2,后一台差的配置为weight=1)。weigth参数表示权值,权值越高被访问到的几率越大;
(四)完整的配置文件示例
[code]user nobody; #工作进程个数,一般跟服务器cpu核数相等,或者核数的两倍 worker_processes 2; #单个进程最大连接数 events{ worker_connections 1024; } http{ keepalive_timeout 65; gzip on; #服务器集群 upstream mycluster{ #集群有几台服务器即可配置几台,weight表示权重,权重越大被访问到的几率越大 #这里添加的是上面启动好的两台Tomcat服务器 server 192.168.22.229:8080 weight=1; server 192.168.22.230:8080 weight=1; } #nginx基本配置 server{ listen 8088; #端口号 server_name 192.168.22.227; #服务名 location /{ #将访问请求转向至服务器集群,mycluster和上面upstream mycluster 对应 proxy_pass http://mycluster; # 真实的客户端IP proxy_set_header X-Real-IP $remote_addr; # 请求头中Host信息 proxy_set_header Host $host; # 代理路由信息,此处取IP有安全隐患 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 真实的用户访问协议 proxy_set_header X-Forwarded-Proto $scheme; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
最基本的Nginx配置差不多就是上面这些内容,当然仅仅是最基础的配置。
在浏览器中进行负载均衡测试
在浏览器中输入 : http://192.168.22.227:8088/drp/login.html
不断刷新浏览器,访问的地址一直在变化,可以看到负载均衡的效果已经实现。
小结
这篇文章通过Nginx反向代理实现了Tomcat服务器集群的负载均衡效果。从这个Demo中,我们可以简单地感受到反向代理为我们所做的事情,并体会到什么是负载均衡。当然这次只是简单的使用了一下Nginx,做了一些很简单的配置,后续会做一些针对负载均衡的优化配置,还有就是Session共享的问题,以及Nginx高可用的问题,这些知识后续博客会介绍到,万丈高楼平地起,一步一步来。
相关文章推荐
- 连接本地服务器Tomcat上解析Json的一个新闻客户端界面
- Tomcat7.0.26的连接数控制bug的问题排查
- CentOS6.x下安装Tomcat
- ubuntu安装tomcat8
- Eclipse修改tomcat发布路径
- tomcat和apache的区别与联系
- tomcat下的lib文件夹
- tomcat设置URIEncoding
- 坑爹坑娘坑祖宗的87端口(记一次tomcat故障排查)
- 搭建jdk8+tomcat8环境
- tomcat-connector-address遇到的问题
- 性能测试之tomcat线程池设置原理
- The Apache Tomcat Connectors - AJP Protocol Reference
- 配置Tomcat 中文字符集问题
- eclipse中运行tomcat7源代码
- eclipse在tomcat服务器运行jsp时提示以下错误
- centos7.2 yum 安装tomcat的问题
- tomcat配置文件server.xml详解
- window下Tomcat Permgen设置,亲验有效
- tomcat 指定的服务未安装(总结验证)