Apache zookeeper 如何在Knox gateway之后平衡多台phoenix查询服务器的负载?

Apache zookeeper 如何在Knox gateway之后平衡多台phoenix查询服务器的负载?,apache-zookeeper,phoenix,knox-gateway,apache-knox,Apache Zookeeper,Phoenix,Knox Gateway,Apache Knox,我有3台phoenix查询服务器运行在knox网关后面(隐藏kerberos身份验证复杂性),通过Simba的odbc驱动程序访问。我通过在拓扑文件中直接将avatica服务映射到我的内部网络中一台phoenix查询服务器的内部ip地址和端口,设法访问一台phoenix查询服务器并通过knox启动查询。 我想让knox随机访问我的3台phoenix查询服务器中的任意一台,而不仅仅是一台。你知道我是否可以通过zookeeper实现这一点,以及如何配置它来实现这一点吗 我已经尝试在nginx反向代理

我有3台phoenix查询服务器运行在knox网关后面(隐藏kerberos身份验证复杂性),通过Simba的odbc驱动程序访问。我通过在拓扑文件中直接将avatica服务映射到我的内部网络中一台phoenix查询服务器的内部ip地址和端口,设法访问一台phoenix查询服务器并通过knox启动查询。 我想让knox随机访问我的3台phoenix查询服务器中的任意一台,而不仅仅是一台。你知道我是否可以通过zookeeper实现这一点,以及如何配置它来实现这一点吗

我已经尝试在nginx反向代理上进行一些负载平衡,使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

[phoenixovh]
Driver=/opt/hortonworks/phoenixodbc/lib/64/libphoenixodbc_sb64.so
Host=knox..datalake.ovh
端口=443
AuthMech=2
液体=
PWD=
日志级别=0
ConnectionSyncInterval=120
SSL=1
HttpPath=gateway/default/avatica
TransportMode=http
我的knox拓扑文件的一部分(用于1个PQS)(default.xml)


AVATICA
一个pqs的url的内部地址和端口

通过遵循《了解ha指南》(know ha guide()),在拓扑文件中添加一个ha provider部分,并在服务配置中提供3个URL(而不是一个),我最终成功地实现了3个PQS:

 <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>


哈
哈普罗维德
符合事实的
AVATICA
maxFailoverAttempts=3;故障切换睡眠=1000;最大重试次数=300次;retrySleep=1000;启用=真
...
AVATICA
PQS1的内部url
PQS2的内部url
PQS3的内部url
《诺克斯指南》提到了这种方式,也提到了zookeeper的连接字符串,但没有提供关于哪种解决方案更好的任何见解

 <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>