搭建Tomcat负载均衡集群
- 一.Tomcat负载均衡集群构建图
- 二. 准备三个tomcat
- 三. 分别修改三个tomcat端口号
- 四. 将三个tomcat启动
- 五.在windows中分别访问tomcat,都看到主页代表启动成功
- 六. 将三个tomcat配置到nginx的配置文件中
- 七. 进入nginx安装目录sbin目录启动nginx
- 八.访问nginx,看到其中一个tomcat画面
- 九. Nginx负载均衡策略
- 1.轮询
- 2.weight 权重
- 3.ip_hash
- 4.least_conn
- 十. Nginx静态文件代理
- ①. 动静分离图
- ②. 具体配置
- 十一. nginx.conf配置文件详细分析
- ①. 全局块:配置服务器整体运行的配置指令
- ②. events 块:影响 Nginx 服务器与用户的网络连接
- ③. http 块
- ①、http 全局块
- ②、server 块
搭建Nginx的部署在前面一篇博客有,带安装包
一.Tomcat负载均衡集群构建图
二. 准备三个tomcat
我这里搭建的是一个伪分布式,三个tomcat在一个机器上面运行 解压在root目录下
三. 分别修改三个tomcat端口号
vim tomcat1/conf/server.xml
//命令修改如下内容: tomcat1
//第一个
<Server port="8989" shutdown="SHUTDOWN">
//第二个
<Connector port="8003" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
//第三个
<Connector port="10010" protocol="AJP/1.3" redirectPort="8443" />
另外两个也是一样,都tom1的基础上端口号都是+1
四. 将三个tomcat启动
jps 查看tomcat 进程 ps aux|grep tomcat 也行
查看启动日志
查看防火墙的状态
五.在windows中分别访问tomcat,都看到主页代表启动成功
[root@tomcat ~]# vim tom1/webapps/ROOT/index.jsp
我这里修改了index.jsp的源代码 方便后面直观Nginx效果
六. 将三个tomcat配置到nginx的配置文件中
//在server标签上加入如下配置:
upstream tomcat-servers {
server 192.168.153.204:8989;
server 192.168.153.204:8990;
server 192.168.153.204:8991;
}
//将配置文件中 location /替换为如下配置:
location / {
proxy_pass http://tomcat-servers;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
}
七. 进入nginx安装目录sbin目录启动nginx
./nginx -c /usr/nginx/conf/nginx.conf
八.访问nginx,看到其中一个tomcat画面
刷新页面
九. Nginx负载均衡策略
1.轮询
- 默认策略,每个请求会按时间顺序逐一分配到不同的后端服务器
2.weight 权重
- weight参数用于指定轮询几率,weight的默认值为1,;weight的数值与访问比率成正比
upstream tomcat-servers {
server localhost:8989 weight=2;
server localhost:8990;
server localhost:8991 backup;
}
- 权重越高分配到需要处理的请求越多。
- 此策略可以与least_conn和ip_hash结合使用主要用于后端服务器性能不均
3.ip_hash
- 指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。
upstream tomcat-servers {
ip_hash; #保证每个访客固定访问一个后端服务器
server localhost:8080;
......
}
4.least_conn
- 把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。
upstream tomcat-servers{
least_conn; #把请求转发给连接数较少的后端服务器
server localhost:8080;
}
十. Nginx静态文件代理
①. 动静分离图
②. 具体配置
server {
listen 80;
server_name 192.168.153.203;
location /www/ {
root /data/;
index index.html index.htm;
}
location /image/ {
root /data/;
autoindex on;
}
十一. nginx.conf配置文件详细分析
①. 全局块:配置服务器整体运行的配置指令
- 从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。
- 这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约
②. events 块:影响 Nginx 服务器与用户的网络连接
- events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 wordprocess 可以同时支持的最大连接数等。
③. http 块
- 这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
- 需要注意的是:http 块也可以包括 http 全局块、server 块。
①、http 全局块
- http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
②、server 块
- 这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。
- 每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
- 而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。
- 全局 server 块
- 最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。
- location 块
- 一个 server 块可以配置多个 location 块。