高可用、高可靠方面的问题,从架构设计和拓扑图上一眼就能看出来 , 一般在 Day 1 就会被云原生团队关注和解决;而服务能力在特定场景下的挑战是比较微妙的,取决于真实的业务场景和云原生团队的经验,往往在 Day 2 才会被察觉 。审慎的云原生团队不应该在生产环境使用原生的 Kubernetes 工作负载来运行容器化的数据库,这就像坐着用纸糊的船出海一样危险 。
Kubernetes 提供的自定义资源能够更好地聚合存储、计算和网络资源,通过 API 的方式提供“声明式”的数据库服务 。目前市面上有几个知名的 Redis Operator 提供了更进一步的方案,帮助云原生团队解决 Day 2 的常见问题,比如:
- Redis Enterprise Operator by RedisLabs
- KubeDB by AppsCode
- KubeBlocks by ApeCloud
- Redis Operator by Spotahome
- Redis Operator by OpsTree
无论选了哪一款 Redis Operator , 云原生团队都要有这样一个预期:真实业务场景下的网络环境非常复杂,有可能会对 Redis 服务支持的网络方案带来挑战 。这个挑战往往会发生在跨 Kubernetes 部署的新应用需要读写存量 Redis 集群的时候 。如果没有规划好应对措施,很有可能会阻碍业务的上线效率 。考虑到业务侧存在多种 SDK 的使用方法 , Redis 服务需要支持如下的部署模式才能满足长远的要求:
- 单节点(客户端只访问主库)
- Redis Server 通过 Nodeport 暴露主库的地址
- Redis Server 通过 LoadBalancer 暴露主库的地址
- 双节点(客户端只访问主库)
- Redis Server 通过 Nodeport 暴露主库的地址
- Redis Server 通过 LoadBalancer 暴露主库的地址
- 双节点或多节点(客户端访问 Sentinel 实现读写分离)
- Redis Server 和 Sentinel 组件通过 HostNetwork 暴露 Redis、Sentinel 的副本地址
- Redis Server 和 Sentinel 组件通过 Nodeport 暴露 Redis、Sentinel 的副本地址
- Redis Server 和 Sentinel 组件通过 LoadBalancer 暴露 Redis、Sentinel 的副本地址
- Sharding
- Redis Server 通过 HostNetwork 暴露副本地址
- Sharding + Proxy
- Proxy Server 通过 Nodeport 暴露连接地址
- Proxy Server 通过 LoadBalancer 暴露连接地址
^_^ 我还是要捏~
是不是觉得 Redis 容器化并不是那么好上手 , 公有云全托管服务收些溢价也情有可原?
这个感觉没错,但是别急着放弃 。公有云厂商最重要的数据库技术方向之一就是容器化,而容器化的挑战起点就是保障弹性能力以及支持多种网络方案 。在块存储、对象存储、VPC 网络以及四层负载均衡等支撑性产品的加持下,公有云厂商实现数据库容器化会更加容易 , 技术方案上面也会更加花哨(比如固定容器 IP、升级 Kuberntes 不重启等等) 。而大部分云原生团队没有软件定义存储(SDS)和软件定义网络(SDN)的支持,实现数据库容器化就会更有挑战 。
幸运的是,大部分云原生团队需要支持的业务场景也不像公有云厂商所面临的那么复杂,如果能够选对方向、收敛需求 , 循序渐进地积累生产经验 , 数据库容器化的考验就不会呼啸而来 。业界也不乏 Redis 容器化的实践分享,有的大幅降低了成本 , 有的让业务团队实现了 self-serving 。
推荐阅读
- 线上MongoDB查询慢,如何通过索引优化直降响应时间?
- Docker从入门到精通:Docker 容器数据卷详解
- 乳化液的作用是润滑 乳化液的作用
- 消化系统的功能 人体消化系统的功能
- 徐璐出道16年颜值变化,以前甜美萌妹子,现在美强惨大女主,暴瘦变苦相
- 化工原理非均相实验的影响因素有哪些
- 二氧化碳的滞后原理 二氧化碳滞留体内会怎样
- 刚播两期,《天赐的声音5》就面临两大可能变化
- 胖猫女友最新素颜照曝光!不化妆的话,最多30分的颜值
- 胖猫女友首度公开自己与胖猫的合照!女方不化妆,最多60分