第91节 OpenIM 集群化构建


❤️💕💕记录sealosopen in new window开源项目的学习过程。k8s,docker和云原生的学习open in new window。Myblog:http://nsddd.topopen in new window


[TOC]

拆分微服务

Kubernetes 集群设计方案

Ingress-Controller 的选择

为了提供一个可伸缩和灵活的环境,我们打算使用以下Ingress-Controller:

  • 开发和初期阶段: 使用nginx-controller

    理由:简单,快速,易于配置,适合早期开发和测试。

  • 生产和扩展阶段:考虑使用traefikistio

    理由:为了满足生产环境的复杂性和可扩展性需求。

基础组件层的部署

我们将使用Helm charts来部署以下基础组件:

  • MySQL
  • Redis
  • MongoDB
  • Kafka
  • Loki
  • Prometheus
  • Grafana

理由Helm能够简化 Kubernetes 应用程序的部署、升级和管理,使得基础组件的部署更加简洁。

应用层的设计

对于openim-serveropenim-chat,考虑以下策略:

  • openim-serveropenim-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 链接