Data Virtualization 的网络需求
Data Virtualization 服务公开网络通信端口,以允许来自 Cloud Pak for Data 集群外部的连接。
Data Virtualization 公开的端口
下表列出了 Data Virtualization 公开的端口及其使用情况。
- 用于通过使用带有 SSL 的 JDBC 连接到 Data Virtualization 的外部客户机应用程序。
- 内部端口: 50001
- 用于通过不使用 SSL 的 JDBC 连接到 Data Virtualization 的外部客户机应用程序。
- 内部端口: 50000
- 自动发现以简化访问远程数据源的流程。
- 请参阅 发现远程数据源。
oc get -n project-name services c-db2u-dv-db2u-engn-svc将 project-name 替换为安装了 Data Virtualization 服务的项目 (名称空间)。例如,使用以下命令。
oc get -n dv-project services c-db2u-dv-db2u-engn-svc
检查输出。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
c-db2u-dv-db2u-engn-svc NodePort 172.30.13.109 <none> 50000:30662/TCP,50001:32337/TCP,7777:32178/TCP 2d4h
| 描述 | 内部端口 | 外部端口 |
|---|---|---|
| JDBC SSL | 50001 | 32337 |
| JDBC 非 SSL | 50,000 美元 | 30662 |
| DV 自动发现 | 7777 | 32178 |
设置负载均衡环境的网络需求
通过使用 iptables 实用程序或 firewall-cmd 命令,可以确保表 1 中列出的外部端口及其通信不会被本地防火墙规则或负载均衡器阻塞。
有关检查端口以查找通信块的更多信息,请参阅 Red Hat® 文档中的 使用 NCAT 实用程序管理数据 。
如果 Cloud Pak for Data 使用负载均衡器,并且您尝试连接到 Data Virtualization 服务时迂到超时错误,请通过更新 /etc/haproxy/haproxy.cfg 文件来增大负载均衡器超时值。 有关更多信息,请参阅 Data Virtualization中的限制和已知问题。
更新 HAProxy 配置文件
- 在基础结构节点上,打开位于 /etc/haproxy/haproxy.cfg的 HAProxy 配置文件。
- 更新 haproxy.cfg 文件以指定端口信息。
必须直接更新该文件。 请勿复制并粘贴以下代码样本。 haproxy.cfg 文件中指定的值来自集群。 对于供应的每个 Data Virtualization 服务实例,这些值都不同,即使您使用相同的集群或名称空间来供应服务也是如此。
- 要获取名称空间的节点端口,请运行以下命令。
- 非 SSL
oc get services -n project-name c-db2u-dv-db2u-engn-svc -o jsonpath="{.spec.ports[?(@.name=='legacy-server')].nodePort}"- SSL
oc get services -n project-name c-db2u-dv-db2u-engn-svc -o jsonpath="{.spec.ports[?(@.name=='ssl-server')].nodePort}"
- 要获取集群中每个主节点的
Master<n>-PrivateIP,请使用以下命令并查看INTERNAL-IP列。oc get nodes -o wide - 要更新 haproxy.cfg 文件,请确保满足以下需求。
- 请在
backend部分中包含集群中的每个主节点,以便在一个主节点停止运行的情况下,可以通过另一个主节点进行连接。 - 如果集群运行多个名称空间,并且每个名称空间都具有 Data Virtualization 服务实例,那么将唯一地命名该文件中的部分。
例如,在名称空间
zen中的 Data Virtualization 的 haproxy.cfg 文件中有以下部分。 但是,如果您还在名称空间abc中具有 Data Virtualization 服务实例,那么必须为名称空间abc添加节点端口,并确保 haproxy.cfg 文件中的部分具有不同的名称, 例如dv-abc-ssl,dv-abc-nonssl和dv-abc-discovery。
defaults log global option dontlognull option tcp-smart-accept option tcp-smart-connect retries 3 timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout check 10s maxconn 3000 frontend dv-nonssl bind *:NodePort for 50000 default_backend dv-nonssl mode tcp option tcplog backend dv-nonssl balance source mode tcp server master0 Master0-PrivateIP:NodePort for 50000 server master1 Master1-PrivateIP:NodePort for 50000 (repeat for each master node in the cluster) frontend dv-ssl bind *:NodePort for 50001 default_backend dv-ssl mode tcp option tcplog backend dv-ssl balance source mode tcp server master0 Master0-PrivateIP:NodePort for 50001 server master1 Master1-PrivateIP:NodePort for 50001 (repeat for each master node in the cluster) frontend dv-discovery bind *:NodePort for 7777 default_backend dv-discovery mode tcp option tcplog backend dv-discovery balance source mode tcp server master0 Master0-PrivateIP:NodePort for 7777 server master1 Master1-PrivateIP:NodePort for 7777 (repeat for each master node in the cluster) - 请在
- 使用以下命令重新装入 HAProxy 。
systemctl reload haproxy
定义网关配置以访问孤立的远程连接器
远程连接器充当远程数据源的网关。 如果远程连接器主机对 Cloud Pak for Data 集群具有网络访问权,那么远程连接器会自动联系并连接到集群。 如果未从 HAProxy 和防火墙规则公开自动发现端口,或者如果物理网络配置仅允许从 Cloud Pak for Data 到 Data Virtualization 的单向通信 远程连接器,您可能需要手动建立连接。
在部署远程连接器并验证其是否正在主机上运行之后,如果远程连接器未显示在 中,那么可以使用 API DEFINEGATEWAYS()手动配置从 Data Virtualization 到远程连接器的连接。
- 单击 。
- 运行
DVSYS.DEFINEGATEWAYS()存储过程。 此存储过程具有一个自变量,该自变量包含运行远程连接器的主机的逗号分隔列表。 在以下示例中,两个远程连接器正在运行; 一个在 host1 上,另一个在 host2上。CALL DVSYS.DEFINEGATEWAYS('host1:6414, host2:6414')将 host1 和 host2 变量替换为远程连接器主机名或 IP 地址。 此示例使用您在生成 dv_endpoint.sh 配置脚本时指定的端口 6414。 要确定要在
DVSYS.DEFINEGATEWAYS()存储过程中使用的端口映射,请检查远程连接器上的 Queryplex_config.log ,并搜索 GAIAN_NODE_PORT 值,如以下示例中所示。GAIAN_NODE_PORT=6414如果使用端口转发 (例如, NAT 或 VPN) 到远程连接器,那么必须指定两个端口,如以下示例中所示。
CALL DVSYS.DEFINEGATEWAYS('host1:37400:6414, host2:37400:6414')在此示例中,两个远程连接器在内部的端口 6414 上进行侦听,但主机未向外部公开这些端口。 例如,只能从 Cloud Pak for Data 使用配置为将外部 VPN 端口 37400 映射到内部端口 6414 的 VPN 服务器来访问远程连接器。 定义网关使 Data Virtualization 能够打开与 host1 和 host2上运行的远程连接器的连接。 Data Virtualization 连接到远程主机上的端口 37400 ,而 VPN 将流量转发到远程连接器的内部端口 6414。
正在除去定义的网关配置
如果已定义的网关不再必要或不可访问,那么会对查询性能产生负面影响。 您可以使用 API REMOVEGATEWAYS()来除去网关。 此 API 采用以逗号分隔的网关 ID 参数列表作为单个字符串字面值参数,如以下示例中所示。
CALL DVSYS.REMOVEGATEWAYS('GTW0,GTW2')
listrdbc时仍会显示该网关。