рдЖрд╡реЗрджрди рдХреЗ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рд╕рдВрдЧрдарди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреЗ рдПрдХреАрдХрд░рдг рд╕рдВрдЪрд╛рд░ рдХреЗ рддрдВрддреНрд░ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдХрд╛рдо рдЯрд┐рдХреА рд╣реБрдИ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдПрдХреАрдХрд░рдг рдЙрдЪреНрдЪ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рд╕рд╛рде, рджреЛрд╖рдкреВрд░реНрдг рд╕рд╣рд┐рд╖реНрдгреБ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдорд╛рд░реЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ, рд╣рдо рдХрд╛рдлреНрдХрд╛, рдЬреАрдЖрд░рдкреАрд╕реА рдФрд░ рд░реИрдмрд┐рдЯрдПрдордХреНрдпреВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЦрд░рдЧреЛрд╢реЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреЗ рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рдирдХреЗ рдиреЛрдбреНрд╕ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред

RabbitMQ рд╕рдВрд╕реНрдХрд░рдг 3.7 рд╕реЗ рдкрд╣рд▓реЗ, K8S рдореЗрдВ рдЗрд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХрд░рдирд╛ рдмрд╣реБрдд рд╣реА рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдХрдИ рд╣реИрдХ рдереЗ рдФрд░ рдмрд╣реБрдд рд╕реБрдВрджрд░ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдереЗред рд╕рдВрд╕реНрдХрд░рдг 3.6 рдореЗрдВ, RabbitMQ рд╕рдореБрджрд╛рдп рд╕реЗ рдПрдХ рдСрдЯреЛрдХреНрд▓реЗрд╕реНрдЯрд░ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ 3.7 рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдкреАрд░ рдбрд┐рд╕реНрдХрд╡рд░реА рдмреИрдХреЗрдВрдб рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдПред рдпрд╣ RabbitMQ рдХреА рдореВрд▓ рдбрд┐рд▓реАрд╡рд░реА рдореЗрдВ рдкреНрд▓рдЧ-рдЗрди рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╣рдо рдЕрдВрддрд┐рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╕рдВрдкреВрд░реНрдг рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ, рдЬрдмрдХрд┐ рдЬреЛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЙрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реБрдПред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ
рдкреНрд▓рдЧрдЗрди рдореЗрдВ
рдЬреАрдердм рдкрд░ рдПрдХ
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реИ , рдЬрд┐рд╕рдореЗрдВ
рдореВрд▓ рдЙрдкрдпреЛрдЧ рдХрд╛
рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ ред
рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдЗрд╕рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдареЗрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рддрд░реНрдХ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рднрдВрдбрд╛рд░рдг рдХреА рджреГрдврд╝рддрд╛ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЖрдкрд╛рддрдХрд╛рд▓реАрди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдорд╛рд░рд╛ рдХреНрд▓рд╕реНрдЯрд░ рдПрдХ рдЭреБрдВрдб рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ
рдЕрдм рд╣рдо рдЖрдкрдХреЛ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдЖрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреНрдпрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдФрд░ RabbitMQ рдХреЛ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рд╣рдореЗрдВ K8s рдореЗрдВ рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ RabbitMQ рдХреЗ рд╕рднреА рднрд╛рдЧреЛрдВ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреЗрдВрдЧреЗ рдХрд┐ рд╣рдордиреЗ K8s рдореЗрдВ рдПрдХ рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ RabbitMQ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред K8s рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдкрд░, RabbitMQ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣рдореЗрд╢рд╛ рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛ (рд╢рд╛рд╕реНрддреНрд░реАрдп рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдПрдХ рдиреЛрдб)ред рд╣рдо K8s рдореЗрдВ RabbitMQ рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдмрд╛рд╣рд░ рдЗрд╕ рдкреИрдирд▓ рдХреЛ рдПрдХреНрд╕реЗрд╕ рджреЗрдВрдЧреЗред
рдЕрдзрд┐рдХрд╛рд░ рдФрд░ рднреВрдорд┐рдХрд╛рдПрдБ:
rabbitmq_rbac.yaml--- apiVersion: v1 kind: ServiceAccount metadata: name: rabbitmq --- kind: Role apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: endpoint-reader rules: - apiGroups: [""] resources: ["endpoints"] verbs: ["get"] --- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: endpoint-reader subjects: - kind: ServiceAccount name: rabbitmq roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: endpoint-reader
RabbitMQ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд▓рд┐рдП рдЧрдП рд╣реИрдВ, рдЙрдирдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдЕрдкрдиреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ ServiceAccount рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ K8s рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рд▓рдЧрд╛рддрд╛рд░ рднрдВрдбрд╛рд░рдг:
rabbitmq_pv.yaml kind: PersistentVolume apiVersion: v1 metadata: name: rabbitmq-data-sigma labels: type: local annotations: volume.alpha.kubernetes.io/storage-class: rabbitmq-data-sigma spec: storageClassName: rabbitmq-data-sigma capacity: storage: 10Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Recycle hostPath: path: "/opt/rabbitmq-data-sigma"
рдпрд╣рд╛рдВ рд╣рдордиреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓реЗ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рднрдВрдбрд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ - hostPath (рдкреНрд░рддреНрдпреЗрдХ K8s рдиреЛрдб рдкрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдлрд╝реЛрд▓реНрдбрд░), рд▓реЗрдХрд┐рди рдЖрдк K8 рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
rabbitmq_pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: rabbitmq-data spec: storageClassName: rabbitmq-data-sigma accessModes: - ReadWriteMany resources: requests: storage: 10Gi
рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдмрдирд╛рдП рдЧрдП рд╡реЙрд▓реНрдпреВрдо рдкрд░ рд╡реЙрд▓реНрдпреВрдо рдХреНрд▓реЗрдо рдмрдирд╛рдПрдВред рдпрд╣ рджрд╛рд╡рд╛ рддрдм рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯ рдореЗрдВ рдПрдХ рд╕реНрдерд╛рдпреА рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕реЗрд╡рд╛рдПрдВ:
rabbitmq_service.yaml kind: Service apiVersion: v1 metadata: name: rabbitmq-internal labels: app: rabbitmq spec: clusterIP: None ports: - name: http protocol: TCP port: 15672 - name: amqp protocol: TCP port: 5672 selector: app: rabbitmq
рд╣рдо рдПрдХ рдЖрдВрддрд░рд┐рдХ рд╣реЗрдбрд▓реЗрд╕ рд╕реЗрд╡рд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреАрдпрд░ рдбрд┐рд╕реНрдХрд╡рд░реА рдкреНрд▓рдЧрдЗрди рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
rabbitmq_service_ext.yaml kind: Service apiVersion: v1 metadata: name: rabbitmq labels: app: rabbitmq type: LoadBalancer spec: type: NodePort ports: - name: http protocol: TCP port: 15672 targetPort: 15672 nodePort: 31673 - name: amqp protocol: TCP port: 5672 targetPort: 5672 nodePort: 30673 selector: app: rabbitmq
рд╣рдорд╛рд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП K8s рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдмреИрд▓реЗрдВрд╕рд░ рд╕реЗрд╡рд╛ рдмрдирд╛рддреЗ рд╣реИрдВред
рдЪреВрдБрдХрд┐ рд╣рдореЗрдВ K8s рдХреЗ рдмрд╛рд╣рд░ RabbitMQ рдХреНрд▓рд╕реНрдЯрд░ рддрдХ рдкрд╣реБрдБрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо NodePort рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реЛрд▓ рдХрд░рддреЗ рд╣реИрдВред RabbitMQ 3183 рдФрд░ 30673 рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдкрд░ K8s рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдХрд┐рд╕реА рднреА рдиреЛрдб рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдп рдореЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред RabbitMQ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдкреНрд░рд╢реНрдиред
K8s рдореЗрдВ NodePort рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрд╡рд╛ рдмрдирд╛рддреЗ рд╕рдордп, ClusterIP рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрд╡рд╛ рднреА рдЗрд╕реЗ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдЗрд╕рд▓рд┐рдП, K8s рдореЗрдВ рд╣рдорд╛рд░реЗ RabbitMQ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ
amqp рдкрд░ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛
: // rabbitmq: 5672рд╡рд┐рдиреНрдпрд╛рд╕:
rabbitmq_configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: rabbitmq-config data: enabled_plugins: | [rabbitmq_management,rabbitmq_peer_discovery_k8s]. rabbitmq.conf: | cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s cluster_formation.k8s.host = kubernetes.default.svc.cluster.local cluster_formation.k8s.port = 443 ### cluster_formation.k8s.address_type = ip cluster_formation.k8s.address_type = hostname cluster_formation.node_cleanup.interval = 10 cluster_formation.node_cleanup.only_log_warning = true cluster_partition_handling = autoheal queue_master_locator=min-masters cluster_formation.randomized_startup_delay_range.min = 0 cluster_formation.randomized_startup_delay_range.max = 2 cluster_formation.k8s.service_name = rabbitmq-internal cluster_formation.k8s.hostname_suffix = .rabbitmq-internal.our-namespace.svc.cluster.local
рд╣рдо RabbitMQ рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдЬрд╛рджреВред
enabled_plugins: | [rabbitmq_management,rabbitmq_peer_discovery_k8s].
рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЬреЛрдбрд╝реЗрдВред рдЕрдм рд╣рдо K8S рдореЗрдВ рдСрдЯреЛрдореИрдЯрд┐рдХ рдкреАрдпрд░ рдбрд┐рд╕реНрдХрд╡рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s
рд╣рдо рд╕рд╣рдХрд░реНрдореА рдЦреЛрдЬ рдХреЗ рдмреИрдХрдПрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред
cluster_formation.k8s.host = kubernetes.default.svc.cluster.local cluster_formation.k8s.port = 443
рдкрддрд╛ рдФрд░ рдкреЛрд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдПрдкреЗрд╕реЗрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЖрдк рд╕реАрдзреЗ рдЖрдИрдкреА-рдкрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рд╣реЛрдЧрд╛ред
рдиреЗрдорд╕реНрдкреЗрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореЗрдВ, рдПрдХ рд╕реЗрд╡рд╛ рдЖрдорддреМрд░ рдкрд░ рдирд╛рдо kubernetes рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ рдЬреЛ k8-apiserver рдХреЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИред рд╡рд┐рднрд┐рдиреНрди K8S рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ, рдиреЗрдорд╕реНрдкреЗрд╕, рд╕рд░реНрд╡рд┐рд╕ рдиреЗрдо рдФрд░ рдкреЛрд░реНрдЯ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рдкрдирд╛ рдореЗрдВ рдХреБрдЫ рдЕрд▓рдЧ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рддрджрдиреБрд╕рд╛рд░ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕ рддрдереНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╕реЗрд╡рд╛ рдкреЛрд░реНрдЯ 443 рдкрд░ рд╣реИ, рдФрд░ рдХреБрдЫ рдореЗрдВ 6443 рдкрд░ред рдпрд╣ рд╕рдордЭрдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХрд┐ RabbitMQ рдкреНрд░рд╛рд░рдВрдн рд▓реЙрдЧреНрд╕ рдореЗрдВ рдХреБрдЫ рдЧрд▓рдд рд╣реИ, рдпрд╣рд╛рдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рд╕рдордп рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд╣рд╛рдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИред
### cluster_formation.k8s.address_type = ip cluster_formation.k8s.address_type = hostname
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЙрджрд╛рд╣рд░рдг IP рдкрддреЗ рджреНрд╡рд╛рд░рд╛ RabbitMQ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдб рдХрд╛ рдкрддрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдлрд▓реА рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрд╕реЗ рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдпрд╛ рдЖрдИрдкреА рдорд┐рд▓рддрд╛ рд╣реИред рдЖрд╢реНрдЪрд░реНрдп! рдХреНрд▓рд╕реНрдЯрд░ рдкреАрдбрд╝рд╛ рдореЗрдВ рдорд░ рд░рд╣рд╛ рд╣реИред
рдкрддрд╛ рдХреЛ рд╣реЛрд╕реНрдЯрдирд╛рдо рдореЗрдВ рдмрджрд▓реЗрдВред рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯ рд╣рдореЗрдВ рдкреВрд░реЗ рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯ рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рднреАрддрд░ рд╣реЛрд╕реНрдЯрдирд╛рдо рдХреА рдЕрдкрд░рд┐рд╣рд╛рд░реНрдпрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИред
cluster_formation.node_cleanup.interval = 10 cluster_formation.node_cleanup.only_log_warning = true
рдЪреВрдВрдХрд┐ рдЬрдм рд╣рдо рдХрд┐рд╕реА рдПрдХ рдиреЛрдб рдХреЛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд╣рдо рджреБрд░реНрдЧрдо рдиреЛрдбреНрд╕ рдХреЗ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡-рд╡рд┐рд▓реЛрдкрди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЬреИрд╕реЗ рд╣реА рдиреЛрдб рдСрдирд▓рд╛рдЗрди рд▓реМрдЯрддрд╛ рд╣реИ, рд╡рд╣ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЦреЛрдП рдмрд┐рдирд╛ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдЧрд╛ред
cluster_partition_handling = autoheal
рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛрд░рдо рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдХреЗрд╡рд▓
рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝рдиреЗ рдФрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рдХрд░реАрдм рдХреНрдпрд╛ рд╣реИред
queue_master_locator=min-masters
рдирдИ рдХрддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХрд╛ рдЪрдпрди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХрдо рд╕реЗ рдХрдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдиреЛрдб рдХрд╛ рдЪрдпрди рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдХрддрд╛рд░реЗрдВ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдореЗрдВ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХреА рдЬрд╛рдПрдВрдЧреАред
cluster_formation.k8s.service_name = rabbitmq-internal
рд╣рдо рд╣реЗрдбрд▓реЗрд╕ K8s рд╕реЗрд╡рд╛ (рдкрд╣рд▓реЗ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ) рдХрд╛ рдирд╛рдо рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ RabbitMQ рдиреЛрдбреНрд╕ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░реЗрдВрдЧреЗред
cluster_formation.k8s.hostname_suffix = .rabbitmq-internal.our-namespace.svc.cluster.local
рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреАрдЬ рд╣реЛрд╕реНрдЯрдирд╛рдо рд╣реИред K8s рдЪреВрд▓реНрд╣рд╛ рдХрд╛ FQDN рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо (rabbitmq-0, rabbitmq-1) + рдкреНрд░рддреНрдпрдп (рдбреЛрдореЗрди рднрд╛рдЧ) рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╣рдо рдЗрд╕ рдкреНрд░рддреНрдпрдп рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред K8S рдореЗрдВ, рдпрд╣ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ
ред <рд╕реЗрд╡рд╛ рдХрд╛ рдирд╛рдо>ред <рдирд╛рдо рдХрд╛ рдирд╛рдо>ред Svc.cluster.lkube-dns рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреЙрдб рдХреЗ IP рдкрддреЗ рдореЗрдВ рдлрд╛рд░реНрдо rabbitmq-0.rabbitmq-internal.our-namespace.svc.cluster.local рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╣реЛрд╕реНрдЯрдирд╛рдо рджреНрд╡рд╛рд░рд╛ рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рдХреЗ рд╕рднреА рдЬрд╛рджреВ рдХреЛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред
StatefulSet RabbitMQ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди:
rabbitmq_statefulset.yaml apiVersion: apps/v1beta1 kind: StatefulSet metadata: name: rabbitmq spec: serviceName: rabbitmq-internal replicas: 3 template: metadata: labels: app: rabbitmq annotations: scheduler.alpha.kubernetes.io/affinity: > { "podAntiAffinity": { "requiredDuringSchedulingIgnoredDuringExecution": [{ "labelSelector": { "matchExpressions": [{ "key": "app", "operator": "In", "values": ["rabbitmq"] }] }, "topologyKey": "kubernetes.io/hostname" }] } } spec: serviceAccountName: rabbitmq terminationGracePeriodSeconds: 10 containers: - name: rabbitmq-k8s image: rabbitmq:3.7 volumeMounts: - name: config-volume mountPath: /etc/rabbitmq - name: rabbitmq-data mountPath: /var/lib/rabbitmq/mnesia ports: - name: http protocol: TCP containerPort: 15672 - name: amqp protocol: TCP containerPort: 5672 livenessProbe: exec: command: ["rabbitmqctl", "status"] initialDelaySeconds: 60 periodSeconds: 10 timeoutSeconds: 10 readinessProbe: exec: command: ["rabbitmqctl", "status"] initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 10 imagePullPolicy: Always env: - name: MY_POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: HOSTNAME valueFrom: fieldRef: fieldPath: metadata.name - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: RABBITMQ_USE_LONGNAME value: "true" - name: RABBITMQ_NODENAME value: "rabbit@$(HOSTNAME).rabbitmq-internal.$(NAMESPACE).svc.cluster.local" - name: K8S_SERVICE_NAME value: "rabbitmq-internal" - name: RABBITMQ_ERLANG_COOKIE value: "mycookie" volumes: - name: config-volume configMap: name: rabbitmq-config items: - key: rabbitmq.conf path: rabbitmq.conf - key: enabled_plugins path: enabled_plugins - name: rabbitmq-data persistentVolumeClaim: claimName: rabbitmq-data
рджрд░рдЕрд╕рд▓, рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯ рд╣реАред рд╣рдо рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВред
serviceName: rabbitmq-internal
рд╣рдо рд╣реЗрдбрд▓реЗрд╕ рд╕реЗрд╡рд╛ рдХрд╛ рдирд╛рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯ рдореЗрдВ рдкреЙрдбреНрд╕ рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВред
replicas: 3
рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред рд╣рдорд╛рд░реЗ рджреЗрд╢ рдореЗрдВ, рдпрд╣ K8s рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред
annotations: scheduler.alpha.kubernetes.io/affinity: > { "podAntiAffinity": { "requiredDuringSchedulingIgnoredDuringExecution": [{ "labelSelector": { "matchExpressions": [{ "key": "app", "operator": "In", "values": ["rabbitmq"] }] }, "topologyKey": "kubernetes.io/hostname" }] } }
рдЬрдм K8s рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдЧрд┐рд░рддрд╛ рд╣реИ, рддреЛ рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯ рд╕реЗрдЯ рдореЗрдВ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЙрд╕реА K8s рдиреЛрдб рдкрд░ рдХрдИ рд╣рд░реНрдЯреНрд╕ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реИ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╡реНрдпрд░реНрде рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯ рд╕реЗ рдЪреВрд▓реНрд╣рд╛ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдВрдЯреА-рдПрдлрд┐рдирд┐рдЯреА рдирд┐рдпрдо рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╣рдо рдирд┐рдпрдо рдХреЛ рдХрдард┐рди (рдЖрд╡рд╢реНрдпрдХ) рдмрдирд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкреЙрдбреНрд╕ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╕рдордп рдХреНрдпреВрдм-рд╢реЗрдбреНрдпреВрд▓рд░ рдЗрд╕реЗ рддреЛрдбрд╝ рди рд╕рдХреЗрдВред
рд╕рд╛рд░ рд╕рд░рд▓ рд╣реИ: рдпрд╣ рдЕрдиреБрд╕реВрдЪрдХ рдХреЗ рд▓рд┐рдП (рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рднреАрддрд░)
рдПрдк рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреЙрдб рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП
рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдкрд░
рдЦрд░рдЧреЛрд╢рдмрд┐рдЯ рдЯреИрдЧ ред рд╣рдо
kubernetes.io/hostname рд▓реЗрдмрд▓ рдХреЗ рдорд╛рди рд╕реЗ
рдиреЛрдбреНрд╕ рдХреЛ рдЕрд▓рдЧ рдХрд░рддреЗ
рд╣реИрдВ ред рдЕрдм, рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ K8S рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯ рдореЗрдВ рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдирдП рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдВ рддрдм рддрдХ рдирд╣реАрдВ рдмрдирд╛рдИ рдЬрд╛рдПрдВрдЧреА рдЬрдм рддрдХ рдХрд┐ рдПрдХ рдореБрдХреНрдд рдиреЛрдб рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХрдЯ рди рд╣реЛред
serviceAccountName: rabbitmq
рд╣рдо ServiceAccount рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рддрд╣рдд рд╣рдорд╛рд░реЗ рдкреЙрдб рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
image: rabbitmq:3.7
RabbitMQ рдХреА рдЫрд╡рд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдирдХ рд╣реИ рдФрд░ рдбреЙрдХрдЯрд░ рд╣рдм рд╕реЗ рд▓реА рдЧрдИ рд╣реИ, рдЗрд╕рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╢реЛрдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
- name: rabbitmq-data mountPath: /var/lib/rabbitmq/mnesia
RabbitMQ рд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдбреЗрдЯрд╛ рдХреЛ / var / lib / rabbitmq / mnesia рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдкрдирд╛ рдкрд░рд╕реЗрдВрдЯреЗрдЬ рд╡реЙрд▓реНрдпреВрдо рдХреНрд▓реЗрдо рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЪреВрд▓реНрд╣рд╛ / рдиреЛрдбреНрд╕ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреВрд░реЗ рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯ рдХреЛ рд░рд┐рд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рддреЗ рд╕рдордп, рдбреЗрдЯрд╛ (рджреЛрдиреЛрдВ рд╕рд░реНрд╡рд┐рд╕, рдЬрд┐рд╕рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓реНрдб рдХреНрд▓рд╕реНрдЯрд░ рдФрд░ рдпреВрдЬрд░ рдбреЗрдЯрд╛ рд╕рд╣рд┐рдд) рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рд╕рд╛рдЙрдВрдб рд╣реЛред рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕рдВрдкреВрд░реНрдг / var / lib / rabbitmq / рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪреЗ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЦрд░рдЧреЛрд╢ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд▓рдЧрд╛рддрд╛рд░ рднрдВрдбрд╛рд░рдг рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдмрд╣реБрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
- name: HOSTNAME valueFrom: fieldRef: fieldPath: metadata.name - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: RABBITMQ_USE_LONGNAME value: "true" - name: RABBITMQ_NODENAME value: "rabbit@$(HOSTNAME).rabbitmq-internal.$(NAMESPACE).svc.cluster.local"
рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде, рд╣рдо рдкрд╣рд▓реЗ RabbitMQ рдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ FQDN рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рд╣рдо рдЗрд╕ рдирд╛рдо рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рд╛рд░реВрдк рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп рдкрд╣рд▓реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- name: K8S_SERVICE_NAME value: "rabbitmq-internal"
рдХреНрд▓рд╕реНрдЯрд░ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд▓реЗрд╕ рд╕реЗрд╡рд╛ рдХрд╛ рдирд╛рдоред
- name: RABBITMQ_ERLANG_COOKIE value: "mycookie"
Erlang рдХреБрдХреА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕рднреА рдиреЛрдбреНрд╕ рдкрд░ рд╕рдорд╛рди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдореВрд▓реНрдп рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рднрд┐рдиреНрди рдХреБрдХреА рд╡рд╛рд▓рд╛ рдиреЛрдб рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
volumes: - name: rabbitmq-data persistentVolumeClaim: claimName: rabbitmq-data
рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдП рдЧрдП рд▓рдЧрд╛рддрд╛рд░ рд╡реЙрд▓реНрдпреВрдо рдХреНрд▓реЗрдо рд╕реЗ рдореИрдк рдХрд┐рдП рдЧрдП рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред
рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдореЗрдВ K8s рдореЗрдВ рд╕реЗрдЯрдЕрдк рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдПрдХ RabbitMQ рдХреНрд▓рд╕реНрдЯрд░ рд╣реИ, рдЬреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдХрддрд╛рд░реЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд░рдирдЯрд╛рдЗрдо рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд░реЛрдзреА рд╣реИред

рдпрджрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ, рддреЛ рдЙрд╕ рдкрд░ рдореМрдЬреВрдж рдХрддрд╛рд░реЛрдВ рдХреЛ рд╕реБрд▓рдн рд╣реЛрдирд╛ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдмрд╛рдХреА рд╕рдм рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ред рдЬреИрд╕реЗ рд╣реА рдиреЛрдб рдСрдкрд░реЗрд╢рди рдкрд░ рд▓реМрдЯрддрд╛ рд╣реИ, рдпрд╣ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЬрд┐рди рдХрддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдорд╛рд╕реНрдЯрд░ рдерд╛ рд╡рд╣ рдлрд┐рд░ рд╕реЗ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЙрдирдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ (рдпрджрд┐ рд▓рдЧрд╛рддрд╛рд░ рднрдВрдбрд╛рд░рдг рдЯреВрдЯ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ)ред рдпреЗ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдмреЛрдирд╕: HA рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ
рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рдерд╛ред рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдиреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рднреА рдбреЗрдЯрд╛ рдХрд╛ рдкреВрд░реНрдг рдорд┐рд░рд░рд┐рдВрдЧ рджреЗрдЦрд╛ред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╣рд╛рдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдб рдЪрд╛рд▓реВ рд╣реЛ, рд╕рдм рдХреБрдЫ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред рдЗрд╕ рдкрд▓ рдХрд╛ K8 рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдорд┐рдиреА рд╣рд╛рдЙ-рдЯреВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдкреВрд░реНрдг рд╣рд╛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди -> рдиреАрддрд┐рдпрд╛рдВ рдЯреИрдм рдкрд░ RabbitMQ рдбреИрд╢рдмреЛрд░реНрдб рдореЗрдВ рдПрдХ рдиреАрддрд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдирд╛рдо рдордирдорд╛рдирд╛ рд╣реИ, рдкреИрдЯрд░реНрди рдЦрд╛рд▓реА рд╣реИ (рд╕рднреА рдХрддрд╛рд░реЛрдВ), рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
рд╣рд╛-рдореЛрдб: рд╕рднреА ,
рд╣рд╛-рд╕рд┐рдВрдХ-рдореЛрдб: рд╕реНрд╡рдЪрд╛рд▓рд┐рдд ред


рдЙрд╕рдХреЗ рдмрд╛рдж, рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╕рднреА рдХрддрд╛рд░реЗрдВ рдЙрдЪреНрдЪ рдЙрдкрд▓рдмреНрдзрддрд╛ рдореЛрдб рдореЗрдВ рд╣реЛрдВрдЧреА: рдпрджрд┐ рдорд╛рд╕реНрдЯрд░ рдиреЛрдб рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ, рддреЛ рджрд╛рд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирдП рд╡рд┐рдЬрд╝рд╛рд░реНрдб рджреНрд╡рд╛рд░рд╛ рдЪреБрдирд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдХрддрд╛рд░ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕рднреА рдиреЛрдбреНрд╕ рдкрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬреЛ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдерд╛ред

RabbitMQ рдореЗрдВ HA рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВ
рдЙрдкрдпреЛрдЧреА рд╕рд╛рд╣рд┐рддреНрдп:
рдЕ рдЫрд╛!