nginx的负载均衡可以简单实现服务的双机热备,常用负载均衡算法有这几种:轮询、权重、hash等
准备工作
1.安装nginx。
2.两台一样的服务分别占用不同的端口,访问如下:
9001服务
9002服务
轮询
nginx默认负载均衡算法是轮询,需要添加upstream配置如下:
upstream app {
server 127.0.0.1:9001;
server 127.0.0.1:9002;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://app;
}
}
多次访问 http://localhost 即可看到9001和9002交替访问。如果我们关闭9002服务的情况,那么就只会访问9001,相当于做了双机热备功能
权重
该场景可以根据两台服务器的性能来决定权重
upstream app_weight {
server 127.0.0.1:9001 weight=1;
server 127.0.0.1:9002 weight=2;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://app_weight;
}
}
iphash
根据客户端ip取hash值来分配的服务器,该种方式可以避免前面两种导致的服务器session失效
upstream app_iphash {
ip_hash;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://app_iphash;
}
}
最少连接
分配到当前连接数最少的
upstream app_leastconn {
least_conn;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://app_leastconn;
}
}
fair
按照服务的响应时间优先分配
upstream app_fair {
server 127.0.0.1:9001;
server 127.0.0.1:9002;
fair;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://app_fair;
}
}
参考文档:https://www.jianshu.com/p/4c250c1cd6cd