# Nomad集群NFS配置指南 ## 概述 本文档介绍如何为Nomad集群配置NFS存储,支持不同类型的容器和地理位置。 ## 容器类型分类 ### 1. 本地LXC容器 - **位置**: 本地网络环境 - **节点示例**: influxdb, warden, hcp1, hcp2 - **特点**: 直接使用已映射的NFS目录 - **NFS参数**: `rw,sync,vers=4.2` ### 2. 海外PVE容器 - **位置**: 海外云服务器 - **节点示例**: ash1d, ash2e, ash3c, ch2, ch3 - **特点**: 需要网络优化参数 - **NFS参数**: `rw,sync,vers=3,timeo=600,retrans=2` ## NFS配置详情 ### NFS服务器信息 - **服务器**: snail - **导出路径**: `/fs/1000/nfs/Fnsync` - **挂载点**: `/mnt/fnsync` ### 当前挂载状态 ```bash # 检查当前挂载 df -h | grep fnsync # 输出: snail:/fs/1000/nfs/Fnsync 8.2T 2.2T 6.0T 27% /mnt/fnsync ``` ## 部署步骤 ### 1. 自动部署 ```bash chmod +x scripts/deploy-nfs-for-nomad.sh ./scripts/deploy-nfs-for-nomad.sh ``` ### 2. 手动分步部署 ```bash # 步骤1: 配置NFS挂载 ansible-playbook -i configuration/inventories/production/inventory.ini \ playbooks/setup-nfs-by-container-type.yml # 步骤2: 配置Nomad客户端 ansible-playbook -i configuration/inventories/production/nomad-cluster.ini \ playbooks/setup-nomad-nfs-client.yml ``` ## Nomad作业配置 ### 使用NFS卷的Nomad作业示例 ```hcl job "nfs-example" { volume "nfs-shared" { type = "host" source = "nfs-shared" read_only = false } task "app" { volume_mount { volume = "nfs-shared" destination = "/shared" read_only = false } } } ``` ### 针对不同容器类型的约束 ```hcl # 本地LXC容器约束 constraint { attribute = "${attr.unique.hostname}" operator = "regexp" value = "(influxdb|warden|hcp1|hcp2)" } # 海外PVE容器约束 constraint { attribute = "${attr.unique.hostname}" operator = "regexp" value = "(ash1d|ash2e|ash3c|ch2|ch3)" } ``` ## 验证和监控 ### 验证命令 ```bash # 检查NFS挂载 ansible all -i configuration/inventories/production/inventory.ini \ -m shell -a "df -h /mnt/fnsync" # 检查Nomad状态 nomad node status # 检查NFS任务状态 nomad job status nfs-multi-type-example ``` ### 监控指标 - NFS挂载状态 - 网络延迟(海外节点) - 存储使用情况 - Nomad任务运行状态 ## 故障排除 ### 常见问题 1. **NFS挂载失败** - 检查网络连通性: `ping snail` - 验证NFS服务: `showmount -e snail` - 检查防火墙设置 2. **海外节点连接慢** - 使用NFSv3协议 - 增加超时参数 - 考虑使用缓存方案 3. **Nomad卷无法挂载** - 检查Nomad客户端配置 - 验证目录权限 - 检查Nomad服务状态 ## 最佳实践 1. **数据备份**: 定期备份NFS上的重要数据 2. **监控告警**: 设置NFS挂载状态监控 3. **容量规划**: 监控存储使用情况 4. **网络优化**: 为海外节点配置合适的网络参数 ## 相关文件 - `playbooks/setup-nfs-by-container-type.yml` - NFS挂载配置 - `playbooks/setup-nomad-nfs-client.yml` - Nomad客户端配置 - `jobs/nomad-nfs-multi-type.nomad` - 示例Nomad作业 - `scripts/deploy-nfs-for-nomad.sh` - 部署脚本