mgmt/docs/vault-consul-integration.md

4.2 KiB
Raw Permalink Blame History

Vault与Consul集成配置指南

1. 概述

本文档详细说明了Vault与Consul的集成配置包括架构设计、配置参数和管理操作。

2. 集成架构

2.1 架构图

                    +------------------+
                    |   Vault Client   |
                    +------------------+
                             |
                    +------------------+
                    |   Vault Server   |
                    |   (3个节点集群)   |
                    +------------------+
                             |
                    +------------------+
                    |   Consul Backend |
                    |   (3个节点集群)   |
                    +------------------+

2.2 节点分布

  • Vault节点

    • master节点: 100.117.106.136
    • ash3c节点: 100.116.80.94
    • warden节点: 100.122.197.112
  • Consul节点

    • master节点: 100.117.106.136
    • ash3c节点: 100.116.80.94
    • warden节点: 100.122.197.112

3. 配置详情

3.1 Vault配置文件

每个Vault节点的配置文件位于/opt/nomad/data/vault/config/vault.hcl

storage "consul" {
  address = "<本地Consul地址>:8500"
  path    = "vault/"
}

listener "tcp" {
  address     = "0.0.0.0:8200"
  tls_disable = 1
}

api_addr = "http://<节点IP>:8200"
cluster_addr = "http://<节点IP>:8201"

ui = true
disable_mlock = true

3.2 Consul配置

Consul作为Vault的存储后端存储了所有Vault的持久化数据包括

  • 密钥材料
  • 策略信息
  • 审计日志
  • 集群状态

4. 集成验证

4.1 验证命令

# 检查Vault状态
vault status

# 检查Consul成员
consul members

# 检查Consul中的Vault数据
curl http://<consul_addr>:8500/v1/kv/vault/?recurse | jq .

4.2 验证脚本

# 运行完整验证
/root/mgmt/deployment/scripts/verify_vault_consul_integration.sh

5. 管理操作

5.1 日常管理

# 显示状态
/root/mgmt/deployment/scripts/manage_vault_consul.sh status

# 健康检查
/root/mgmt/deployment/scripts/manage_vault_consul.sh health

# 验证集成
/root/mgmt/deployment/scripts/manage_vault_consul.sh verify

5.2 监控操作

# 实时监控
/root/mgmt/deployment/scripts/manage_vault_consul.sh monitor

# 数据备份
/root/mgmt/deployment/scripts/manage_vault_consul.sh backup

6. 故障排除

6.1 常见问题

6.1.1 Vault无法连接Consul

问题Vault启动失败日志显示无法连接Consul 解决方案

  1. 检查Consul服务是否运行consul members
  2. 检查网络连接:curl http://<consul_addr>:8500/v1/status/leader
  3. 验证Vault配置中的Consul地址是否正确

6.1.2 Vault数据丢失

问题Vault无法读取之前存储的数据 解决方案

  1. 检查Consul中的数据curl http://<consul_addr>:8500/v1/kv/vault/?keys
  2. 验证Consul集群状态consul members
  3. 如有必要,从备份恢复数据

6.2 日志查看

# 查看Vault日志
nomad alloc logs -address=http://100.116.158.95:4646 <vault_allocation_id>

# 查看Consul日志
nomad alloc logs -address=http://100.116.158.95:4646 <consul_allocation_id>

7. 安全考虑

7.1 数据加密

  • Consul中的Vault数据默认已加密
  • 网络传输使用TLS加密生产环境

7.2 访问控制

  • Vault使用令牌进行访问控制
  • Consul使用ACL策略进行访问控制

7.3 备份策略

  • 定期备份Consul中的Vault数据
  • 备份文件应加密存储
  • 遵循3-2-1备份原则

8. 性能优化

8.1 Consul调优

  • 调整Consul的存储后端性能参数
  • 监控Consul集群的健康状态
  • 定期清理过期的会话

8.2 Vault调优

  • 调整Vault的缓存设置
  • 监控Vault的性能指标
  • 优化密钥引擎的使用

9. 升级维护

9.1 版本升级

  1. 先升级Consul集群
  2. 再升级Vault集群
  3. 验证集成状态

9.2 滚动更新

使用Nomad进行滚动更新确保服务不中断

nomad job run -address=http://100.116.158.95:4646 /path/to/updated/job.nomad

10. 相关文档