operator migrate

operator migrate 命令在存储后端之间复制数据,以切换 Vault 配置。它直接在存储级别运行,不涉及解密。目标存储后端中的键将被覆盖,并且在迁移操作完成之前不应初始化目标存储后端。除了迁移期间添加的用作同步锁的键之外,源数据不会被修改。

该操作为了确保数据一致性设计为离线操作,如果迁移正在进行,Vault 将不允许启动服务。

例子

迁移所有键:

$ vault operator migrate -config migrate.hcl

2018-09-20T14:23:23.656-0700 [INFO ] copied key: data/core/seal-config
2018-09-20T14:23:23.657-0700 [INFO ] copied key: data/core/wrapping/jwtkey
2018-09-20T14:23:23.658-0700 [INFO ] copied key: data/logical/fd1bed89-ffc4-d631-00dd-0696c9f930c6/31c8e6d9-2a17-d98f-bdf1-aa868afa1291/archive/metadata
2018-09-20T14:23:23.660-0700 [INFO ] copied key: data/logical/fd1bed89-ffc4-d631-00dd-0696c9f930c6/31c8e6d9-2a17-d98f-bdf1-aa868afa1291/metadata/5kKFZ4YnzgNfy9UcWOzxxzOMpqlp61rYuq6laqpLQDnB3RawKpqi7yBTrawj1P
...

迁移以一致的、有序的顺序完成。如果迁移在完成之前停止或退出(例如,由于与存储后端的连接故障),它可以从任意键前缀恢复:

$ vault operator migrate -config migrate.hcl -start "data/logical/fd"

配置文件

operator migrate 命令使用专用配置文件来指定源和目标存储后端。存储节的格式与用于配置 Vault 的格式相同,唯一的区别是需要两个节:storage_sourcestorage_destination

storage_source "mysql" {
  username = "user1234"
  password = "secret123!"
  database = "vault"
}

storage_destination "consul" {
  address = "127.0.0.1:8500"
  path    = "vault"
}

迁移到集成 Raft 存储

以下配置文件将从 Consul 存储迁移到集成 Raft 存储。Raft 数据将存储在服务器本地文件系统中定义的path的位置上。node_id 来设置节点 ID。cluster_addr 必须设置为该节点的集群主机名。

如果原始后端存储配置的 ha_storage 为“raft”,则需要为 storage_destination 中的 path 和迁移后节点的新配置声明不同的 path

storage_source "consul" {
  address = "127.0.0.1:8500"
  path    = "vault"
}

storage_destination "raft" {
  path = "/path/to/raft/data"
  node_id = "raft_node_1"
}
cluster_addr = "http://127.0.0.1:8201"

运行迁移

Vault 在迁移过程中需要处于离线状态。首先,停止 Vault 服务。然后,在希望设置为新 Vault 节点的服务器上运行迁移。

$ vault operator migrate -config migrate.hcl

2018-09-20T14:23:23.656-0700 [INFO ] copied key: data/core/seal-config
2018-09-20T14:23:23.657-0700 [INFO ] copied key: data/core/wrapping/jwtkey
2018-09-20T14:23:23.658-0700 [INFO ] copied key: data/logical/fd1bed89-ffc4-d631-00dd-0696c9f930c6/31c8e6d9-2a17-d98f-bdf1-aa868afa1291/archive/metadata
2018-09-20T14:23:23.660-0700 [INFO ] copied key: data/logical/fd1bed89-ffc4-d631-00dd-0696c9f930c6/31c8e6d9-2a17-d98f-bdf1-aa868afa1291/metadata/5kKFZ4YnzgNfy9UcWOzxxzOMpqlp61rYuq6laqpLQDnB3RawKpqi7yBTrawj1P
...

迁移完成后,数据将存储在本地文件系统上。要让 Vault 使用新的存储后端,请按照 Raft 存储配置文档中的说明更新 Vault 的配置文件。然后启动并解封 Vault 服务。

添加新节点

迁移后,Raft 集群将只有一个节点。其他节点需要一一加入此集群。

如果集群之前 ha_storage 配置为 "raft" 而启用了高可用,则节点必须在解封之前重新加入迁移后的节点。

可用标志

operator migrate 命令可以使用一下标志:

  • -config (string: <required>) - 迁移配置文件的路径
  • -start (string: "") - 迁移的起始键前缀。只有拥有该前缀或是排序其后的键会被拷贝。
  • -reset - 重置迁移锁。迁移过程中会添加一个迁移锁文件防止在迁移过程中 Vault 服务被启动或是启用另一个迁移过程。如果设置 -reset 标志会删除该锁文件(如果它还存在的话)。

results matching ""

    No results matching ""