要实现Nginx的各种负载均衡算法,通常需要编辑Nginx的配置文件(通常位于 /etc/nginx/nginx.conf
或者某个特定于站点的配置文件中)。下面是每种负载均衡算法的具体实现示例。
1. 轮询(Round Robin)
轮询是Nginx的默认负载均衡机制,所以如果你没有指定具体的算法,Nginx会自动采用轮询方法。
http { upstream myapp1 { server backend1.example.com; server backend2.example.com; }
server { listen 80;
location / { proxy_pass http://myapp1; } } }
|
2. 加权轮询(Weighted Round Robin)
在加权轮询中,你可以给每个服务器分配一个权重(weight),权重高的服务器会承担更多的请求。
http { upstream myapp2 { server backend1.example.com weight=3; server backend2.example.com weight=1; }
server { listen 80;
location / { proxy_pass http://myapp2; } } }
|
3. 最少连接(Least Connections)
最少连接算法将新的请求发送到连接数最少的服务器。这需要在upstream
块中使用least_conn
指令。
http { upstream myapp3 { least_conn; server backend1.example.com; server backend2.example.com; }
server { listen 80;
location / { proxy_pass http://myapp3; } } }
|
4. 加权最少连接(Weighted Least Connections)
与最少连接算法类似,但你可以为服务器指定权重,以考虑它们的处理能力。
http { upstream myapp4 { least_conn; server backend1.example.com weight=3; server backend2.example.com weight=1; }
server { listen 80;
location / { proxy_pass http://myapp4; } } }
|
5. IP哈希(IP Hash)
IP哈希算法基于客户端的IP地址,将来自同一IP地址的所有请求路由到同一台服务器。这在需要会话持久性的场景中很有用。
http { upstream myapp5 { ip_hash; server backend1.example.com; server backend2.example.com; }
server { listen 80;
location / { proxy_pass http://myapp5; } } }
|
每次修改Nginx的配置文件后,都需要重新加载或重启Nginx服务来应用更改。这通常可以通过运行 sudo nginx -s reload
命令来完成。