feat: 迁移基础设施到Nomad和Podman并重构配置
refactor: 更新Ansible Playbooks以支持Nomad集群 docs: 更新文档反映从Docker Swarm到Nomad的迁移 ci: 更新Gitea工作流以支持Podman构建 test: 添加Nomad作业测试文件 build: 更新Makefile以支持Podman操作 chore: 清理旧的Docker Swarm相关文件和配置
This commit is contained in:
@@ -4,47 +4,24 @@
|
||||
|
||||
### 发现的问题
|
||||
1. **DNS 解析失败**:服务间无法通过服务名相互发现
|
||||
2. **网络连通性问题**:`ash3c` 节点网络配置异常(地址显示为 0.0.0.0)
|
||||
2. **网络连通性问题**:`ash3c` 节点网络配置异常
|
||||
3. **跨节点通信失败**:`no route to host` 错误
|
||||
4. **集群无法形成**:持续的 "No cluster leader" 错误
|
||||
|
||||
### 根本原因
|
||||
- Docker Swarm overlay 网络在跨节点环境中的服务发现机制存在问题
|
||||
- `ash3c` 节点的网络配置可能有问题
|
||||
- 网络配置问题
|
||||
- 防火墙或网络策略可能阻止了 Consul 集群通信端口
|
||||
|
||||
## 解决方案
|
||||
|
||||
### 方案 1:单节点 Consul(临时解决方案)
|
||||
**文件**: `swarm/stacks/consul-single-node.yml`
|
||||
**优点**: 简单、可靠、立即可用
|
||||
**缺点**: 没有高可用性
|
||||
|
||||
```bash
|
||||
docker stack deploy -c swarm/stacks/consul-single-node.yml consul
|
||||
```
|
||||
|
||||
### 方案 2:使用主机网络的集群配置
|
||||
**文件**: `swarm/stacks/consul-cluster-host-network.yml`
|
||||
**优点**: 绕过 overlay 网络问题
|
||||
**缺点**: 需要手动配置 IP 地址
|
||||
|
||||
### 方案 3:修复后的 overlay 网络配置
|
||||
**文件**: `swarm/stacks/consul-cluster-fixed.yml`
|
||||
**优点**: 使用 Docker 原生网络
|
||||
**缺点**: 需要解决底层网络问题
|
||||
|
||||
### 方案 4:macvlan 网络配置
|
||||
**文件**: `swarm/stacks/consul-cluster-macvlan.yml`
|
||||
**优点**: 直接使用物理网络
|
||||
**缺点**: 需要网络管理员权限和配置
|
||||
### 当前部署方案(使用 Nomad + Podman)
|
||||
目前集群已从 Docker Swarm 迁移到 Nomad + Podman,使用 `consul-cluster-nomad.nomad` 文件部署 Consul 集群。
|
||||
|
||||
## 网络诊断步骤
|
||||
|
||||
### 1. 检查节点状态
|
||||
```bash
|
||||
docker node ls
|
||||
docker node inspect <node-name> --format '{{.Status.Addr}}'
|
||||
nomad node status
|
||||
```
|
||||
|
||||
### 2. 检查网络连通性
|
||||
@@ -64,10 +41,10 @@ telnet <ash3c-ip> 8301
|
||||
# 8600: Consul DNS
|
||||
```
|
||||
|
||||
### 4. 检查 Docker Swarm 网络
|
||||
### 4. 检查 Podman 网络
|
||||
```bash
|
||||
docker network ls
|
||||
docker network inspect <network-name>
|
||||
podman network ls
|
||||
podman network inspect <network-name>
|
||||
```
|
||||
|
||||
## 推荐的修复流程
|
||||
@@ -108,7 +85,7 @@ docker exec <consul-container> consul operator raft list-peers
|
||||
## 常见问题
|
||||
|
||||
### Q: 为什么服务发现不工作?
|
||||
A: Docker Swarm 的 overlay 网络在某些配置下可能存在 DNS 解析问题,特别是跨节点通信时。
|
||||
A: 在之前的 Docker Swarm 架构中,overlay 网络在某些配置下可能存在 DNS 解析问题。当前的 Nomad + Podman 架构已解决了这些问题。
|
||||
|
||||
### Q: 如何选择合适的网络方案?
|
||||
A:
|
||||
|
||||
@@ -26,12 +26,10 @@
|
||||
|
||||
### 1. 启动 Consul 集群
|
||||
|
||||
```bash
|
||||
# 进入 swarm 目录
|
||||
cd swarm
|
||||
当前集群已从 Docker Swarm 迁移到 Nomad + Podman,请使用 Nomad 部署 Consul 集群:
|
||||
|
||||
# 启动 Consul 集群
|
||||
docker-compose -f configs/traefik-consul-setup.yml up -d
|
||||
```bash
|
||||
nomad run /root/mgmt/consul-cluster-nomad.nomad
|
||||
```
|
||||
|
||||
### 2. 设置 Oracle Cloud 配置
|
||||
|
||||
Reference in New Issue
Block a user