Κοινή χρήση τεχνολογίας

[Εγκατάσταση rabbitmq σε k8s] Εγκαταστήστε το rabbitmq και δημιουργήστε ένα σύμπλεγμα καθρέφτη στην έκδοση k8s - pvc

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Εισαγωγή

Το σύμπλεγμα rabbitmq που έχει δημιουργηθεί σε αυτό το άρθρο έχει δημιουργηθεί με τη μορφή rabbitmq_peer_discovery_k8s Το πρόσθετο διαβάζει αυτόματα πληροφορίες κόμβου από το k8s και δημιουργεί το σύμπλεγμα rabbitmq. Η μέθοδος κατασκευής είναι ένα σύνολο κατάστασης και τρία αντίγραφα. Η εμμονή μπορεί να έχει τη μορφή συγγένειας διαδρομής κεντρικού υπολογιστή + κόμβου ή μπορεί να έχει τη μορφή pvc Αυτό το άρθρο θα περιγράψει τη χρήση του pvc για τη διατήρηση δεδομένων.

1. Περιγραφή συνθηκών και περιβάλλοντος

Η έκδοση k8s k8s-1.29.4 έχει δημιουργηθεί με τη μορφή κοινόχρηστου χώρου αποθήκευσης. αποθήκευσης δίσκου, nas ή αντικειμένου, το μειονέκτημα της χρήσης κοινόχρηστης αποθήκευσης είναι το κοινό πρόβλημα της κακής απόδοσης ανάγνωσης και εγγραφής.

4.2 Δημιουργία διαμόρφωσης configmap

Αποθηκεύστε την ακόλουθη διαμόρφωση στο autotest-rabbitmq-config.yaml, διαμορφώστε τον προεπιλεγμένο κωδικό πρόσβασης vhost και χρήστη στη διαμόρφωση και αρχικοποιήστε τις πληροφορίες του κόμβου συμπλέγματος [σχεδιάστε το όνομα κόμβου πριν από την εγκατάσταση].

apiVersion: v1
kind: ConfigMap
metadata:
  name: autozx-rabbitmq-config
  namespace: zx-app
  labels:
    appname: pcauto-zx
    app: autozx-rabbitmq-config 
data:
  enabled_plugins: |
    [rabbitmq_management,rabbitmq_peer_discovery_k8s].
  rabbitmq.conf: |
    cluster_name = autozx-rabbitmq
    listeners.tcp.default = 5672
    
    default_vhost = /
    default_user = admin
    default_pass = pconline

    default_user_tags.administrator = true
    default_user_tags.management = true
    default_user_tags.custom_tag = true

    channel_max = 1024
    tcp_listen_options.backlog = 2048

    cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s
    cluster_formation.k8s.host = kubernetes.default.svc.cluster.local
    cluster_formation.k8s.address_type = hostname
    cluster_formation.node_cleanup.interval = 30
    cluster_formation.node_cleanup.only_log_warning = true

    cluster_partition_handling = autoheal

    queue_master_locator=min-masters
    loopback_users.guest = false
    cluster_formation.k8s.hostname_suffix = .autozx-rabbitmq.zx-app.svc.cluster.local
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
4.3 Δημιουργήστε διαμορφώσεις statefulset και service

Πάρτε 3 αντίγραφα

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: autozx-rabbitmq 
  namespace: zx-app 
  labels:
    appname: pcauto-zx
    app: autozx-rabbitmq
spec:
  serviceName: "autozx-rabbitmq"
  replicas: 3
  selector:
    matchLabels:
      app: autozx-rabbitmq
  template:
    metadata:
      labels:
        app: autozx-rabbitmq
    spec:
      containers:
      - name: rabbitmq-server
        image: pcgroup-registry-vpc.cn-shenzhen.cr.aliyuncs.com/public/rabbitmq:3.12.14-management 
        imagePullPolicy: IfNotPresent
        env:
        - name: RABBITMQ_ERLANG_COOKIE
          value: "YZSDHWMFSMKEMBDHSGGZ"
        - name: K8S_SERVICE_NAME
          value: autozx-rabbitmq 
        - name: POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: RABBITMQ_USE_LONGNAME
          value: "true"
        - name: RABBITMQ_NODENAME
          value: rabbit@$(POD_NAME).$(K8S_SERVICE_NAME).$(POD_NAMESPACE).svc.cluster.local
        ports:
        - name: http
          containerPort: 15672 
        - name: amqp
          containerPort: 5672 
        readinessProbe:
          exec:
            command:
            - rabbitmq-diagnostics
            - status
          initialDelaySeconds: 20
          periodSeconds: 60
          timeoutSeconds: 10
        volumeMounts:
        - name: rbmq-data
          mountPath: /var/lib/rabbitmq
        - name: rabbitmq-config-volume
          mountPath: /etc/rabbitmq/ 
      restartPolicy: Always 
      serviceAccountName: rabbitmq-cluster
      terminationGracePeriodSeconds: 30
      volumes:
        - name: rabbitmq-config-volume
          configMap:
            name: autozx-rabbitmq-config
  volumeClaimTemplates:
  - metadata:
      name: rbmq-data
    spec:
      accessModes:
      - ReadWriteMany
      storageClassName: example-storageclass
      resources:
        requests:
          storage: 20Gi
---
apiVersion: v1
kind: Service
metadata:
  name: autozx-rabbitmq
  namespace: zx-app
  labels:
    appname: pcauto-zx
    app: autozx-rabbitmq
spec:
  ports:
  - port: 5672
  clusterIP: None
  selector:
    app: autozx-rabbitmq
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94

Σημείωση: Εάν θέλετε να αποφύγετε την ανάθεση του ίδιου pod στον ίδιο κόμβο, μπορείτε να προσθέσετε την ακόλουθη διαμόρφωση:

      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"
                    operator: In
                    values:
                      - autozx-rabbitmq
              topologyKey: "kubernetes.io/hostname"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
4.4 Διαμόρφωση εξουσιοδότησης

Διαμορφώστε το serviceAccount, το ρόλο και το RoleBinding για να εξουσιοδοτήσετε το statefulset να διαβάζει πληροφορίες κόμβου

apiVersion: v1
kind: Service
metadata:
  name: autozx-rabbitmq-manage
  namespace: zx-app
  labels:
    app: autozx-rabbitmq-manage
    appname: pcauto-zx
spec:
  ports:
  - port: 5672
    name: amqp
  - port: 15672
    name: http
  selector:
    app: autozx-rabbitmq
  type: LoadBalancer 
[root@autobbs-docker-240-213 rabbitmq]# cat rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: rabbitmq-cluster
  namespace: zx-app
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rabbitmq-cluster
  namespace: zx-app
rules:
- apiGroups: [""]
  resources: ["endpoints"]
  verbs: ["get"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rabbitmq-cluster
  namespace: zx-app
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: rabbitmq-cluster
subjects:
- kind: ServiceAccount
  name: rabbitmq-cluster
  namespace: zx-app
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
4.5 Δημιουργία διαμόρφωσης υπηρεσίας

Διαμορφώστε μια υπηρεσία διακομιστή μεσολάβησης για τη θύρα amqp 5672 και τη θύρα διαχείρισης 15672.

apiVersion: v1
kind: Service
metadata:
  name: autozx-rabbitmq-manage
  namespace: zx-app
  labels:
    app: autozx-rabbitmq-manage
    appname: pcauto-zx
spec:
  ports:
  - port: 5672
    name: amqp
  - port: 15672
    name: http
  selector:
    app: autozx-rabbitmq
  type: LoadBalancer 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

5. Διαμόρφωση μετά την εγκατάσταση

Ρυθμίστε το σύμπλεγμα rabbitmq σε ένα σύμπλεγμα καθρέφτη 3 κόμβων Αφού ολοκληρώσετε το βήμα 4.4, μπορείτε να συνδεθείτε στην κονσόλα μέσω της IP του εξισορροπητή: http://ip:15672 και να χρησιμοποιήσετε το σύνολο default_user και default_pass στο configmap. Σύνδεση.
Εισαγάγετε την περιγραφή της εικόνας εδώ

Ρυθμίσεις λειτουργίας καθρέφτη:
Εισαγάγετε την περιγραφή της εικόνας εδώ

Μετά τη ρύθμιση:
Εισαγάγετε την περιγραφή της εικόνας εδώ
Εισαγάγετε την περιγραφή της εικόνας εδώ

Η λειτουργία κατοπτρισμού μπορεί να οριστεί με την εντολή:
Ορίστε την εντολή εκτέλεσης εικόνας του demo vhost:
rabbitmqctl set_policy -p demo ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
Ορισμός λειτουργίας κατοπτρισμού για προεπιλεγμένο vhost/:
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'

6. Οδηγίες εγκατάστασης

  • Πριν χρησιμοποιήσετε τη διαμόρφωση, αντικαταστήστε το autozx στη διαμόρφωση με το όνομα που χρειάζεστε. να διαγραφεί.
  • Η διεύθυνση καθρέφτη στη διαμόρφωση χρησιμοποιεί μια ιδιωτική διεύθυνση καθρέφτη -η διαχείριση μπορεί να χρησιμοποιηθεί άμεσα. Διαφορετικά, διαμορφώστε μια βατή διεύθυνση καθρέφτη.
  • Το προεπιλεγμένο όνομα χρήστη και κωδικός πρόσβασης είναι admin.
  • Η κλάση αποθήκευσης στο πρότυπο pvc: example-storageclass τροποποιείται στη δική σας κατηγορία αποθήκευσης
  • "5. Διαμόρφωση μετά την εγκατάσταση" Επειδή οι μέθοδοι διαμόρφωσης είναι οι ίδιες, χρησιμοποιείται το στιγμιότυπο οθόνης στο προηγούμενο άρθρο.