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:
2025-09-27 08:04:23 +00:00
parent c0d4cf54dc
commit a06e5e1a00
54 changed files with 2010 additions and 329 deletions

View File

@@ -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 原生网络
**缺点**: 需要解决底层网络问题
### 方案 4macvlan 网络配置
**文件**: `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:

View File

@@ -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 配置