2. 环境准备与基础部署:服务器选型、操作系统安装、网络规划、基础软件栈安装

各位同学,大家好。我是你们的老朋友,一个在风电监控系统里摸爬滚打多年的工程师。今天咱们进入第二章,聊聊环境准备。说白了,就是给咱们的智能风场远程监控系统“搭窝”。这步要是没做好,后面跑起来全是坑。我个人习惯,在动手前先花半天把规划做细,这比后面返工省十倍时间。

核心思路: 先定硬件,再装系统,然后规划网络,最后把基础软件栈(Docker、Nginx、MySQL、Redis)一个个装上去。顺序不能乱,否则容易出兼容性问题。

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

选服务器,不是越贵越好。我在项目中遇到过,有人给边缘站配了双路至强,结果CPU利用率常年不到5%,纯属浪费。咱们得根据风场规模来。

风场规模 推荐配置 我的经验
小型(< 20台风机) 4核8G,SSD 240G 够用,但别跑太多容器
中型(20-50台) 8核16G,SSD 480G 这是最常见的配置,我一般选这个
大型(> 50台) 16核32G,SSD 1T 建议上集群,单扛风险大

嗯,这里要注意:硬盘一定要用SSD。机械盘在频繁读写日志时,IO会瞬间打满,导致监控数据丢包。我曾经吃过这个亏,半夜风机报警没收到,第二天被领导叫去喝茶。

小技巧: 如果预算有限,可以先用二手服务器。但一定要检查BMC(带外管理)功能,否则远程重启只能靠跑腿。

2.2 操作系统安装:CentOS还是Ubuntu?

我建议用Ubuntu Server 22.04 LTS。为什么?因为Docker和Kubernetes对它的支持最好。CentOS虽然稳定,但社区版已经停更了,你想想看,一个没有安全更新的系统,谁敢用在风场监控上?

安装时注意几点:

  • 分区方案: /boot 给1G,swap 给内存大小(比如16G),剩下的全给 / 。别搞复杂了,LVM虽然灵活,但出问题排查起来麻烦。
  • 时区设置: 一定要选 Asia/Shanghai。风场数据都是北京时间,你搞个UTC,后面时间戳全乱套。
  • 最小化安装: 别装桌面环境,浪费资源。我见过有人装了GNOME,结果内存被吃掉2G,风机数据都存不下了。

警告: 安装完成后,立刻执行 apt update && apt upgrade -y。别问我为什么,有一次我偷懒没更新,结果OpenSSH有个漏洞,被扫描工具报了高危。

2.3 网络规划:别让数据“堵车”

风场网络,说白了就是三张网:

  1. 管理网: 用于SSH、Web管理。IP段建议用 10.0.1.0/24。
  2. 业务网: 风机数据采集、监控数据传输。IP段 10.0.2.0/24。
  3. 存储网: 数据库、日志存储。IP段 10.0.3.0/24。

为什么要分开?我在项目中遇到过,有人把管理和业务混在一起,结果一次DDOS攻击,SSH都连不上,风机数据也传不回来。嗯,这就是典型的“一锅端”。

下面这张图,是我画的网络拓扑逻辑,你看一眼就明白了:

管理网 10.0.1.0/24 业务网 10.0.2.0/24 存储网 10.0.3.0/24 防火墙/路由器 ACL规则:仅允许管理网SSH 监控服务器 三网卡绑定

你看,三张网通过防火墙汇聚到服务器。服务器上要配三块网卡,分别绑定三个IP。这样即使业务网被冲击,管理网还能远程登录排查。

2.4 基础软件栈安装:Docker、Nginx、MySQL、Redis

这部分是重头戏。我建议用Docker来统一管理,别一个个手动装。为什么?因为风场环境复杂,手动装容易漏依赖,而且版本不一致。你想想看,如果A风场用MySQL 5.7,B风场用8.0,后面迁移数据得多痛苦。

2.4.1 安装Docker

直接上官方脚本,干净利落:

# 安装依赖
apt install -y apt-transport-https ca-certificates curl software-properties-common

# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

# 添加仓库
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 安装Docker
apt update && apt install -y docker-ce docker-ce-cli containerd.io

# 启动并设置开机自启
systemctl enable docker && systemctl start docker

# 验证
docker --version

避坑指南: 我曾经在Ubuntu 20.04上装Docker,结果因为内核版本太低,容器网络一直不通。后来升级到22.04才解决。所以,务必用22.04 LTS

2.4.2 安装Nginx

Nginx用来做反向代理和静态资源服务。我习惯用Docker跑:

docker run -d --name nginx \
  -p 80:80 -p 443:443 \
  -v /data/nginx/conf:/etc/nginx/conf.d \
  -v /data/nginx/html:/usr/share/nginx/html \
  nginx:1.25-alpine

嗯,这里要注意:配置文件一定要挂载出来。否则容器重启后,配置全丢了。我刚开始用Docker时犯过这个错,改了一下午的配置,一重启全没了,气得我差点砸键盘。

2.4.3 安装MySQL

数据库是监控系统的核心。我建议用MySQL 8.0,性能比5.7好不少:

docker run -d --name mysql \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=your_strong_password \
  -v /data/mysql/data:/var/lib/mysql \
  -v /data/mysql/conf:/etc/mysql/conf.d \
  mysql:8.0

警告: 密码一定要复杂!至少12位,包含大小写、数字和特殊字符。我见过有人用“123456”,结果被扫了,数据被删,勒索信发到邮箱。别问我怎么知道的,说多了都是泪。

2.4.4 安装Redis

Redis用来做缓存和消息队列。风场数据量大,没有Redis扛不住:

docker run -d --name redis \
  -p 6379:6379 \
  -v /data/redis/data:/data \
  redis:7.2-alpine redis-server --requirepass your_redis_password

这里有个细节:Redis一定要设置密码。虽然它默认只监听本地,但Docker网络模式下,其他容器也能访问。不设密码,等于把家门敞开。

2.5 验证部署

装完后,跑个简单的测试:

# 检查所有容器状态
docker ps -a

# 测试MySQL连接
docker exec -it mysql mysql -uroot -p

# 测试Redis连接
docker exec -it redis redis-cli -a your_redis_password ping

如果都能正常返回,恭喜你,基础环境搞定了。这一步虽然枯燥,但就像盖楼打地基,马虎不得。我见过太多人急着写代码,结果环境没配好,调试花了两天。嗯,咱们稳扎稳打,后面才能跑得快。

总结一下: 服务器选型看规模,系统装Ubuntu 22.04,网络三网隔离,软件栈全用Docker。这套组合拳,我在十几个风场验证过,稳得很。


专注资料整理