hadoop多kms配置

时间:2015-12-17 17:21:22

标签: hadoop

我尝试配置具有多个kms的hadoop。我配置了kms客户端部分,如:

<property>
<name>dfs.encryption.key.provider.uri</name>
<value>kms://http@test1;test2:16000/kms</value>
</property>

<property>
<name>hadoop.security.key.provider.path</name>
<value>kms://http@test1;test2:16000/kms</value>
</property>

服务器部分如

 <property>
 <name>hadoop.kms.key.provider.uri</name>
 <value>jceks://file@/usr/kms/kms.keystore</value>
 <description>URI of the backing KeyProvider for the KMS.</description>
 </property>

但似乎密钥不会存储在两个kms服务器上。例如,当我使用如下命令时:

hadoop key list

我会得到不同的结果,这是不对的。应该是这样的情况:无论何时或在哪个服务器上运行命令,它都会给我所有已创建的密钥。 如何配置kms服务器使其正常工作?

由于

2 个答案:

答案 0 :(得分:0)

https://issues.apache.org/jira/browse/HADOOP-11862

从上面的链接我们可以得到一些线索。现在KMS似乎没有很好地设计用于故障转移。必须有一个主KMS,并且可以有几个备用KMS。如果主KMS发生故障,则所有加密的数据都不能被解密。在最糟糕的情况下,如果主KMS发生故障并且无法恢复,我们甚至无法复制密钥库。在这种情况下,我们将丢失数据。最好的情况是,当其他备份KMS关闭时,所有其他KMS都可以正常工作。

答案 1 :(得分:0)

首先检查您的密钥是否同步。以下命令的输出应在kms服务器上产生相同的结果。

md5sum /var/lib/kms-keytrustee/keytrustee/.keytrustee/secring.gpg

如果输出不同,则Cloudera文档建议备份目录并联系其客户支持。

以下内容可以同步密钥受托者密钥位置的密钥,但请注意,您可能会丢失密钥并使加密数据不可读。所以要谨慎。

rsync -zav /var/lib/kms-keytrustee/keytrustee/.keytrustee \
root@the_other_kms:/var/lib/kms-keytrustee/keytrustee/.keytrustee.