nginx负载均衡 加权轮询和ip_hash_windows下nginx ip_hash负载均衡的测试-程序员宅基地

下面给大家总结了几种真正的nginx负载均衡的功能了,在此我们加了一个权重判断法就是根据nginx负载的状态实现分配访问用户到权重值少的机器了,具体配置如下。

nginx为后端web服务器(apache,nginx,tomcat,weblogic)等做反向代理

几台后端web服务器需要考虑文件共享,数据库共享,session共享问题.文件共享可以使用nfs,共享存储(fc,ip存储都行)+redhat GFS集群文件系
统,rsync+inotify文件同步等.小规模的集群中使用更多的是nfs.对于内容管理系统,单台进行发布信息,向多台同步使用rsync+inotify就是个不错的选择.
小规模集群,单台高性能数据库(如志强双四核,32/64/128G内存)即可,大规模集群可能要考虑数据库集群了,可以使用mysql官方提供的集群软件,也
可以使用keepalived+lvs读写分离做Mysql集群.
session共享问题是一个大问题,如果nginx采用ip_hash的轮询方法,每个ip在一定时间内会被固定的后端服务器,这样我们不用解决session共享问题.反之,
一个ip的请求被轮询分发到多台服务器上,就要解决session共享的问题,可以使用nfs共享session,把session写入mysql或者memcache等方法,当机器规模比较大
时,一般使用把session写入memcache里面.

后端的web服务器如何配置我们这里就不讨论了,后端服务器可能是apache,nginx,tomcat,lighthttp等,前端不关心后端到底是什么.
首先新建一个proxy.conf文件,方便后面我们进行调用(配置多个集群的话,把公共参数写到一个文件,然后继续include是不错的方法)
vi /usr/local/nginx/conf/proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_body_buffer_size 90;
proxy_connect_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64

我们这里讨论nginx的两种负载均衡方式 轮询加权(也可以不加权,就是1:1负载)和ip_hash(同一ip会被分配给固定的后端服务器,解决session问题)
这个配置文件,我们可以写到nginx.conf里面(如果只有一个web集群),如果有多个web集群,最好写到vhosts里面,以虚拟主机的方式,这里我写到nginx.conf里面
第一种配置:加权轮询,按服务器的性能给予权重,本例是1:2分配
 upstream lb {

                server 192.168.196.130 weight=1 fail_timeout=20s;
                server 192.168.196.132 weight=2 fail_timeout=20s;
 }

 server {
                listen 80;
                server_name safexjt.com www.safexjt.com;
  index index.html index.htm index.php;
  location / {
                        proxy_pass http://lb;
   proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
   include proxy.conf;
                }
 }

第二种配置:ip_hash轮询方法,不可给服务器加权重

 upstream lb {

                server 192.168.196.130 fail_timeout=20s;
                server 192.168.196.132 fail_timeout=20s;
  ip_hash;
 }

 server {
                listen 80;
                server_name safexjt.com www.safexjt.com;
  index index.html index.htm index.php;
  location / {
                        proxy_pass http://lb;
   proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
   include proxy.conf;
                }
 }

方法二 nginx负载均衡基于ip_hash实现session粘帖


1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 

upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}
2、指定权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 

upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
3、IP绑定 ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 

upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。 

upstream backserver {
server server1;
server server2;
fair;
}
5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 

upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
在需要使用负载均衡的server中增加 

proxy_pass http://backserver/;
upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器)
}
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout:max_fails次失败后,暂停的时间

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42175570/article/details/84632885

智能推荐

xmpp协议分析-程序员宅基地

文章浏览阅读66次。连接服务器:SENT: <stream:stream to="jabber.cn" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0" >RECV: <?xml version='1.0'?><stream:stream xmlns:strea

自动部署开源AI模型到生产环境:Sklearn、XGBoost、LightGBM、和PySpark_离线 开源ai模型 报表-程序员宅基地

文章浏览阅读3.2k次,点赞2次,收藏24次。介绍了如何通过DaaS-Client Python客户端自动部署开源AI模型到生产环境中:Sklearn、XGBoost、LightGBM和PySpark,并且在DaaS网络客户端管理这些模型和部署_离线 开源ai模型 报表

BloomFilter应用与D-Lelft BloomFilter实现_dleft hash bloomfilter-程序员宅基地

文章浏览阅读812次。此篇文章是开发过程中对BloomFilter应用场景的一些介绍,另外项目中实现了D-Left BloomFilter,相关实现时一些注意的地方,简单介绍下!首先看一些应用场景:1.海量的黑白名单。2.爬虫抓取时重复的URL处理。3.数据key是否存在检测4.(一些面试题几十亿不重复整数中判断其中一个整数是否存在的问题,BitMap/BloomFilter能很好的解决)。。。_dleft hash bloomfilter

利用递归函数调用方式,将所输入的五个字符,以相反顺序打印出来-程序员宅基地

文章浏览阅读1k次。递归void palin(int n);int main(){ int i=5; printf("please input 5 numbers:"); palin(i); printf("\n"); } void palin(int n){ char next; if(n<=1) { next=getchar(); printf("\n"); putchar(nex..._要求利 递归函数调 的 式,将获取到所输 的5个字符,以相反顺序分别输

工作中常用的Git命令整理_工作中常用git命令-程序员宅基地

文章浏览阅读384次。背景码农10年,git命令还是经常使用的,这里整理下常用的git命令,用于新人上手。常用git命令一览:从远端拉一个分支:git checkout -b accuse origin/accusegit push origin HEAD -u 【将新建分支推送到远端服务器】从当前分支拉一个分支:git checkout -b accuse创建分支 git checkout -b new_branch 注意,new_branch的代码来自于当前分支切换分_工作中常用git命令

百兆以太网口通信速率_千兆以太网的传输速度-程序员宅基地

文章浏览阅读3.1k次。千兆以太网主流标准千兆以太网络技术早在上世纪90年代末就已成熟,其中,1995年国际标准化组织TIA/EIA颁布了1000Base-TX标准,该标准的目的是把双绞线用于千兆以太网中,其目的是在6类非屏蔽双绞线(UTP)上以1000Mbps速率传输100米。1000Base-TX基于4对双绞线,采用快速以太网中与100Base-TX标准类似的传输机制,是以两对线发送,两对线接收。由于每对线缆本身不进..._bi_da+

随便推点

吴宗宪经典暴笑语录(笑不死你肯定是个异类) _吴宗宪我猜搞笑语录-程序员宅基地

文章浏览阅读2.3k次。吴宗宪经典暴笑语录(笑不死你肯定是个异类) 宪哥:下面请嘉宾们猜猜是什么东西嘉宾:何首乌宪哥:何首乌是一种乐器吗?一个几岁的小男孩反串花旦宪哥:唱歌仔戏都是女生,别人会不会以为你是女生?小孩:不会宪哥:你有弟弟吗?小孩:没有宪哥:你没有弟弟啊?没有弟弟是女生,男生有弟弟,小弟弟,有没有?小孩:没有宪哥:哦!是没带来吧宪哥:我宁愿要在我爱的人身边,我做牛做马都没有关系,只要我是爱她的阿雅_吴宗宪我猜搞笑语录

macbook 开发推荐_macbook 开发必备-程序员宅基地

文章浏览阅读447次。1. IDEPhpStorm,收费的但绝对物有所值,世界上有家公司叫JetBrains,他们开发的IDE都炒鸡好使,谁用谁知道 JetBrains IDEs to create a better Web: IntelliJ IDEA, ReSharper, RubyMine, WebStorm, PhpStorm, PyCharm2. 数据库ClientSequel Pro ,可以..._macbook 开发必备

一文概览主要语义分割网络,FCN、UNet、SegNet、DeepLab 等等等等应有尽有_语义分割网络有哪些-程序员宅基地

文章浏览阅读2.4k次。文章目录介绍 网络架构 Fully Convolution Networks (FCNs) 全卷积网络 SegNet U-Net DeepLab v1 DeepLab v2 DeepLab v3 Fully Convolutional DenseNet E-Net 和 Link-Net Mask R-CNN PSPNet RefineNet G-..._语义分割网络有哪些

PAT 1151 LCA in a Binary Tree(30 分)- 甲级_lca in a binary tree 柳婼-程序员宅基地

文章浏览阅读8.3k次,点赞47次,收藏17次。The lowest common ancestor (LCA) of two nodes U and V in a tree is the deepest node that has both U and V as descendants.Given any two nodes in a binary tree, you are supposed to find their LCA.In..._lca in a binary tree 柳婼

HAL库教程10:定时器的PWM模式应用_mx_tim2_ini pwm-程序员宅基地

文章浏览阅读6.5k次,点赞13次,收藏41次。  本节通过定时器的PWM模式驱动无源蜂鸣器,来演奏一段音乐。本博客在掌机的系列教程中介绍过蜂鸣器的驱动原理,感兴趣的可以参考电子琴无源蜂鸣器驱动电路  蜂鸣器按照有无震荡源(不是电源),可以分为有源蜂鸣器和无源蜂鸣器。有源蜂鸣器上电就能工作,控制简单,但是只有一个音调。无源蜂鸣器需要单片机提供震荡源,虽然控制稍微复杂一点,但是可以发出不同频率的声音。PWM原理  根据我们的电路,引脚输..._mx_tim2_ini pwm

06第四章:Android生命周期_输出警告日志信息使用lo02类的( ) 方法-程序员宅基地

文章浏览阅读296次。Android程序的什么周期Android程序的什么周期是指在Android系统中,进程从启动到终止的所有阶段,即Android程序从启动到停止的全过程。Android程序的生命周期是由系统控制,而非程序自身直接控制。优先级从高到低:前台、可见、服务、后台、空进程前台进程:前台进程是Android系统中最重要的进程,它是与用户正在进行交互的进程。这样的进程重要性最高,一般情况下,系统中只有少数这样的进程。除非系统内存非常低,否则系统不会选择终止前台进程。满足前台进程的条件:进程正在最前段运行一个_输出警告日志信息使用lo02类的( ) 方法

推荐文章

热门文章

相关标签