# 添加 html文件并加入内容
echo "<h1>This is 8080 Port</h1>" > /usr/local/tomcat8080/webapps/ROOT/test.html
echo "<h1>This is 8080 Port -------</h1>" > /usr/local/tomcat8080/webapps/ROOT/test.html
启动两个tomcat服务。
#启动tomcat8080
#启动tomcat8080:
/usr/local/tomcat8080/bin/startup.sh
#关闭tomcat8080:
#/usr/local/tomcat8080/bin/shutdown.sh
浏览器直接访问tomcat服务。
2、Nginx负载均衡配置
第一步:修改Nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
配置内容如下,以轮询策略为例:
worker_processes 1;
events {
worker_connections 1024;
}
http {
# upstream模块:自定义服务组名
upstream my_tomcat_server {
server 192.168.xxx.1xx:8080;
server 192.168.xxx.2xx:8080;
}
server {
listen 80;
server_name 192.168.xxx.xxx; # 指定虚拟主机的IP,或者外网域名
location / {
root html;
index index.html index.htm;
# proxy\_pass:代理转发,指定我们配置负载均衡的服务名my\_tomcat\_server
proxy_pass http://my_tomcat_server;
# 增加下面内容
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote\_addr;
proxy_set_header X-Forwarded-For $proxy\_add\_x\_forwarded\_for;
}
}
}
注意:如果遇到 nginx 配置了https upstream,然后访问跳转失败,直接报404。
解决方法:在nginx的配置文件中添加下面内容。
# 增加下面内容
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote\_addr;
proxy_set_header X-Forwarded-For $proxy\_add\_x\_forwarded\_for;
第二步:重启Nginx
修改 nginx完之后,保存退出,重启Nginx。
/usr/local/nginx/sbin/nginx -s reload
# 先执行停止命令再执行启动命令
[root@centos7 sbin]# /usr/local/nginx/sbin/nginx -s quit
[root@centos7 sbin]# /usr/local/nginx/sbin/nginx
第三步:浏览器访问OK
在浏览器访问:http://192.168.xxx.xxx/test.html时,由于配置的负载均衡会将请求平均分发到到这两台服务器中,所以,访问时会出现不同界面。
第四步:关闭服务
#关闭Nginx
/usr/local/nginx/sbin/nginx -s quit
#关闭tomcat
/usr/local/tomcat8080/bin/shutdown.sh
三、Nginx负载均衡分配策略介绍
1、轮询[默认]
轮询方式是Nginx负载默认的方式。
该策略会使得每个请求按时间顺序逐一分配到不同的后端服务器,如果其中某个后端服务器 down 掉,该策略能自动从轮询列表中剔除该服务。
轮询方式是将所有请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
# upstream模块:自定义服务组名
upstream my_tomcat_server {
server localhost:8080; # 服务器的ip:port
server 192.168.xxx.xxx:8081;
}
2、权重(weight)
该策略会指定每个服务的权重比例,权重越高被分配的客户端(请求)也就越多,weight 和访问比率成正比。主要用于后端服务器性能不均的情况。
- weight指定轮询权值,默认值为1。通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能。
不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。
upstream my_tomcat_server {
server localhost:8080 weight=2;
server 192.168.xxx.xxx weight=5; # 权重设置为5,5>2,所以请求时会多跳转到这个服务
}
3、ip_hash(哈希)
该策略会按照每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器。有效解决了动态网页存在的session共享问题。
源地址哈希法:根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。
注意:
ip_hash和 weight也可以配合使用。
upstream my_tomcat_server {
ip_hash;
server localhost:8080;
server 192.168.xxx.xxx;
}
# ip\_hash和 weight也可以配合使用
upstream my_tomcat_server {
ip_hash;
server localhost:8080 weight=1;
server 192.168.xxx.xxx weight=2;
}
4、最少连接(least_conn)
该策略会将请求分配到连接数最少的服务上。
upstream my_tomcat_server {
least_conn;
server localhost:8080;
server 192.168.xxx.xxx;
}
5、第三方策略
Nginx支持集成第三方的策略插件。
比如:
- fair:此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,即响应时间短的优先分配。比上面更加智能的负载均衡算法。下载安装 Nginx的upstream_fair模块。
- url_hash:按访问 url的 hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。下载安装 Nginx 的hash软件包。
参考文章:
- 关于nginx没有跳转到upstream地址的解决(nginx没有跳转):https://www.27ka.cn/69653.html
– 求知若饥,虚心若愚。