当前位置 主页 > 服务器问题 > Linux/apache问题 >
由于未曾配置域名解析服务,无法将 URLhttp://backend 定位到正确的位置。
可以修改 server1 上的 /etc/hosts 文件,添加如下一条记录:
127.0.0.1 backend
即可将该域名解析到本地 IP ,完成对负载均衡服务器的访问。
重启 nginx 服务,在 server1 上访问http://backend ,效果如下:
$ curl http://backend <html> <head> <title>Index Page From Server1</title> </head> <body> <h1>This is Server1, Address 192.168.1.102.</h1> </body> </html> $ curl http://backend <html> <head> <title>Index Page From Server2</title> </head> <body> <h1>This is Server2, Address 192.168.1.102:8000.</h1> </body> </html> $ curl http://backend <html> <head> <title>Index Page From Server1</title> </head> <body> <h1>This is Server1, Address 192.168.1.102.</h1> </body> </html> $ curl http://backend <html> <head> <title>Index Page From Server2</title> </head> <body> <h1>This is Server2, Address 192.168.1.102:8000.</h1> </body> </html>
从输出中可以看出,server1 对负载均衡服务器http://backend 的访问,完成了对应用服务器 server2 上两个 Web 站点的 轮询 ,起到负载均衡的作用。
四、负载均衡方法
nginx 开源版本提供四种负载均衡的实现方式,简单介绍如下。
1. Round Robin
用户请求 均匀 地分配给后端服务器集群(可以通过 weight 选项设置轮询的 权重 ),这是 nginx 默认使用的负载均衡方式:
upstream backend { server backend1.example.com weight=5; server backend2.example.com; }
2. Least Connections
用户请求会优先转发给集群中当前活跃连接数最少的服务器。同样支持 weight 选项。
upstream backend { least_conn; server backend1.example.com; server backend2.example.com; }
3. IP Hash
用户请求会根据 客户端 IP 地址 进行转发。即该方式意图保证某个特定的客户端最终会访问 同一个 服务器主机。
upstream backend { ip_hash; server backend1.example.com; server backend2.example.com; }
4. Generic Hash
用户请求会根据一个 自定义键值 确定最终转发的目的地,该键值可以是字符串、变量或者组合(如源 IP 和端口号)。
upstream backend { hash $request_uri consistent; server backend1.example.com; server backend2.example.com; }
权重
参考下面的示例配置:
upstream backend { server backend1.example.com weight=5; server backend2.example.com; server 192.0.0.1 backup; }
默认权重(weight)为 1 。 backup 服务器 只有在所有其他服务器全部宕机的情况下才会接收请求。
如上面的示例,每 6 个请求会有 5 个转发给 backend1.example.com
,1 个转发给 backend2.example.com。只有当 backend1 和 backend2 全部宕机时,192.0.0.1 才会接收并处理请求。