多个nginx如何分发,达到负载均衡。国内大型网站一般如何实现的?
这方面的资料,基本都是一块一块不完整的。我大概跟你说一个基本架构: 1、DNS服务器,如果资金充足的话,建议使用BGP机房,2-3台DNS服务器均衡,通常使用bind软件。如果资金紧的话,可以购买专业的dns服务,比如国内的dnspod。2、CDN服务器,一开始如果想省事,可以买专业公司的服务,如chinacache,但随着发展成本会越来越高。自建的话,可能分别搭建,放电信、联通、移动等不同机房的服务器,通过dns做动态解析。超大网站的话,可以用Squid,普通中至大型用nginx,内部玩玩用varnish。3、前端均衡,资金充足的话,可以使用硬件设备,几十万一台。自已有技术队伍的话,就用nginx/haproxy+keepalived等自已组建前端。均衡的方式都比较灵活,随机、权重、ip、url都有。4、同步的问题要看同步什么东西,普通的可以实时文件同步。但数据库的话,要看具体类型选择同步方式了。 5、后端的应用服务器和数据库集群,要看流量规划了。

nginx实现负载均衡至少需要几台服务器
1、nginx做反向代理几台服务器都可以用,一台也可以,具体要看你预计的业务量有多少。一台的话,就是将访问本机80/443端口的请求转发给本机8080端口,多台同理。 2、理论上很少直接用tomcat对外提供服务的,因为可扩展性太差。比如你单台tomcat负载太大了,就没法直接扩展。而使用nginx的话,后端的tomcat可以很方便的做横向扩展。3、tomcat只适用于少量并发的环境,并且处理静态文件的能力一般。nginx可承载较大的并发量。但具体多少并发才能看出来差距就没有实测过了。 4、个人理解一台高配性能的服务器应该是高于两台中配的,因为单机中减去了网络传输的消耗,稳定性单机就不如两台了,因为两台可以做高可用。
一般需要三台服务器, 两台nginx做前端,一台后端数据库。

nginx负载均衡的算法怎么实现的
常见的有LVS、Nginx和HAProxy,者者介绍分别如下: LVS:使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability),感谢章文嵩博士为我们提供如此强大实用的开源软件。LVS的特点是:1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;3、工作稳定,自身有完整的双机热备方案;4、无流量,保证了均衡器IO的性能不会收到大流量的影响;5、应用范围比较广,可以对所有应用做负载均衡;6、软件本身不支持正则处理,不能做动静分离。Nginx的特点是:1、工作在网络的7层之上,可以针对http应用做一些分流的策略;2、Nginx对网络的依赖非常小;3、Nginx安装和配置比较简单,测试起来比较方便;4、可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;5、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等;6、Nginx仅能支持http和Email;HAProxy的特点是:1、HAProxy是支持虚拟主机的;2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;3、支持url检测后端的服务器出问题的检测会有很好的帮助;4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS; 6、HAProxy的算法多;

nginx 负载均衡之一致性hash,普通hash
哈希负载均衡原理ngx_http_upstream_hash_module支持普通的hash及一致性hash两种负载均衡算法,默认的是普通的hash来进行负载均衡。nginx 普通的hash算法支持配置http变量值作为hash值计算的key,通过hash计算得出的hash值和总权重的余数作为挑选server的依据;nginx的一致性hash(chash)算法则要复杂一些。这里会对一致性hash的机制原理作详细的说明。一致性hash算法的原理一致性hash用于对hash算法的改进,后端服务器在配置的server的数量发生变化后,同一个upstream server接收到的请求会的数量和server数量变化之间会有变化。尤其是在负载均衡配置的upstream server数量发生增长后,造成产生的请求可能会在后端的upstream server中并不均匀,有的upstream server负载很低,有的upstream server负载较高,这样的负载均衡的效果比较差,可能对upstream server造成不良的影响。由此,产生了一致性hash算法来均衡。那么为什么一致性hash算法能改善这种情况呢?这里引用网上资料的一致性hash算法的图例。因为对于hash(k)的范围在int范围,所以我们将0~2^32作为一个环。其步骤为:1,求出每个服务器的hash(服务器ip)值,将其配置到一个 0~2^n 的圆环上(n通常取32)。2,用同样的方法求出待存储对象的主键 hash值,也将其配置到这个圆环上,然后从数据映射到的位置开始顺时针查找,将数据分布到找到的第一个服务器节点上。其分布如图:除了上边的优点,其实还有一个优点:对于热点数据,如果发现node1访问量明显很大,负载高于其他节点,这就说明node1存储的数据是热点数据。这时候,为了减少node1的负载,我们可以在热点数据位置再加入一个node,用来分担热点数据的压力。雪崩效应接下来我们来看一下,当有节点宕机时会有什么问题。如下图:如上图,当B节点宕机后,原本存储在B节点的k1,k2将会迁移到节点C上,这可能会导致很大的问题。如果B上存储的是热点数据,将数据迁移到C节点上,然后C需要承受B+C的数据,也承受不住,也挂了。。。。然后继续CD都挂了。这就造成了雪崩效应。上面会造成雪崩效应的原因分析:如果不存在热点数据的时候,每台机器的承受的压力是M/2(假设每台机器的最高负载能力为M),原本是不会有问题的,但是,这个时候A服务器由于有热点数据挂了,然后A的数据迁移至B,导致B所需要承受的压力变为M(还不考虑热点数据访问的压力),所以这个失败B是必挂的,然后C至少需要承受1.5M的压力。。。。然后大家一起挂。。。所以我们通过上面可以看到,之所以会大家一起挂,原因在于如果一台机器挂了,那么它的压力全部被分配到一台机器上,导致雪崩。怎么解决雪崩问题呢,这时候需要引入虚拟节点来进行解决。虚拟节点虚拟节点,我们可以针对每个实际的节点,虚拟出多个虚拟节点,用来映射到圈上的位置,进行存储对应的数据。如下图:如上图:A节点对应A1,A2,BCD节点同理。这时候,如果A节点挂了,A节点的数据迁移情况是:A1数据会迁移到C2,A2数据迁移到D1。这就相当于A的数据被C和D分担了,这就避免了雪崩效应的发送,而且虚拟节点我们可以自定义设置,使其适用于我们的应用。ngx_http_upstream_consistent_hash该模块可以根据配置参数采取不同的方式将请求均匀映射到后端机器,比如:指令语法:consistent_hashvariable_name默认值:none上下文:upstream配置upstream采用一致性hash作为负载均衡算法,并使用配置的变量名作为hash输入。参考文档:https://www.cnblogs.com/FengGeBlog/p/10615345.htmlhttp://www.ttlsa.com/nginx/nginx-upstream-consistent-hash-module/

windows版nginx怎样配置负载均衡
一、 下载Nginx(nginx-1.5.8.zip) 解压到D:/serve目录下双击运行nginx.exe,屏幕一闪而过或者在DOS里面敲打命令,如图所示:可以看到屏幕一闪而过,接下来测试一下是否安装启动成功;在任务管理器的进程中查看nginx.exe是否启动若看到该映像名称,证明nginx程序已经启动成功!这时我们就可以在浏览器中访问:http://localhost这样我们就成功的搭建了一个nginx服务!!Nginx+Tomcat负载均衡配置这里只需要修改Nginx的配置文件nginx.conf,让它通过tomcat来转发。Nginx配置文件完成如下:#使用的用户和组,window下不指定#usernobody;#指定工作衍生进程数(一般等于CPU总和数或总和数的两倍,例如两个四核CPU,则总和数为8)worker_processes1;#指定错误日志文件存放路径,错误日志级别可选项为【debug|info|notice|warn|error|crit】#error_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;#指定pid存放路径#pidlogs/nginx.pid;#工作模式及连接数上限events {#使用网络I/O模型,Linux系统推荐使用epoll模型,FreeBSD系统推荐使用kqueue;window下不指定#允许的连接数#user epoll;worker_connections100;}#设定http服务器,利用他的反向代理功能提供负载均衡支持http {#设定mime类型include mime.types;default_typeapplication/octet-stream;#设定日志格式log_formatmain'$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';client_header_buffer_size 1k;large_client_header_buffers 4 4k;access_loglogs/access.logmain;#设定access logclient_header_timeout 3m;client_body_timeout 3m;send_timeout 3m;sendfileon;tcp_nopush on;tcp_nodelay on;#keepalive_timeout0;keepalive_timeout65;#开启gzip模块gzipon;gzip_min_length 1100;gzip_buffers 4 8k;gzip_types text/plain application/x-javascript text/css application/xml;output_buffers 1 32k;postpone_output 1460;server_names_hash_bucket_size 128;client_max_body_size 8m;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 128k;gzip_http_version 1.1;gzip_comp_level 2;gzip_vary on;#设定负载均衡的服务器列表upstream localhost {#设定负载均衡的服务器列表#ip_hash;#同一机器在多网情况下,路由切换,ip可能不同 #weigth参数表示权值,权值越高被分配到的几率越大server 192.168.101.222:8088 max_fails=2 fail_timeout=600s;server 192.168.101.5:8081 max_fails=2 fail_timeout=600s;}#设定虚拟主机server {listen 80;server_namelocalhost;charset UTF-8;#设定本虚拟主机的访问日志access_loglogs/host.access.logmain;#对 "/" 启用负载均衡location / {root \192.168.101.222D:webapache-tomcat-6.0.37webapps;indexindex.html index.htm index.aspx;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_max_body_size 10m;#缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户client_body_buffer_size 128k;#跟后端服务器连接超时时间 发起握手等候响应超时时间proxy_connect_timeout 12;#连接成功后 等待后端服务器响应时间 其实已进入后端的排队之中等候处理proxy_read_timeout 90;#代理请求缓存区 这个缓存区间会保存用户的头信息一共Nginx进行规则处理 一般只要能保存下头信息即可proxy_send_timeout 90;#同上 告诉Nginx保存单个用的几个Buffer最大用多大空间proxy_buffer_size 4k;proxy_buffers 4 32k;#如果系统很忙的时候可以申请国内各大的proxy_buffers 官方推荐 *2proxy_busy_buffers_size 64k;#proxy 缓存临时文件的大小proxy_temp_file_write_size 64k;proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;proxy_max_temp_file_size 128m;proxy_passhttp://localhost;}error_page 500 502 503 504/50x.html;location = /50x.html {root html;}}}四、测试前提是分别启动两台机器的tomcat,其次启动nginx服务;在192.168.101.23上访问nginx服务器(通过访问(项目路径)来实现对192.168.101.222和192.168.101.5这两个机器上应用程序的访问,最终实现tomcat的均衡负载)[1]关闭192.168.101.222上的tomcat服务,访问192.168.101.23上的nginx服务,观察192.168.101.5上的tomcat是否运行;[2]关闭192.168.101.5上的tomcat服务,访问192.168.101.23上的nginx服务,观察192.168.101.222上的tomcat是否运行;[3]两个tomcat都启动,访问nginx服务,模拟并发用户n个,观察tomcat的运行情况; 如果[1]和[2]的tomcat都运行就说明搭建nginx代理服务成功,tomcat实现了均衡负载;

本文由 在线网速测试 整理编辑,转载请注明出处。