迫于老板让我规划服务器集群,我这几天查阅了一些资料,总结出一些方案,想写出来让大家参考一下,有没有什么坑。
先列一下服务器资源:
5 台 128G 内存新服务器 ==== 准备用来做生产环境集群
1 台 32G 内存老旧服务器==== 准备用来做测试环境
2 台 16G 内存老旧服务器==== 准备用来做前置负载均衡,主备
5 台机器想要做集群,用于承载生产业务,首先是各种中间件和数据库( MySQL/RocketMQ/Redis/Clickhouse 等)想要直接部署在物理服务器中,采用各中间件主流的集群方案,其中 MySQL 使用 PXC 。
此外还需要将 5 台设备虚拟化或容器化,组成一个集群,用于承载各个应用,这里考虑 PVE 或者 K8S ,看了 PVE+Ceph 的方案,感觉蛮简单的,但是有人提示有坑(我们可能会不定期的出现意外断电或供电维护),会导致数据无法读取。K8S 的话好像成熟很多,存在较高学习成本,不只我需要学,其他同学可能也需要学习才能在集群中部署应用。
希望听听各位大佬的建议,这几天天天琢磨这个,晚上查资料到半夜,实在是熬不住了。
采购第三方方案:这条基本 PASS ,没有相关预算,只能被白嫖,我也想通过这个机会学习一下相关技术,也为自己提供一定的护甲。
2 台 16G 内存老旧服务器==== 准备用来做前置负载均衡,主备
上面的服务器 去买点内存 扩容到 128g 也做虚拟化, 费用不超过 2000 何乐而不为呢
2.PVE 可以在测试环境中,进行单机使用,优势是灵活,Linux 系开机速度快。
3.生产环境,如果对数据有很高的实时一致性要求的,存储建议专门安装 CephFS 。如果没有,直接双机,第一台写入机,用 cron 给 rsync 做定时同步即可。
4.能 docker 的尽量 docker 。
5.k8s 最好别碰,原因是这玩意要搭建起来,你一个人没有几年积累,时间与经验根本不够。
6.如果我是你,留一台配置最差的上 Debian 12 + OpenZFS 作为备份机,其他所有服务器,直接全上 VMware ESXi 集群,然后开 HA 。
而且 Ceph 的极端情况只有在人为误操作才会出现,且只要不继续进行错误操作,在关键信息有备份的情况下,服务依然是可以原地恢复的;即使是更极端的情况,整个集群都挂了,需要重建集群,只要还有 mon 的数据,RBD 中的数据也依然可以被导出,数据是非常非常难丢的。
我用 Ceph 从来没丢过 RBD 中的数据,即使之前出现过两次极端情况也是如此。而且其中一次极端情况还是因为硬件没给到位,要不然即使当时误操作了也不会出问题,直接就自动恢复完了。
K8S 一般的应用部署说白了就是写一套模板,然后换镜像名、改环境变量之类的就完事了,搞明白了基本概念之后也没多复杂。甚至如果你搞好一套 GitOps 流程,把自动构建、自动更新之类的都搞好,其他人是完全可以不需要知道 K8S 层面怎么部署的。
另外,经常停电的话,如果不是托管到机房,UPS 一定要配一个,而且最好能通过网络提供状态信息,让服务器能在停电时自动关机。续航时间需要确保能坚持到服务器正常关机,尽可能减少因为断电导致出问题的可能性。
还有就是需要注意测试正常走关机流程的时长,有问题的话还需要考虑自己写一个关机的脚本,对一些东西直接使用杀进程的方式关闭,确保 UPS 不会在出现停电的时候坚持不到正常关机就没电了。
关于数据丢失或无法读取的问题,无论选择哪种方案,都应该实施严格的备份和恢复策略,以防止数据丢失。
网络:网卡万兆 2 块或者千兆 4 块 bond ,万兆或者千兆交换机 可以配置管理
硬盘:系统 raid0 +数据盘 如果 pve+ceph 数据盘可以直通
供电:ups 必须买
不要用 ceph 搞个 nas 来提供 nfs 作为集中存储把
熟悉了之后就可以搞生产的集群了 生产集群有钱就裸装 没钱就 PVE 集群 存储使用各自的 SSD 即可。
2. 如果可以不虚拟化,建议不虚拟化;
3. 可以使用 docker ,结合 docker-compose , 部署会很简单。