This commit is contained in:
2025-09-23 13:37:17 +00:00
parent 2fe53b6504
commit 3f45ad8361
74 changed files with 5012 additions and 3336 deletions

View File

@@ -0,0 +1,147 @@
# Consul 集群故障排除指南
## 问题诊断
### 发现的问题
1. **DNS 解析失败**:服务间无法通过服务名相互发现
2. **网络连通性问题**`ash3c` 节点网络配置异常(地址显示为 0.0.0.0
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`
**优点**: 直接使用物理网络
**缺点**: 需要网络管理员权限和配置
## 网络诊断步骤
### 1. 检查节点状态
```bash
docker node ls
docker node inspect <node-name> --format '{{.Status.Addr}}'
```
### 2. 检查网络连通性
```bash
# 在 master 节点上测试到 ash3c 的连通性
ping <ash3c-ip>
telnet <ash3c-ip> 8301
```
### 3. 检查防火墙设置
```bash
# 确保以下端口开放
# 8300: Consul server RPC
# 8301: Consul Serf LAN
# 8302: Consul Serf WAN
# 8500: Consul HTTP API
# 8600: Consul DNS
```
### 4. 检查 Docker Swarm 网络
```bash
docker network ls
docker network inspect <network-name>
```
## 推荐的修复流程
### 立即解决方案(单节点)
1. 部署单节点 Consul 以恢复服务
2. 验证基本功能正常
### 长期解决方案(集群)
1. 修复 `ash3c` 节点的网络配置
2. 确保节点间网络连通性
3. 配置防火墙规则
4. 重新部署集群配置
## 验证步骤
### 单节点验证
```bash
# 检查服务状态
docker service ls | grep consul
# 检查日志
docker service logs consul_consul
# 访问 Web UI
curl http://localhost:8500/v1/status/leader
```
### 集群验证
```bash
# 检查集群成员
docker exec <consul-container> consul members
# 检查领导者
docker exec <consul-container> consul operator raft list-peers
```
## 常见问题
### Q: 为什么服务发现不工作?
A: Docker Swarm 的 overlay 网络在某些配置下可能存在 DNS 解析问题,特别是跨节点通信时。
### Q: 如何选择合适的网络方案?
A:
- 开发/测试环境:使用单节点或 overlay 网络
- 生产环境:推荐使用 macvlan 或主机网络以获得更好的性能和可靠性
### Q: 集群恢复后数据会丢失吗?
A: 如果使用了持久化卷,数据不会丢失。但建议在修复前备份重要数据。
## 监控和维护
### 健康检查
```bash
# 定期检查集群状态
consul members
consul operator raft list-peers
```
### 日志监控
```bash
# 监控关键错误
docker service logs consul_consul | grep -E "(ERROR|WARN)"
```
### 性能监控
- 监控 Consul 的 HTTP API 响应时间
- 检查集群同步延迟
- 监控网络连接数
## 联系支持
如果问题持续存在,请提供以下信息:
1. Docker 版本和 Swarm 配置
2. 网络拓扑图
3. 完整的服务日志
4. 节点间网络测试结果

View File

@@ -0,0 +1,240 @@
# ZSH 配置总结
## 已安装和配置的组件
### 1. 基础组件
-**oh-my-zsh**: 已安装并配置
-**zsh**: 版本 5.9
-**Powerline 字体**: 已安装支持
-**tmux**: 已安装
### 2. 核心插件
-**git**: Git 集成和别名
-**docker**: Docker 命令补全和别名
-**docker-compose**: Docker Compose 支持
-**ansible**: Ansible 命令补全
-**terraform**: Terraform/OpenTofu 支持
-**kubectl**: Kubernetes 命令补全
-**helm**: Helm 包管理器支持
-**aws**: AWS CLI 支持
-**gcloud**: Google Cloud CLI 支持
### 3. 增强插件
-**zsh-autosuggestions**: 命令自动建议
-**zsh-syntax-highlighting**: 语法高亮
-**zsh-completions**: 增强补全功能
-**colored-man-pages**: 彩色手册页
-**command-not-found**: 命令未找到提示
-**extract**: 解压文件支持
-**history-substring-search**: 历史搜索
-**sudo**: sudo 支持
-**systemd**: systemd 服务管理
-**tmux**: tmux 集成
-**vscode**: VS Code 集成
-**web-search**: 网络搜索
-**z**: 智能目录跳转
### 4. 主题
-**agnoster**: 功能丰富的主题,支持 Git 状态显示
## 自定义别名
### 项目管理别名
```bash
mgmt # 进入管理项目目录
mgmt-status # 显示项目状态
mgmt-deploy # 快速部署
mgmt-cleanup # 清理环境
mgmt-swarm # Swarm 管理
mgmt-tofu # OpenTofu 管理
```
### Ansible 别名
```bash
ansible-check # 语法检查
ansible-deploy # 部署
ansible-ping # 连通性测试
ansible-vault # 密码管理
ansible-galaxy # 角色管理
```
### OpenTofu/Terraform 别名
```bash
tofu-init # 初始化
tofu-plan # 计划
tofu-apply # 应用
tofu-destroy # 销毁
tofu-output # 输出
tofu-validate # 验证
tofu-fmt # 格式化
```
### Docker 别名
```bash
d # docker
dc # docker-compose
dps # docker ps
dpsa # docker ps -a
di # docker images
dex # docker exec -it
dlog # docker logs -f
dclean # docker system prune -f
```
### Docker Swarm 别名
```bash
dswarm # docker swarm
dstack # docker stack
dservice # docker service
dnode # docker node
dnetwork # docker network
dsecret # docker secret
dconfig # docker config
```
### Kubernetes 别名
```bash
k # kubectl
kgp # kubectl get pods
kgs # kubectl get services
kgd # kubectl get deployments
kgn # kubectl get nodes
kaf # kubectl apply -f
kdf # kubectl delete -f
kl # kubectl logs -f
```
### Git 别名
```bash
gs # git status
ga # git add
gc # git commit
gp # git push
gl # git pull
gd # git diff
gb # git branch
gco # git checkout
```
### 系统别名
```bash
ll # ls -alF
la # ls -A
l # ls -CF
.. # cd ..
... # cd ../..
.... # cd ../../..
grep # grep --color=auto
ports # netstat -tuln
myip # 获取公网IP
speedtest # 网速测试
psg # ps aux | grep
top # htop
```
## 配置文件位置
- **主配置**: `~/.zshrc`
- **自定义别名**: `~/.oh-my-zsh/custom/aliases.zsh`
- **代理配置**: `/root/mgmt/configuration/proxy.env`
## 使用方法
### 启动 ZSH
```bash
zsh
```
### 重新加载配置
```bash
source ~/.zshrc
```
### 查看所有别名
```bash
alias
```
### 查看特定别名
```bash
alias | grep docker
alias | grep mgmt
```
## 功能特性
### 1. 自动建议
- 输入命令时会显示历史命令建议
- 使用 `→` 键接受建议
### 2. 语法高亮
- 命令输入时实时语法高亮
- 错误命令显示为红色
### 3. 智能补全
- 支持所有已安装工具的补全
- 支持文件路径补全
- 支持命令参数补全
### 4. 历史搜索
- 使用 `↑` `↓` 键搜索历史命令
- 支持部分匹配搜索
### 5. 目录跳转
- 使用 `z` 命令智能跳转到常用目录
- 基于访问频率和最近访问时间
### 6. 代理支持
- 自动加载代理配置
- 支持 HTTP/HTTPS 代理
## 故障排除
### 如果别名不工作
```bash
# 检查别名是否加载
alias | grep <alias-name>
# 重新加载配置
source ~/.zshrc
```
### 如果插件不工作
```bash
# 检查插件是否安装
ls ~/.oh-my-zsh/plugins/ | grep <plugin-name>
# 检查自定义插件
ls ~/.oh-my-zsh/custom/plugins/
```
### 如果主题显示异常
```bash
# 检查字体是否安装
fc-list | grep Powerline
# 尝试其他主题
# 编辑 ~/.zshrc 中的 ZSH_THEME
```
## 扩展建议
### 可以添加的额外插件
- **fzf**: 模糊查找
- **bat**: 更好的 cat 命令
- **exa**: 更好的 ls 命令
- **ripgrep**: 更快的 grep
- **fd**: 更快的 find
### 可以添加的额外别名
- 根据个人使用习惯添加更多别名
- 为常用命令组合创建别名
- 为项目特定命令创建别名
## 性能优化
- 已配置的插件数量适中,不会显著影响启动速度
- 使用 `zsh-completions` 提供更好的补全性能
- 历史记录配置优化,避免内存占用过大
配置完成!现在您拥有了一个功能强大、高度定制的 ZSH 环境,专门为管理系统的需求进行了优化。