我有3台phoenix查询服务器在knox网关(隐藏kerberos auth复杂性)后面运行,可以通过Simba的odbc驱动程序访问。通过将拓扑文件中的avatica服务直接映射到内部网络中一台phoenix查询服务器的内部IP地址和端口,我设法到达一台phoenix查询服务器并通过knox启动查询。 我想让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>
答案 0 :(得分: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>
Knox指南提到了这种方式,也提到了Zookeeper的连接字符串,但没有提供关于哪种解决方案更好的见解。