第91节 OpenIM 集群化构建
❤️💕💕记录sealos开源项目的学习过程。k8s,docker和云原生的学习。Myblog:http://nsddd.top
[TOC]
拆分微服务
Kubernetes 集群设计方案
Ingress-Controller 的选择
为了提供一个可伸缩和灵活的环境,我们打算使用以下Ingress-Controller:
开发和初期阶段: 使用
nginx-controller
。理由:简单,快速,易于配置,适合早期开发和测试。
生产和扩展阶段:考虑使用
traefik
或istio
。理由:为了满足生产环境的复杂性和可扩展性需求。
基础组件层的部署
我们将使用Helm charts
来部署以下基础组件:
- MySQL
- Redis
- MongoDB
- Kafka
- Loki
- Prometheus
- Grafana
理由:Helm
能够简化 Kubernetes 应用程序的部署、升级和管理,使得基础组件的部署更加简洁。
应用层的设计
对于openim-server
和openim-chat
,考虑以下策略:
为
openim-server
和openim-chat
的每一个模块都建立单独的Helm chart
。理由:这样可以方便地收集日志、监控以及重启的状态管理。
openim-server 和 openim-chat 的 K8s 适配
现有的通过 zookeep 服务发现将被替换,改为通过K8s的
servicename
域名通信。理由:在Kubernetes环境中,使用servicename进行服务发现更加直观,且易于管理和扩展。
总结:
此设计方案的核心是使用Kubernetes和Helm来简化和标准化应用的部署和管理。通过合理选择Ingress-Controller和利用Kubernetes的服务发现功能,我们可以确保系统的可扩展性和稳定性。
希望这个设计方案能满足您的需求。如果有进一步的细节或考虑需要加入请告诉我,我会很乐意帮助您完善设计方案。
OpenIM 集群化部署讨论会记录
关于开源部署环境的演变与变化
- 新部署方法:一种集二进制和部署于一体的一键操作。
- Kubernetes 部署:在 Kubernetes 环境中实现一键部署的新型方案。
- 现存问题:涉及日志收集、服务重启追踪等,将在后续对这些问题进行改进并寻求解决方案。
CICD的开发与维护策略
- CICD 概念:通过CICD实现Code Streaming。
- 开发阶段:需要编写出镜像文件。GitHub的CSD功能:已实现但尚待深入研究。
- 版本标记策略:推荐使用local branch而非直接标签。
关于软件开发与测试的实践经验分享
- 本地开发:推荐使用“auto-compile”工具快速生成稳定版本的镜像。
- 团队协作:介绍了各团队间如何协同进行开发、测试和发布。
- 代码重用:提及将库中的函数或方法封装为组件,实现跨项目调用。
Docker Deployment与Service Configuration
- 配置传递:主要通过如K8S中的配置文件。
- 部署方式:介绍了二进制部署和可部署两种策略,并讨论了各自的优缺点。
关于容器化部署和代码优化的探讨
- 容器化:提议将多个进程合并为一个容器进行管理。
- 部署方式兼容性:讨论了如何实现并进行微调。
- 技术架构和组件:如Helm chat、OpenM等,及其在系统中的作用和重要性。
关于一键部署的技术问题与解决方案
- 一键部署问题:可能的问题有无法翻墙、无法安装等。
- 解决方案:1) 将现有方案通用化;2) 采用第三方服务实现一键部署。
K8S部署与自动化的优化策略
- 部署工具:如使用Shell实现一键部署、K ks部署等。
- 组件整合:考虑如何将不同组件组合成完整解决方案,并保持不同环境中的一致性。
微服务架构中的最佳实践
- 应用程序部署:建议将应用程序划分为不同的容器,每个容器内运行一个业务进程。
- 代码整合:提议将相关代码整合为一个文件进行管理。
微服务的优化与部署策略
- 微服务划分:强调避免过于细致的模块分割。
- 自动化:部署时不增加额外维护工作量,采用自动化策略。
关于存储方式和编排工具的选择
- 文件存储:如使用NFS作为本地分布式文件存储。
- 编排工具:推荐使用 rook 进行对象存储编排,数据库使用专用编排器。
NFS与Flexible File System的应用
- 苹果手机上的MFS:讨论了其使用情况和如何同步全局配置文件到各业务模块。
- PV/PVC管理数据:示例讲解如何使用此文件系统进行数据管理。
二进制代码与配置文件的应用
- 代码适配:通过配置文件进行,涉及传递配置路径、文件映射等细节。
关于软件开发中的优化与改进
- 项目脚本编写:讨论了性能瓶颈、部署统一处理、服务发现模块的优化建议。
关于Web应用配置文件的编写与优化
- IP分配:配置文件用于IP分配和模块间分段处理。
- 接口应用:如在不同环境使用不同的接口实现心跳等功能。
- 技术架构改进:优化轻量化、提高开发效率和维护效果等。
结论:本次讨论会涉及了开源部署环境的多个方面,从软件开发、部署、测试到微服务架构和存储方式等多个领域。希望通过此次讨论,可以为OpenIM的集群化部署提供有力的参考和指导。
END 链接
✴️版权声明 © :本书所有内容遵循CC-BY-SA 3.0协议(署名-相同方式共享)©