mgmt/docs/vault-consul-integration.md

183 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`
```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 验证命令
```bash
# 检查Vault状态
vault status
# 检查Consul成员
consul members
# 检查Consul中的Vault数据
curl http://<consul_addr>:8500/v1/kv/vault/?recurse | jq .
```
### 4.2 验证脚本
```bash
# 运行完整验证
/root/mgmt/deployment/scripts/verify_vault_consul_integration.sh
```
## 5. 管理操作
### 5.1 日常管理
```bash
# 显示状态
/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 监控操作
```bash
# 实时监控
/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 日志查看
```bash
# 查看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进行滚动更新确保服务不中断
```bash
nomad job run -address=http://100.116.158.95:4646 /path/to/updated/job.nomad
```
## 10. 相关文档
- [Vault官方文档](https://www.vaultproject.io/docs)
- [Consul官方文档](https://www.consul.io/docs)
- [Nomad官方文档](https://www.nomadproject.io/docs)
- Vault开发环境指南
- Vault安全策略文档