envoy实现C++服务间的socket消息转发

本文介绍使用envoy中的tcp代理实现C++服务间的socket消息转发。

1. 确定宿主机与容器间网络

由于C++服务中的客户端及服务器程序直接在宿主机上运行,所有需要提前确定好宿主机与docker容器是否能正常通信

2. envoy.yaml配置文件,注意监听过滤器及clusters中配置的是容器网络的IP地址

admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address: { address: 127.0.0.1, port_value: 9901 }

static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address: { address: 172.17.0.2, port_value: 10000 }
    filter_chains:
    - filters:
      - name: envoy.tcp_proxy
        typed_config:
          "@type": type.googleapis.com/envoy.config.filter.network.tcp_proxy.v2.TcpProxy
          stat_prefix: tcp_stats
          cluster: cluster_0
  clusters:
  - name: cluster_0
    connect_timeout: 0.25s
    type: STATIC
    lb_policy: ROUND_ROBIN
    hosts: [{ socket_address: { address: 172.17.0.1, port_value: 5000 }}]

3. 新建文件夹,将.yaml文件复制到本地,创建Dockefile文件,生成容器镜像

Dockerfile文件示例:

生成容器镜像:

docker build -t envoytcptest:v1.0.0 .

4. 运行容器,测试即可。

docker run -p 10000:10000 --name envoytcptest envoytcptest:v1.0.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值