前言
如果自己购买服务器搭建分布式集群, 虽然流程繁琐, 但是成本相对可控, 不过所需服务器的数量不少, 至少7台起步, 运维压力还是有的
今天本着学习的目的, 来探讨一下搭建分布式集群的些事
服务器数量估算
针对单体应用
- 两台服务器: 用作负载均衡
- 两台以上服务器: 用于应用业务处理
- 三台服务器: 其中两台用于数据库集群一主一从结构, 另外一台用作监控服务器, 出现故障时自动切换
也就是总共至少七台服务器 可实现了基础的分布式集群架构
针对微服务架构应用
- 两台服务器: 用作负载均衡(API网关集群)
- 十台服务器: 微服务两个组件起步, 每个微服务至少配置两台应用服务器和三台数据库服务器(一主一从一仲裁)
- 三台服务器: 用作服务注册中心
微服务架构, 至少需要15台服务器
从单体应用改成微服务架构 服务器数据暴增 主要集中在数据库和应用上
使用托管方案
如果嫌自己购买服务器搭建集群麻烦, 那么单体应用可以考虑使用现成的高可用分布式集群全托管方案 比如阿里云SAE/ECI
它内置了负载均衡器和应用集群,我们只需要再购置一台云数据库(内含主从复制机制),然后上传开发好的程序即可
如此一来,可以大大减少运维消耗,把更多精力集中在应用本身 这是省时省力的做法
微服务架构同样也可以使用SAE
来托管 除了该方案外,还有一些自由度更高的方案,比如MSE
等
问题汇总
有必要给每个微服务设置独立的负载均衡器吗?
给每个微服务都配置独立的负载均衡器是传统单体架构思维的延伸,它不仅会造成巨大的资源浪费和成本飙升,更会带来运维噩梦。微服务架构通过 统一入口 和 服务发现 机制,优雅地解决了这个问题。
下面我通过一张图来对比两种模式的根本区别:
为了节省成本 是否可以将API网关和注册中心共用在两台服务器上?
首先, 我们来看一下两种方案的对比图:
除非是测试环境 或者想快速验证想法 否则 必须将API网关和注册中心分开部署, 尤其是生产环境,两台服务器部署网关+三台服务器部署注册中心是个可靠的选择
关于服务器系统的选择
负载均衡器和数据库服务器选择
CentOS
,以获得最高的稳定性,应用服务器可以选择ubuntu
以或者更新的软件版本以下是最小化配置参考, 用于项目起步阶段:
- 两台负载均衡服务器: 系统选择
centos
+硬盘50g+弹性公网ip
- 两台应用服务器: 系统选择
ubuntu
+硬盘80g+nat
网关只进不出 - 三台数据库: 系统选择
centos
+硬盘100g+完全内网 无需公网ip
- 两台负载均衡服务器: 系统选择
成本估算
这里以一次性购买五年为例, 做一个费用估算:
全托管方案: 阿里云SEA 两实例 2核2g每月600万cu消耗 折后资源包, 五年10000+数据库1核2g 硬盘80g 6600元=16600元
半托管方案: 阿里云负载均衡器3504元+五台ecs5075元+带宽流量包最低450最高2100元=9029-10679元
自建方案一: 七台ecs 7175元+按流量计费弹性ip+流量包450-2100=7625-9275元
自建方案二: 七台ecs 7175元+2M固定带宽弹性ip1380元=8558元
自建方案三: 使用DNS负载均衡, 两台各带1M带宽ecs 3653元+五台ecs 5075元=8728元
本文为作者原创 转载时请注明出处 谢谢