如何透過kubernetes-部署RabbitMQ
RabbitMQ是實現了高階訊息佇列協議(AMQP)的開源訊息代理軟體(亦稱面向訊息的中介軟體)。RabbitMQ伺服器是用Erlang語言編寫的,而叢集和故障轉移是構建在開放電信平臺框架上的。AMQP:Advanced Message Queue,高階訊息佇列協議。它是應用層協議的一個開放標準,為面向訊息的中介軟體設計,基於此協議的客戶端與訊息中介軟體可傳遞訊息,並不受產品、開發語言燈條件的限制。 |
可靠性(Reliablity):使用了一些機制來保證可靠性,比如持久化、傳輸確認、釋出確認。
靈活的路由(Flexible Routing):在訊息進入佇列之前,透過Exchange來路由訊息。對於典型的路由功能,Rabbit已經提供了一些內建的Exchange來實現。針對更復雜的路由功能,可以將多個Exchange繫結在一起,也透過外掛機制實現自己的Exchange。
訊息叢集(Clustering):多個RabbitMQ伺服器可以組成一個叢集,形成一個邏輯Broker。
高可用(Highly Avaliable Queues):佇列可以在叢集中的機器上進行映象,使得在部分節點出問題的情況下佇列仍然可用。
多種協議(Multi-protocol):支援多種訊息佇列協議,如STOMP、MQTT等。
多種語言客戶端(Many Clients):幾乎支援所有常用語言,比如Java、.NET、Ruby等。
管理介面(Management UI):提供了易用的使用者介面,使得使用者可以監控和管理訊息Broker的許多方面。
跟蹤機制(Tracing):如果訊息異常,RabbitMQ提供了訊息的跟蹤機制,使用者可以找出發生了什麼。
外掛機制(Plugin System):提供了許多外掛,來從多方面進行擴充套件,也可以編輯自己的外掛。
RabbitMQ中的訊息都只能儲存在Queue中,生產者(下圖中的P)生產訊息並最終投遞到Queue中,消費者(下圖中的C)可以從Queue中獲取訊息並消費。
下面是RabbitMQ部署的定義程式碼,此程式碼由兩部分組成,即RabbitMQ部署的部署以及其代理服務。映象使用的是bitnami/rabbitmq:latest。透過NodePort模式對外暴露了15672和5672埠,並透過nfs檔案系統對RabbitMQ的資料進行持久化。
#-------------定義RabbitMQ部署----------------- apiVersion: apps/v1beta2 kind: Deployment metadata: name: rabbit spec: replicas: 1 selector: matchLabels: app: rabbit strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: labels: app: rabbit spec: containers: - image: bitnami/rabbitmq:latest imagePullPolicy: IfNotPresent name: rabbit ports: - containerPort: 15672 name: rabbit15672 protocol: TCP - containerPort: 5672 name: rabbit5672 protocol: TCP resources: {} volumeMounts: - mountPath: /bitnami name: rabbit-persistent-storage dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: rabbit-persistent-storage nfs: path: /home/nfs-share/rabbit server: 10.0.33.201 #-----------------定義rabbit的代理服務-------------- apiVersion: v1 kind: Service metadata: name: rabbit-service spec: ports: - name: rabbit15672 nodePort: 31199 port: 15672 protocol: TCP targetPort: 15672 - name: rabbit15672 nodePort: 305672 port: 5672 protocol: TCP targetPort: 5672 selector: app: rabbit type: NodePort
透過kubectl,執行下面的 在Kubernetes叢集中部署Oracle資料庫。
$ kubectl create -f rabbitmq.yaml --namespace=kube-public
在部署完成後,透過下面的 可以檢視RabbitMQ暴露的埠:
$ kubectl get svc --namespace=kube-public
在瀏覽器中輸入:,訪問部署好的RabbitMQ。在登入頁面輸入使用者名稱和密碼(此處初始user/bitnami),系統將會進入RabbitMQ的主頁。
在部署時,可以透過設定下面的環境變數來改變容器的執行時:
RABBITMQ_USERNAME: 使用者名稱,預設值為user
RABBITMQ_PASSWORD: 密碼,預設值為bitnami
RABBITMQ_HASHED_PASSWORD: 雜湊密碼
RABBITMQ_VHOST: 安裝後啟動建立的虛擬主機,預設值為 /
RABBITMQ_ERL_COOKIE: Erlang cookie用於確定不同的節點之間是否允許行互相通訊。
RABBITMQ_NODE_TYPE: 節點型別,有限制: stats, queue-ram or queue-disc。 預設值為stats
RABBITMQ_NODE_NAME: 節點名稱和主機,例如: node@hostname或node 。預設值為rabbit@localhost。
RABBITMQ_NODE_PORT_NUMBER: 節點埠,預設值為5672
RABBITMQ_CLUSTER_NODE_NAME: 叢集名稱,例如:clusternode@hostname
RABBITMQ_CLUSTER_PARTITION_HANDLING: 叢集分割槽恢復機制,預設值為: ignore
RABBITMQ_MANAGER_PORT_NUMBER: 管理埠,預設值為15672
RABBITMQ_DISK_FREE_LIMIT: Rabbitmq儲存資料的可用空間限制,當低於該值的時候,將觸發流量限制。預設值為 {mem_relative, 1.0}
RABBITMQ_ULIMIT_NOFILES: 資源限制, 開啟檔案描述符的最大數目,預設值為65536
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2738043/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何透過 Rancher 輕鬆實現多雲部署
- 透過 Helm Chart 部署 Easysearch
- kubernetes-部署Oracle資料庫步驟Oracle資料庫
- 透過skaffold快速部署微服務微服務
- Serverless Devs 的官網是如何透過 Serverless Devs 部署的Serverdev
- Docker - 透過IDEA和Dockerfile部署springbDockerIdeaSpring
- Kubernetes-應用部署問題定位和處理
- Kubernetes-基於Helm安裝部署高可用的RedisRedis
- flowable流程引擎透過模型ID部署流程模型
- 透過自定義域名 + SSL 的方式訪問 Amazon MQ for RabbitMQMQ
- 一、Windows部署RabbitMQWindowsMQ
- 小白Windows下透過Ollama部署使用本地模型Windows模型
- 在玩客雲上透過docker部署transmissionDocker
- 透過Docker Compose部署GitLab和GitLab Runner(一)DockerGitlab
- 透過部署流行 Web 框架掌握 Serverless 技術Web框架Server
- RabbitMQ系列(五)使用Docker部署RabbitMQ叢集MQDocker
- 什麼是Rabbitmq訊息佇列? (安裝Rabbitmq,透過Rabbitmq實現RPC全面瞭解,從入門到精通)MQ佇列RPC
- 如何透過 SpringBoot+RabbitMQ 保證訊息100%投遞成功並被消費?(附原始碼)Spring BootMQ原始碼
- 在玩客雲(armbian)上透過docker部署jellyfinDocker
- webapi透過docker部署到Linux的兩種方式WebAPIDockerLinux
- 如何透過DBeaver 連線 TDengine?
- 二、Linux部署RabbitMQ叢集LinuxMQ
- 一文詳解如何在 ChengYing 中透過產品線部署一鍵提升效率
- 如何透過iPaaS快速整合SAP ERP
- 如何透過SqlResultSetMapping和NamedNativeQuery生成DTO?SQLAPP
- Kubernetes-容器探測
- RabbitMQ中釋出者透過確認機制確保訊息釋出MQ
- 透過Nacos配置重新整理進行RabbitMQ消費者線上啟停MQ
- 透過ssh工具啟動VNC,Windows系統如何透過ssh工具啟動VNCVNCWindows
- 如何透過 Alt 鍵打出所有特殊字元?字元
- 如何透過ZBlogPHP啟用Gzip壓縮?PHP
- 跨境電商如何透過API選品API
- CRM系統透過特性如何選擇?
- 【Mysql】如何透過binlog恢復資料MySql
- 如何透過SQLyog分析MySQL資料庫MySql資料庫
- 在玩客雲上透過docker部署zabbix(PostgreSQL資料庫)DockerSQL資料庫
- Kubernetes-儲存卷Volume
- RabbitMQ 安裝部署與配置總結MQ