目录

Pulsar 中的 ATS-SNI Routing

(1)为 layer-4 SNI routing 设置 ATS Proxy

(2)使用 SNI routing 配置 Pulsar-client

(2)使用 SNI routing 进行 geo-replication


代理服务器是一种中介服务器,它跨Internet将来自多个客户端的请求转发到不同的服务器。代理服务器在正向和反向代理场景中都扮演着“交通警察”的角色,并为您的系统带来了负载平衡、性能、安全性、自动扩容和缩容等好处。

Pulsar中的代理充当反向代理,并在 brokers 面前创建一个网关。Pulsar不支持 Apache Traffic Server(ATS)、HAProxy、Nginx 和 Envoy 等代理。但这些代理服务器都支持 SNI 路由(SNI routing)。SNI 路由用于将流量路由到目标,而无需终止SSL连接。第4层路由提供了更大的透明度,因为出站连接是通过检查 clent TCP 数据包中的目标地址来确定的。

Pulsar客户端(Java、C++、Python)支持SNI路由协议,因此您可以通过 proxy 连接到 brokers 。本文档将指导你如何设置 ATS 代理、启用 SNI 路由以及通过ATS代理将 Pulsar client 连接到broker 。

Pulsar 中的 ATS-SNI Routing

为了支持带有 ATS 的第4层 SNI 路由(layer-4 SNI routing),入站连接必须是TLS连接。Pulsar client 支持基于 TLS 连接的 SNI 路由协议,因此当 Pulsar client 通过 ATS 代理连接到 broker 时,Pulsar 将 ATS 用作反向代理。

Pulsar 支持 SNI 路由进行地域复制(geo-replication),因此 brokers 可以通过 ATS proxy 连接到其他集群中的 brokers。

本节介绍如何设置和使用 ATS 作为反向代理,以便 Pulsar clients 可以使用基于 TLS 连接的 SNI 路由协议通过 ATS proxy 连接到 brokers。

(1)为 layer-4 SNI routing 设置 ATS Proxy

为了支持 layer-4 SNI routing 你需要配置 records.conf and ssl_server_name.conf files.

The records.config file is located in the /usr/local/etc/trafficserver/ directory by default. 该文件列出了 ATS 使用的可配置变量。

配置 records.config files,请完成以下步骤。

  • 更改 proxy 侦听的 TLS 端口(http.server_ports),修改 proxy certs (ssl.client.cert.path and ssl.client.cert.filename) 确保 TLS 通畅(TLS tunneling)。
  • 配置 tunneling to the broker 的服务端口,如果 Pulsar brokers 正在监听 4443 和 6651 端口,在 http.connect_ports 配置中添加 brokers 服务端口。

下面是一个示例。

# PROXY TLS PORT
CONFIG proxy.config.http.server_ports STRING 4443:ssl 4080
# PROXY CERTS FILE PATH
CONFIG proxy.config.ssl.client.cert.path STRING /proxy-cert.pem
# PROXY KEY FILE PATH
CONFIG proxy.config.ssl.client.cert.filename STRING /proxy-key.pem# The range of origin server ports that can be used for tunneling via CONNECT. # Traffic Server allows tunnels only to the specified ports. Supports both wildcards (*) and ranges (e.g. 0-1023).
CONFIG proxy.config.http.connect_ports STRING 4443 6651

ssl_server_name 文件用来配置处理入站和出站的 TLS 连接,配置(configuration)由入站连接提供的 SNI 值确定。该文件由一些列配置项组成,每个配置项由 SNI 值(fqdn)标识。建立入站TLS连接时,TLS 协商中的 SNI 值将与此文件中指定的项进行匹配。如果值匹配,则该项中指定的值将覆盖默认值。

下面的示例显示了来自 client 的入站 SNI 主机名的映射,以及应该重定向请求的实际 broker 服务URL。比如,如果 client 端发送 SNI header pulsar-broker1,则 proxy 将请求重定向到 pulsar-broker1:6651 service URL 来创建 TLS 隧道(tunnel )。

server_config = {{fqdn = 'pulsar-broker-vip',# Forward to Pulsar broker which is listening on 6651tunnel_route = 'pulsar-broker-vip:6651'},{fqdn = 'pulsar-broker1',# Forward to Pulsar broker-1 which is listening on 6651tunnel_route = 'pulsar-broker1:6651'},{fqdn = 'pulsar-broker2',# Forward to Pulsar broker-2 which is listening on 6651tunnel_route = 'pulsar-broker2:6651'},
}

在你配置  ssl_server_name.config and records.config 文件后,ATS-proxy 服务器处理 SNI 路由并在 client 端和 broker 之间创建 TCP 隧道(TCP tunnel)。

(2)使用 SNI routing 配置 Pulsar-client

ATS SNI-routing 仅适用于TLS。你首先需要为 ATS proxy 和 brokers 启用 TLS,配置 SNI 路由协议,然后通过 ATS proxy 将 Pulsar clients 连接到 brokers 。Pulsar clients 支持 SNI 路由,可以通过连接 proxy 并将目标 broker URL发送到 SNI header。此过程由内部处理。当你使用 SNI routing protocol 创建 Pulsar client 时,你仅仅只需要初始化以下配置。

String brokerServiceUrl = “pulsar+ssl://pulsar-broker-vip:6651/”;
String proxyUrl = “pulsar+ssl://ats-proxy:443”;
ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(brokerServiceUrl).tlsTrustCertsFilePath(TLS_TRUST_CERT_FILE_PATH).enableTls(true)  // 开启TLS.allowTlsInsecureConnection(false).proxyServiceUrl(proxyUrl, ProxyProtocol.SNI) // 代理配置.operationTimeout(1000, TimeUnit.MILLISECONDS);Map<String, String> authParams = new HashMap();
authParams.put("tlsCertFile", TLS_CLIENT_CERT_FILE_PATH);
authParams.put("tlsKeyFile", TLS_CLIENT_KEY_FILE_PATH);
clientBuilder.authentication(AuthenticationTls.class.getName(), authParams);PulsarClient pulsarClient = clientBuilder.build();

(2)使用 SNI routing 进行 geo-replication

你可以使用 ATS proxy 进行 geo-replication 。Pulsar brokers 可以通过使用 SNI 路由连接到 geo-replication 中的 brokers。为确保 broker 的 SNI 路由能够跨集群连接,你需要将 SNI proxy URL 配置为集群元数据(cluster metadata)。如果在集群元数据中配置了 SNI proxy URL,则可以通过 SNI 路由上的 proxy 跨集群连接到 broker 。

在这个例子中,一个 Pulsar 集群被部署到两个独立的区域 us-west 和 us-east,两个区域都配置了ATS proxy,每个区域的 brokers 都支持 ATS proxy。我们在两个集群中都配置了集群元数据,所以在任何一个集群中的 brokers 都能使用 SNI routing 并且通过 ATS proxy 连接到另一个集群的 brokers。

(a) Configure the cluster metadata for us-east with us-east broker service URL and us-east ATS proxy URL with SNI proxy-protocol. // 配置集群元数据

./pulsar-admin clusters update \
--broker-url-secure pulsar+ssl://east-broker-vip:6651 \
--url http://east-broker-vip:8080 \
--proxy-protocol SNI \
--proxy-url pulsar+ssl://east-ats-proxy:443

(b) Configure the cluster metadata for us-west with us-west broker service URL and us-west ATS proxy URL with SNI proxy-protocol.

./pulsar-admin clusters update \
--broker-url-secure pulsar+ssl://west-broker-vip:6651 \
--url http://west-broker-vip:8080 \
--proxy-protocol SNI \
--proxy-url pulsar+ssl://west-ats-proxy:443

Pulsar的Proxy支持和SNI路由 - 修改...相关推荐

  1. linux如何开启sni服务,Nginx开启单IP多SSL证书支持-TLS SNI support

    Nginx支持单IP多域名SSL证书需要OpenSSL支持,由于CentOS5.X系统自带的OpenSSL版本太低不支持,所以首先需要编译安装一个高版本的openssl,CentOS 6.X的系统自带 ...

  2. 使用ActiveMQ支持Spring Integration路由

    正如我在上 一篇 文章中所讨论的那样 ,Spring Integration(SI) 是在Spring Framework之上构建的路由框架 ,它使您可以使用经过验证的企业集成模式来通过消息传递解决系 ...

  3. 全新WayOS 配置文件保存工具支持蓝色界面路由版本

    一直以来都有群里的朋友要求我弄一个支持蓝色界面路由的参数备份工具,也一直拖了大半年 昨天忙到4点多,早上又因为一些小的BUG被用户电话叫起,干脆就帮你们整一个这个工具了 功能还是一样,支持各种参数的保 ...

  4. 小米路由修改服务器密码,小米路由器3G密码怎么重置? 小米3G路由器修改wifi密码的方法...

    小米路由器3G设置的wifi密码想要修改一下,该怎么修改呢?下面我们就来看看详细的教程. 输入管理密码,登录到小米路由器3G的设置界面 第一步.登录到设置界面 1.首先,请确保你的电脑,已经用网线,连 ...

  5. 5GCPE如何支持4G物联网卡(修改IMEI)

    1. 背景 问:有些物联网卡限定在某些设备上用,能放到5GCPE上吗?(其好处自己百度吧) 答:可以,把原设备上的IMEI写到目标5GCPE上就可以了. 市面上许多5GCPE是可以修改IMEI的,本文 ...

  6. Linux | Ubuntu | 查看路由 | 修改路由

    目录 一.查看路由表信息 [Centos] [Ubuntu] 二.添加临时路由(重启系统或网卡后失效) 三.添加永久路由 [centos7设置永久静态路由] [Ubuntu18.04设置永久静态路由] ...

  7. jquery datatables-1.8.2服务器端分页不支持IE6,IE7 UBG修改。

    jquery datatable服务器端分页不支持IE6,IE7: 原因是在IE6,IE7,jquery datatable通过ajax 无法发送get类型请求: 但可以发送post请求,只要将插件中 ...

  8. larvel 路由未生效_laravel 路由修改不起作用解决方案

    起由:今天帮朋友解决了下bug,bug就是它使用laravel时候,怎样修改路由文件,都没有发生变化,但是故意在routes.php中增加语法错误时又具有错误,因此想到了可能是这个项目使用的larav ...

  9. lg分屏软件支持linux吗,LG V10全部软件支持分屏模式修改教程

    LG V10系列手机原生ROM的一大特色当然是可以支持应用分屏啦.当然这不是所有应用都能支持的,也就是说仅仅只支持一些本身已经定义的软件.大家一定都想让LG V10的分屏功能支持所有应用,那么今天安软 ...

  10. 小米路由修改服务器密码,小米路由器怎么改密码?

    在本文中,将给大家详细介绍,用电脑修改/设置小米路由器密码的方法. 重要提示: (1).如果你现在遇到的问题是,把你小米路由器的管理密码忘了,无法登录到设置界面.那么,请你阅读下面的文章,查看忘记管理 ...

最新文章

  1. 面向对象编程(OOP)----BLUE大师JS课堂笔记(二)
  2. 应对程序员面试,你必须知道的8大数据结构
  3. c# 后台 添加datable 数据
  4. Centos7 Docker 删除容器_入门试炼08
  5. 无法嵌入互操作类型 请改用适用的接口_可微编程-自上而下的产品形态 4 Python互操作性...
  6. sublime —— 强大的插件
  7. mysql padding_解决RGB模式下图片的padding(补边框)问题(含代码实现)
  8. 实现最小宽度的几种方法及CSS Expression
  9. 采用面向接口编程思想组装一台计算机
  10. Leetcode应该怎么刷?【笔试】
  11. 智能校对的技术原理和实践
  12. 最菜的我打卡的第二天
  13. 消防工程师 第二篇 建筑防火 1.厂房和仓库的火灾危险性分类
  14. 阿里云DataHub常见问题
  15. Struts2 返回结果类型为Redirect时注意问题
  16. 非自旋锁VS自旋锁和适应性自旋锁
  17. Android中的图片加载
  18. 【Python计量】Logit模型
  19. Qt之开源绘图控件QCustomPlot
  20. 用物理光学建模演示点阵投影仪的工作原理

热门文章

  1. windows cmd打开新窗口关闭窗口
  2. SignalR 循序渐进
  3. Love to be loved by you Just one last dance
  4. java毕业生设计在线教育平台计算机源码+系统+mysql+调试部署+lw
  5. vue使用原生高德地图
  6. 如何使用Python 绘制惊艳众人的瀑布图
  7. WEB基础之: form标签
  8. 超声波模块SRF05
  9. pymol安装教程linux,Pymol安装与问题解决
  10. Tackling High Dimensional Nonseparable Optimization Problems By CCPSO