跳转至

Vertica Voltage SecureData 集成故障排查

原文:How-To Troubleshoot Vertica's Voltage SecureData Function Issues

概述

Vertica 提供 VoltageSecureProtect(加密)和 VoltageSecureAccess(解密/访问)函数与 Voltage SecureData 集成。配置本身很简单,但集成函数不工作时需从以下两个层面排查。

一、Vertica 配置检查

集成分为两步:

1. 证书文件分发

# 将 .pem 文件复制到单节点的 trustStore 目录
cp cert.pem /opt/vertica/packages/voltagesecure/trustStore/

# 重新安装 Voltage SecureData 集成库(证书自动分发到所有节点)

验证所有节点证书是否正确:

curl -k --capath /vertica_catalog_directory/Libraries/$(vsql -A -t -c \
  "SELECT sal_storage_id FROM user_libraries WHERE lib_name='VoltageSecureLib';") \
  https://SecureData_applicance_hostname/policy/clientPolicy.xml

排查规则:

  • 命令返回错误信息 → 按提示修复
  • 不同节点输出不一致 → 检查该节点 /opt/vertica/packages/voltagesecure/trustStore/ 目录下证书文件的时间戳和内容
  • 证书文件有差异 → 重新安装集成库,查看 adminTools.logvertica.log 中是否有错误

2. 认证信息检查

VoltageSecureConfigureGlobalVoltageSecureConfigure 配置的认证信息存储在 dfs 文件中。

检查全局配置(VoltageSecureConfigureGlobal):

SELECT node_name, file_name, location_path, TO_HEX(block_id) block_id
FROM dfs_storage WHERE directory ILIKE '%voltage%'
ORDER BY node_name;
node_name       | file_name   | location_path             | block_id
----------------+-------------+---------------------------+----------------
v_db_node0001   | conf.global | /data/v_db_node0001_data  | a0000000030f61
v_db_node0002   | conf.global | /data/v_db_node0002_data  | b0000000030f23
v_db_node0003   | conf.global | /data/v_db_node0003_data  | c0000000030f13

读取某节点的 dfs 文件内容:

cd /data/v_db_node0001_data
find ./ -type f -name "*a0000000030f61*" -exec cat {} \;
{"allow_short_fpe":true,"policy_url":"https://SecureData_applicance_hostname/policy/clientPolicy.xml","enable_file_cache":true}

各节点内容不一致 → 重新执行 VoltageSecureConfigureGlobal

检查用户级配置(VoltageSecureConfigure):

SELECT node_name, directory, file_name, location_path, TO_HEX(block_id) block_id
FROM dfs_storage WHERE file_name = '<config_dfs_path>'
ORDER BY node_name, directory;

每个数据库用户都有各自的 dfs 文件(注意 directory 列的值)。内容示例:

{"identity":"PII@xxx.xxxxx.com","shared_secret":"xyz"}

不一致 → 重新执行 VoltageSecureConfigure

二、网络环境检查

当加密/解密函数返回错误或 curl 命令报错时,检查 Vertica 节点与 Voltage SecureData 服务器之间的所有网络组件。

常见网络错误

错误 590 — Unrecognized SecureData error:

ERROR 5861: Error calling setup() in User Function VoltageSecureAccess
error code: 590, message: Error initializing: Unrecognized Voltage SecureData error...

错误 574 — Unrecognized SecureData error:

ERROR 5861: Error calling setup() in User Function VoltageSecureAccess
error code: 574, message: Error initializing: Unrecognized Voltage SecureData error...

curl 返回 503:

$ curl -k --capath ... https://SecureData_applicance_hostname/policy/clientPolicy.xml
<html><body><h1>503 Service Unavailable</h1>
No server is available to handle this request.
</body></html>

以上错误通常指向网络配置问题(防火墙、路由、负载均衡器等),Vertica 节点无法正常访问 Voltage SecureData 服务器。

进阶排查

Vertica 使用 Voltage SecureData Simple API(支持 C、Java、C#)与 SecureData 服务器通信。如果你有 Simple API 包,其中的示例程序可以帮助编写自定义测试程序来缩小问题范围。如果自定义程序也出现相同问题,则基本确定是环境/网络层面的问题。

排查清单

检查项 操作
证书是否正确分发到所有节点 逐节点执行 curl 验证
dfs 全局配置是否一致 对比所有节点的 conf.global
dfs 用户配置是否一致 对比所有节点的 voltage.conf
网络连通性 从每个节点 ping/telnet SecureData 服务器
日志错误 检查 vertica.logadminTools.log

扩展阅读