Troubleshooting Guide for OpenIM

Translation and Enhancement of the Article on Troubleshooting Techniques Using OpenIM If you’re seeking specific answers to issues related to OpenIM, I regret to inform you that this article isn’t a collection of problems and solutions. Instead, it focuses on the troubleshooting methods and debugging techniques gleaned from development and operational experiences using OpenIM as a case study. If you’re interested in learning how to diagnose faults and pinpoint issues, please continue reading. ...

April 16, 2024 · 28 min · 5925 words · Xinwei Xiong, Me

OpenIM: Version Control & Testing Workflow

The success of an open-source project largely depends on its quality management and collaborative processes. In the OpenIM open-source community, the standardization of project management and testing processes is crucial to ensure the quality and stability of the codebase. This document provides a brief overview of our testing strategy, branch management, quality control policies, and how they are applied to the main branch, PR testing branches, and stable release branches to meet the needs of developers, testers, and community managers. Additionally, we will introduce the standards, testing schemes, and project management strategies of the OpenIM open-source community, aiming to provide clear guidance to ensure project stability and sustainability. ...

January 15, 2024 · 5 min · 1030 words · Xinwei Xiong, Me

Deployment and Design of Management Backend and Monitoring

OpenIM offers various flexible deployment options to suit different environments and requirements. Here is a simplified and optimized description of these deployment options: Source Code Deployment: Regular Source Code Deployment: Deployment using the nohup method. This is a basic deployment method suitable for development and testing environments. For details, refer to the Regular Source Code Deployment Guide . Production-Level Deployment: Deployment using the system method, more suitable for production environments. This method provides higher stability and reliability. For details, refer to the Production-Level Deployment Guide . Cluster Deployment: Kubernetes Deployment: Provides two deployment methods, including deployment through Helm and sealos. This is suitable for environments that require high availability and scalability. Specific methods can be found in the Kubernetes Deployment Guide . Docker Deployment: Regular Docker Deployment: Suitable for quick deployments and small projects. For detailed information, refer to the Docker Deployment Guide . Docker Compose Deployment: Provides more convenient service management and configuration, suitable for complex multi-container applications. Next, we will introduce the specific steps, monitoring, and management backend configuration for each of these deployment methods, as well as usage tips to help you choose the most suitable deployment option according to your needs. ...

November 15, 2023 · 7 min · 1401 words · Xinwei Xiong, Me

OpenIM Use Harbor Build Enterprise Mirror Repositories

Requirements OpenIM provides various public image registry addresses, such as aliyun, github, Docker Hub, and more. Read https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/images.md for more image building guidelines. Most enterprises choose to set up their own image repository using Harbor, integrating it into their CI/CD pipeline to eventually replace Docker Hub and further reduce image storage costs. Additionally, in a production environment, Harbor generally enables TLS, so you will also need to prepare a valid domain name. ...

October 25, 2023 · 5 min · 1009 words · Xinwei Xiong, Me
Three interchangeable runtime, network, and storage modules connect to one orchestration chassis through standardized couplings

Deep Dive into Kubernetes CNI, CRI, CSI Components

Container Runtime Container Runtime runs on every node in a Kubernetes (k8s) cluster and is responsible for the entire container lifecycle. Docker is currently the most widely used. With the development of container cloud, more and more container runtimes have emerged. To solve the integration problems between these container runtimes and Kubernetes, the community introduced CRI (Container Runtime Interface) in Kubernetes version 1.5 to support more container runtimes. ⌀ Image no longer available · image-20230308203547983 ...

September 28, 2023 · 32 min · 6766 words · Xinwei Xiong, Me

Kubernetes Port Config via Config Files

Introduction In the current module’s execution, numerous ports (ws, api, rpc, Prometheus) are passed directly. This approach can be cumbersome and doesn’t align with Kubernetes’ best practices where a pod typically exposes only one port (either 80 or 443). This proposal suggests transitioning to a configuration file-centric approach, while still retaining the capability to pass ports directly when needed. Goals Simplify the port configuration for Kubernetes deployment. Prioritize port values passed as arguments over configuration file values. Provide flexibility to users who wish to use traditional port-based or environment variable-based deployments. Proposed Solution Configuration File Instead of passing multiple ports directly, a configuration file will be introduced. By default, this file will contain predefined ports. This configuration file can be passed to the module using Kubernetes’ ConfigMap. ...

September 18, 2023 · 2 min · 399 words · Xinwei Xiong, Me

OpenIM clustering design Kubernetes deploy concludes

Conference and Reference Links Conference reference documents: https://nsddd.notion.site/2899028707604b8090b36677c031cdf8?pvs=4 Video playback: Bilibili: https://www.bilibili.com/video/BV1s8411q7Um/?spm_id_from=333.999.0.0 Comment: I think that middleware can be replaced with https://kubeblocks.io which can help you manage multiple database middlewares. im reads the configuration information, and reads the config/ directory. The config.yaml hard-coded in the code can be automatically divided into rpc for different services, and then unified directories. By default, the directory is read from the binary running path. two floors openim version: https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/version.md Storage can consider using: https://github.com/openebs/openebs https://github.com/rook/rook Core target: ...

September 17, 2023 · 14 min · 2771 words · Xinwei Xiong, Me

Openim Devops Design

DevOps DevOps 🔥 DevOps is a culture and methodology for software development and operations that aims to shorten the software development cycle and improve software quality through automation and collaboration. DevOps (a portmanteau of Development and Operations) is a A culture, movement or practice that values communication and cooperation between “software developers (Dev)” and “IT operations and maintenance technicians (Ops)”. By automating the “software delivery” and “architecture change” processes, we can build, test, and release software faster, more frequently, and more reliably. ...

September 16, 2023 · 14 min · 2919 words · Xinwei Xiong, Me

Openim Multi Process Management

111: OpenIM multi-process management strategy Main modules This article will start from the most basic single-process foreground operation of OpenIM, to the nohup background operation, to the system system process, and then to Supervisord, container management, and kubernetes health detection. Current issues Read: https://github.com/cubxxw/Open-IM-Server/blob/refactor/feat-enhance/scripts/install/openim-crontask.sh source code The current process management strategy before OpenIM is started in the background through nohup. The entire project is run by multiple processes, and now a reliable keep-alive mechanism is needed to quickly pull it up when the process crashes. Openim’s solution is nothing more than to write a keep-alive script that runs in the background. If a process is found to be closed, the script will pull it up, or through the docker compose health detection mechanism: ...

September 16, 2023 · 22 min · 4567 words · Xinwei Xiong, Me

Openkf Multi Architecture Image

Automate Multi-Architecture Image Build for openkf and Push to Multiple Image Repositories https://github.com/openimsdk/openkf Description: To meet the requirements of a diverse set of users, we aim to automate the process of building the openkf Docker images for various architectures and push them to multiple image repositories seamlessly. Objective: Automatically build Docker images of openkf for linux/amd64 and linux/arm64 architectures. Push the images to Docker Hub, AliYun Docker Hub, and GitHub Container Registry. Tasks: ...

September 1, 2023 · 2 min · 318 words · 熊鑫伟 (Xinwei Xiong)

Openim Remote Work Culture

Principles Ownership & Leadership When you see issues with the team or project, don’t wait or endure. Speak up immediately, propose solutions, initiate a meeting yourself, and adjust promptly. Don’t suppress your concerns! “Every team member embodies the roles of both Owner and Leader. When issues arise, be proactive in pointing them out and offering solutions. Don’t just wait or stay silent.” Initiative Everyone must take the initiative. Whether it’s about starting something or claiming a task, if you find yourself idle, proactively identify problems and areas of improvement. Innovation stems from this. If there’s no path, pave one yourself! ...

July 13, 2023 · 5 min · 1048 words · Xinwei Xiong, Me
A mechanical quality-control line inspecting and approving changes before release

Advanced Githook Design

What to do if the community is not standardized As the COO of the OpenIM community, I am responsible for the communtiy and [GitHub configuration repository](https:/ /github.com/OpenIMSDK/.github) has been fully configured. And architect and design the entire OpenIM Makefile and CICD flows, as well as the log package, error codes, collaborative flows, contributor documents and community documents used by the entire OpenIM. There will always be some problems at this time, even if you think your Contributor Document is very awesome. , very comprehensive, but still few people are willing to take the time to learn according to the specifications you wrote. This is a very big obstacle for me to build a top open source community, so I have this document today, and I will record it on GitHub Gists , provide instructions and links for pulling and using it, and maintain it regularly. ...

June 16, 2023 · 9 min · 1872 words · Xinwei Xiong, Me

Openim Offline Deployment Design

Base Images Below are the base images and their versions you’ll need: wurstmeister/kafka redis:7.0.0 mongo:6.0.2 mysql:5.7 wurstmeister/zookeeper minio/minio Use the following commands to pull these base images: docker pull wurstmeister/kafka docker pull redis:7.0.0 docker pull mongo:6.0.2 docker pull mysql:5.7 docker pull wurstmeister/zookeeper docker pull minio/minio OpenIM & Chat Images For detailed understanding of version management and storage of OpenIM and Chat: version.md OpenIM Image Get image version info: images.md Depending on the required version, execute the following command: docker pull ghcr.io/openimsdk/openim-server:<version-name> Chat Image Execute the following command to pull the image: docker pull ghcr.io/openimsdk/openim-server:<version-name> Image Storage Selection Repositories: ...

May 19, 2023 · 2 min · 263 words · Xinwei Xiong, Me

Read Openim Project Sealos Openim Source Code

Prepare I have been waiting for this article for too long. It has been about four months. I have also experienced the process of leaping from docker to Kubernetes and CloudNative ecosystem. In turn, if you understand open source, understand sealos, and understand Kubernetes, you will have a suddenly enlightened perspective. The difference between this article and other articles is that this article is written according to my current thinking. The specific why can be found in the previous articles~ ...

May 11, 2023 · 27 min · 5724 words · Xinwei Xiong, Me