簡介

What is Pulsar "Pulsar is a distributed pub-sub messaging platform with a very flexible messaging model and an intuitive client API."

Pulsar是pub-sub模式的分散式訊息平臺,擁有靈活的訊息模型和直觀的客戶端API。由雅虎開發並開源的下一代訊息系統,目前是Apache軟體基金會的孵化器專案。

部署ZooKeeper

下載官網的版本Source 下載並解壓縮
apache-pulsar-2.4.2-src.tar
 
cd /Users/tony.wu/ace/k8s-test/apache-pulsar-2.4.2/deployment/kubernetes/google-kubernetes-engine/
kubectl apply -f zookeeper.yaml
等待直到所有三個ZooKeeper服務器都已啟動並且狀態Running。您可以隨時檢查ZooKeeper的狀態:
 
$ kubectl get pods -l component=zookeeper
NAME READY STATUS RESTARTS AGE
zk-0 1/1 Running 0 18m
zk-1 1/1 Running 0 17m
zk-2 0/1 Running 6 15m

初始化集群

kubectl apply -f cluster-metadata.yaml
建立集群所執行的指令pulsar-gke為集群名稱
 
$ bin/pulsar initialize-cluster-metadata \
  --cluster pulsar-gke \
  --zookeeper zookeeper \
  --configuration-store zookeeper \
  --web-service-url http://broker.default.svc.cluster.local:8080/ \
  --broker-service-url pulsar://broker.default.svc.cluster.local:6650/

部署其餘組件

$ kubectl apply -f bookie.yaml
$ kubectl apply -f broker.yaml
$ kubectl apply -f proxy.yaml
$ kubectl apply -f monitoring.yaml
$ kubectl apply -f admin.yaml
使用kubectl以下命令檢查這些組件的容器的狀態
$ kubectl get pods -w -l app=pulsar

使用k9s查看相關組件是否都有正常執行

設置屬性和名稱空間

您可以使用pulsar-admin已經配置為用作新創建的Pulsar集群的管理客戶端pod 來創建屬性和名稱空間(並執行其他管理任務)執行管理任務的一種簡單方法是為pulsar-admin安裝在管理窗格上的工具創建別名
 
$ alias pulsar-admin='kubectl exec pulsar-admin -it -- bin/pulsar-admin'
此命令將創建一個名為ten的用戶
 
$ pulsar-admin tenants create ten \
  --admin-roles admin \
  --allowed-clusters pulsar-gke
此命令將nsten租戶創建一個名稱空間
 
$ pulsar-admin namespaces create ten/ns
驗證一切是否按計劃進行:
 
$ pulsar-admin tenants list
public
ten
$ pulsar-admin namespaces list ten
ten/ns

測驗您的集群

創建一個別名以pulsar-perf通過管理使用該工具:

$ alias pulsar-perf='kubectl exec pulsar-admin -it -- bin/pulsar-perf'
產生訊息
$ pulsar-perf produce persistent://public/default/my-topic \ --rate 10000
 
同樣,您可以啟動使用者來訂閱和接收有關該主題的所有消息:
$ pulsar-perf consume persistent://public/default/my-topic \ --subscriber-name my-subscription-name
您還可以使用以下工具查看該主題的統計信息pulsar-admin:
$ pulsar-admin persistent stats persistent://public/default/my-topic
開啟監控

Grafana

$ kubectl port-forward $(kubectl get pods -l component=grafana -o jsonpath='{.items[*].metadata.name}') 3000

Pulsar dashboard

$ kubectl port-forward $(kubectl get pods -l component=dashboard -o jsonpath='{.items[*].metadata.name}') 8080:80

OR

$ kubectl port-forward pulsar-dashboard-7d8984c8d-xq4xb 8080:80

客戶端連接

一旦您的Pulsar集群在Kubernetes上運行,您就可以使用Pulsar客戶端連接到它。您可以使用kubectl來獲取在Kubernetes集群中運行的Pulsar代理的IP地址:
$ kubectl get service broker-proxy  --output=jsonpath='{.status.loadBalancer.ingress[*].ip}'
官網設定檔要注意的地方
 
cluster-metadata.yaml  建立cluster名稱要mapping

bookie.yaml  storageclass要選對區或是直接註解(storageClassName不定義 預設是ssd)

或是直接把volumeClaimTemplates區塊StorageClassName那行註解就不會吃上面定義的StorageClass
 
monitoring.yaml
這行沒有定義StorageClass跑了會出錯 所以要把它註解

dashboard的問題 要用2.4.1(全部的yaml都要改)就不會有問題(指定版本)

有人反應退版到2.3.0就沒問題或是直接指定2.4.1也是可以
 

管理介面安裝

Pulsar dashboard不推薦使用
Pulsar Manager 可以改用這個
 
docker版執行
docker run -it -p 9527:9527 -e REDIRECT_HOST=http://x.x.x.x -e REDIRECT_PORT=9527 -e DRIVER_CLASS_NAME=org.postgresql.Driver -e URL='jdbc:postgresql://127.0.0.1:5432/pulsar_manager' -e USERNAME=pulsar -e PASSWORD=pulsar -e LOG_LEVEL=DEBUG -v $PWD:/data apachepulsar/pulsar-manager:v0.1.0

k8s版本 vi manager.yaml

apiVersion: apps/v1beta1
kind: Deployment
metadata:
    name: pulsar-manager
spec:
    replicas: 1
    template:
        metadata:
            labels:
                app: pulsar
                component: manager
        spec:
            containers:
              - name: pulsar-manager
                image: apachepulsar/pulsar-manager:v0.1.0
                ports:
                  - name: frontend
                    containerPort: 9527
                  - name: backend
                    containerPort: 7750
                volumeMounts:
                  - name: pulsar-manager-data
                    mountPath: /data
                resources:
                  requests:
                    memory: 250Mi
                    cpu: 100m
                securityContext:
                  runAsUser: 0
                env:
                - name: USERNAME
                  value: "pulsar"
                - name: PASSWORD
                  value: "pulsar"
                - name: REDIRECT_HOST
                  value: "127.0.0.1"
                - name: REDIRECT_PORT
                  value: "9527"
                - name: DRIVER_CLASS_NAME
                  value: "org.postgresql.Driver"
                - name: LOG_LEVEL
                  value: "DEBUG"
                - name: URL
                  value: 'jdbc:postgresql://127.0.0.1:5432/pulsar_manager'
            volumes:
              - name: pulsar-manager-data
                emptyDir: {}

kubectl apply -f manager.yaml

http://127.0.0.1:9527
帳密 pulsar / pulsar

填入broker-proxy的ip
local
http://x.x.x.x:8080

後面操作介面

 
相關連結
 

By tony

自由軟體愛好者~喜歡不斷的思考各種問題,有新的事物都會想去學習嘗試 做實驗並熱衷研究 沒有所謂頂天的技術 只有謙虛及不斷的學習 精進專業,本站主要以分享系統及網路相關知識、資源而建立。 Github http://stnet253.github.io

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料