CentOS6中Nginx负载均衡及轮询分流负载均衡例子

方法一,nginx 轮询分流实现负载均衡

准备工作,3台服务器,或者开虚拟机吧!我就是开虚拟机实现的。
    ip分别为:192.168.1.10  192.168.1.11  192.168.1.12   (环境安装了ngixn 没有做任何配置)
    3台服务器环境最好一样,我是再vm里直接克隆出来的,环境绝对一样吧!不一样,我估计会遇到很多奇怪的问题,没试过。

    192.168.1.10  作为  负载均衡服务器  (一会负载均衡就在这里台服务器做配置,另外2台不用做配置)
    
   先了解下负载一些常见知识
  
nginx 的 upstream目前支持 4 种方式的分配
1)、轮询(默认)
      每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight
      指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
2)、ip_hash
      每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 
3)、fair(第三方)
      按后端服务器的响应时间来分配请求,响应时间短的优先分配。 
4)、url_hash(第三方)

    可以开始配置了。打开192.168.1.10 的nginx.conf  只需要在配置文件增加如下代码

upstream  netkou  { 
          server   192.168.1.11:80; 
          server   192.168.1.12:80; 

 
server { 
  listen 80; 
  server_name www.111cn.net; 
  location / { 
     proxy_pass        http://www.111cn.net; 
     proxy_set_header   Host             $host; 
     proxy_set_header   X-Real-IP        $remote_addr; 
     proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for; 
  } 
  access_log logs/access_log; 
  error_log logs/error_log; 

实践结果: 

    www.111cn.net  我通过修改host 指向了  192.168.1.10
    未了使测试结果明显,我修改了ngixn默认页面的html
    vi /usr/local/nginx/html/index.html
   再index.html 加入显示本机ip
  192.168.1.11 和  192.168.1.12  都要修改,这样测才明显
    我通过本机浏览器,输入 www.111cn.net
    每次刷新,都会跳转到不同的服务器上页面(当然我这个是为了明显所以用的是轮询的方式,大家可以根据自己需求进行修改)

方法二,Nginx服务器负载均衡配置实例

下面通过Nginx的反向代理功能配置一个Nginx负载均衡服务器。后端有三个服务节点,用于提供Web服务,通过Nginx的调度实现三个节点的负载均衡。
/etc/nginx/conf.d/default.conf

upstream myserver {
server 192.168.12.181:80 weight=3 max_fails=3 fail_timeout=20s;
server 192.168.12.182:80 weight=1 max_fails=3 fail_timeout=20s;
server 192.168.12.183:80 weight=4 max_fails=3 fail_timeout=20s;
}

server
{
listen 80;
server_name www.admin130.cn 192.168.12.189;
index index.htm index.html;
root /ixdba/web/wwwroot;

location / {
proxy_pass http://myserver;
proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
include /opt/nginx/conf/proxy.conf;
}
}

在上面这个配置实例中,首先定义了一个负载均衡组 myserver,然后在 location 部分通过 “proxy_pass http://myserver” 实现负载调度功能,其中 proxy_pass 指令用来指定代理的后端服务器地址和端口,地址可以是主机名或者IP地址,也可以是通过 upstream 指令设定的负载均衡组名称。 proxy_next_upstream 用来定义故障转移策略,当后端服务节点返回 500、502、503、504 和执行超时等错误时,自动将请求转发到 upstream 负载均衡组中的另一台服务器,实现故障转移。最后通过 include 指令包含进来一个 proxy.conf 文件。

其中 /opt/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;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

Nginx的代理功能是通过http proxy模块来实现的。默认在安装Nginx时已经安装了http proxy模块因此可直接使用http proxy模块。下面详细解释proxy.conf文件中每个选项代表的含义。

proxy_set_header:设置由后端的服务器获取用户的主机名或者真实IP地址,以及代理者的真实IP地址。
client_body_buffer_size:用于指定客户端请求主体缓冲区大小,可以理解为先保存到本地再传给用户。
proxy_connect_timeout:表示与后端服务器连接的超时时间,即发起握手等候响应的超时时间。
proxy_send_timeout:表示后端服务器的数据回传时间,即在规定时间之内后端服务器必须传完所有的数据,否则,Nginx将断开这个连接。
proxy_read_timeout:设置Nginx从代理的后端服务器获取信息的时间,表示连接建立成功后,Nginx等待后端服务器的响应时间,其实是Nginx已经进入后端的排队之中等候处理的时间。
proxy_buffer_size:设置缓冲区大小, 默认,该缓冲区大小等于指令proxy_buffers设置的大小。
proxy_buffers:设置缓冲区的数量和大小。nginx从代理的后端服务器获取的响应信息,会放置到缓冲区。
proxy_busy_buffers_size:用于设置系统很忙时可以使用的proxy_buffers大小,官方推荐的大小为proxy_buffers*2。
proxy_temp_file_write_size:指定proxy缓存临时文件的大小。

时间: 2024-10-02 09:45:54

CentOS6中Nginx负载均衡及轮询分流负载均衡例子的相关文章

Nginx反向代理+DNS轮询+IIS7.5 千万PV 百万IP 双线 网站架构案例_nginx

Nginx  ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了.Igor 将源代码以类BSD许可证的形式发布. Nginx 的中文维基:http://wiki.codemongers.com/NginxChs 在高并发连接的情况下,Nginx是Apache服务器不错的替代品.Nginx

android当中什么是轮询操作

问题描述 android当中什么是轮询操作 android当中什么是轮询操作 android当中什么是轮询操作 举个例子,谢谢 解决方案 定时请求服务器的操作

debian+nginx+php环境实现反向代理和负载均衡教程

配置nginx的PHP环境 安装nginx     sudo apt-get install nginx 安装nginx就可以通过下面地址来访问了:http://localhost/ 安装php     sudo apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5-fpm:与nginx配合方式之一,另外个是:spawn-fcgi. 配置nginx的虚拟主机 在/etc/nginx/sites-available/default中

《DNS与BIND(第5版)》——10.7 轮询调度(Round-Robin)负载分配

10.7 轮询调度(Round-Robin)负载分配 自BIND 4.9发布之后,名称服务器已经正式支持一些过去必须通过补丁才能实现的负载分配功能.Bryan Beecher曾给BIND 写过一个补丁,以实现他所谓的"轮转地址记录(shuffle address records)".这是一组特殊类型的地址记录,名称服务器会在响应查询时轮转其中的地址.例如,域名foo.bar.baz有3个"可轮转"IP地址:192.168.1.1,192.168.1.2和192.16

tomcat集群-nginx 反向代理三个本地tomcat 负载均衡配置 无法加载js css 图片等 也不报错

问题描述 nginx 反向代理三个本地tomcat 负载均衡配置 无法加载js css 图片等 也不报错 打开速度非常慢,到最后js css无法加载是什么问题 我的项目是ssh+jquery+easyui的 单独访问tomcat完全正常 访问nginx就这样了 .求大神指点啊 访问webapp根目录是可以的 我的页面都是在web-inf目录下的貌似不行 nginx配置如下: #user nobody; worker_processes 1; #error_log logs/error.log;

url-web项目中长轮询本地窗口中的数据URL怎么写?

问题描述 web项目中长轮询本地窗口中的数据URL怎么写? 50C 如题目:web项目中用长轮询 当前桌面上开的 c/s窗口中扫入数据 web项目长轮询得到值 解决方案 不考虑低版本ie可以用websocket,和c/s的socket响应差不多,自己找你使用的语言的websocket服务器 如果你用的C#,可以看这个:C# websocket聊天室示例 解决方案二: 既然长轮询,那么得到数据后,直接把数据发送给web端 解决方案三: 长轮询的URL怎么写取决于你的服务器端程序的设计.它如何处理q

如果AWS上要是用负载均衡的话,是自己搞太large用nginx做好,还是用它的负载均衡服务?

问题描述 如果AWS上要是用负载均衡的话,是自己搞太large用nginx做好,还是用它的负载均衡服务? 解决方案 解决方案二:0.担心你的nginx会成为整个系统的单点故障点吗?1.这个服务可能会在非AWS环境部署吗?2.ELB的这几个分发策略能满足你的需求吗?3.large的单月费用与使用ELB的费用比较最后综合你更看重的那些点来判断用哪个

Web 通信 之 长连接、长轮询(long polling)

基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性. 一.什么是长连接.长轮询? 用通俗易懂的话来说,就是客户端不停的向服务器发送请求以获取最新的数据信息.这里的"不停"其实是有停止的,只是我们人眼无法分辨是否停止,它只是一种快速的停下然后又立即开始连接而已. 二.长连接.长轮询的应用场景 长连接.长轮询一般应用与WebIM.ChatRoom和一些需要及时交互的网站应用中.其真

nginx-Nginx使用轮询规则,出现的session共享问题

问题描述 Nginx使用轮询规则,出现的session共享问题 用户首次登陆后无法正确的与另外一个网站共享session,但是再次登陆后就可以共享, 换一个用户登陆也是正常的, 关闭浏览器再次打开后,又会出现一次无法正确共享的问题 检查了相关配置都正确,现在知道的就是浏览器初次打开的第一次登陆无法共享,后续则一直正常.请问各位大大是否遇到过这种情况 解决方案 http://bbs.csdn.net/topics/390642109 解决方案二: 先把你的设置拿出来看看.然后就是你可以看看sess