AWS 创建和配置弹性负载均衡器,并配置运行状况检查

使用aws负载均衡器,可以将单一入口的流量分发到多个后端服务器。同时可以结合Auto Scaling使用,实现弹性扩容。

使用指南: 使用 Elastic Load Balancing 在 Auto Scaling 组中分配传入的应用程序流量

创建负载均衡器操作指南:创建和配置弹性负载均衡器

当创建负载均衡器时,需要配置监听的端口,以及后端服务器的端口。比如http服务监听80端口,后端服务为nginx监听80端口。

这里负载均衡器可以配置健康检查,当后端服务异常时,负载均衡器会自动将流量转发到其他后端服务。

nginx 配置健康检查如下

在 nginx 中增加健康检查路径配置如下:

1
2
3
4
    location /health {
        add_header Content-Type text/plain;
        return 200 'I am healthy';
    }

需要在负载均衡器中也添加相同健康检查路径,如果配置正确,就可以看到负载均衡器中的健康检查状态为 healthy

如果是默认安装的 nginx,那么可能会无法检查通过,这里需要检查 nginx.conf 文件配置,

查看 listen 80 是否有 default_server,如果不是,则需要添加default_server,正确配置如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
http {

     # Load modular configuration files from the /etc/nginx/conf.d directory.
     # See http://nginx.org/en/docs/ngx_core_module.html#include
     # for more information.
     include /etc/nginx/conf.d/*.conf;

     server {
         listen       80 default;
         listen       [::]:80;
         server_name  _;
         root         /usr/share/nginx/html;

         # Load configuration files for the default server block.
         include /etc/nginx/default.d/*.conf;

         error_page 404 /404.html;
         location = /404.html {
         }

         error_page 500 502 503 504 /50x.html;
         location = /50x.html {
         }

         location = /health {
         add_header Content-Type text/plain;
         return 200 'I am healthy';
         }
     }
}

兜底配置的 listen 为 80 default_server 详细说明: Nginx中server_name的一些无用冷知识

参考