[alibaba/tengine]后端服务器使用https协议健康检查一直失败

2024-01-16 989 views
3

Hello 各位大牛:

   我使用Tengin部署负载均衡,后端IIS Web服务器使用https协议。健康检查一直失败,我的配置如下:

   upstream Test_IIS_Web {
    consistent_hash $remote_addr;            
    server 192.168.3.23:443 id=1001 weight=10; # id、weight参数,当使用一致性Hash算法时才有作用
    server 192.168.3.24:443 id=1001 weight=10; # id、weight参数,当使用一致性Hash算法时才有作用

    keepalive 50;                                 # 激活缓存以连接到上游服务器,数字越大占用内存越多
    keepalive_requests 80;                        # 使用缓存的最大连接数量,不要太大
    keepalive_timeout  300s;                      # 在此超时期间,与上游服务器的空闲keepalive连接将保持打开状态
    check interval=3000 rise=2 fall=2 timeout=1000 type=http;

    check_http_send "GET  HTTP/1.0\r\n\r\n";
    check_http_expect_alive http_2xx http_3xx;
   }

  健康检查是不支持https协议吗?还是我的配置问题? 
  谢谢。

回答

1

可以帮助我吗?谢谢。

4

@gatware-1

check interval=3000 rise=2 fall=2 timeout=1000 type=http;

这里配置的 type 是 http,后端是 https,是不对应的,可以参考文档:http://tengine.taobao.org/document_cn/http_upstream_check_cn.html

有几种解决方案

  1. 使用 type 类型是 tcp 或 ssl_hello,但这种只要建联成功就算后端健康,不会检查状态码,如果后端服务监听端口后,还需要做一些准备工作再提供服务,这种检查方式就会存在问题
  2. 后端端口增加 http 端口,用于健康检查,使用 check 指令的 port 参数,可以设置健康检查端口,不同于服务端口
2

好的,非常感谢。