如何在linux下建立集群
如何在linux下建立集群详细介绍
在 Linux 下搭建集群需根据集群类型(如计算集群、高可用集群、容器集群等)选择不同方案。以下是通用步骤及常见集群的搭建示例:
一、通用准备步骤
1.
规划集群架构
- 确定类型:明确需求(计算、存储、高可用、容器编排等)。
- 节点配置:规划主节点(Master)、从节点(Slave/Worker)数量,分配角色(如 K8s 的 Control Plane 和 Worker Node)。
- 网络配置:使用静态 IP,确保节点间网络互通(推荐千兆以上内网),开放必要端口(如 SSH 22、集群通信端口等)。
2.
初始化节点
- 系统安装:在所有节点安装相同 Linux 发行版(如 Ubuntu 22.04、CentOS 8、Rocky Linux 9)。
- 基础配置:
- 设置静态 IP 和主机名(
hostnamectl set-hostname node1),修改/etc/hosts绑定所有节点 IP 与主机名:plaintext192.168.1.100 master192.168.1.101 worker1
192.168.1.102 worker2
- 关闭防火墙(测试阶段)或配置规则(如
ufw allow ssh,ufw allow 6443/tcpfor K8s)。 - 禁用 SELinux(CentOS 系):
setenforce 0并修改/etc/selinux/config。
- 设置静态 IP 和主机名(
3.
SSH 无密码登录
- 在主节点生成密钥并分发到所有节点:bash
ssh-keygen rsa ~/.ssh/id_rsa
ssh-copy-id user@worker1
ssh-copy-id user@worker2
- 验证:
ssh worker1无需密码登录。
4.
共享存储(可选)
- NFS 共享(适用于文件共享):
- 主节点作为 NFS 服务器:bash
nfs-kernel-server
/nfs/share
/nfs/share
/etc/exports
exportfs
- 从节点安装客户端:bash
nfs-commonmaster:/nfs/share /mnt/nfs
- 主节点作为 NFS 服务器:bash
二、常见集群搭建示例
示例 1:Kubernetes 容器集群(最流行的容器编排集群)
前提:安装容器运行时(如 Containerd/Docker)
bash
docker.io
systemctl
1. 部署控制平面(Master 节点)
bash
.* .* .*
systemctl kubelet
kubeadm init --pod-network-cidr.0.0/16
- 初始化完成后,记录
kubeadm join命令(用于添加 Worker 节点)。
2. 配置 Kubectl(主节点)
bash
/.kube/etc/kubernetes/admin.conf /.kube/config
/.kube/config
3. 添加 Worker 节点
在 Worker 节点执行初始化时生成的 kubeadm join 命令(需包含 token 和 CA 证书哈希):
bash
kubeadm .1.100:6443 abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxx
4. 部署网络插件(如 Calico)
bash
kubectl apply https://raw.githubusercontent.com/projectcalico/calico/v3.26/manifests/calico.yaml
5. 验证集群
bash
kubectl get nodes
示例 2:Hadoop 计算集群(大数据处理)
前提:安装 Java(Hadoop 依赖)
bash
openjdk-11-jdk/usr/lib/jvm/java-11-openjdk-amd64
1. 下载 Hadoop
bash
https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gzhadoop-3.3.6.tar.gz /opt/
/opt/hadoop-3.3.6
2. 配置 Hadoop(主节点)
- 修改
etc/hadoop/core-site.xml(HDFS 配置):xmlconfigurationproperty
namefs.defaultFSname
valuehdfs://master:9000value
property
configuration
- 修改
etc/hadoop/hdfs-site.xml(存储目录):xmlconfigurationproperty
namedfs.namenode.name.dirname
value/data/hadoop/namenodevalue
property
property
namedfs.datanode.data.dirname
value/data/hadoop/datanodevalue
property
configuration
- 指定 Worker 节点(
etc/hadoop/slaves):plaintextworker1worker2
3. 分发 Hadoop 到从节点
bash
/opt/hadoop-3.3.6 worker1:/opt//opt/hadoop-3.3.6 worker2:/opt/
4. 格式化 HDFS 并启动服务
bash
hdfs namenode
start-dfs.sh
start-yarn.sh
5. 验证
bash
hdfs dfs /
示例 3:高可用性集群(Heartbeat+Pacemaker)
前提:节点时间同步(NTP)
bash
ntp
1. 安装集群管理工具
bash
corosync pacemaker
2. 配置 Corosync(所有节点)
- 生成配置文件:bash
corosync-configgencorosync.conf.example /etc/corosync/corosync.conf
- 修改
corosync.conf,添加节点 IP:plaintextnodelist {node {
ring0_addr: 192.168.1.100
nodeid: 1
}
node {
ring0_addr: 192.168.1.101
nodeid: 2
}
}
3. 启动服务
bash
systemctl corosync pacemaker
4. 配置资源(如虚拟 IP、服务)
bash
crm configureprimitive vip ocf:heartbeat:IPaddr2 params .1.200
primitive webserver systemd:nginx
group web_group vip webserver
commit
三、集群管理与监控
- 自动化工具:使用 Ansible/Puppet 批量管理节点配置:bash
ansible all shell
- 监控工具:
- Kubernetes:Prometheus+Grafana(通过
kube-prometheus-stack部署)。 - 通用:Nagios(监控节点状态)、Cacti(流量监控)。
- Kubernetes:Prometheus+Grafana(通过
- 日志管理:ELK Stack(Elasticsearch+Logstash+Kibana)集中处理日志。
四、注意事项
- 版本兼容:确保所有节点的软件版本一致(如 K8s 控制平面与 Worker 节点版本匹配)。
- 防火墙与 SELinux:生产环境需严格配置防火墙规则,避免关闭 SELinux(可设置为 Permissive 模式)。
- 故障转移测试:模拟主节点故障,验证从节点是否自动接管(适用于高可用集群)。
根据具体需求选择集群类型,按上述步骤配置即可。如需更详细的某类集群教程(如 Spark 集群、GlusterFS 存储集群),可进一步说明场景。