O Kubernetes descobre e registra automaticamente clusters Rabbitmq por meio de plug-ins

RabbitMQ é um software de agente de mensagens de código aberto (também conhecido como middleware orientado a mensagens) que implementa o protocolo AMQP (Advanced Message Queuing Protocol)

  • Escalabilidade: serviços de cluster

  • Persistência de mensagem: persista mensagens da memória para o disco rígido e, em seguida, carregue-as do disco rígido para a memória 

 

Em nosso trabalho, costumamos usar Rabbitmq, que tem um único nó e um cluster.

Instale o RabbitMQ por meio deste Kubernetes e descubra automaticamente os clusters registrados inserindo [rabbitmq_management, rabbitmq_peer_discovery_k8s]:

RabbitMQ é implantado por meio de StatefulSet e pode ser acessado por meio de nomes de domínio para fácil processamento

 

(1) Meio Ambiente

Necessita do cluster Kubernetes

Baixe o arquivo de implantação

下载地址:https://github.com/dotbalo/k8s/tree/master/k8s-rabbitmq-cluster

 

(2) Crie um namespace

kubectl create ns public-service

Se você não usa o serviço público, precisa alterar o serviço público de todos os arquivos yaml para o seu namespace.

sed -i "s#public-service#YOUR_NAMESPACE#g" *.yaml

(3) Modifique o arquivo de configuração

在rabbitmq-configmap.yaml配置,添加这两个字段,解决密码不生效的问题
      default_pass = RABBITMQ_PASS
      default_user = RABBITMQ_USER

PV aqui usa nfs. O ambiente de teste, aqui eu criei manualmente, ou você pode usar um plug-in para criá-lo automaticamente e reciclá-lo.

[root@k8s-master01 k8s-rabbitmq-cluster]# cat rabbitmq-pv.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-rmq-1
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  volumeMode: Filesystem
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: "rmq-storage-class"
  nfs:
    # real share directory
    path: /ifs/kubernetts/rabbitmq-cluster-0
    # nfs real ip
    server: 192.168.0.109

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-rmq-2
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  volumeMode: Filesystem
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: "rmq-storage-class"
  nfs:
    # real share directory
    path: /ifs/kubernetts/rabbitmq-cluster-1
    # nfs real ip
    server: 192.168.0.109

---

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-rmq-3
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  volumeMode: Filesystem
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: "rmq-storage-class"
  nfs:
    # real share directory
    path: /ifs/kubernetts/rabbitmq-cluster-2
    # nfs real ip
    server: 192.168.0.109

(4) Crie um cluster

[root@k8s-master01 k8s-rabbitmq-cluster]# kubectl apply -f .
statefulset.apps/rmq-cluster created
configmap/rmq-cluster-config created
persistentvolume/pv-rmq-1 created
persistentvolume/pv-rmq-2 created
persistentvolume/pv-rmq-3 created
serviceaccount/rmq-cluster created
role.rbac.authorization.k8s.io/rmq-cluster created
rolebinding.rbac.authorization.k8s.io/rmq-cluster created
secret/rmq-cluster-secret created
service/rmq-cluster created
service/rmq-cluster-balancer created

Verifique o log do contêiner e mostre que isso é normal

kubectl logs -f rmq-cluster-0    -n public-service 
'/etc/rabbitmq/rabbitmq.conf' -> '/var/lib/rabbitmq/rabbitmq.conf'
2021-03-11 02:24:03.469 [info] <0.9.0> Feature flags: list of feature flags found:
2021-03-11 02:24:03.469 [info] <0.9.0> Feature flags: feature flag states written to 
。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。
2021-03-11 02:24:04.273 [info] <0.692.0> Statistics database started.
2021-03-11 02:24:04.274 [info] <0.691.0> Starting worker pool 'management_worker_pool' with 3 processes in it
 completed with 5 plugins.
2021-03-11 02:24:04.411 [info] <0.9.0> Server startup complete; 5 plugins started.
 * rabbitmq_management
 * rabbitmq_management_agent
 * rabbitmq_web_dispatch
 * rabbitmq_peer_discovery_k8s
 * rabbitmq_peer_discovery_common
2021-03-11 02:24:23.135 [info] <0.434.0> node 'rabbit@rmq-cluster-1.rmq-cluster.public-service.svc.cluster.local' up
2021-03-11 02:24:23.904 [info] <0.434.0> rabbit on node 'rabbit@rmq-cluster-1.rmq-cluster.public-service.svc.cluster.local' up
2021-03-11 02:24:44.524 [info] <0.434.0> node 'rabbit@rmq-cluster-2.rmq-cluster.public-service.svc.cluster.local' up
2021-03-11 02:24:45.477 [info] <0.434.0> rabbit on node 'rabbit@rmq-cluster-2.rmq-cluster.public-service.svc.cluster.local' up

Crie recursos da seguinte forma

[root@k8s-master01 ~]# kubectl get pod,sts,svc,ep,pv,pvc -n public-service 
NAME                READY   STATUS    RESTARTS   AGE
pod/rmq-cluster-0   1/1     Running   0          8m10s
pod/rmq-cluster-1   1/1     Running   0          7m34s
pod/rmq-cluster-2   1/1     Running   0          7m18s

NAME                           READY   AGE
statefulset.apps/rmq-cluster   3/3     8m11s

NAME                           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                          AGE
service/rmq-cluster            ClusterIP   None           <none>        5672/TCP                         8m11s
service/rmq-cluster-balancer   NodePort    10.96.58.102   <none>        15672:31824/TCP,5672:31993/TCP   8m11s

NAME                             ENDPOINTS                                                              AGE
endpoints/rmq-cluster            10.244.32.129:5672,10.244.58.225:5672,10.244.85.246:5672               8m11s
endpoints/rmq-cluster-balancer   10.244.32.129:5672,10.244.58.225:5672,10.244.85.246:5672 + 3 more...   8m11s

NAME                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                           STORAGECLASS        REASON   AGE
persistentvolume/pv-rmq-1   1Gi        RWX            Recycle          Bound    public-service/rabbitmq-storage-rmq-cluster-2   rmq-storage-class            8m11s
persistentvolume/pv-rmq-2   1Gi        RWX            Recycle          Bound    public-service/rabbitmq-storage-rmq-cluster-1   rmq-storage-class            8m11s
persistentvolume/pv-rmq-3   1Gi        RWX            Recycle          Bound    public-service/rabbitmq-storage-rmq-cluster-0   rmq-storage-class            8m11s
persistentvolume/pv0001     2Gi        RWO            Recycle          Bound    default/test-pvc2                               slow                         9d

NAME                                                   STATUS   VOLUME     CAPACITY   ACCESS MODES   STORAGECLASS        AGE
persistentvolumeclaim/rabbitmq-storage-rmq-cluster-0   Bound    pv-rmq-3   1Gi        RWX            rmq-storage-class   8m11s
persistentvolumeclaim/rabbitmq-storage-rmq-cluster-1   Bound    pv-rmq-2   1Gi        RWX            rmq-storage-class   7m34s
persistentvolumeclaim/rabbitmq-storage-rmq-cluster-2   Bound    pv-rmq-1   1Gi        RWX            rmq-storage-class   7m18s
[root@k8s-master01 ~]# 

(5) Verifique o cluster

Pode ser exposto por meio da porta nodeport de svc ou ingresso para acessar a interface de visualização rabbitmq


      default_user = RABBITMQ_USER   #账号
      default_pass = RABBITMQ_PASS   #密码

(6) Expansão e redução do cluster

Expansão, se for utilizado PV, recomenda-se verificar se PV é suficiente, caso contrário o status estará sempre pendente

kubectl scale statefulset -n public-service --replicas=4 rmq-cluster

--replicas=4   改这个值,就可以用来扩容和缩容

https://github.com/dotbalo/k8s/tree/master/k8s-rabbitmq-cluster

Acho que você gosta

Origin blog.csdn.net/heian_99/article/details/114647051
Recomendado
Clasificación