我有一个要求是在2.6.32的linux内核上提供一个高度可用的MySQL数据库和静态encryption。 “高可用性”部分并不难,但与HA结合使用时,“静态encryption”被certificate是一个挑战。
关键问题是安装encryption存储。 在我们所有其他的静态encryption系统中,都有一个命令需要由一个人运行,然后被提示inputencryption密钥。 这种模式在集群安排中有一个相当明显的缺陷,那就是服务必须自动启动。
目前,我对如何在高可用性环境下提供静态encryption以及不在同一系统上存储密钥密码短语感到茫然。
我可以看到两种可能的情况,其中任何一种都可以与我的环境一起工作,但是我不确定这些细节如何使它们起作用。 或者即使这是可能的。
这样,正在运行的节点就可以访问CLVM卷,因此它们可以在集群pipe理器告知时启动服务。 节点的重新启动仍然需要一个人,并且密码密码从不保存在任何地方的磁盘上。
与CLVM设置一样,节点只有在可以看到可能共享的存储之前才join群集。
事情是,我不确定上述任何一种是如何工作的。 两者都假设可以在encryption卷上分层LVM PV(例如pvcreate /dev/mapper/cryptmysql )。 这可能是不可能的。
主要挑战似乎是人为干涉关键入口。 对此有一些帮助:dm-crypt支持TPM,它可能适用于您的平台。 有关configuration详细信息,请参阅此IBM蓝图 。 此外, LUKS / cryptsetup支持从文件/从标准input读取插槽密钥。 如果你可以在任何地方安全地存储你的密钥( 比如在智能卡上 ),这可能是一个可行的select。
至于你的问题,你是否可以在dm-crypt卷上拥有一个LVM PV:你可以,只需要在插槽解锁后运行pvscan / vgchange -a -y 。 几年前,我们已经运行了这种设置,内核更老。 最后,由于性能方面的原因,我们放弃了将SED用于具有静态数据encryption要求的应用程序(当时dm-crypt用于每个encryption设备使用单个线程,这导致在我们的设置CPU的瓶颈)。
事实certificate,这是完全可以与LVM的syneticon-djbuild议。 从那以后,我已经validation它可以在群集configuration上工作。 但是,这样做并不像你想象的那么容易。
在cLVM卷组可见之前,必须通过需要encryption的设备上的cryptsetup luksOpen进行解密。 这种情况必然发生在集群服务开始之后,因此基于它的任何资源都不应该成为诸如stonith设备等关键任务的成员。
设置群集与以往一样,但有一些区别:
cryptsetup luksOpen /dev/sdd cryptmysql )时,创buildclvm资源。 vgcreate ClusterMySQLVG /dev/mapper/cryptmysql ) 由于节点需要手动干预才有资格进行故障转移,故障转移群集中有两个以上的节点是个好主意。
一旦正常创build卷组和逻辑卷,就安装MySQL。 此时安装按照正常的群集安装运行。
当一个节点重新启动时:
/dev/mapper创build所需的映射,然后LVM启动。