mgmt/docs/README_CONSUL_KV_IMPLEMENTA...

197 lines
6.5 KiB
Markdown
Raw Permalink 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.

# Consul集群最佳变量命名规范实施
## 概述
本项目已实施了一系列改进确保Consul集群完全遵循最佳变量命名规范 `config/{environment}/{provider}/{region_or_service}/{key}`。这些改进使Consul集群配置更加灵活、可维护且符合环境隔离的最佳实践。
## 改进内容
### 1. 变量命名规范实施
我们创建了完整的Consul集群变量命名规范涵盖以下类别
- **集群基本配置**: `config/dev/consul/cluster/...`
- **节点配置**: `config/dev/consul/nodes/...`
- **网络配置**: `config/dev/consul/network/...`
- **端口配置**: `config/dev/consul/ports/...`
- **UI配置**: `config/dev/consul/ui/...`
- **服务发现配置**: `config/dev/consul/service_discovery/...`
- **性能调优配置**: `config/dev/consul/performance/...`
- **日志配置**: `config/dev/consul/logging/...`
- **安全配置**: `config/dev/consul/security/...`
- **连接配置**: `config/dev/consul/connect/...`
- **Autopilot配置**: `config/dev/consul/autopilot/...`
- **快照配置**: `config/dev/consul/snapshot/...`
- **备份配置**: `config/dev/consul/backup/...`
### 2. 自动化脚本
我们创建了以下自动化脚本简化了Consul集群的部署和管理
#### setup_consul_cluster_variables.sh
- 将Consul集群配置存储到Consul KV中
- 遵循 `config/{environment}/{provider}/{region_or_service}/{key}` 格式
- 包含Consul连接检查和配置验证功能
#### generate_consul_config.sh
- 使用Consul模板从KV存储生成最终的Consul配置文件
- 包含Consul连接检查和consul-template可用性验证
- 支持自定义Consul地址、环境和配置目录
#### deploy_consul_cluster_kv.sh
- 综合部署脚本,执行完整的部署流程
- 包含配置参数设置、Consul/Nomad连接检查
- 执行变量设置、配置生成、现有集群停止、新集群部署
- 包含多步骤验证功能作业状态、leader选举、节点数量、关键变量配置
### 3. 配置模板
我们创建了Consul配置模板文件 `consul.hcl.tmpl`使用Consul模板语法从KV存储中动态获取配置
- 基础配置data_dir、raft_dir
- UI配置启用状态
- 数据中心配置
- 服务器配置server模式、bootstrap_expect
- 网络配置client_addr、bind_addr、advertise_addr
- 端口配置
- 集群连接retry_join节点IP
- 服务发现配置
- 性能调优配置
- 日志配置
- 安全配置(加密密钥)
- 连接配置
- Autopilot配置清理死服务器等
- 快照配置(间隔、保留数量)
- 备份配置(间隔、保留数量)
### 4. Nomad作业配置
我们创建了完全遵循最佳变量命名规范的Nomad作业配置文件
#### consul-cluster-dynamic.nomad
- 使用template块动态生成配置文件
- 包含3个服务组consul-master、consul-ash3c、consul-warden
- 每个组部署1个Consul服务器实例到对应节点
- 设置固定端口、资源分配和集群连接参数
#### consul-cluster-kv.nomad
- 完全遵循 `config/{environment}/{provider}/{region_or_service}/{key}` 格式
- 使用template块从Consul KV存储动态获取配置
- 包含3个服务组配置每个组使用Consul模板动态生成配置
### 5. 文档更新
我们更新了Consul变量和存储配置指南文档添加了
- Consul集群配置变量章节包含11个类别共40个具体KV路径示例
- 部署遵循最佳变量命名规范的Consul集群章节包含
- 部署流程说明
- 部署脚本使用方法
- 配置模板示例
- Nomad作业配置示例
- 验证部署方法
- 动态更新配置方法
- 环境隔离实现方法
## 使用方法
### 1. 设置Consul变量
```bash
# 设置Consul集群变量
./deployment/scripts/setup_consul_cluster_variables.sh
```
### 2. 生成配置文件
```bash
# 生成Consul配置文件
./deployment/scripts/generate_consul_config.sh
```
### 3. 部署集群
```bash
# 部署遵循最佳变量命名规范的Consul集群
./deployment/scripts/deploy_consul_cluster_kv.sh
```
### 4. 验证部署
```bash
# 检查Consul集群配置
curl -s http://localhost:8500/v1/kv/config/dev/consul/?keys | jq '.'
# 检查集群leader
curl -s http://localhost:8500/v1/status/leader
# 检查集群节点
curl -s http://localhost:8500/v1/status/peers
# 验证生成的配置文件语法
consul validate /root/mgmt/components/consul/configs/consul.hcl
```
### 5. 动态更新配置
```bash
# 更新日志级别
curl -X PUT http://localhost:8500/v1/kv/config/dev/consul/cluster/log_level -d "DEBUG"
# 更新快照间隔
curl -X PUT http://localhost:8500/v1/kv/config/dev/consul/snapshot/interval -d "12h"
# 重新生成配置文件
./deployment/scripts/generate_consul_config.sh
# 重新加载Consul配置
consul reload
```
## 环境隔离
通过使用环境变量和不同的配置路径,您可以轻松实现不同环境的隔离:
```bash
# 开发环境
ENVIRONMENT=dev ./deployment/scripts/setup_consul_cluster_variables.sh
# 生产环境
ENVIRONMENT=prod ./deployment/scripts/setup_consul_cluster_variables.sh
```
这样,不同环境的配置将存储在不同的路径下:
- 开发环境: `config/dev/consul/...`
- 生产环境: `config/prod/consul/...`
## 文件结构
```
/root/mgmt/
├── components/consul/
│ ├── configs/
│ │ ├── consul.hcl # 原始配置文件
│ │ └── consul.hcl.tmpl # Consul配置模板
│ └── jobs/
│ ├── consul-cluster-simple.nomad # 原始Nomad作业配置
│ ├── consul-cluster-dynamic.nomad # 动态配置Nomad作业
│ └── consul-cluster-kv.nomad # KV存储配置Nomad作业
├── deployment/scripts/
│ ├── setup_consul_cluster_variables.sh # 设置Consul变量脚本
│ ├── generate_consul_config.sh # 生成配置文件脚本
│ └── deploy_consul_cluster_kv.sh # 部署Consul集群脚本
└── docs/setup/
└── consul_variables_and_storage_guide.md # 更新的指南文档
```
## 总结
通过实施这些改进我们确保了Consul集群完全遵循最佳变量命名规范实现了以下目标
1. **标准化**: 所有Consul配置变量都遵循统一的命名规范
2. **灵活性**: 可以轻松修改配置而无需重新部署整个集群
3. **可维护性**: 配置结构清晰,易于理解和维护
4. **环境隔离**: 支持不同环境的配置隔离
5. **自动化**: 提供了完整的自动化部署和管理脚本
这些改进使Consul集群的配置管理更加高效和可靠为整个基础设施的稳定运行提供了坚实的基础。