A communication method, platform and system

By adding a Kubernetes cluster to the OpenStack cluster and utilizing load balancers and the Watch mechanism, the RabbitMQ crash issue under large-scale OpenStack nodes was resolved, achieving efficient message transmission and synchronization and improving communication performance.

CN115883563BActive Publication Date: 2026-05-26CHINA TELECOM CLOUD TECH CO LTD

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
CHINA TELECOM CLOUD TECH CO LTD
Filing Date
2022-12-30
Publication Date
2026-05-26

AI Technical Summary

Technical Problem

In an OpenStack cluster, RabbitMQ is prone to crashing when the number of nodes exceeds 300, resulting in high memory consumption, poor message transmission performance, and communication bottlenecks.

Method used

By leveraging the node load capacity of the Kubernetes cluster, and through the Informer message mechanism and synchronization with the distributed Etcd database, OpenStack and the Kubernetes cluster can coexist. The load balancer and Watch mechanism are used for message distribution and caching to improve communication performance.

Benefits of technology

It solves the bottleneck of OpenStack node expansion, improves communication performance, reduces memory consumption and message transmission latency, and achieves high availability and efficient message synchronization.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115883563B_ABST
    Figure CN115883563B_ABST
Patent Text Reader

Abstract

This application discloses a communication method, platform, and system. The method includes: establishing multiple forwarding nodes in an OpenStack cluster and adding all forwarding nodes in the OpenStack cluster to a Kubernetes cluster; the OpenStack cluster includes multiple OpenStack components, with each OpenStack component corresponding to a forwarding node; deploying a load balancer and multiple etcd databases in the Kubernetes cluster; after an OpenStack component in the OpenStack cluster publishes a message using its corresponding forwarding node, the load balancer distributes the message to the multiple etcd databases in the Kubernetes cluster; a forwarding node corresponding to another OpenStack component in the OpenStack cluster queries messages through a Watch mechanism, and upon finding a message, places it in the Indexer of the Kubernetes cluster for local caching for local application reading. The method leverages the Informer message mechanism of the Kubernetes cluster and the synchronization advantages of the distributed etcd databases to improve communication performance; and utilizes the coexistence of the Kubernetes cluster and the OpenStack cluster on the same physical machine to achieve communication between the Kubernetes cluster and the OpenStack cluster.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This invention relates to the field of communication technology, and in particular to a communication method, platform and system. Background Technology

[0002] OpenStack is a suite of open-source cloud computing management tools (or open-source projects) that primarily use pooled virtual resources to build and manage private and public clouds. It offers more than ten optional services with varying levels of development maturity. The other six core services primarily form the system's infrastructure, handling core cloud computing services, including compute, networking, storage, identity, and image services.

[0003] All internal component interactions within OpenStack modules rely on RabbitMQ. In OpenStack production environments, when the cluster size exceeds 300 nodes, RabbitMQ is very prone to problems, such as high memory consumption and frequent crashes. RabbitMQ also has poor performance when transmitting messages larger than 4MB, which can easily trigger crashes. Summary of the Invention

[0004] One objective of this application is to provide a communication method, platform, and system, the advantages of which are: leveraging the node load capacity of the Kubernetes cluster to solve the bottleneck of OpenStack node expansion; utilizing the Informer message mechanism of the Kubernetes cluster and the database synchronization advantages of distributed Etcd to improve communication performance; and utilizing the coexistence of the Kubernetes cluster and the OpenStack cluster on the same physical machine to achieve message cluster communication.

[0005] In a first aspect, embodiments of this application disclose a communication method, which includes:

[0006] Multiple forwarding nodes are established in the OpenStack cluster, and all the forwarding nodes in the OpenStack cluster are added to the k8s cluster; the OpenStack cluster includes multiple OpenStack components, and each OpenStack component corresponds one-to-one with the forwarding node.

[0007] A load balancer and multiple etcd databases are deployed in the Kubernetes cluster.

[0008] After an OpenStack component in the OpenStack cluster publishes a message using its corresponding forwarding node, the load balancer distributes the message to multiple etcd databases in the k8s cluster.

[0009] The forwarding node corresponding to another OpenStack component in the OpenStack cluster queries the message through the Watch mechanism. When the message is found, it puts the message into the Indexer of the k8s cluster for local caching so that it can be read by local applications.

[0010] In one possible implementation, establishing multiple forwarding nodes in the OpenStack cluster and adding all the forwarding nodes in the OpenStack cluster to the Kubernetes cluster includes:

[0011] This allows the OpenStack cluster and the multiple forwarding nodes to coexist on the same physical machine.

[0012] Deploy the Informer message communication interface on each of the forwarding nodes to enable the OpenStack cluster and the k8s cluster to communicate with each other.

[0013] In one possible implementation, the Kubernetes cluster also has multiple master nodes, each deployed on an independent physical machine.

[0014] In one possible implementation, each master node deploys an apiserver interface, and the load balancer distributes the messages to multiple etcd databases in the Kubernetes cluster, including:

[0015] The message is sent to one of the apiserver interfaces for authentication via the load balancer.

[0016] After successful authentication, the message is sent to the etcd database corresponding to the apiserver interface that authenticated the message;

[0017] The etcd database that receives the message synchronizes the message to other etcd databases in the Kubernetes cluster using the Raft algorithm.

[0018] In one possible implementation, the method further includes: after the message is placed in the Indexer of the k8s cluster for local caching, the forwarding node corresponding to another OpenStack component in the OpenStack cluster queries whether the message has been updated through a Watch mechanism; if so, the updated message is sent to the Indexer of the k8s cluster for local caching.

[0019] In one possible implementation, after the message is placed in the Indexer of the Kubernetes cluster for local caching, the message is received through the Informer message communication interface, or the message is placed in a work list to await receipt.

[0020] Secondly, this application discloses a communication platform, which includes an OpenStack cluster and a k8s cluster; the OpenStack cluster includes multiple OpenStack components and multiple forwarding nodes, and the OpenStack components correspond one-to-one with the forwarding nodes; all the forwarding nodes in the OpenStack cluster are added to the k8s cluster; a load balancer and multiple etcd databases are deployed in the k8s cluster;

[0021] In this process, after an OpenStack component in the OpenStack cluster publishes a message using its corresponding forwarding node, the load balancer distributes the message to multiple etcd databases in the k8s cluster.

[0022] The forwarding node corresponding to another OpenStack component in the OpenStack cluster queries the message through the Watch mechanism. When the message is found, it puts the message into the Indexer of the k8s cluster for local caching so that it can be read by local applications.

[0023] In one possible implementation, the OpenStack cluster and the multiple forwarding nodes coexist on the same physical machine; each of the forwarding nodes deploys an Informer message communication interface.

[0024] In one possible implementation, the Kubernetes cluster is deployed with multiple master nodes, each of which is deployed on an independent physical machine.

[0025] Thirdly, this application discloses a communication system, which includes a memory and a processor. The memory is used to store computer instructions, and the processor is used to invoke the computer instructions to execute the method described above.

[0026] This application utilizes the node load capacity of a Kubernetes cluster to address the bottleneck of OpenStack node expansion; leverages the Informer message mechanism and distributed Etcd database synchronization advantages of Kubernetes clusters to improve communication performance; enables communication between Kubernetes and OpenStack clusters by having them coexist on the same physical machine; and uses the advantages of Kubernetes clusters to compensate for the weaknesses of OpenStack, thus better enabling node expansion of OpenStack clusters. Attached Figure Description

[0027] To more clearly illustrate the technical solutions in the embodiments of this application, the accompanying drawings used in the description of the embodiments will be briefly introduced below. Obviously, the accompanying drawings described below are only some embodiments of this application. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort.

[0028] Figure 1 A flowchart illustrating a communication method provided in an embodiment of this application;

[0029] Figure 2 This is a schematic diagram of the structure of a communication platform provided in one embodiment of this application;

[0030] Figure 3 This is a schematic diagram of the structure of another communication platform provided in an embodiment of this application;

[0031] Figure 4 This is a schematic diagram of the structure of a communication system provided in an embodiment of this application. Detailed Implementation

[0032] The embodiments of this application will now be described with reference to the accompanying drawings.

[0033] The terms "comprising" and "having," and any variations thereof, in the specification, claims, and accompanying drawings of this application are intended to cover a non-exclusive inclusion. For example, a process, method, system, product, or apparatus that includes a series of steps or units is not limited to the steps or units listed, but may optionally include steps or units not listed, or may optionally include other steps or units inherent to such process, method, product, or apparatus.

[0034] In this document, the term "embodiment" means that a particular feature, structure, or characteristic described in connection with an embodiment may be included in at least one embodiment of this application. The appearance of this phrase in various places throughout the specification does not necessarily refer to the same embodiment, nor is it a separate or alternative embodiment mutually exclusive with other embodiments. It will be explicitly and implicitly understood by those skilled in the art that the embodiments described herein can be combined with other embodiments.

[0035] Please see Figure 1 This application provides a communication method, which includes, but is not limited to, the following steps:

[0036] S101, establish multiple forwarding nodes in the OpenStack cluster, and add all the forwarding nodes in the OpenStack cluster to the k8s cluster; the OpenStack cluster includes multiple OpenStack components, and each OpenStack component corresponds to one of the forwarding nodes.

[0037] In the embodiments provided in this application, the OpenStack cluster and the Kubernetes cluster can be deployed on the same physical machine. Since all the forwarding nodes in the OpenStack cluster join the Kubernetes cluster, OpenStack components in the OpenStack cluster can communicate with each other through the Kubernetes cluster's Informer mechanism. Specifically, when two OpenStack components in the OpenStack cluster transmit messages, one OpenStack component in the OpenStack cluster can transmit the message to the Kubernetes cluster through its corresponding forwarding node, and then use the Kubernetes cluster's Informer mechanism to transmit the message to the other OpenStack component.

[0038] S102, Deploy a load balancer and multiple etcd databases in the k8s cluster.

[0039] In the embodiments provided in this application, a load balancer is used to distribute messages. The etcd database is used for service discovery. For example, an OpenStack component in an OpenStack cluster publishes a message, which is then distributed to the etcd database via a load balancer. Another OpenStack component in the cluster can subscribe to messages in the etcd database and use a watch mechanism to detect whether the messages in the etcd database have been updated. When a message in the etcd database is updated, another OpenStack component in the cluster can retrieve the message from the etcd database.

[0040] S103, after an OpenStack component in the OpenStack cluster publishes a message using its corresponding forwarding node, the load balancer distributes the message to multiple etcd databases in the k8s cluster.

[0041] S104, the forwarding node corresponding to another OpenStack component in the OpenStack cluster queries the message through the Watch mechanism. When the message is found, it puts the message into the Indexer of the k8s cluster for local caching so that it can be read by local applications.

[0042] Please refer to the embodiments provided in this application. Figure 2 and Figure 3 Taking an OpenStack cluster consisting of a first OpenStack component (OpenStack-node1) and a second OpenStack component (OpenStack-node2) as an example, the forwarding node corresponding to the first OpenStack component and the first OpenStack component coexist on the same physical machine (k8s-worker1); the forwarding node corresponding to the second OpenStack component and the second OpenStack component coexist on the same physical machine (k8s-worker2).

[0043] The Kubernetes cluster consists of three master nodes: k8s-master1, k8s-master2, and k8s-master3.

[0044] When the first OpenStack component publishes a message, it transmits it to the load balancer via the corresponding forwarding node (k8s-informer-api). The load balancer then distributes the message to the etcd database. The etcd database that receives the message synchronizes it to other etcd databases in the Kubernetes cluster using the Raft algorithm. The forwarding node corresponding to the second OpenStack component can detect message updates in the etcd database of the Kubernetes cluster through the Watch mechanism and pulls the message into the DeltaFIFO queue of its local Informer. The second OpenStack component also places the message in the local Indexer cache, waiting for local applications to read it, thus achieving high availability of messages in the Kubernetes cluster.

[0045] In one possible implementation, establishing multiple forwarding nodes in the OpenStack cluster and adding all the forwarding nodes in the OpenStack cluster to the Kubernetes cluster includes:

[0046] This allows the OpenStack cluster and the multiple forwarding nodes to coexist on the same physical machine.

[0047] Deploy the Informer message communication interface on each of the forwarding nodes to enable the OpenStack cluster and the k8s cluster to communicate with each other.

[0048] In the embodiments provided in this application, the OpenStack cluster and multiple forwarding nodes are deployed on the same physical machine. In a large cluster environment, the load and memory consumption caused by message synchronization in the k8s cluster can be directly shared, while solving the network interconnection between the OpenStack cluster and the k8s cluster.

[0049] In the embodiments provided in this application, multiple master nodes are also deployed in the k8s cluster, and each master node is deployed on an independent physical machine.

[0050] The number of master nodes is odd. The number of master nodes can be three or five. This application does not impose a specific limit on the number of master nodes.

[0051] Multiple master nodes are deployed on independent physical machines. Since the Etcd database corresponds one-to-one with the master nodes, the performance of message synchronization of the Etcd database in a large cluster can be improved without affecting the performance of the OpenStack cluster.

[0052] In one possible implementation, each master node deploys an apiserver interface, and the load balancer distributes the messages to multiple etcd databases in the Kubernetes cluster, including:

[0053] The message is sent to one of the apiserver interfaces for authentication via the load balancer.

[0054] After successful authentication, the message is sent to the etcd database corresponding to the apiserver interface that authenticated the message;

[0055] The etcd database that receives the message synchronizes the message to other etcd databases in the Kubernetes cluster using the Raft algorithm.

[0056] In one possible implementation, after the message is placed in the Indexer of the Kubernetes cluster for local caching, the forwarding node corresponding to another OpenStack component in the OpenStack cluster queries whether the message has been updated through the Watch mechanism. If so, the updated message is sent to the Indexer of the Kubernetes cluster for local caching.

[0057] In one possible implementation, after the message is placed in the Indexer of the Kubernetes cluster for local caching, the message is received through the Informer message communication interface, or the message is placed in a work list to await receipt.

[0058] In the embodiments provided in this application, the Kubernetes cluster uses a List / Watch mechanism to selectively fetch messages subscribed to by the current node, maintaining local caches on each master node. This ensures that the local cache data remains consistent with the server without requiring any other resync mechanisms, thus reducing server performance. If a master node fails and causes the machine to restart, it is not necessary to synchronize messages from all master nodes; instead, only the messages subscribed to by the failed master node are synchronized, reducing performance loss and memory consumption caused by message synchronization.

[0059] Please see Figure 2 This application also discloses a communication platform, which includes an OpenStack cluster and a k8s cluster; the OpenStack cluster includes multiple OpenStack components and multiple forwarding nodes, and the OpenStack components correspond one-to-one with the forwarding nodes; all the forwarding nodes in the OpenStack cluster are added to the k8s cluster; a load balancer and multiple etcd databases are deployed in the k8s cluster;

[0060] In this process, after an OpenStack component in the OpenStack cluster publishes a message using its corresponding forwarding node, the load balancer distributes the message to multiple etcd databases in the k8s cluster.

[0061] The forwarding node corresponding to another OpenStack component in the OpenStack cluster queries the message through the Watch mechanism. When the message is found, it puts the message into the Indexer of the k8s cluster for local caching so that it can be read by local applications.

[0062] In one possible implementation, the OpenStack cluster and the multiple forwarding nodes coexist on the same physical machine; each of the forwarding nodes deploys an Informer message communication interface.

[0063] In one possible implementation, the Kubernetes cluster is deployed with multiple master nodes, each of which is deployed on an independent physical machine.

[0064] It should be noted that the master node also includes a node controller (controller-manager) and a scheduler. The master node receives messages published by OpenStack components through the apiserver interface, and the node controller monitors the status of the Kubernetes cluster.

[0065] In the embodiments provided in this application, the OpenStack cluster includes

[0066] For the concepts, explanations, detailed descriptions, and other steps related to the technical solutions provided in the embodiments of this application involved in this communication platform, please refer to the description of the method steps performed by the device in the foregoing method or other embodiments, which will not be repeated here.

[0067] Please see Figure 4 The communication system 100 provided in this application embodiment may include a processor 110, a memory 120, and a communication interface 130. The processor 110, the memory 120, and the communication interface 130 are connected via a bus 140. The memory 120 is used to store instructions, and the processor 110 is used to execute the instructions stored in the memory 120.

[0068] The processor 110 executes the instructions stored in the memory 120 to control the communication interface 130 to receive and send signals, thus completing the steps in the above method. The memory 120 may be integrated into the processor 110 or may be disposed separately from the processor 110.

[0069] In one possible implementation, the functionality of the communication interface 130 can be implemented using transceiver circuitry or a dedicated transceiver chip. The processor 110 can be implemented using a dedicated processing chip, processing circuitry, processor, or general-purpose chip.

[0070] In another possible implementation, the program code that implements the functions of processor 110 and communication interface 130 can be stored in memory 120, and the general-purpose processor implements the functions of processor 110 and communication interface 130 by executing the code in memory 120.

[0071] For the concepts, explanations, detailed descriptions, and other steps related to the technical solutions provided in the embodiments of this application involved in this communication system, please refer to the description of the method steps performed by the communication system in the foregoing method or other embodiments, which will not be repeated here.

[0072] The above description is merely a specific embodiment of this application, but the scope of protection of this application is not limited thereto. Any variations or substitutions that can be easily conceived by those skilled in the art within the scope of the technology disclosed in this application should be included within the scope of protection of this application. Therefore, the scope of protection of this application should be determined by the scope of the claims.

Claims

1. A communication method, characterized in that, include: Establish multiple forwarding nodes in the OpenStack cluster, and add all the forwarding nodes in the OpenStack cluster to the k8s cluster; The OpenStack cluster includes multiple OpenStack components, and each OpenStack component corresponds one-to-one with the forwarding node. A load balancer and multiple etcd databases are deployed in the Kubernetes cluster. After an OpenStack component in the OpenStack cluster publishes a message using its corresponding forwarding node, the load balancer distributes the message to multiple etcd databases in the k8s cluster. The forwarding node corresponding to another OpenStack component in the OpenStack cluster queries the message through the Watch mechanism. When the message is found, it puts the message into the Indexer of the k8s cluster for local caching so that local applications can read it. The step of establishing multiple forwarding nodes in the OpenStack cluster and adding all the forwarding nodes in the OpenStack cluster to the Kubernetes cluster includes: This allows the OpenStack cluster and the multiple forwarding nodes to coexist on the same physical machine. Deploy the Informer message communication interface on each of the forwarding nodes to enable the OpenStack cluster and the k8s cluster to communicate with each other. The Kubernetes cluster also deploys multiple master nodes, each deployed on an independent physical machine, and the etcd database corresponds one-to-one with each master node.

2. The communication method as described in claim 1, characterized in that, Each master node deploys an apiserver interface, and the load balancer distributes the messages to multiple etcd databases in the Kubernetes cluster, including: The message is sent to one of the apiserver interfaces for authentication via the load balancer. After successful authentication, the message is sent to the etcd database corresponding to the apiserver interface that authenticated the message; The etcd database that receives the message synchronizes the message to other etcd databases in the Kubernetes cluster using the Raft algorithm.

3. The communication method as described in claim 1, characterized in that, The method further includes: after the message is placed in the Indexer of the k8s cluster for local caching, the forwarding node corresponding to another OpenStack component in the OpenStack cluster queries whether the message has been updated through the Watch mechanism. If so, the updated message is sent to the Indexer of the k8s cluster for local caching.

4. The communication method as described in claim 3, characterized in that, After the message is placed in the Indexer of the Kubernetes cluster for local caching, it can be received through the Informer message communication interface, or the message can be placed in the work list to wait for it to be received.

5. A communication platform, characterized in that, This includes an OpenStack cluster and a Kubernetes cluster; the OpenStack cluster includes multiple OpenStack components and multiple forwarding nodes, with each OpenStack component corresponding to one of the forwarding nodes; all the forwarding nodes in the OpenStack cluster are added to the Kubernetes cluster; a load balancer and multiple etcd databases are deployed in the Kubernetes cluster. In this process, after an OpenStack component in the OpenStack cluster publishes a message using its corresponding forwarding node, the load balancer distributes the message to multiple etcd databases in the k8s cluster. The forwarding node corresponding to another OpenStack component in the OpenStack cluster queries the message through the Watch mechanism. When the message is found, it puts the message into the Indexer of the k8s cluster for local caching so that local applications can read it. All the forwarding nodes in the OpenStack cluster are added to the Kubernetes cluster, including: This allows the OpenStack cluster and the multiple forwarding nodes to coexist on the same physical machine. Deploy the Informer message communication interface on each of the forwarding nodes to enable the OpenStack cluster and the k8s cluster to communicate with each other. The Kubernetes cluster also deploys multiple master nodes, each deployed on an independent physical machine, and the etcd database corresponds one-to-one with each master node.

6. A communication system, characterized in that, The communication system includes a memory and a processor, the memory being used to store computer instructions, and the processor being used to invoke the computer instructions to perform the method as described in any one of claims 1-4.