问题描述
是否可以在上游配置一个带有 websocket 的 consul agent sidecar?我尝试了以下配置,但它不起作用:
{
"bind_addr": "172.17.0.2","data_dir": "/consul/data","datacenter": "dc1","node_id" : "98dc3bf4-a364-46d9-8b72-624963064ab2","node_name": "socket-client-agent","leave_on_terminate": true,"ports": [
{
"grpc": 8502
}
],"server": false,"service": [
{
"address": "172.17.0.3","connect": [
{
"sidecar_service": [
{
"checks": [
{
"interval": "10s","name": "socket-client-sidecar-proxy","tcp": "172.17.0.3:21000"
}
],"port": 21000,"proxy": [
{
"config": [
{
"bind_address": "0.0.0.0","bind_port": 21000,"protocol": "tcp"
}
],"upstreams": [
{
"destination_name": "sockets-server","local_bind_port": 5001,"config": {
"protocol": "tcp"
}
}
]
}
]
}
]
}
],"id": "socket-client-0","name": "socket-client","port": 5000
}
],"ui_config": [
{
"enabled": false
}
]
}
根据配置,我尝试连接到使用 websockets 协议的 sockets-server 服务。我使用 envoy 作为 sidecar 代理。
解决方法
目前 Consul 没有正确配置 Envoy 来支持 WebSocket 升级。此 GitHub 问题提供了有关该问题的更多详细信息以及可能的修复方法 - https://github.com/hashicorp/consul/issues/9473。