老板让我规划服务器集群 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
y0bcn
V2EX    云计算

老板让我规划服务器集群

  •  
  •   y0bcn 2024-06-25 14:04:45 +08:00 5438 次点击
    这是一个创建于 472 天前的主题,其中的信息可能已经有所发展或是发生改变。

    迫于老板让我规划服务器集群,我这几天查阅了一些资料,总结出一些方案,想写出来让 V 友参考一下,有没有什么坑。

    先列一下服务器资源:

    1. 5 台 128G 内存新服务器 ==== 准备用来做生产环境集群
    2. 1 台 32G 内存老旧服务器==== 准备用来做测试环境
    3. 2 台 16G 内存老旧服务器==== 准备用来做前置负载均衡,主备

    5 台机器想要做集群,用于承载生产业务,首先是各种中间件和数据库( MySQL/RocketMQ/Redis/Clickhouse 等)想要直接部署在物理服务器中,采用各中间件主流的集群方案,其中 MySQL 使用 PXC 。

    此外还需要将 5 台设备虚拟化或容器化,组成一个集群,用于承载各个应用,这里考虑 PVE 或者 K8S ,看了 PVE+Ceph 的方案,感觉蛮简单的,但是有人提示有坑(我们可能会不定期的出现意外断电或供电维护),会导致数据无法读取。K8S 的话好像成熟很多,存在较高学习成本,不只我需要学,其他同学可能也需要学习才能在集群中部署应用。

    希望听听各位大佬的建议,这几天天天琢磨这个,晚上查资料到半夜,实在是熬不住了。


    采购第三方方案:这条基本 PASS ,没有相关预算,只能被白嫖,我也想通过这个机会学习一下相关技术,也为自己提供一定的护甲。

    32 条回复    2024-07-05 09:53:00 +08:00
    woscaizi
        1
    woscaizi  
       2024-06-25 16:36:36 +08:00   1
    1. 如果你们不是微服务,采用 k8s 方案不合适;
    2. 如果可以不虚拟化,建议不虚拟化;
    3. 可以使用 docker ,结合 docker-compose , 部署会很简单。
    iphoneXr
        2
    iphoneXr  
       2024-06-25 17:14:18 +08:00   1
    建议先采购几台旧的戴尔服务器 R630 R730 等等 来组建 PVE 测试服务器集群
    不要用 ceph 搞个 nas 来提供 nfs 作为集中存储把
    熟悉了之后就可以搞生产的集群了 生产集群有钱就裸装 没钱就 PVE 集群 存储使用各自的 SSD 即可。
    tool2dx
        3
    tool2dx  
       2024-06-25 17:17:04 +08:00   1
    买个 UPS ,万一停电把正在写入的磁盘搞坏了,你就可以提包走人了。
    xufei0913
        4
    xufei0913  
       2024-06-25 17:31:20 +08:00   1
    请问你们是自己搭建的服务器么,是需要一个机房放服务器的么。
    kalayygl001
        5
    kalayygl001  
       2024-06-25 17:34:14 +08:00   1
    系统:pve 或者 esxi
    网络:网卡万兆 2 块或者千兆 4 块 bond ,万兆或者千兆交换机 可以配置管理
    硬盘:系统 raid0 +数据盘 如果 pve+ceph 数据盘可以直通

    供电:ups 必须买
    vopsoft
        6
    vopsoft  
       2024-06-25 17:42:26 +08:00   1
    生产环境 PVE 还是 pass 吧
    R4rvZ6agNVWr56V0
        7
    R4rvZ6agNVWr56V0  
       2024-06-25 17:44:55 +08:00   1
    对于中间件和数据库的部署,继续按照当前的计划进行,即直接在物理服务器上部署并采用各自的主流集群方案。

    对于虚拟化或容器化集群的选择,我推荐选择 Kubernetes (K8s)。尽管它的学习成本较高,但从长远来看,K8s 能够提供更强大的功能和更广泛的应用场景。此外,随着时间的推移,团队将逐渐掌握 K8s ,从而提高整体的运维效率和系统的可扩展性。

    关于数据丢失或无法读取的问题,无论选择哪种方案,都应该实施严格的备份和恢复策略,以防止数据丢失。
    isno
        8
    isno  
       2024-06-25 18:10:20 +08:00   2
    用 k8s 。

    快的话,一天看完。k8s 的计算、存储、网络、容器设计。

    https://www.thebyte.com.cn/container/summary.html
    lrh3321
        9
    lrh3321  
       2024-06-25 18:31:55 +08:00   1
    开源版的 Ceph 如果出问题了,你不一定能处理得了。
    my3157
        10
    my3157  
       2024-06-25 18:37:17 +08:00   1
    用 pve 隔一层, 避免有问题一锅端, 文件系统用 zfs, 好备份和迁移, vm 里面可以用 docker 或者 docker compose, 不要贸然上 k8s , 网络问题好解决, 有状态服务不好处理, k8s 是动态调度的, 而 pve 的 vm 是静态管理
    locoz
        11
    locoz  
       2024-06-25 19:24:28 +08:00   1
    可以用 K8S + Rook Ceph ,只要硬盘数量和质量到位、存储池按正常 3 副本来、只用 Ceph RBD 或基于 Ceph RBD 跑的 JuiceFS ,正常用不瞎搞是非常稳的。甚至配置之类的按默认的来就行了,搭好就可以放养,即使意外断电也能自动恢复,出现特殊情况卡着半天没直接自动恢复到正常状态,一般也就只是重启一下 mgr/mon/osd 的事情。

    而且 Ceph 的极端情况只有在人为误操作才会出现,且只要不继续进行错误操作,在关键信息有备份的情况下,服务依然是可以原地恢复的;即使是更极端的情况,整个集群都挂了,需要重建集群,只要还有 mon 的数据,RBD 中的数据也依然可以被导出,数据是非常非常难丢的。

    我用 Ceph 从来没丢过 RBD 中的数据,即使之前出现过两次极端情况也是如此。而且其中一次极端情况还是因为硬件没给到位,要不然即使当时误操作了也不会出问题,直接就自动恢复完了。

    ---

    K8S 一般的应用部署说白了就是写一套模板,然后换镜像名、改环境变量之类的就完事了,搞明白了基本概念之后也没多复杂。甚至如果你搞好一套 GitOps 流程,把自动构建、自动更新之类的都搞好,其他人是完全可以不需要知道 K8S 层面怎么部署的。

    ---

    另外,经常停电的话,如果不是托管到机房,UPS 一定要配一个,而且最好能通过网络提供状态信息,让服务器能在停电时自动关机。续航时间需要确保能坚持到服务器正常关机,尽可能减少因为断电导致出问题的可能性。

    还有就是需要注意测试正常走关机流程的时长,有问题的话还需要考虑自己写一个关机的脚本,对一些东西直接使用杀进程的方式关闭,确保 UPS 不会在出现停电的时候坚持不到正常关机就没电了。
    locoz
        12
    locoz  
       2024-06-25 19:26:59 +08:00   2
    自建存储用 Ceph 唯一的问题我认为在于:规模极小、极度控制成本的情况下,跑出来的性能会与预期差距较大。其他的说实在的都不是太大的问题。
    laminux29
        13
    laminux29  
       2024-06-25 20:02:15 +08:00   2
    1.生产不要用 PVE 集群。PVE 集群是 PVE 官方用来赚取服务费的,比如,PVE 后台的集群功能,只有添加节点按钮,没有删除节点按钮,没有编辑节点按钮。节点一旦出问题,只能进控制台,用 PVE 官方给出的磨砺两可的命令进行操作,而且删除节点,PVE 官方居然要求节点关机。并且,如果你自己处理不了,就不能去买 PVE 官方的收费服务了。

    2.PVE 可以在测试环境中,进行单机使用,优势是灵活,Linux 系开机速度快。

    3.生产环境,如果对数据有很高的实时一致性要求的,存储建议专门安装 CephFS 。如果没有,直接双机,第一台写入机,用 cron 给 rsync 做定时同步即可。

    4.能 docker 的尽量 docker 。

    5.k8s 最好别碰,原因是这玩意要搭建起来,你一个人没有几年积累,时间与经验根本不够。

    6.如果我是你,留一台配置最差的上 Debian 12 + OpenZFS 作为备份机,其他所有服务器,直接全上 VMware ESXi 集群,然后开 HA 。
    ursash
        14
    ursash  
       2024-06-25 20:46:33 +08:00   1
    支持 ESXi
    jackge0323
        15
    jackge0323  
       2024-06-25 21:00:48 +08:00   1
    k8s 至少要学半年,用半年,没有这个时间的话,考虑其他方案吧。
    foam
        16
    foam  
       2024-06-25 21:05:24 +08:00 via Android   1
    为啥不直接用云服务的 k8s 。自己搞灾备好麻烦也不可靠的感觉
    Soo0
        17
    Soo0  
       2024-06-25 21:27:19 +08:00 via iPhone   1
    ESXi 额外提让老板买套 ups ?
    k9990009
        18
    k9990009  
       2024-06-25 21:38:34 +08:00 via Android   1
    我之前瞎搞的。机房供应商搞的,不懂硬件这块,装的 vmware 。中间件物理安装的,mysql 也是 pxc ,中间件自己注册成 service ,自动重启。不会 k8s,应用用的 docker-compose 。停电很正常,停电前人肉关机。pxc 很蛋疼,要自己先手动启动主节点,再拉起其他节点,没做到自动化。还有个问题就是,我不知道怎么估算中间件和应用所需资源( cpu/内存),能跑就行,大概是要压测。
    ETiV
        19
    ETiV  
       2024-06-25 21:44:43 +08:00 via iPhone   1
    如果你什么都不懂,就用阿里云,估算下业务规模和流量,价格很好算的
    mylovesaber
        20
    mylovesaber  
       2024-06-25 21:47:20 +08:00   1
    你那个停电就不能上 ups 吗?这怎么能成顾虑的点的?一旦断电就集中自动停服务关机,pve 正常开关机都正常的,害怕的话可以尝试下 win server ,然后安装 vmware workstation pro ,pro 版本都已经免费了。所有操作都是图形化,多省事
    kalayygl001
        21
    kalayygl001  
       2024-06-25 22:11:47 +08:00   1
    1 台 32G 内存老旧服务器==== 准备用来做测试环境
    2 台 16G 内存老旧服务器==== 准备用来做前置负载均衡,主备

    上面的服务器 去买点内存 扩容到 128g 也做虚拟化, 费用不超过 2000 何乐而不为呢
    y0bcn
        22
    y0bcn  
    OP
       2024-06-25 22:45:57 +08:00
    @foam 我们的数据规模非常大,同时存在大量的运算任务,而且有免费的电力供应,所以用云服务并不划算
    y0bcn
        23
    y0bcn  
    OP
       2024-06-25 22:47:27 +08:00
    @tool2dx UPS 倒是有,不过好像没法通知到服务器,改天去机房看看
    @mylovesaber
    y0bcn
        24
    y0bcn  
    OP
       2024-06-25 22:48:03 +08:00
    @xufei0913 是的
    y0bcn
        25
    y0bcn  
    OP
       2024-06-25 22:51:32 +08:00
    @lrh3321 目前我也是担心这个问题

    @ETiV 有钱买服务器,没钱上云啊,我们其实已经有一堆服务器了,这部分因为用户的原因并不能纳入本次规划的集群中
    huang9
        26
    huang9  
       2024-06-26 00:14:39 +08:00
    做为一个算比较资深的运维同学强烈建议你,这点资源别折腾了,直接用裸机直接跑就行,线上中间件做好备份工作,比啥都好,如果有强占资源情况直接用 docker 就行,其他的折腾啥哇
    chf007
        27
    chf007  
       2024-06-26 09:53:44 +08:00
    难道不先说下业务场景,当前负载情况以及未来可能的增长情况?

    规模小的话,可以 Docker Swarm ,K8S 太重,Docker Compose 只能单机
    xueling
        28
    xueling  
       2024-06-26 17:41:02 +08:00
    看了前面的评论,我有两个看法,一是:你们用 k8s 是对的,但是是无奈之举。物理机已经买完了,集群规模这么小,又要部署那么多的服务,不使用容器化,那服务之间互相影响,其实更容易出问题,使用 k8s 做个服务间的资源隔离是必要的,现实状况使得几乎必须得用容器化了。 二是:我还是觉得云服务器更好,省去团队的学习成本和维护成本,你说计算量大用云服务器不合算,我其实不太认同,综合计算下来可能云服务器更省钱。我看你们还有部署 clickhouse ,如果是数据统计的话,也可以考虑用一下我的开源项目: https://github.com/xl-xueling/xl-lighthouse
    dode
        29
    dode  
       2024-06-28 09:47:54 +08:00
    2 台老旧服务器都做物理测试机,测试随便玩吧,16G 还没笔记本内存大,前置 5 挑一就行了
    dode
        30
    dode  
       2024-06-28 09:50:09 +08:00
    5 台 128G 如果内存,硬盘,SSD 都还行直接安装 esxi ,可以五台相互独立管理也可以加一台 vc ,集中管理,
    内存还是多插点
    mingtdlb
        31
    mingtdlb  
       2024-06-30 14:39:15 +08:00
    先说你是什么岗位吧,赶鸭子上架的事不要做,没出事都相安无事,出了问题你就裸了。特别是生产环境,pve ceph k8s 这种不是很了解(独当一面),仅使用的能力,就别弄了。
    Sklinux
        32
    Sklinux  
       2024-07-05 09:53:00 +08:00
    “采购第三方方案:这条基本 PASS ,没有相关预算,只能被白嫖” 这。。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6098 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 03:09 PVG 11:09 LAX 20:09 JFK 23:09
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86