宝塔Nginx负载均衡
宝塔Nginx负载均衡
注意点: 配置了负载均衡后,前端没有分配服务器,先检查后端服务器的端口是否被放行
在站点的配置文件中添加多个后端服务器
upstream myschool {server 124.223.67.254:9081 weight=2; # 124.226.67.254 后端服务器1,weight权重2server 124.70.221.226:9082 weight=3; # 124.226.67.254 后端服务器1,weight权重3server 127.0.0.1:9083
}server
{listen 8001; ## 项目端口号server_name 124.70.221.226; ## 项目域名index index.php index.html index.htm default.php default.htm default.html; ## 默认访问页面root /www/wwwroot/124.70.221.226; ## 项目目录#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则#error_page 404/404.html;#SSL-END#ERROR-PAGE-START 错误页配置,可以注释、删除或修改#error_page 404 /404.html;#error_page 502 /502.html;#ERROR-PAGE-END#PHP-INFO-START PHP引用配置,可以注释或修改include enable-php-74.conf;#PHP-INFO-END#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效include /www/server/panel/vhost/rewrite/124.70.221.226.conf;#REWRITE-END#禁止访问的文件或目录location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md){return 404;}#一键申请SSL证书验证目录相关设置location ~ \.well-known{allow all;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;error_log /dev/null;access_log /dev/null;}location ~ .*\.(js|css)?${expires 12h;error_log /dev/null;access_log /dev/null; }access_log /www/wwwlogs/124.70.221.226.log;error_log /www/wwwlogs/124.70.221.226.error.log;## 项目文件访问地址location / {try_files $uri $uri/ /index.html;}// 前端访问环境location /prod-api/{proxy_pass http://myschool/; ## 负载均衡访问地址}}
负载均衡分配策略
1. 普通轮询算法
这是Nginx 默认的轮询算法。
例子:两台相同的Tomcat服务器,通过 localhost:8080 访问Tomcat1,通过 localhost:8081访问Tomcat2,现在我们要输入 localhost 这个地址,可以在这两个Tomcat服务器之间进行交替访问。
一、分别修改两个Tomcat服务器的端口为8080和8081。然后再修改Tomcat的首页,使得访问这两个页面时能够区分。如下:
修改端口号文件为 server.xml :
修改首页的路径为:webapps/ROOT/index.jsp
修改完成之后,分别启动这两个Tomcat服务器,然后分别输入相应的地址端口号:
输入地址:localhost:8081
输入地址:localhost:8080
二、修改 nginx 的配置文件 nginx.conf
upstream OrdinaryPolling {server 127.0.0.1:8080;server 127.0.0.1:8081;
}
server {listen 80;server_name localhost;location / {proxy_pass http://OrdinaryPolling;index index.html index.htm index.jsp;}
}
三、启动 nginx。然后在浏览器输入localhost 地址,观看页面变化:
2. 基于比例加权轮询
nginx.conf 配置文件如下:
upstream OrdinaryPolling {server 127.0.0.1:8080 weight=5;server 127.0.0.1:8081 weight=2;
}server {listen 80;server_name localhost;location / {proxy_pass http://OrdinaryPolling;index index.html index.htm index.jsp;}
}
其实对比上面不加权的轮询方式,这里在 upstream 指令中多了一个 weight 指令。该指令用于配置前面请求处理的权重,默认值为 1。
也就是说:第一种不加权的普通轮询,其实其加权值 weight 都为 1。
下面我们看页面相应结果:
明显 8080 端口号出现的次数更多,试验的次数越多越接近我们配置的比例。
3. 基于服务器响应时间负载分配
upstream myschool{server 127.0.0.1:8080 weight=5;server 127.0.0.1:8081 weight=2;fair;
}
根据服务器处理请求的时间来进行负载,处理请求越快,也就是响应时间越短的优先分配。通过增加了 fair
指令。
4. 对不同域名实现负载均衡
upstream wordbackend {server 127.0.0.1:8080;server 127.0.0.1:8081;
}upstream pptbackend {server 127.0.0.1:8082;server 127.0.0.1:8083;
}server {listen 80;server_name localhost;location /word/ {proxy_pass http://wordbackend;index index.html index.htm index.jsp;}location /ppt/ {proxy_pass http://pptbackend;index index.html index.htm index.jsp;}
}
通过配合location 指令块我们还可以实现对不同域名实现负载均衡。
5. 基于IP路由负载
我们知道一个请求在经过一个服务器处理时,服务器会保存相关的会话信息,比如session,但是该请求如果第一个服务器没处理完,通过nginx轮询到第二个服务器上,那么这个服务器是没有会话信息的。
最典型的一个例子:用户第一次进入一个系统是需要进行登录身份验证的,首先将请求跳转到Tomcat1服务器进行处理,登录信息是保存在Tomcat1 上的,这时候需要进行别的操作,那么可能会将请求轮询到第二个Tomcat2上,那么由于Tomcat2 没有保存会话信息,会以为该用户没有登录,然后继续登录一次,如果有多个服务器,每次第一次访问都要进行登录,这显然是很影响用户体验的。
这里产生的一个问题也就是集群环境下的 session 共享,如何解决这个问题?
通常由两种方法:
1、第一种方法是选择一个中间件,将登录信息保存在一个中间件上,这个中间件可以为 Redis 这样的数据库。那么第一次登录,我们将session 信息保存在 Redis 中,跳转到第二个服务器时,我们可以先去Redis上查询是否有登录信息,如果有,就能直接进行登录之后的操作了,而不用进行重复登录。
2、第二种方法是根据客户端的IP地址划分,每次都将同一个 IP 地址发送的请求都分发到同一个 Tomcat 服务器,那么也不会存在 session 共享的问题。
而 nginx 的基于 IP 路由负载的机制就是上诉第二种形式。大概配置如下:
upstream OrdinaryPolling {ip_hash;server 127.0.0.1:8080 weight=5;server 127.0.0.1:8081 weight=2;
}
server {listen 80;server_name localhost;location / {proxy_pass http://OrdinaryPolling;index index.html index.htm index.jsp;}
}
注意:我们在 upstream 指令块中增加了 ip_hash 指令。该指令就是告诉 nginx 服务器,同一个 IP 地址客户端发送的请求都将分发到同一个 Tomcat 服务器进行处理。
宝塔Nginx负载均衡相关推荐
- PHP+Nginx+宝塔+rsync代码同步 实现Nginx负载均衡
PHP+Nginx+宝塔+rsync代码同步 实现Nginx负载均衡 作为一个PHP菜鸟,最近闲着没事,就想搭建一个Nginx试试,因为重来没有搭过,特此记录一下,也希望能为新入门的兄弟们提供一点帮助 ...
- 基于宝塔搭建nginx负载均衡服务器
准备三台服务器,搭建好宝塔环境 服务器1:作为主服务器,分发服务器,并且数据库,redis等都装在此服务器 服务器2:均衡服务器1 服务器3:均衡服务器2 打开端口:如果使用阿里云,配置安全组,888 ...
- Nginx负载均衡的详细配置及使用案例
Nginx负载均衡的详细配置及使用案例详解 感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结. ...
- Nginx负载均衡集群介绍
第1章 集群介绍 1.1 集群简介 1.1.1 什么是集群 简单说,集群就是一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行 ...
- [ 总结 ] nginx 负载均衡 及 缓存
操作系统:centos6.4 x64 前端使用nginx做反向代理,后端服务器为:apache + php + mysql 1. nginx负载均衡. nginx编译安装(编译安装前面的文章已经写过) ...
- docker初体验:docker部署nginx负载均衡集群
Docker 是一个用于开发,交付和运行应用程序的开放平台.Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件.今天来为大家演示一下docker部署nginx负载均衡集群 环境 ce ...
- 【CentOS 7LNMP架构33】,nginx负载均衡#180109
2019独角兽企业重金招聘Python工程师标准>>> hellopasswd nginx负载均衡 多台代理服务器 vi /usr/local/nginx/conf/vhost/lo ...
- Keepalived+LVS+Nginx负载均衡之高可用
2019独角兽企业重金招聘Python工程师标准>>> 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致 ...
- Nginx负载均衡+tomcat+session共享
为什么80%的码农都做不了架构师?>>> 本文,是笔者工作之余写的,第一是把之前打系统框架的步骤记录下来.第二是将这个过程,谈不上经验,奉献给正在撘这种框架遇到各种bug,各种 ...
最新文章
- 开源软硬一体OpenCV AI Kit(OAK)
- HDU 6143 Killer Names (组合数学+DP)
- Redis 命令--Redis列表(List))
- 6款html5模板下载
- 在写新邮件时,在地址栏中敲入前几个字母,对于已熟悉的收件人,outlook会弹出列表...
- nodejs cluster_NodeJS下好用的Redis客户端ioredis,再推荐一个Redis可视化工具
- 不学网php,php不学框架可以吗
- Services in Kubernetes
- 计算机网络 第七版【谢希仁】部分答案(第1~7章)【附:电子书】
- ts重点学习71-implement语句
- ASO优化之新人必备的基础知识技能
- html做表格(个人简历)
- nslookup查询域名系统服务器,域名解析系统DNS诊断命令nslookup详解
- 前端制作PUBG瞄准镜!
- Mardown、LaTex编辑器推荐
- 图形的一点透视和平移
- python取整数部分的几种方法
- 18719 填涂颜色
- Preftest测试
- Java程序朗读文字的实现,jacob.jar