CentOS7下的集群化部署

一、集群化部署核心目标与场景

1.1 为什么需要集群化环境

集群化部署通过多台服务器协同工作,解决单机部署的性能瓶颈与单点故障问题,核心优势包括:

  • 横向扩展能力:通过增加节点数量提升计算 / 存储容量(如 Hadoop 集群处理 PB 级数据)。
  • 高可用性:节点故障时自动故障转移(如 Zookeeper 集群的 Leader 选举机制)。
  • 成本优化:利用低成本服务器构建分布式系统,替代昂贵的单机架构。

典型应用场景

  • 大数据处理(Hadoop/Spark 集群)
  • 分布式缓存(Redis Cluster)
  • 微服务架构(Kubernetes 集群)
  • 消息队列(RabbitMQ 镜像队列)

二、集群规划与资源准备

2.1 硬件与网络规划

2.1.1 节点配置建议
角色 CPU 内存 存储 数量 用途说明
主节点 4 核 8GB SSD 100GB 1-3 台 管理元数据(如 Namenode)
数据节点 8 核 16GB HDD/SSD 500GB+ N 台 存储业务数据
网络节点 2 核 4GB SSD 50GB 1 台 负载均衡与代理
2.1.2 网络拓扑设计

plaintext

复制代码
┌───────────┐       ┌───────────┐       ┌───────────┐
│ 主节点1  │       │ 主节点2  │       │ 数据节点1 │
│ (192.168.1.10) │       │ (192.168.1.11) │       │ (192.168.1.12) │
└───────────┘       └───────────┘       └───────────┘
       ├───────────────────────┤
       │    内部通信网络    │ (交换机)
       ├───────────────────────┤
┌───────────┐       ┌───────────┐       ┌───────────┐
│ 数据节点2 │       │ 数据节点3 │       │ 公网网关  │
│ (192.168.1.13) │       │ (192.168.1.14) │       │ (192.168.1.1)  │
└───────────┘       └───────────┘       └───────────┘
  • 内网要求:节点间延迟 < 1ms,带宽≥1Gbps(推荐万兆网卡)。
  • 端口规划
    • 管理端口:22(SSH)、8080(Web 管理)
    • 服务端口:如 5672(RabbitMQ)、9200(Elasticsearch)

三、虚拟机克隆与基础配置

3.1 虚拟机克隆流程(以 VMware 为例)

3.1.1 准备基础镜像
  1. 安装 CentOS 7 最小化系统,配置固定 IP、关闭 SELinux 和防火墙:

    bash

    复制代码
    # 关闭防火墙
    systemctl stop firewalld && systemctl disable firewalld
    # 禁用SELinux
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
    reboot  # 重启生效
  2. 安装基础工具:

    bash

    复制代码
    yum install -y net-tools wget vim git  # 安装常用工具
3.1.2 克隆多台虚拟机
  1. 右键点击基础虚拟机→克隆 →选择完整克隆 →命名为node1node2node3

  2. 修改各节点主机名: bash

    复制代码
    # node1执行
    hostnamectl set-hostname node1
    # node2执行
    hostnamectl set-hostname node2
3.1.3 配置固定 IP

编辑/etc/sysconfig/network-scripts/ifcfg-ens33(以 CentOS 为例):

bash

复制代码
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static  # 静态IP
IPADDR=192.168.88.130  # node1 IP
NETMASK=255.255.255.0
GATEWAY=192.168.88.1
DNS1=8.8.8.8

注意:各节点 IP 需在同一子网,且未被其他设备占用。

四、集群通信基础:主机名映射与 SSH 免密

4.1 全局主机名映射

4.1.1 修改本地 hosts 文件(所有节点执行)

bash

复制代码
vim /etc/hosts
# 添加以下内容
192.168.88.130 node1
192.168.88.131 node2
192.168.88.132 node3

验证

bash

复制代码
ping node1 -c 2  # 应返回正常响应
ping node2 -c 2

4.2 SSH 免密登录配置

4.2.1 生成 SSH 密钥对(node1 执行)

bash

复制代码
ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa
# 生成公钥/私钥对,不设置密码
4.2.2 分发公钥到其他节点

bash

复制代码
# 分发到node2
ssh-copy-id node2
# 分发到node3
ssh-copy-id node3
4.2.3 验证免密登录

bash

复制代码
ssh node2 "echo hello from node1"  # 应直接登录并输出内容
ssh node3 "date"  # 验证node3连通性

五、系统服务统一配置

5.1 JDK 环境部署(所有节点)

5.1.1 下载与解压

bash

复制代码
wget https://download.oracle.com/java/11/latest/jdk-11_linux-x64_bin.tar.gz
tar -zxvf jdk-11_linux-x64_bin.tar.gz -C /usr/local/
ln -s /usr/local/jdk-11.0.20 /usr/local/jdk  # 创建软链接
5.1.2 配置环境变量

bash

复制代码
vim /etc/profile
# 添加以下内容
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile  # 立即生效
5.1.3 验证安装

bash

复制代码
java -version  # 应输出Java 11版本信息
javac -version

5.2 时间同步服务(NTP)

5.2.1 安装 NTP 服务

bash

复制代码
yum install -y ntp
systemctl start ntpd && systemctl enable ntpd  # 启动并开机自启
5.2.2 同步阿里云时间服务器

bash

复制代码
vim /etc/ntp.conf
# 添加以下内容
server ntp.aliyun.com iburst

bash

复制代码
ntpdate ntp.aliyun.com  # 立即同步时间

六、系统优化与安全加固

6.1 关闭不必要的服务

bash

复制代码
systemctl disable --now postfix  # 关闭邮件服务
systemctl disable --now avahi-daemon  # 关闭零配置网络服务

6.2 调整文件描述符限制

编辑/etc/security/limits.conf,添加:

bash

复制代码
*               soft    nofile          65536
*               hard    nofile          131072
*               soft    nproc           65536
*               hard    nproc           131072

说明:提升单个进程可打开的文件数(默认 1024→65536),避免集群服务文件句柄不足。

6.3 禁用透明大页(THP)

bash

复制代码
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/khugepaged/enabled
# 永久生效需添加到rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local

作用:减少内存碎片化,提升 Redis/MySQL 等内存敏感型服务性能。

七、集群初始化验证与快照

7.1 基础连通性测试

7.1.1 节点间服务探测

bash

复制代码
# 在node1执行,测试node2的SSH服务
nc -zv node2 22
# 预期输出:succeeded
# 测试node3的HTTP端口(如9200)
nc -zv node3 9200
7.1.2 集群服务预启动验证

bash

复制代码
# 启动临时Nginx服务测试负载均衡
yum install -y nginx
systemctl start nginx
# 在node2/node3重复安装并启动,验证集群节点均可提供服务

7.2 创建虚拟机快照

7.2.1 快照命名规范

bash

复制代码
# 格式:节点名-用途-时间
vmware snapshot node1 create "node1-base-20240610"
vmware snapshot node2 create "node2-base-20240610"
7.2.2 快照用途
  • 回滚点:当集群配置错误时快速恢复初始状态。
  • 模板克隆:基于已配置好的快照快速创建新节点,减少重复配置成本。

八、生产环境进阶配置

8.1 配置管理工具(Ansible)

8.1.1 安装 Ansible(管理节点执行)

bash

复制代码
yum install -y ansible
8.1.2 编写 playbook 批量部署

yaml

复制代码
# cluster_setup.yml
- hosts: all
  tasks:
    - name: Update system packages
      yum:
        name: "*"
        state: latest
    - name: Install common tools
      yum:
        name: ["net-tools", "wget"]
        state: present

执行

bash

复制代码
ansible-playbook cluster_setup.yml -i hosts.ini  # hosts.ini定义节点列表

8.2 云服务器集群部署(以阿里云为例)

8.2.1 购买 ECS 实例
  • 选择同一地域相同可用区的 ECS 实例,确保内网互通。
  • 配置安全组规则:放行 22、80、443、自定义服务端口(如 9092、5672)。
8.2.2 初始化云服务器

bash

复制代码
# 替换阿里云YUM源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/CentOS-vault.repo
yum makecache fast

九、故障排查与维护清单

9.1 常见启动故障

故障现象 可能原因 解决方法
节点无法 ping 通 IP 冲突 / 防火墙阻塞 检查 IP 配置、放行 ICMP 协议
SSH 免密失效 公钥未正确分发 重新执行ssh-copy-id并检查权限
JDK 环境变量失效 未 source 配置文件 执行source /etc/profile或重启

9.2 日常维护脚本

bash

复制代码
#!/bin/bash
# 集群状态巡检脚本
echo "===== 节点连通性检查 ====="
for node in node1 node2 node3; do
  ping -c 2 $node | grep "64 bytes" && echo "$node 连通正常" || echo "$node 连通失败"
done

echo "===== JDK版本检查 ====="
ssh node1 "java -version" | head -n 1
ssh node2 "java -version" | head -n 1
ssh node3 "java -version" | head -n 1

十、总结:集群化部署的核心链路

通过以上步骤,可快速构建标准化的 Linux 集群化环境,为后续大数据组件(Hadoop/Spark)、中间件(Kafka/RabbitMQ)及容器化平台(Docker/Kubernetes)的部署奠定基础。生产环境中需结合监控系统(如 Prometheus)和自动化工具(如 Jenkins),实现集群的持续集成与动态扩缩容。建议每完成一个关键步骤(如 SSH 免密、JDK 部署)后立即验证,避免问题累积导致复杂排错。

相关推荐
兲行健4 小时前
为 Nginx 配置 HTTPS(以 n8n 为例)完整教程【CentOS 7】
nginx·https·centos
被瞧不起的神19 小时前
Docker 安装教程(CentOS 系统)纯新手可入门
docker·容器·centos
IT coke21 小时前
centos7部署AWStats日志分析系统
linux·运维·centos
Detachym1 天前
CentOS下的分布式内存计算Spark环境部署
分布式·spark·centos
字节高级特工1 天前
【Linux篇】细品环境变量与地址空间
linux·运维·服务器·c语言·c++·ubuntu·centos
Detachym1 天前
Linux学习 Day_04
常用命令·linux学习·linux基础知识·学习日志.
xrkhy1 天前
Linux系统的CentOS7发行版安装MySQL80
linux·mysql·centos
半桔2 天前
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
linux·运维·服务器·面试·centos
云上艺旅2 天前
centos升级内核
linux·运维·centos