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.log和vertica.log中是否有错误
2. 认证信息检查¶
VoltageSecureConfigureGlobal 和 VoltageSecureConfigure 配置的认证信息存储在 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 文件内容:
{"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 列的值)。内容示例:
不一致 → 重新执行 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.log、adminTools.log |