第1章:操作系统环境准备

大家好,我是你们的运维架构师。今天咱们聊聊集群部署的第一步——操作系统环境准备。

说实话,我见过太多人一上来就急着装软件、配服务,结果后面各种踩坑。操作系统环境没打好,后面再折腾也是白搭。这就像盖房子,地基没夯实,装修再漂亮也白费。

1.1 Linux发行版选择:CentOS / Ubuntu / Rocky Linux

选哪个发行版?这个问题我几乎每次培训都会被问到。我的回答是:看场景。

我个人习惯把发行版分成三类:

发行版 特点 适用场景 我的建议
CentOS 7/8 稳定、社区支持强、RHEL兼容 企业生产环境 老项目首选,但2024年已停止维护
Ubuntu 20.04/22.04 LTS 包新、社区活跃、文档丰富 开发测试、云原生 新手友好,K8s社区首选
Rocky Linux 8/9 CentOS替代品、RHEL兼容 新项目生产环境 我目前的主力推荐

我在项目中遇到过一件事:有个客户坚持用CentOS 6,结果某天发现内核太老,Docker跑不起来。嗯,那场面挺尴尬的。所以我的建议是——别跟版本过不去。

核心原则:生产环境选LTS版本,开发环境可以追新。别用EOL(停止维护)的版本,除非你想给自己找麻烦。

说白了,如果你现在要搭一个新集群,我推荐Rocky Linux 9。为什么?因为它继承了CentOS的稳定性,又保持了RHEL的兼容性。你想想看,以后迁移到商业版RHEL,几乎零成本。

1.2 系统最小化安装

很多新手装系统喜欢「全选」——桌面环境、开发工具、办公套件全装上。我刚开始也这样,直到有一次发现一个生产服务器上居然装了游戏……

最小化安装的原则很简单:用不到的东西,一个都不要装。

具体怎么做?

  • 安装时选择「Minimal Install」——只有命令行,没有图形界面
  • 只选必要的包组:比如「Standard」、「Development Tools」
  • 别选「Server with GUI」——集群服务器不需要桌面

小技巧:装完系统后,用 rpm -qa | wc -l 看看装了多少包。我一般控制在300-400个包以内。超过500个,说明你装多了。

为什么要这么严格?因为每个多余的包都可能带来安全漏洞,每个多余的服务都在消耗系统资源。集群环境下,几十台甚至上百台服务器,这点浪费累积起来就很可观了。

1.3 内核参数优化

装完系统,下一步就是调内核参数。这一步很多人会忽略,但恰恰是性能的关键。

我常用的优化参数,整理成了一张表:

参数 默认值 推荐值 说明
net.core.somaxconn 128 65535 提高TCP连接队列长度
net.ipv4.tcp_tw_reuse 0 1 复用TIME_WAIT状态的连接
vm.swappiness 60 10 减少内存交换,提高响应速度
fs.file-max 系统默认 6553560 增加文件句柄上限
net.ipv4.ip_local_port_range 32768 60999 1024 65535 扩大本地端口范围

配置方法很简单,编辑 /etc/sysctl.conf 文件,把上面的参数加进去,然后执行 sysctl -p 生效。

# 我的常用内核优化配置
cat >> /etc/sysctl.conf << EOF
# 网络优化
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65535

# 内存优化
vm.swappiness = 10

# 文件句柄
fs.file-max = 6553560
EOF

# 立即生效
sysctl -p

注意:我曾经在一台生产服务器上把 vm.swappiness 设成了0,结果内存不够时系统直接OOM了。后来我改成10,既保证了性能,又留了缓冲。别走极端,优化要适度。

为什么会这样?因为 swappiness=0 意味着系统不到万不得已绝不使用交换分区,一旦内存耗尽就直接杀进程。设成10,系统会在内存使用率达到90%左右时开始交换,留出缓冲空间。

1.4 SSH免密登录配置

集群环境下,你不可能每台机器都输密码登录。SSH免密登录是基本功。

配置步骤其实就三步:

  1. 生成密钥对——在管理节点上执行 ssh-keygen -t rsa -b 4096
  2. 分发公钥——用 ssh-copy-id user@node-ip 把公钥复制到各节点
  3. 验证登录——直接 ssh node-ip 看看能不能免密登录
# 在管理节点上执行
# 1. 生成密钥(一路回车即可)
ssh-keygen -t rsa -b 4096

# 2. 分发到各节点
ssh-copy-id root@192.168.1.101
ssh-copy-id root@192.168.1.102
ssh-copy-id root@192.168.1.103

# 3. 验证
ssh 192.168.1.101 "hostname"

避坑指南:我曾经遇到一个问题——明明配了免密,但就是登录不了。查了半天,发现是 /root/.ssh 目录权限不对。记住:.ssh 目录权限必须是700,authorized_keys 文件权限必须是600。权限太松,SSH会直接拒绝。

还有个细节:如果你用的是非root用户,记得把公钥放到对应用户的 ~/.ssh/authorized_keys 里。别放错地方了。

知识体系总览

这一章的内容,我用一张图来总结:

操作系统环境准备知识体系 操作系统环境准备 发行版选择 最小化安装 内核参数优化 SSH免密配置 CentOS / Ubuntu Rocky Linux Minimal Install 包数量控制 网络/内存/文件句柄 sysctl.conf配置 密钥生成与分发 权限检查 打好基础,后面才稳 发行版 → 安装 → 优化 → 连接

好了,这一章的内容就到这里。操作系统环境准备是集群部署的第一步,也是最容易被忽视的一步。把这一步做好,后面的工作会顺畅很多。

想要更多资料,联系可可