updated
This commit is contained in:
147
docs/consul-cluster-troubleshooting.md
Normal file
147
docs/consul-cluster-troubleshooting.md
Normal 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 原生网络
|
||||
**缺点**: 需要解决底层网络问题
|
||||
|
||||
### 方案 4:macvlan 网络配置
|
||||
**文件**: `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. 节点间网络测试结果
|
||||
240
docs/setup/zsh-configuration.md
Normal file
240
docs/setup/zsh-configuration.md
Normal 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 环境,专门为管理系统的需求进行了优化。
|
||||
Reference in New Issue
Block a user