2. 部署环境规划:硬件选型建议、操作系统配置、网络与安全组规划
好,咱们进入第二章。说实话,很多自动化部署项目最后翻车,不是代码写得不好,而是环境规划没做好。我见过太多人一上来就急着写脚本,结果硬件扛不住、网络不通、安全策略把服务全堵死了……嗯,咱们今天就把这些坑提前填上。
核心原则:环境规划不是一次性工作,而是要为未来3-5年的业务增长留出余量。我个人习惯是「按峰值负载的1.5倍来规划资源」,这样既能应对突发流量,又不会造成太大浪费。
2.1 硬件选型建议
硬件选型这块,我踩过不少坑。记得有一次给客户做方案,图便宜选了低配机器,结果策略引擎一跑起来,CPU直接飙到95%,连SSH都连不上去……后来学乖了,总结出这么一套选型标准。
| 组件 | 最低配置 | 推荐配置 | 说明 |
|---|---|---|---|
| 控制节点 | 4核8G | 8核16G | 运行调度引擎和数据库 |
| 执行节点 | 2核4G | 4核8G | 执行自动化任务,可水平扩展 |
| 存储节点 | 4核8G + 500G SSD | 8核16G + 2T NVMe | 存放策略模板和日志 |
| 监控节点 | 2核4G | 4核8G | Prometheus + Grafana 组合 |
我的经验:磁盘IO往往是瓶颈。如果预算允许,尽量上NVMe固态。我曾经在一个项目中,把SATA SSD换成NVMe后,策略加载速度提升了将近4倍。
2.2 操作系统配置
操作系统这块,我推荐用 CentOS 7.9 或者 Ubuntu 20.04 LTS。为什么?说白了,这两个版本的社区支持最成熟,遇到问题随便一搜就有答案。我自己生产环境一直用 CentOS 7.9,稳定跑了三年没出过大事。
安装完系统后,有几项配置必须做:
- 关闭SELinux(或者设为permissive模式)—— 这东西在自动化场景下经常捣乱
- 调整文件描述符限制 —— 默认1024根本不够用,建议改成65535
- 设置时区和NTP —— 所有节点时间必须同步,差一秒都可能出问题
- 优化内核参数 —— 特别是网络相关的net.core.somaxconn和net.ipv4.tcp_tw_reuse
# 我常用的系统初始化脚本片段
# 调整文件描述符
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
# 内核参数优化
cat >> /etc/sysctl.conf << EOF
net.core.somaxconn = 10240
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
vm.swappiness = 10
EOF
sysctl -p
注意:千万别在生产环境直接复制粘贴上面的命令。先看看你当前系统的配置,有些参数可能已经存在了。我曾经因为没检查,直接追加配置导致参数重复,系统启动都报错……
2.3 网络与安全组规划
网络规划这块,说白了就是「谁跟谁能通信,谁跟谁不能通信」。我习惯把整个部署环境分成三个网络区域:
- 管理网络(10.0.1.0/24):运维人员访问,SSH、Web管理界面走这里
- 业务网络(10.0.2.0/24):策略引擎之间的内部通信
- 存储网络(10.0.3.0/24):数据库和日志传输,建议走独立网卡
安全组规则我一般这么配:
| 方向 | 源地址 | 目标地址 | 端口 | 协议 | 说明 |
|---|---|---|---|---|---|
| 入站 | 办公网 | 管理节点 | 22, 443 | TCP | 运维SSH和Web访问 |
| 入站 | 管理节点 | 执行节点 | 22, 6443 | TCP | 下发策略和任务 |
| 内部 | 执行节点 | 存储节点 | 3306, 6379 | TCP | 数据库和缓存访问 |
| 出站 | 所有节点 | 互联网 | 80, 443 | TCP | 下载更新和镜像 |
避坑指南:我曾经把安全组规则配得太死,结果执行节点连不上NTP服务器,所有机器时间都乱了。后来我加了一条「允许UDP 123端口出站到NTP服务器」的规则,问题才解决。所以,安全策略要「最小权限」,但别忘了基础服务。
2.4 整体架构图
下面这张图是我自己画的,把上面说的硬件、网络、安全组串起来了。你一看就明白:
你看这张图,三个网络区域之间通过安全组规则严格控制流量。管理节点可以访问执行节点,执行节点可以访问存储节点,但反过来不行。这样就算某个执行节点被攻破,攻击者也拿不到数据库里的数据。
总结一下:环境规划这事儿,说白了就是「把丑话说在前头」。硬件留余量、系统做优化、网络划区域、安全设规则。这几步走扎实了,后面部署起来就顺风顺水。我见过太多项目,前面省事,后面天天救火……
公众号:蓝海资料掘金营,微信deep3321