-
Notifications
You must be signed in to change notification settings - Fork 0
Step0
justan edited this page Aug 2, 2016
·
3 revisions
本节我们用 Nginx 演示下负载均衡的开源方案。
假设我们已经在 “10.104.0.1” 和 “10.104.0.2” 上部署运行了 项目 4 的应用,监听在 “3000” 端口。
Nginx 负载均衡服务可以部署在任意与应用服务器网络互通的机器上。本节假设我们使用 “10.104.1.1” 这台机器来部署负载均衡服务。
在 nginx 的配置文件中配置好 ‘proxy_pass’ 和 ‘upstream’ 即可, 默认情况下请求会平均的分配到 ‘upstream’ 中定义的主机上去。
http {
upstream project4 {
server 10.104.0.1:3000;
server 10.104.0.2:3000;
}
server {
listen 80;
location / {
proxy_pass http://project4;
}
}
}
配置完成并重启 nginx 服务之后通过负载的地址(10.104.1.1)就可以访问项目4的服务内容了。
默认的负载均衡会将请求尽量平均的分发到各个应用服务器中。权重参数 weight 可以定义各个服务器的负载权重。缺省的权重为 '1',下面例子中没 4 条请求中 3 条会发给 ‘10.104.0.1’ 1 条会发给 ‘10.104.0.2’。
upstream project4 {
server 10.104.0.1:3000 weight=3;
server 10.104.0.2:3000;
}
健康检查指的是负载均衡中某台服务器出现异常不能访问的情况下,会将其标记成不可用。在达到一定阈值后请求也不会分发到这台机器上。具体由两个参数 max_fails 和 fail_timeout 控制,在失败次数达到 max_fails 后,该服务器被标记不可用,在 fail_timeout 的时间内不会去重试被标记的服务器。
upstream project4 {
server 10.104.0.1:3000 max_fails=10 fail_timeout=30s;
server 10.104.0.2:3000;
}
很多场景(比如文件断点续传等)我们希望一个用户的请求能够持续的发送到同一台机器上,这需要负载均衡能对用户请求做出识别。 最简单的一种思路的是根据客户端 IP 来识别用户身份。加上 ip_hash 参数后,来自同一 IP 的请求将持续的分发到同一台服务器上。
upstream project4 {
ip_hash;
server 10.104.0.1:3000;
server 10.104.0.2:3000;
}