เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ‚เบญเบ‡ RabbitMQ เป„เบ› Kubernetes เปเบšเบšเบšเปเปˆเบ•เบดเบ”เบ‚เบฑเบ”

เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ‚เบญเบ‡ RabbitMQ เป„เบ› Kubernetes เปเบšเบšเบšเปเปˆเบ•เบดเบ”เบ‚เบฑเบ”

RabbitMQ เปเบกเปˆเบ™เบ™เบฒเบเบซเบ™เป‰เบฒเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ Erlang เบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบธเปˆเบกเบ—เบตเปˆเบฅเบปเป‰เบกเป€เบซเบฅเบงเบ”เป‰เบงเบเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบ•เบฑเบกเบ—เบตเปˆเปƒเบ™เบ—เบปเปˆเบงเบซเบผเบฒเบเป‚เบซเบ™เบ”, เบšเปˆเบญเบ™เบ—เบตเปˆเปเบ•เปˆเบฅเบฐ node เบชเบฒเบกเบฒเบ”เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบญเปˆเบฒเบ™เปเบฅเบฐเบ‚เบฝเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป. เบกเบตเบเบธเปˆเบก Kubernetes เบซเบผเบฒเบเบเบธเปˆเบกเปƒเบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”, เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ RabbitMQ เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเปเบฅเบฐเบ›เบฐเป€เบŠเบตเบ™เบเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบเป‰เบฒเบเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบเบธเปˆเบกเบซเบ™เบถเปˆเบ‡เป„เบ›เบซเบฒเบญเบตเบเบเบธเปˆเบกเบซเบ™เบถเปˆเบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบขเบธเบ”เป€เบงเบฅเบฒ.

เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ™เบตเป‰เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบชเบญเบ‡เบเปเบฅเบฐเบ™เบต:

  1. เบเบฒเบ™เป‚เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบเบธเปˆเบก RabbitMQ เบ—เบตเปˆเบšเปเปˆเบขเบนเปˆเปƒเบ™ Kubernetes เป„เบ›เบซเบฒเบญเบฑเบ™เปƒเปเปˆ โ€“ เปเบฅเป‰เบง โ€œkubernetizedโ€ (เป€เบŠเบฑเปˆเบ™: เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบขเบนเปˆเปƒเบ™ K8s pods) โ€“ cluster.
  2. เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ‚เบญเบ‡ RabbitMQ เบžเบฒเบเปƒเบ™ Kubernetes เบˆเบฒเบ namespace เบซเบ™เบถเปˆเบ‡เป„เบ›เบซเบฒเบญเบทเปˆเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบงเบปเบ‡เบˆเบญเบ™เบ–เบทเบ delimited เป‚เบ”เบ namespaces, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบžเบทเปˆเบญเป‚เบญเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบˆเบฒเบเบงเบปเบ‡เบˆเบญเบ™เบซเบ™เบถเปˆเบ‡เป„เบ›เบญเบตเบ).

เบชเบนเบ”เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเปเบกเปˆเบ™เป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™ (เปเบ•เปˆเบšเปเปˆเบˆเปเบฒเบเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”) เป€เบŠเบดเปˆเบ‡เบกเบตเบเบธเปˆเบก RabbitMQ เป€เบเบปเปˆเบฒ (เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™ 3 nodes), เบ—เบตเปˆเบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™ K8s เบซเบผเบทเบšเบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบเบปเปˆเบฒ. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป‚เบฎเบ”เบขเบนเปˆเปƒเบ™ Kubernetes (เบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบซเบผเบทเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”) เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบกเบฑเบ™:

เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ‚เบญเบ‡ RabbitMQ เป„เบ› Kubernetes เปเบšเบšเบšเปเปˆเบ•เบดเบ”เบ‚เบฑเบ”

... เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบ›เบฐเป€เบŠเบตเบ™เบเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบกเบฑเบ™เป„เบ›เบชเบนเปˆเบเบฒเบ™เบœเบฐเบฅเบดเบ”เปƒเบซเบกเปˆเปƒเบ™ Kubernetes.

เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”, เบงเบดเบ—เบตเบเบฒเบ™เบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบˆเบฐเบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบ, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบ.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบเป‰เบฒเบเบ–เบดเปˆเบ™เบ–เบฒเบ™

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”, เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ”เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบงเปˆเบฒเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบกเบตเบขเบนเปˆเบชเบนเบ‡เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ RabbitMQ เป€เบเบปเปˆเบฒ (HA). เป€เบซเบ”เบœเบปเบ™เปเบกเปˆเบ™เบˆเบฐเปเบˆเป‰เบ‡ - เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™เปƒเบ”เป†. เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป„เบ›เบ—เบตเปˆเปเบœเบ‡เบ„เบงเบšเบ„เบธเบก RabbitMQ เปเบฅเบฐเปƒเบ™เปเบ–เบš Admin โ†’ Policies เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒ. ha-mode: all:

เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ‚เบญเบ‡ RabbitMQ เป„เบ› Kubernetes เปเบšเบšเบšเปเปˆเบ•เบดเบ”เบ‚เบฑเบ”

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบเบปเบเบชเบนเบ‡เบเบธเปˆเบก RabbitMQ เปƒเบซเบกเปˆเปƒเบ™เบเบฑเบ Kubernetes (เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ›เบฐเบเบญเบšเบ”เป‰เบงเบ 3 nodes, เปเบ•เปˆเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบญเบฒเบ”เบˆเบฐเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™).

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบฅเบงเบกเบเบธเปˆเบก RabbitMQ เป€เบเบปเปˆเบฒเปเบฅเบฐเปƒเบซเบกเปˆ, เป„เบ”เป‰เบฎเบฑเบšเบเบธเปˆเบกเบ”เบฝเบง (เบ‚เบญเบ‡ 6 nodes):

เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ‚เบญเบ‡ RabbitMQ เป„เบ› Kubernetes เปเบšเบšเบšเปเปˆเบ•เบดเบ”เบ‚เบฑเบ”

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ synchronization เบ‚เปเป‰เบกเบนเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบธเปˆเบก RabbitMQ เป€เบเบปเปˆเบฒเปเบฅเบฐเปƒเบซเบกเปˆเปเบกเปˆเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เป€เบกเบทเปˆเบญเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ–เบทเบ synchronized เบฅเบฐเบซเบงเปˆเบฒเบ‡ nodes เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ cluster, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบฐเบซเบผเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบเบธเปˆเบกเปƒเบซเบกเปˆ:

เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ‚เบญเบ‡ RabbitMQ เป„เบ› Kubernetes เปเบšเบšเบšเปเปˆเบ•เบดเบ”เบ‚เบฑเบ”

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเป‚เบซเบ™เบ”เป€เบเบปเปˆเบฒเบญเบญเบเบˆเบฒเบเบเบธเปˆเบก RabbitMQ, เปเบฅเบฐเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบชเบฒเบกเบฒเบ”เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™:

เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ‚เบญเบ‡ RabbitMQ เป„เบ› Kubernetes เปเบšเบšเบšเปเปˆเบ•เบดเบ”เบ‚เบฑเบ”

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เบซเบผเบฒเบเบ„เบฑเป‰เบ‡เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™เบžเบฒเบเปƒเบ™เบฅเบฐเบšเบปเบšเบžเบดเป€เบชเบ”เบ—เบตเปˆเปเบˆเบเบขเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ RMQ เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปƒเบ™เบ—เบปเปˆเบงเบเบธเปˆเบก Kubernetes เบซเบผเบฒเบเบเบธเปˆเบก. (เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบขเบฒเบเบฎเบนเป‰เบขเบฒเบเป€เบซเบฑเบ™: เบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบš addon-operatorเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒ เบซเบฒเบเปเบšเบญเบเป€เบกเบทเปˆเบญเบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰). เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เบ—เบตเปˆเบ—เบธเบเบ„เบปเบ™เบชเบฒเบกเบฒเบ”เบชเบฐเบซเบกเบฑเบเบ‚เปเป€เบญเบปเบฒเปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป€เบžเบทเปˆเบญเบ—เบปเบ”เบฅเบญเบ‡เปƒเบŠเป‰เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”.

เปƒเบซเป‰เบžเบฐเบเบฒเบเบฒเบกเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”

เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™

เบฅเบฒเบโ€‹เบฅเบฐโ€‹เบญเบฝเบ”โ€‹เปเบกเปˆเบ™โ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹เบซเบผเบฒเบโ€‹:

  1. เบเบธเปˆเบก Kubernetes (minikube เบเบฑเบ‡เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบ);
  2. เบเบธเปˆเบก RabbitMQ (เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเป„เบ›เปƒเบŠเป‰เปƒเบ™เป‚เบฅเบซเบฐเป€เบ›เบปเปˆเบฒ, เปเบฅเบฐเป€เบฎเบฑเบ”เบ„เบทเบเบฑเบšเบเบธเปˆเบกเบ›เบปเบเบเบฐเบ•เบดเปƒเบ™ Kubernetes เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ Helm เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™).

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰ RMQ เบเบฑเบš Kubernetes เปเบฅเบฐเป€เบญเบตเป‰เบ™เบกเบฑเบ™ rmq-old.

เบเบฒเบ™เบเบฐเบเบฝเบกเบขเบทเบ™

1. เบ”เบฒเบงเป‚เบซเบฅเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ Helm เปเบฅเบฐเปเบเป‰เป„เบ‚เบกเบฑเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ:

helm fetch --untar stable/rabbitmq-ha

เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบ, เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเป‰เบ‡เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™, ErlangCookie เปเบฅเบฐเบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบกเบทเบญเบ‡ ha-allเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ•เบฒเบกเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบ–เบงเบˆเบฐเบ–เบทเบ synchronized เบฅเบฐเบซเบงเปˆเบฒเบ‡ nodes เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบเบธเปˆเบก RMQ:

rabbitmqPassword: guest
rabbitmqErlangCookie: mae9joopaol7aiVu3eechei2waiGa2we
definitions:
policies: |-
  {
    "name": "ha-all",
    "pattern": ".*",
    "vhost": "/",
    "definition": {
      "ha-mode": "all",
      "ha-sync-mode": "automatic",
      "ha-sync-batch-size": 81920
    }
  }

2. เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡:

helm install . --name rmq-old --namespace rmq-old

3. เป„เบ›เบ—เบตเปˆ RabbitMQ admin panel, เบชเป‰เบฒเบ‡เปเบ–เบงเปƒเบซเบกเปˆเปเบฅเบฐเป€เบžเบตเปˆเบกเบ‚เปเป‰เบ„เบงเบฒเบกเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบงเปˆเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เบ–เบทเบเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบชเบนเบ™เป€เบชเบเบซเบเบฑเบ‡:

เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ‚เบญเบ‡ RabbitMQ เป„เบ› Kubernetes เปเบšเบšเบšเปเปˆเบ•เบดเบ”เบ‚เบฑเบ”

เบšเปˆเบญเบ™เบ™เบฑเปˆเบ‡เบ—เบปเบ”เบชเบญเบšเบžเป‰เบญเบกเปเบฅเป‰เบง: เบžเบงเบเป€เบฎเบปเบฒเบกเบต RabbitMQ "เป€เบเบปเปˆเบฒ" เบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบญเบ™.

เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบเบธเปˆเบก RabbitMQ

1. เบ—เบณเบญเบดเบ”, เปƒเบซเป‰เบ™เบณเปƒเบŠเป‰ RabbitMQ เปƒเปเปˆเปƒเบ™ เป€เบžเบทเปˆเบญเบ™ namespace เบเบฑเบš เบ”เบฝเบงเบเบฑเบ™ ErlangCookie เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบตเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบ›เปˆเบฝเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเบธเบ”เบ—เป‰เบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ RMQ เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

helm install . --name rmq-new --namespace rmq-new

2. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฅเบงเบกเบเบธเปˆเบกเปƒเบซเบกเปˆเบเบฑเบšเบญเบฑเบ™เป€เบเบปเปˆเบฒ. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เป„เบ›เบซเบฒเปเบ•เปˆเบฅเบฐเบเบฑเบ เปƒเบซเบกเปˆ RabbitMQ เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡:

export OLD_RMQ=rabbit@rmq-old-rabbitmq-ha-0.rmq-old-rabbitmq-ha-discovery.rmq-old.svc.cluster.local && 
  rabbitmqctl stop_app && 
  rabbitmqctl join_cluster $OLD_RMQ && 
  rabbitmqctl start_app

เปƒเบ™เบ•เบปเบงเปเบ› OLD_RMQ เบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ nodes เปเบกเปˆเบ™เบžเบปเบšเป€เบซเบฑเบ™ เป€เบเบปเปˆเบฒ เบเบธเปˆเบก RMQ.

เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบˆเบฐเบขเบธเบ” node เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ เปƒเบซเบกเปˆ เบเบธเปˆเบก RMQ, เปเบ™เบšเบกเบฑเบ™เปƒเบชเปˆเบเบธเปˆเบกเป€เบเบปเปˆเบฒ เปเบฅเบฐเป€เบ›เบตเบ”เบกเบฑเบ™เบญเบตเบเบ„เบฑเป‰เบ‡.

3. เบเบธเปˆเบก RMQ เบ‚เบญเบ‡ 6 nodes เบžเป‰เบญเบกเปเบฅเป‰เบง:

เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ‚เบญเบ‡ RabbitMQ เป„เบ› Kubernetes เปเบšเบšเบšเปเปˆเบ•เบดเบ”เบ‚เบฑเบ”

เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบฅเปเบ–เป‰เบฒเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ‚เปเป‰เบ„เบงเบฒเบกเบ–เบทเบ synchronized เบฅเบฐเบซเบงเปˆเบฒเบ‡ nodes เบ—เบฑเบ‡เบซเบกเบปเบ”. เบกเบฑเบ™เบšเปเปˆเบเบฒเบเบ—เบตเปˆเบˆเบฐเบ„เบฒเบ”เป€เบ”เบปเบฒเบงเปˆเบฒเป€เบงเบฅเบฒ synchronization เบ‚เปเป‰เบ„เบงเบฒเบกเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ„เบงเบฒเบกเบญเบฒเบ”เบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เบฎเบฒเบ”เปเบงเบ—เบตเปˆ cluster เบ–เบทเบเบ™เปเบฒเป„เบ›เปƒเบŠเป‰เปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบ„เบงเบฒเบก. เปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบ, เบกเบตเบžเบฝเบ‡เปเบ•เปˆ 10 เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เปเป‰เบกเบนเบ™เป„เบ”เป‰เบ–เบทเบ synchronized เบ—เบฑเบ™เบ—เบต, เปเบ•เปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบžเบฝเบ‡เบžเป, synchronization เบชเบฒเบกเบฒเบ”เบขเบนเปˆเป„เบ”เป‰เบซเบผเบฒเบเบŠเบปเปˆเบงเป‚เบกเบ‡.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™ synchronization:

เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ‚เบญเบ‡ RabbitMQ เป„เบ› Kubernetes เปเบšเบšเบšเปเปˆเบ•เบดเบ”เบ‚เบฑเบ”

เบกเบฑเบ™เป€เบ›เบฑเบ™ +5 เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ‚เปเป‰เบ„เบงเบฒเบกเบขเบนเปˆเปƒเบ™เปเบฅเป‰เบง เบซเบผเบฒเบ เปƒเบ™ 5 nodes (เบเบปเบเป€เบงเบฑเป‰เบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก Node). เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, synchronization เป„เบ”เป‰เบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”.

4. เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบ—เบตเปˆเบขเบนเปˆ RMQ เปƒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป„เบ›เบซเบฒเบเบธเปˆเบกเปƒเบซเบกเปˆ (เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฐเป€เบžเบฒเบฐเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰เปเบฅเบฐเบชเบฐเป€เบžเบฒเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบญเบทเปˆเบ™เป†), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเบงเปˆเบฒ goodbye เบเบฑเบšเบญเบฑเบ™เป€เบเบปเปˆเบฒ.

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบชเบธเบ”เบ—เป‰เบฒเบ (i.e. เปเบฅเป‰เบง ะฟะพัะปะต เบชเบฐเบซเบผเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป„เบ›เป€เบ›เบฑเบ™เบเบธเปˆเบกเปƒเปเปˆ) เป„เบ›เบซเบฒเปเบ•เปˆเบฅเบฐ node เป€เบเบปเปˆเบฒ cluster เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡:

rabbitmqctl stop_app
rabbitmqctl reset

เบเบธเปˆเบก "เบฅเบทเบก" เบเปˆเบฝเบงเบเบฑเบšเบ‚เปเป‰เป€เบเบปเปˆเบฒ: เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบถเบš RMQ เป€เบเบปเปˆเบฒ, เปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™, เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบˆเบฐเบชเปเบฒเป€เบฅเบฑเบ”.

ะŸั€ะธะผะตั‡ะฐะฝะธะต: เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ RMQ เบเบฑเบšเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™ - เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบทเบเบฑเบ™.

เบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบš

เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเปเบกเปˆเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเป€เบเบทเบญเบšเบ—เบธเบเบเปเบฅเบฐเบ™เบตเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเป‰เบฒเบ RabbitMQ เบซเบผเบทเบžเบฝเบ‡เปเบ•เปˆเบเป‰เบฒเบเป„เบ›เบเบธเปˆเบกเปƒเบซเบกเปˆ.

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบžเบฝเบ‡เปเบ•เปˆเบ„เบฑเป‰เบ‡เบ”เบฝเบง, เป€เบกเบทเปˆเบญ RMQ เบ–เบทเบเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบˆเบฒเบเบซเบผเบฒเบเบšเปˆเบญเบ™, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบตเป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เบ—เบตเปˆเบขเบนเปˆ RMQ เป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆเปƒเบซเบกเปˆเบขเบนเปˆเบ—เบปเปˆเบงเบ—เบธเบเปเบซเปˆเบ‡. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบ›เบตเบ”เบ•เบปเบง RMQ เปƒเบซเบกเปˆเปƒเบ™ namespace เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ›เป‰เบฒเบเบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบ•เบปเบเบขเบนเปˆเบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเบฐ Ingresses, เปเบฅเบฐเป€เบกเบทเปˆเบญเป€เบ›เบตเบ”เบ•เบปเบงเบเบฑเบ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฑเบ”เบเบฒเบ™เบ›เป‰เบฒเบเบ”เป‰เบงเบเบกเบท, เป€เบญเบปเบฒเบžเบงเบเบกเบฑเบ™เบญเบญเบเปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบซเบผเบธเบ”เบฅเบปเบ‡. RMQ เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ, เปเบฅเบฐเป€เบžเบตเปˆเบกเบžเบงเบเบกเบฑเบ™เบ„เบทเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบ‚เปเป‰เบ„เบงเบฒเบกเบ–เบทเบ synchronized.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปƒเบŠเป‰เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบ”เบฝเบงเบเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ RabbitMQ เปƒเบซเป‰เบเบฑเบšเบฎเบธเปˆเบ™เปƒเบซเบกเปˆเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡ - เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบ„เบทเบเบฑเบšเป‚เบกเบ‡.

PS

เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบชเบทเบšเบ•เปเปˆเบขเปˆเบฒเบ‡เบกเบตเป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบเบฐเบเบฝเบกเบšเบปเบ”เบ„เบงเบฒเบกเบเปˆเบฝเบงเบเบฑเบš MongoDB (เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบฎเบฒเบ”เปเบงเป„เบ›เบซเบฒ Kubernetes) เปเบฅเบฐ MySQL (เบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเบฐเบเบฝเบก DBMS เบ™เบตเป‰เบžเบฒเบเปƒเบ™ Kubernetes). เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบˆเบฐเบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒเปƒเบ™เป€เบ”เบทเบญเบ™เบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบฒ.

PPS

เบญเปˆเบฒเบ™เบเบฑเบ‡เบขเบนเปˆเปƒเบ™ blog เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™