如何在CentOS中进行集群配置
导读:CentOS 集群配置实战指南 一、方案选型与准备 常见场景与组件 高可用服务集群:使用 Corosync(集群通信)+ Pacemaker(资源管理)+ pcs(管理工具)+ fence-agents(隔离设备代理),适合 Apach...
CentOS 集群配置实战指南
一、方案选型与准备
- 常见场景与组件
- 高可用服务集群:使用 Corosync(集群通信)+ Pacemaker(资源管理)+ pcs(管理工具)+ fence-agents(隔离设备代理),适合 Apache/Nginx、MySQL、PostgreSQL 等关键服务的高可用与自动故障转移。
- 容器编排集群:使用 Kubernetes(kubeadm/kubelet/kubectl),适合大规模、弹性伸缩的微服务部署。
- 数据缓存集群:使用 Redis Cluster,适合高吞吐、低延迟的数据缓存与分布式存储。
- 基础要求
- 至少 2 台(生产建议 3 台)服务器,系统建议 CentOS 7/8,网络互通、静态 IP、主机名可解析。
- 时间同步(NTP/chrony)、SSH 互信、必要的防火墙放行或临时关闭(测试环境)。
二、高可用集群 Corosync + Pacemaker 实操步骤
- 环境规划示例
- 节点:node1 192.168.122.168、node2 192.168.122.169
- 虚拟 IP(VIP):192.168.122.101/24
- 安装与基础配置
- 安装软件包(所有节点)
- yum install -y pacemaker pcs corosync fence-agents-all
- 启动 pcsd 并设置开机自启
- systemctl start pcsd & & systemctl enable pcsd
- 统一 hacluster 用户密码(所有节点)
- passwd hacluster
- 主机名与解析
- hostnamectl set-hostname node1(node2 同理)
- /etc/hosts 添加:192.168.122.168 node1、192.168.122.169 node2
- 时间同步(示例)
- ntpdate 172.16.0.1(或配置 chrony)
- 防火墙(二选一)
- 测试环境:systemctl disable --now firewalld;SELinux 可临时设为 permissive
- 生产环境:firewall-cmd --permanent --add-service=high-availability & & firewall-cmd --reload
- 安装软件包(所有节点)
- 认证与创建集群
- 认证节点
- pcs host auth node1 node2 -u hacluster -p < your_password>
- 创建并启动集群
- pcs cluster setup my-hacluster node1 node2
- pcs cluster start --all & & pcs cluster enable --all
- pcs status(查看集群与节点状态)
- 认证节点
- 配置资源与 VIP
- 创建 VIP(示例)
- pcs resource create VIP ocf:heartbeat:IPaddr2 ip=192.168.122.101 cidr_netmask=24 op monitor interval=30s
- 创建业务资源(示例:Apache)
- pcs resource create httpd ocf:heartbeat:httpd op start timeout=60s op stop timeout=60s op monitor timeout=30s
- 约束与顺序(可选)
- pcs constraint colocation add VIP with httpd INFINITY
- pcs constraint order VIP then httpd
- 创建 VIP(示例)
- 隔离与脑裂防护(STONITH)
- 生产环境应配置真实 fencing(如 IPMI、vSphere)
- 测试环境可临时关闭:pcs property set stonith-enabled=false
- 验证与维护
- 查看状态:pcs status、crm_mon -1
- 故障演练:在业务运行中停止某节点或 kill httpd,验证 VIP 漂移 与自动恢复。
三、Kubernetes 高可用集群搭建简述
- 准备与安装
- 所有节点:yum install -y kubeadm kubelet kubectl & & systemctl enable --now kubelet
- 规划 Pod 网段(示例):10.244.0.0/16
- 初始化控制平面(在首个 Master 节点)
- kubeadm init --pod-network-cidr=10.244.0.0/16
- 按提示配置 kubectl(拷贝 admin.conf 到 $HOME/.kube/config)
- 安装网络插件(示例:Calico)
- kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
- 加入工作节点
- 使用 kubeadm init 输出的 join 命令,包含 token 与 discovery-token-ca-cert-hash
- 验证
- kubectl get nodes、kubectl get pods -A。
四、Redis Cluster 集群搭建简述
- 准备与配置
- 建议至少 6 个实例(3 主 3 从);为每个实例准备配置(示例端口 7000–7002)
- /etc/redis-cluster/redis-7000.conf 关键项:
- port 7000
- cluster-enabled yes
- cluster-config-file nodes-7000.conf
- cluster-node-timeout 5000
- appendonly yes
- 启动实例
- redis-server /etc/redis-cluster/redis-7000.conf
- redis-server /etc/redis-cluster/redis-7001.conf
- redis-server /etc/redis-cluster/redis-7002.conf
- 创建集群
- redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 --cluster-replicas 1
- 验证
- redis-cli --cluster check 127.0.0.1:7000(状态应为 ok)
五、常见问题与最佳实践
- 脑裂与隔离
- 生产环境务必启用 STONITH/fencing,避免共享存储场景下数据损坏;测试环境临时关闭仅用于验证功能。
- 时间同步与解析
- 全集群 NTP/chrony 同步与 /etc/hosts 解析是稳定性的前提,避免因时间漂移或解析失败导致异常。
- 防火墙与 SELinux
- 测试可临时关闭;生产建议仅放行 high-availability 等相关服务或端口,并合理设置 SELinux 策略。
- 资源约束与粘性
- 对 VIP 与业务资源 设置 colocation(同机) 与 order(启动顺序),必要时设置 resource-stickiness 减少不必要的迁移。
- 监控与告警
- 结合 Prometheus + Grafana 监控集群组件(corosync/pacemaker/kubelet/redis)与业务指标,配置阈值告警,便于快速定位故障。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在CentOS中进行集群配置
本文地址: https://pptw.com/jishu/756602.html
