第二章:环境准备与规划——服务器选型、操作系统选择、网络规划、磁盘分区策略

大家好,我是老张。这一章咱们聊聊环境准备。说实话,很多新手甚至一些老手,都容易在这上面栽跟头。我见过太多项目,前期规划没做好,后期运维天天救火。今天我把这些年踩过的坑,一次性说清楚。

2.1 服务器选型:别光看参数,要看场景

服务器选型这事儿,说白了就是「匹配」。你想想看,一个做高并发Web的集群,跟一个做离线大数据的集群,对硬件的要求能一样吗?

我个人习惯,先问三个问题:

  • 业务类型:是计算密集型,还是IO密集型?
  • 规模预期:未来3年,节点数会翻几倍?
  • 预算约束:是追求极致性能,还是性价比优先?

举个例子。我之前帮一家金融公司做集群,他们非要上最贵的Intel Platinum处理器。结果呢?业务跑起来,CPU利用率常年不到10%,内存倒是先爆了。这就是典型的「选型错配」。

核心建议:

  • 计算密集型(如AI训练、科学计算):高主频CPU,大L3缓存,GPU可选
  • IO密集型(如数据库、消息队列):NVMe SSD,大内存,万兆网卡
  • 通用型(如Web服务、微服务):均衡配置,内存和磁盘可扩展

我的小技巧: 选型时,一定要留出20%的冗余。别问我为什么,等你遇到业务突增或者硬件故障时,你就懂了。

2.2 操作系统选择:稳定压倒一切

操作系统这块,我踩过最大的坑,就是「追新」。有一年,我为了尝鲜,给生产环境上了某个最新发行版。结果呢?内核有个bug,导致NFS挂载频繁断连。那一个星期,我几乎没睡过整觉。

我的建议: 生产环境,永远选LTS(长期支持)版本。别管它是不是最新的,稳定才是王道。

操作系统 适用场景 我的评价
CentOS / Rocky Linux 通用服务器、传统企业 稳如老狗,社区支持好
Ubuntu Server LTS 云原生、Kubernetes、AI 包管理方便,新特性跟进快
Debian 追求极致稳定、资源受限 保守但可靠,我个人的最爱
openEuler / 统信UOS 信创、国产化替代 生态在完善,值得关注

避坑指南: 我曾经因为没注意内核版本,导致Docker的overlay2驱动不兼容,整个集群的容器都起不来。所以,选系统时,一定要确认内核版本 >= 4.0,最好 >= 5.0。

2.3 网络规划:IP、DNS、防火墙,一个都不能少

网络规划,是集群部署的「血管」。血管堵了,再强的服务器也白搭。

2.3.1 IP地址规划

我个人习惯,把IP地址分成几个段:

  • 管理网段:用于SSH、监控、带外管理(如IPMI)。一般用10.0.0.0/24
  • 业务网段:用于服务间通信、对外提供服务。用10.0.1.0/24
  • 存储网段:用于NFS、Ceph等存储流量。用10.0.2.0/24

为什么要分开?你想想看,如果管理流量和业务流量混在一起,万一有人误操作跑个带宽测试,整个业务不就受影响了吗?

核心原则: 每个网段之间,用路由或防火墙隔离。别偷懒,这是血的教训换来的。

2.3.2 DNS配置

DNS这块,我建议用内部DNS服务器,别依赖公网DNS。为什么?因为集群内部的服务发现,靠的就是DNS。如果DNS挂了,整个集群就「失联」了。

我常用的方案:

  • 小型集群:直接改/etc/hosts,简单粗暴
  • 中型集群:用dnsmasq或CoreDNS,轻量级
  • 大型集群:上Bind9或PowerDNS,配合自动化管理

我的经验: 记得给DNS服务器配个「备用」。我曾经因为DNS服务器宕机,整个集群的服务发现都瘫痪了。从那以后,我至少配两台DNS,一主一备。

2.3.3 防火墙策略

防火墙,说白了就是「白名单」。只放行必要的端口,其他一律拒绝。

常见的端口规划:

服务 端口 说明
SSH 22 管理用,建议改端口或加白名单
HTTP/HTTPS 80/443 对外服务
Kubernetes API 6443 集群管理
etcd 2379/2380 集群状态存储
NodePort 30000-32767 K8s服务暴露

避坑指南: 我曾经因为防火墙没放行etcd的2380端口,导致整个集群的节点之间无法通信,花了整整一天才排查出来。所以,防火墙规则一定要提前规划好,并且测试通过后再上线。

2.4 磁盘分区策略:别让磁盘成为瓶颈

磁盘分区,看似简单,其实门道很多。我见过有人把所有数据都放在一个分区里,结果日志把磁盘写满了,整个系统都卡死了。

我的分区习惯:

  • /boot:1GB,放内核和引导文件
  • /:50-100GB,系统根目录
  • /var:50-100GB,日志和临时文件
  • /data:剩余所有空间,放业务数据
  • swap:内存的1-2倍,但别太大

为什么要单独分/data?因为业务数据增长最快,如果和系统混在一起,一旦磁盘满了,系统可能直接崩溃。而/data单独分区,就算满了,也只是业务受影响,系统还能抢救一下。

核心建议: 如果条件允许,用LVM(逻辑卷管理)。这样以后扩容,直接加硬盘就行,不用重新分区。我现在的所有集群,都是LVM + XFS的组合,用了五年,没出过问题。

我的小技巧: 对于SSD,记得开启TRIM。否则用久了,性能会下降。命令很简单:fstrim -av,加到crontab里每周跑一次就行。

2.5 知识体系总览

说了这么多,我画了一张图,帮你把这一章的核心逻辑串起来。你一看就明白了。

环境准备与规划 - 知识体系 集群部署环境规划 服务器选型 计算密集型 vs IO密集型 预留20%冗余 操作系统选择 LTS版本优先 内核 >= 5.0 网络规划 IP分段管理 DNS + 防火墙 磁盘分区策略 LVM + XFS /data 单独分区 CPU/内存/磁盘 GPU/网卡选型 CentOS/Ubuntu 内核版本检查 管理/业务/存储 防火墙白名单 /var /data 分离 SSD开启TRIM 核心原则:稳定优先,规划先行,留足冗余 前期规划多花1小时,后期运维少花1天

好了,这一章的内容就这些。环境准备这块,说白了就是「磨刀不误砍柴工」。你前期规划得越细,后面踩的坑就越少。记住,别急着动手,先把这些基础打牢。

想要更多资料,联系可可