玩玩负载均衡-在window与linux上配置nginx

玩玩负载均衡—在window与linux下配置nginx

最近有些时间,开始接触负载均衡方面的东西,从硬件F5再到Citrix Netscalar。不过因为硬件的配置虽然不复杂,但昂贵的价格也让一般用户望而却步(十几万到几十万),所以只能转向nginx,squid这类有反向代理功能的软件了。好在其设置都不是很麻烦。

????? 本文就之前所做过的安装和配置步骤做一下总结分享出来,以免日后忘记了。
????? 首先是windows系统,这里建议使用window 2003企业版,而不要作用win7(太新了,我遇到无法启动nginx的问题)。要说的是,在windows下配置安装nginx还是很容易的,少了linux下下载tar再配置编译参数等等步骤,我们只要从下面的地址下载相应的zip包(大约750kb)即可,地址如下:

????? http://sysoev.ru/nginx/nginx-0.8.21.zip

????? 需要说明的是这个下载包是nginx 0.8.21开发版,换句话说其只能用于搭建测试环境等用途的,不能用于实际的生产环境(受限于windows文件句柄数限制)。

????? 下载并将该包中的文件解压到c盘上,为了配置使用方便,我将其解压后的文件夹名称从“nginx-0.8.19”改为”nginx”,这样我们只要将要负载均衡的站点在iis中设置好之后,将相应的链接地址放到nginx的相应配置文件中即可,这里我们打开C:\nginx\conf\nginx.conf文件,将下面的内容放到该文件的“server { ”上方行处:

upstream??mylocalsite?{??
?????server???10.0.2.137:8088;
?????server???10.0.2.137:8089;?
}?

复制代码

?

???? ?因为nginx无法运行动态脚本,所以这里要使用proxy_pass属性进行代理,所以找到该配置文件的如下内容:

location?/?{
???????????root???html;
???????????index??index.html?index.htm;
}

复制代码

?

??? ? 修改其内容如下:

?

location?/?{
????????????proxy_pass?http://mylocalsite;
????????????#proxy_set_header???Host?????????????$host;
????????????#proxy_set_header???X-Real-IP????????$remote_addr;??;#防止ajax安全请求问题
????????????#proxy_set_header???REMOTE-HOST????????$remote_addr;?;#防止ajax安全请求问题
}

复制代码

?

?????? 修改完之后,还要修改一下server的侦听端口,原内容如下:

server?{
??????listen???????80;
??????server_name??localhost;?
??????……?

复制代码

?

???? ?修改完后的内容如下:????

?server?{
????????listen???????8086;
????????server_name??10.0.2.136;?
????????……?

复制代码

???

?? ?? 这样,nginx就会在启动之后开始侦听本地IP(10.0.2.136)的8086端口请求,然后将其请求转向到mylocalsite 中所指定的两个iis站点,并将执行的结果转发给客户端。如果一切配置正确,这时可以运行 c:/nginx/nginx.exe (或在cmd下运行“start nginx”),就可以在任务管理器中看到一个nginx进程启动了。(注:如果配置文件有错误,可以到C:\nginx\logs\error.log查看错误日志,进一步排错)。

??? ? 注: 关闭ngnix的命令: nginx -s stop

??????????? ?配置文件ngnix.conf正确性判断的命令: nginx -t?

?

???? ? 当然Nginx 负载均衡的功能也是很强的,并且其一般作为七层负载均衡(应用协议层)。下面就其upstream所支持的四个常用设置进行说明:?

1)、轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight?:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
2)、ip_hash?:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
3)、fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配。?
4)、url_hash(第三方)?

复制代码

????

???? 按上面的说明,可以将之前我们的upstream做如下修改:

?

upstream??mylocalsite?{?
?????#ip_hash;?
?????server???10.0.2.137:8088?weight=2;
?????server???10.0.2.137:8089?weight=1;?
}

复制代码

?

???? 这个当来了三个http请求时,其中的两个会被分配到10.0.2.137:8088 上,一个分配到10.0.2.137:8089 。当然一开始可以其分摊的请求可以不是太严格按其设置,但当请求数多了之后,基本上就接近于我们分指派的权值了。当然就负载均衡的算法而言,使用weight只是其中的一种,而经常使用的还有许多,比如lvs就在其内部实现了多种的负载均衡算法,可以根据用户的实际环境进行设置布署。。当然就目前而言,nginx的算法相比较还是少了许多,呵呵。??

????

玩玩负载均衡-在window与linux上配置nginx

相关文章:

你感兴趣的文章:

标签云: