Upsteam说明
Upstream配置为节点地址列表,配置为域名则会根据解析后的IP添加所有节点地址(需要选择对应的服务发现方式,否则并不会再次刷新域名解析),需要注意节点会使用默认的tcp health check的形式检测节点是否可用,建议配置为http health check。下面针对相关参数详细说明:
addrs
: 节点地址列表,地址为ip:port weight
的形式,weight
权重可不指定,默认为1discovery
: 指定服务发现形式,如果地址配置为域名则建议选择dns形式,定期解析对应的ip地址。若是部署在同一机器的docker服务则可考虑使用docker label
的形式。update_frequency
: 设置服务发现的更新间隔algo
: 节点的选择算法,支持hash
与round_robin
两种形式,如hash:ip
表示按ip hash选择节点。默认为round_robin
sni
: 若配置的是https,需要设置对应的SNIverify_cert
: 若配置的是https,是否需要校验证书有效性health_check
: 节点健康检测配置,支持http与tcp形式,如http://upstream/ping
ipv4_only
: 若配置为域名时,是否仅添加解析的ipv4节点enable_tracer
: 是否启用tracer功能,启用后可获取得upstream的连接数alpn
: 在tls握手时,alpn的配置,默认为H1connection_timeout
: tcp连接超时,默认为无total_connection_timeout
: 连接超时,若是https请求包括tls握手部分,默认为无read_timeout
: 读取超时,默认为无idle_timeout
: 空闲超时,指定连接空闲多久后会自动回收,如果设置为0,则连接不复用,需要注意有些网络设备对于无数据的tcp连接会过期自动关闭,因此可根据需要设置对应的值。默认为无write_timeout
: 写超时,默认为无tcp_idle
: tcp连接keepalive空闲回收时长tcp_interval
: tcp连接keepavlie检测时长tcp_probe_count
: tcp连接keepalvie探针检测次数tcp_recv_buf
: tcp接收缓存区大小tcp_fast_open
: 是否启用tcp快速连接
需要注意,若要设置tcp的keepalive,tcp_idle
,tcp_interval
以及tcp_probe_count
均需要设置。
节点健康检测
-
health_check
: 建议配置为health check的形式,根据服务的检测路径配置为http://upstream名称/路径
,如对于upstream需要设置Host为test的的服务,其检测路径为/ping
,即可设置为http://test/ping
-
TCP
: tcp://upstreamname?connection_timeout=3s&success=2&failure=1&check_frequency=10s
健康检测参 数说明:
connection_timeout
: 连接超时,默认为3秒read_timeout
: 读取超时,默认为3少check_frequency
: 检测间隔,默认为10秒success
: 成功次数多少次为成功,默认为1次failure
: 失败次数多少次为失败,默认为2次reuse
: 检测时是否复用连接,默认为否
Algo的hash
若指定通过hash的方式选择upstream的backend,则可使用如下方式:
hash:url
: 根据url转发,主要用于upstream为基于url缓存的服务hash:ip
: 根据ip转发,upstream为有基于ip数据持久化的服务hash:header:X-User
: 根据请求头获取X-User
的值转发hash:cookie:uid
: 根据Cookie的uid
值转发hash:query:appKey
: 根据Query的appkey
值转发hash:path
: 根据path转发,hash方式的默认值