0

我有 3 个 phoenix 查询服务器在 knox 网关后面运行(隐藏 kerberos 身份验证复杂性),通过 Simba 的 odbc 驱动程序访问。我设法到达一台凤凰查询服务器并通过knox启动查询,方法是在拓扑文件中将avatica服务直接映射到我内部网络中一台凤凰查询服务器的内部IP地址和端口。我想让 knox 随机访问我的 3 个 phoenix 查询服务器中的任何一个,而不仅仅是一个。你知道我是否可以使用 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)(default.xml)

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

4

1 回答 1

1

我终于设法通过了解 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>

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

于 2019-06-14T15:29:28.773 回答