如何在 Knox 网关后面对多个凤凰查询服务器进行负载平衡



>我有 3 个凤凰查询服务器在 knox 网关后面运行(隐藏 kerberos 身份验证复杂性(,通过 Simba 的 odbc 驱动程序访问。我设法访问一台凤凰查询服务器并通过 knox 启动查询,方法是在拓扑文件中直接将头像服务映射到内部网络中一台凤凰查询服务器的内部 IP 地址和端口。我想让 knox 随机访问我的 3 个凤凰查询服务器中的任何一个,而不仅仅是一个。您知道我是否可以使用 zookeeper 实现这一目标以及如何配置它来执行此操作吗?

我已经尝试进行一些负载平衡,使 knox 拓扑指向 nginx 反向代理,将我的 3 个 PQS 设置为上游,但我遇到了 401 错误,同样我的凭据是通过代理传输

我的 ODBC .ini 文件 :

[phoenixovh]
Driver=/opt/hortonworks/phoenixodbc/lib/64/libphoenixodbc_sb64.so
Host=knox.<clusterid>.datalake.ovh
Port=443
AuthMech=2
UID=<user>
PWD=<password>
LogLevel=0
ConnectionSyncInterval=120
SSL=1
HttpPath=gateway/default/avatica
TransportMode=http

我的 Knox 拓扑文件的一部分(适用于 1 PQS((默认.xml(

<service>
  <role>AVATICA</role>
   <url> internal_address__and_port_of_url_of_one_pqs</url>
</service>

我终于设法通过遵循 know ha 指南 (https://cwiki.apache.org/confluence/display/KNOX/Dynamic+HA+Provider+Configuration( 实现了我的 3 个 PQS,在我的拓扑文件中添加了一个 ha 提供程序部分并在服务配置中提供 3 个 URL,而不是一个:

 <provider>
    <role>ha</role>
    <name>HaProvider</name>
    <enabled>true</enabled>
    <param>
      <name>AVATICA</name>
      <value>maxFailoverAttempts=3;failoverSleep=1000;maxRetryAttempts=300;retrySleep=1000;enabled=true</value>
    </param>
  </provider>
</gateway>
...
<service>
 <role>AVATICA</role>
  <url>internal url of PQS1</url>
  <url>internal url of PQS2</url>
  <url>internal url of PQS3</url>
</service>

Knox指南提到了这种方式以及动物园管理员的连接字符串,但没有提供有关哪种解决方案更好的任何见解。

最新更新