## 前言
对于刚开始接触服务器运维的朋友来说,“服务器集群搭建”听起来可能很复杂,实际上就是把多台服务器组合成一个整体,用来分担压力、提高可靠性。本文会用最简单的方式,从零开始教你搭建一个由三台Linux服务器组成的基本集群,包含一台负载均衡器和两台应用节点。整个过程只需要你能登录服务器、会复制粘贴命令即可。
## 一、准备工作:最少需要什么
在动手之前,先确认你手上有以下资源:
- **三台云服务器(或虚拟机)**:建议使用CentOS 7/8或Ubuntu 20.04,每台至少1核1G内存。
- **SSH客户端**:Windows下用Xshell或Putty,Mac/Linux直接用终端。
- **相同的操作系统账号**:为了方便,所有节点统一使用root,或者有sudo权限的普通用户。
- **开放的端口**:在云平台安全组中放行80、8080(或你准备用的应用端口),以及集群内部通信端口(比如2379等)。
> 如果你只有一台服务器,也可以用虚拟机(VirtualBox/VMware)在本机模拟三台,效果一样。
## 二、分步搭建:两台应用节点 + 一台负载均衡器
为了让教程清晰,我们把三台服务器分别记为:
- **Node1**(应用节点,IP:192.168.1.101)
- **Node2**(应用节点,IP:192.168.1.102)
- **LB**(负载均衡器,IP:192.168.1.100)
### 1. 在两台应用节点上安装并启动Web服务(以Nginx为例)
登录Node1和Node2,分别执行以下命令:
```bash
# 安装Nginx(CentOS)
yum install nginx -y
# 启动并设置开机自启
systemctl start nginx
systemctl enable nginx
```
为了让两台节点显示不同的内容,方便验证负载效果,修改各自的默认页面:
**Node1**:
```bash
echo "
Welcome to Node1
" > /usr/share/nginx/html/index.html
```
**Node2**:
```bash
echo "Welcome to Node2
" > /usr/share/nginx/html/index.html
```
此时可以通过浏览器分别访问 `http://192.168.1.101` 和 `http://192.168.1.102` 确认看到对应文字。
### 2. 在LB节点上安装Nginx并配置负载均衡
登录LB服务器,安装Nginx:
```bash
yum install nginx -y
systemctl start nginx
```
随后再做编辑Nginx配置文件 `/etc/nginx/nginx.conf`(或者 `/etc/nginx/conf.d/default.conf`),将内容替换为:
```nginx
upstream app_servers {
server 192.168.1.101:80; # Node1
server 192.168.1.102:80; # Node2
# 你可以继续添加更多节点
}
server {
listen 80;
server_name _;
location / {
proxy_pass http://app_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
保存文件后,测试配置是否正确然后重载:
```bash
nginx -t
systemctl reload nginx
```
### 3. 验证集群是否生效
现在,用浏览器访问LB的IP `http://192.168.1.100`。每次刷新页面,你会看到交替出现“Welcome to Node1”和“Welcome to Node2”。这说明集群搭建成功,流量已经均匀分发到两台应用节点。
## 三、避坑指南:新手最常见的五个问题
1. **防火墙挡了端口**:LB节点需要放行80端口,应用节点需要放行从LB来源的流量(通常也放行80)。在每台服务器上执行:
```bash
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
```
2. **SELinux导致访问被拒**:如果Nginx返回403,尝试临时关闭SELinux:`setenforce 0`(生产环境请按需配置策略)。
3. **配置文件语法错误**:修改配置后一定要执行 `nginx -t` 检查,否则重载会失败。
4. **节点名称解析问题**:如果用了主机名而非IP,确保 `/etc/hosts` 里写对映射关系。
5. **后端服务器没启动**:先单独访问应用节点IP确认服务正常,再排查LB配置。
## 四、效果验证与延伸
除了浏览器刷新,还可以用命令验证:
```bash
curl http://192.168.1.100
```
多执行几次,看看返回的页面是否轮流变化。如果一直返回同一个节点,可以检查 `upstream` 里的权重或是否有健康检查限制。
这个基础集群已经可以用于简单的网站或API服务。如果想进一步提升可用性,可以考虑:
- 配置Nginx健康检查(自动踢掉宕机的节点)。
- 引入Session共享(比如用Redis)。
- 换成更专业的负载均衡器(如HAProxy、LVS)。
## 结语
从准备工作到部署验证,你应该已经亲手完成了一次简单的**服务器集群搭建**。记住,集群的核心价值在于分担压力和自动容错,后续可以根据业务需求逐步增加节点、添加监控、完善日志。遇到问题时,优先检查端口、防火墙和配置文件这三个最常出错的环节。如果你遇到文中没提到的报错,欢迎在评论区留言,我会尽量协助排查。