內容目錄
簡介
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
此命令將
ns
在ten
租戶下創建一個名稱空間:$ 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
後面操作介面
相關連結