RabbitMQ Π΅ Π±ΡΠΎΠΊΠ΅Ρ Π·Π° ΠΏΠΎΡΠ°ΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ Π²ΠΎ Erlang ΠΊΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅Ρ Π·Π° ΡΠ°Π»ΠΈΠ²Π΅Ρ ΡΠΎ ΡΠ΅Π»ΠΎΡΠ½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½ΠΈΠ· ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π·Π»ΠΈ, ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΡΠ΅ΠΊΠΎΡ ΡΠ°Π·ΠΎΠ» ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠΏΡΠ»ΡΠΆΡΠ²Π° Π±Π°ΡΠ°ΡΠ° Π·Π° ΡΠΈΡΠ°ΡΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΠ΅. ΠΠΌΠ°ΡΡΠΈ ΠΌΠ½ΠΎΠ³Ρ Kubernetes ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ°, ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π°ΠΌΠ΅ Π³ΠΎΠ»Π΅ΠΌ Π±ΡΠΎΡ Π½Π° RabbitMQ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΠΈ ΠΈ ΡΠ΅ ΡΠΎΠΎΡΠΈΠ²ΠΌΠ΅ ΡΠΎ ΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π΄Π° ΠΌΠΈΠ³ΡΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ Π΅Π΄Π΅Π½ ΠΊΠ»Π°ΡΡΠ΅Ρ Π²ΠΎ Π΄ΡΡΠ³ Π±Π΅Π· ΠΏΡΠ΅ΠΊΠΈΠ½ΠΈ.
ΠΠ²Π°Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° Π½ΠΈ ΡΡΠ΅Π±Π°ΡΠ΅ Π²ΠΎ Π½Π°ΡΠΌΠ°Π»ΠΊΡ Π΄Π²Π° ΡΠ»ΡΡΠ°ΠΈ:
- ΠΡΠ΅Π½Π΅ΡΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ΅Ρ RabbitMQ ΡΡΠΎ Π½Π΅ Π΅ Π»ΠΎΡΠΈΡΠ°Π½ Π²ΠΎ Kubernetes Π²ΠΎ Π½ΠΎΠ² - Π²Π΅ΡΠ΅ βΠΊΡΠ±Π΅ΡΠ½Π΅ΡΠΈΠ·ΠΈΡΠ°Π½β (Ρ.Π΅. ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ K8s pods) - ΠΊΠ»Π°ΡΡΠ΅Ρ.
- ΠΠΈΠ³ΡΠ°ΡΠΈΡΠ° Π½Π° RabbitMQ Π²ΠΎ Kubernetes ΠΎΠ΄ Π΅Π΄Π΅Π½ ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ Π²ΠΎ Π΄ΡΡΠ³ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΊΠΎΠ»Π°ΡΠ° ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ ΡΠΎ ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡΠΈ, ΠΏΠΎΡΠΎΠ° Π·Π° ΠΏΡΠ΅Π½ΠΎΡ Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΎΠ΄ Π΅Π΄Π½ΠΎ ΠΊΠΎΠ»ΠΎ Π²ΠΎ Π΄ΡΡΠ³ΠΎ).
Π Π΅ΡΠ΅ΠΏΡΠΎΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π²ΠΎ ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π΅ ΡΠΎΠΊΡΡΠΈΡΠ°Π½ Π½Π° ΡΠΈΡΡΠ°ΡΠΈΠΈ (Π½ΠΎ Π²ΠΎΠΎΠΏΡΡΠΎ Π½Π΅ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π½Π° Π½ΠΈΠ²) Π²ΠΎ ΠΊΠΎΠΈ ΠΏΠΎΡΡΠΎΠΈ ΡΡΠ°Ρ ΠΊΠ»Π°ΡΡΠ΅Ρ RabbitMQ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ΄ 3 ΡΠ°Π·Π»ΠΈ), Π»ΠΎΡΠΈΡΠ°Π½ ΠΈΠ»ΠΈ Π²Π΅ΡΠ΅ Π²ΠΎ K8s ΠΈΠ»ΠΈ Π½Π° Π½Π΅ΠΊΠΎΠΈ ΡΡΠ°ΡΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΈ. ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Ρ ΠΎΡΡΠΈΡΠ°Π½Π° Π½Π° Kubernetes (Π²Π΅ΡΠ΅ ΡΠ°ΠΌΡ ΠΈΠ»ΠΈ Π²ΠΎ ΠΈΠ΄Π½ΠΈΠ½Π°) ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ Π½Π΅Π°:
... ΠΈ Π½ΠΈΠ΅ ΡΠΌΠ΅ ΡΠΎΠΎΡΠ΅Π½ΠΈ ΡΠΎ Π·Π°Π΄Π°ΡΠ° Π΄Π° Π³ΠΎ ΠΏΡΠ΅ΡΡΠ»ΠΈΠΌΠ΅ Π²ΠΎ Π½ΠΎΠ²ΠΎΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ Π²ΠΎ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ.
ΠΡΠ²ΠΎ, ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ΅ ΠΎΠΏΡΡΠΈΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ ΠΊΠΎΠ½ ΡΠ°ΠΌΠ°ΡΠ° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠ°, Π° ΠΏΠΎΡΠΎΠ° ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ°Ρ ΡΠ΅Ρ Π½ΠΈΡΠΊΠΈΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ Π·Π° Π½Π΅ΡΠ·ΠΈΠ½Π°ΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°.
ΠΠ»Π³ΠΎΡΠΈΡΠ°ΠΌ Π·Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠ°
ΠΡΠ²Π°ΡΠ°, ΠΏΡΠ΅Π»ΠΈΠΌΠΈΠ½Π°ΡΠ½Π° ΡΠ°Π·Π° ΠΏΡΠ΅Π΄ Π±ΠΈΠ»ΠΎ ΠΊΠ°ΠΊΠ²Π° Π°ΠΊΡΠΈΡΠ° Π΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈ Π΄Π°Π»ΠΈ ΡΠ΅ΠΆΠΈΠΌΠΎΡ ΡΠΎ Π²ΠΈΡΠΎΠΊΠ° Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΎΡΡ Π΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π²ΠΎ ΡΡΠ°ΡΠ°ΡΠ° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ° RabbitMQ (ha-mode: all
:
Π‘Π»Π΅Π΄Π½ΠΈΠΎΡ ΡΠ΅ΠΊΠΎΡ Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅ Π½ΠΎΠ² RabbitMQ ΠΊΠ»Π°ΡΡΠ΅Ρ Π²ΠΎ Kubernetes pods (Π²ΠΎ Π½Π°ΡΠΈΠΎΡ ΡΠ»ΡΡΠ°Ρ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡ ΡΠ΅ ΡΠΎΡΡΠΎΠΈ ΠΎΠ΄ 3 ΡΠ°Π·Π»ΠΈ, Π½ΠΎ Π½ΠΈΠ²Π½ΠΈΠΎΡ Π±ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΡΠ°Π·Π»ΠΈΡΠ΅Π½).
ΠΠΎΡΠ»Π΅ ΠΎΠ²Π°, Π³ΠΈ ΡΠΏΠΎΡΡΠ²Π°ΠΌΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ ΠΈ Π½ΠΎΠ²ΠΈΡΠ΅ RabbitMQ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ, Π΄ΠΎΠ±ΠΈΠ²Π°ΡΡΠΈ Π΅Π΄Π΅Π½ ΠΊΠ»Π°ΡΡΠ΅Ρ (ΠΎΠ΄ 6 ΡΠ°Π·Π»ΠΈ):
ΠΠ°ΠΏΠΎΡΠ½Π°Ρ Π΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ ΠΈ Π½ΠΎΠ²ΠΈΡΠ΅ RabbitMQ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ. ΠΡΠΊΠ°ΠΊΠΎ ΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠ΅ ΡΠ΅ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π°Ρ ΠΏΠΎΠΌΠ΅ΡΡ ΡΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ Π²ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΡΠ° ΠΏΡΠ΅ΡΡΠ»ΠΈΠΌΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈ Π½ΠΎΠ²ΠΈΠΎΡ ΠΊΠ»Π°ΡΡΠ΅Ρ:
ΠΠΎ ΠΎΠ²ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΎΡΡΡΡΠ°Π½Π°Ρ ΡΡΠ°ΡΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ ΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ RabbitMQ ΠΈ ΠΎΠ²ΠΎΡ ΠΏΠΎΡΠ΅Π³ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΌΠ΅ΡΠ° Π·Π° Π·Π°Π²ΡΡΠ΅Π½:
ΠΠ²Π°Π° ΡΠ΅ΠΌΠ° ΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠ°ΡΠΈ Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ. Π‘Π΅ΠΏΠ°ΠΊ, Π·Π° Π½Π°ΡΠ° ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎΡΡ, Π³ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π²ΠΌΠ΅ Π²ΠΎ ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ RMQ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½ΠΈΠ· ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Kubernetes (Π·Π° ΠΎΠ½ΠΈΠ΅ ΠΊΠΎΠΈ ΡΠ΅ ΡΡΠ±ΠΎΠΏΠΈΡΠ½ΠΈ: Π·Π±ΠΎΡΡΠ²Π°ΠΌΠ΅ Π·Π°
ΠΡΠ΄Π΅ Π΄Π° ΡΠ΅ ΠΎΠ±ΠΈΠ΄Π΅ΠΌΠ΅ Π²ΠΎ ΠΏΡΠ°ΠΊΡΠ°
ΠΠ°ΡΠ°ΡΠ°
ΠΠ΅ΡΠ°Π»ΠΈΡΠ΅ ΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈ:
- ΠΠ»Π°ΡΡΠ΅ΡΠΎΡ Kubernetes (ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΠΈ minikube);
- RabbitMQ ΠΊΠ»Π°ΡΡΠ΅Ρ (ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈ Π½Π° Π³ΠΎΠ» ΠΌΠ΅ΡΠ°Π» ΠΈ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΊΠ°ΠΊΠΎ ΠΎΠ±ΠΈΡΠ΅Π½ ΠΊΠ»Π°ΡΡΠ΅Ρ Π²ΠΎ Kubernetes ΠΎΠ΄ ΠΎΡΠΈΡΠΈΡΠ°Π»Π½Π°ΡΠ° ΡΠ°Π±Π΅Π»Π° Helm).
ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΎΡ ΠΏΠΎΠ΄ΠΎΠ»Ρ, Π³ΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΠ² RMQ Π½Π° Kubernetes ΠΈ Π³ΠΎ Π½Π°ΡΠ΅ΠΊΠΎΠ² rmq-old
.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π½Π° ΡΡΠ°Π½Π΄ΠΎΡ
1. ΠΡΠ΅Π·Π΅ΠΌΠ΅ΡΠ΅ ΡΠ° ΡΠ°Π±Π΅Π»Π°ΡΠ° Π½Π° Π₯Π΅Π»ΠΌ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅ΡΠ΅ ΡΠ° ΠΌΠ°Π»ΠΊΡ:
helm fetch --untar stable/rabbitmq-ha
ΠΠ° ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎΡΡ, ΠΏΠΎΡΡΠ°Π²ΠΈΠ²ΠΌΠ΅ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ°, ErlangCookie
ΠΈ ΠΏΡΠ°Π²Π°Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ha-all
ΡΠ°ΠΊΠ° ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ ΡΠ΅Π΄ΠΈΡΠΈΡΠ΅ ΡΠ΅ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π°Ρ ΠΏΠΎΠΌΠ΅ΡΡ ΡΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ ΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ 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, ΠΊΡΠ΅ΠΈΡΠ°ΡΡΠ΅ Π½ΠΎΠ²Π° ΡΠ΅Π΄ΠΈΡΠ° ΠΈ Π΄ΠΎΠ΄Π°ΡΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΏΠΎΡΠ°ΠΊΠΈ. Π’ΠΈΠ΅ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π·Π° ΠΏΠΎ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠ°ΡΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° ΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠ΅ Π·Π°ΡΡΠ²Π°Π½ΠΈ ΠΈ Π΄Π΅ΠΊΠ° Π½Π΅ ΡΠΌΠ΅ ΠΈΠ·Π³ΡΠ±ΠΈΠ»Π΅ Π½ΠΈΡΡΠΎ:
Π’Π΅ΡΡ ΠΊΠ»ΡΠΏΠ°ΡΠ° Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½Π°: Π³ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ βΡΡΠ°ΡΠΈΠΎΡβ RabbitMQ ΡΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΠ°Ρ.
ΠΠΈΠ³ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ RabbitMQ
1. ΠΡΠ²ΠΎ, Π°ΡΠ΄Π΅ Π΄Π° Π³ΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΠΌΠ΅ Π½ΠΎΠ²ΠΈΠΎΡ RabbitMQ Π²ΠΎ ΠΏΡΠΈΡΠ°ΡΠ΅Π» ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ ΡΠΎ ΠΈΡΡΠΎ 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
ΡΠ΅ Π½Π°ΠΎΡΠ° Π°Π΄ΡΠ΅ΡΠ°ΡΠ° Π½Π° Π΅Π΄Π΅Π½ ΠΎΠ΄ ΡΠ°Π·Π»ΠΈΡΠ΅ ΡΡΠ°Ρ RMQ ΠΊΠ»Π°ΡΡΠ΅Ρ.
ΠΠ²ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΡΠ΅ Π³ΠΎ Π·Π°ΠΏΡΠ°Ρ ΡΠ΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ ΡΠ°Π·ΠΎΠ» Π½ΠΎΠ²ΠΈ RMQ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ, ΠΏΡΠΈΠΊΠ°ΡΠ΅ΡΠ΅ Π³ΠΎ Π½Π° ΡΡΠ°ΡΠΈΠΎΡ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈ ΡΡΠ°ΡΡΡΠ²Π°ΡΡΠ΅ Π³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ.
3. RMQ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ ΠΎΠ΄ 6 ΡΠ°Π·Π»ΠΈ Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½:
ΠΠΎΡΠ° Π΄Π° ΠΏΠΎΡΠ΅ΠΊΠ°ΡΠ΅ Π΄ΠΎΠ΄Π΅ΠΊΠ° ΠΏΠΎΡΠ°ΠΊΠΈΡΠ΅ ΡΠ΅ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π°Ρ ΠΏΠΎΠΌΠ΅ΡΡ ΡΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ. ΠΠ΅ Π΅ ΡΠ΅ΡΠΊΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠ³ΠΎΠ΄ΠΈ Π΄Π΅ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΠ΄ ΠΊΠ°ΠΏΠ°ΡΠΈΡΠ΅ΡΠΎΡ Π½Π° Ρ
Π°ΡΠ΄Π²Π΅ΡΠΎΡ Π½Π° ΠΊΠΎΡ Π΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄Π΅Π½ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ ΠΈ ΠΎΠ΄ Π±ΡΠΎΡΠΎΡ Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈ. ΠΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎΡΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠΎ, ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ 10 ΠΎΠ΄ Π½ΠΈΠ², ΡΠ°ΠΊΠ° ΡΡΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π±Π΅Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²Π΅Π΄Π½Π°Ρ, Π½ΠΎ ΡΠΎ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π³ΠΎΠ»Π΅ΠΌ Π±ΡΠΎΡ ΠΏΠΎΡΠ°ΠΊΠΈ, ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ°Π΅ ΡΠΎ ΡΠ°ΡΠΎΠ²ΠΈ.
ΠΠ½Π°ΡΠΈ, ΡΡΠ°ΡΡΡΠΎΡ Π½Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ°:
Π’ΡΠΊΠ° +5
Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° ΠΏΠΎΡΠ°ΠΊΠΈΡΠ΅ ΡΠ΅ Π²Π΅ΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π° 5 ΡΠ°Π·Π»ΠΈ (ΠΎΡΠ²Π΅Π½ ΠΎΠ½Π° ΡΡΠΎ Π΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Π²ΠΎ ΠΏΠΎΠ»Π΅ΡΠΎ Node
). Π’Π°ΠΊΠ°, ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ° Π±Π΅ΡΠ΅ ΡΡΠΏΠ΅ΡΠ½Π°.
4. ΠΡΡΠ°Π½ΡΠ²Π° ΡΠ°ΠΌΠΎ Π΄Π° ΡΠ° ΠΏΡΠ΅ΡΡΠ»ΠΈΡΠ΅ RMQ Π°Π΄ΡΠ΅ΡΠ°ΡΠ° Π²ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π²ΠΎ Π½ΠΎΠ²ΠΈΠΎΡ ΠΊΠ»Π°ΡΡΠ΅Ρ (ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈΡΠ΅ Π΄Π΅ΡΡΡΠ²Π° ΠΎΠ²Π΄Π΅ Π·Π°Π²ΠΈΡΠ°Ρ ΠΎΠ΄ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΡΠΊΠΈΠΎΡ ΡΡΠ΅ΠΊ ΡΡΠΎ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΈ Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°), ΠΏΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π·Π±ΠΎΠ³ΡΠ²Π°ΡΠ΅ ΡΠΎ ΡΡΠ°ΡΠ°ΡΠ°.
ΠΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° (Ρ.Π΅. Π²Π΅ΡΠ΅ ΠΏΠΎ ΠΏΡΠ΅ΡΡΠ»ΡΠ²Π°ΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π²ΠΎ Π½ΠΎΠ² ΠΊΠ»Π°ΡΡΠ΅Ρ) ΠΎΠ΄Π΅ΡΠ΅ Π½Π° ΡΠ΅ΠΊΠΎΡ ΡΠ°Π·ΠΎΠ» ΡΡΠ°Ρ Π³ΡΡΠΏΠΈΡΠ°ΡΡΠ΅ ΠΈ ΠΈΠ·Π²ΡΡΠ΅ΡΠ΅ Π³ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅:
rabbitmqctl stop_app
rabbitmqctl reset
ΠΠ»Π°ΡΡΠ΅ΡΠΎΡ βΠ·Π°Π±ΠΎΡΠ°Π²ΠΈβ Π½Π° ΡΡΠ°ΡΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ: ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·Π±ΡΠΈΡΠ΅ΡΠ΅ ΡΡΠ°ΡΠΈΠΎΡ RMQ, Π²ΠΎ ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ΅Π³ΠΎΡ ΡΠ΅ Π±ΠΈΠ΄Π΅ Π·Π°Π²ΡΡΠ΅Π½.
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌ: ΠΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ RMQ ΡΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ, ΡΠΎΠ³Π°Ρ Π½ΠΈΡΡΠΎ ΡΡΡΡΠΈΠ½ΡΠΊΠΈ Π½Π΅ ΡΠ΅ ΠΌΠ΅Π½ΡΠ²Π° - ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΠΏΠΎΠΌΠ΅ΡΡΡΠ²Π°ΡΠ΅ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ ΡΠΎΠΊΠΌΡ ΠΈΡΡΠΎ.
ΠΠ°ΠΎΠ΄ΠΈ
ΠΠΏΠΈΡΠ°Π½Π°ΡΠ° ΡΠ΅ΠΌΠ° Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π½Π° Π·Π° ΡΠΊΠΎΡΠΎ ΡΠΈΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ ΠΊΠΎΠ³Π° ΡΡΠ΅Π±Π° Π΄Π° ΠΌΠΈΠ³ΡΠΈΡΠ°ΠΌΠ΅ RabbitMQ ΠΈΠ»ΠΈ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΠ΅Π»ΠΈΠΌΠ΅ Π²ΠΎ Π½ΠΎΠ² ΠΊΠ»Π°ΡΡΠ΅Ρ.
ΠΠΎ Π½Π°ΡΠΈΠΎΡ ΡΠ»ΡΡΠ°Ρ, ΡΠ΅ΡΠΊΠΎΡΠΈΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈΡΠ° ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π°Ρ, ΠΊΠΎΠ³Π° RMQ Π±Π΅ΡΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏΠ΅Π½ΠΎ ΠΎΠ΄ ΠΌΠ½ΠΎΠ³Ρ ΠΌΠ΅ΡΡΠ° ΠΈ Π½Π΅ΠΌΠ°Π²ΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎΡΡ Π½Π°ΡΠ΅ΠΊΠ°Π΄Π΅ Π΄Π° ΡΠ° ΡΠΌΠ΅Π½ΠΈΠΌΠ΅ Π°Π΄ΡΠ΅ΡΠ°ΡΠ° RMQ Π½Π° Π½ΠΎΠ²Π°. ΠΠΎΡΠΎΠ° Π»Π°Π½ΡΠΈΡΠ°Π²ΠΌΠ΅ Π½ΠΎΠ² RMQ Π²ΠΎ ΠΈΡΡΠΈΠΎΡ ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ ΡΠΎ ΠΈΡΡΠΈΡΠ΅ Π΅ΡΠΈΠΊΠ΅ΡΠΈ Π·Π° Π΄Π° ΠΏΠ°Π΄Π½Π΅ ΠΏΠΎΠ΄ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠΈ ΠΈ Ingresses, Π° ΠΏΡΠΈ Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° pod ΡΠ°ΡΠ½ΠΎ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π²ΠΌΠ΅ ΡΠΎ Π΅ΡΠΈΠΊΠ΅ΡΠΈΡΠ΅, ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°ΡΡΠΈ Π³ΠΈ Π½Π° ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ Π·Π° Π΄Π° Π½Π΅ ΠΏΠ°ΡΠ°Π°Ρ Π±Π°ΡΠ°ΡΠ°ΡΠ° Π½Π° ΠΏΡΠ°Π·Π΅Π½ RMQ ΠΈ Π½ΠΈΠ²Π½ΠΎ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ ΠΎΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π°Ρ ΠΏΠΎΡΠ°ΠΊΠΈΡΠ΅.
ΠΠ° ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅ ΠΈΡΡΠ°ΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ° ΠΊΠΎΠ³Π° Π³ΠΎ Π°ΠΆΡΡΠΈΡΠ°Π²ΠΌΠ΅ RabbitMQ Π½Π° Π½ΠΎΠ²Π° Π²Π΅ΡΠ·ΠΈΡΠ° ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° - ΡΓ¨ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠΎ ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊ.
PS
ΠΠ°ΠΊΠΎ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ²ΠΎΡ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π», ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΡΠ²Π°ΠΌΠ΅ ΡΡΠ°ΡΠΈΠΈ Π·Π° MongoDB (ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠ° ΠΎΠ΄ Ρ Π°ΡΠ΄Π²Π΅ΡΡΠΊΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π²ΠΎ Kubernetes) ΠΈ MySQL (ΠΊΠ°ΠΊΠΎ Π³ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΡΠ²Π°ΠΌΠ΅ ΠΎΠ²ΠΎΡ DBMS Π²Π½Π°ΡΡΠ΅ Π²ΠΎ Kubernetes). Π’ΠΈΠ΅ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ ΠΎΠ±ΡΠ°Π²Π΅Π½ΠΈ Π²ΠΎ Π½Π°ΡΠ΅Π΄Π½ΠΈΡΠ΅ ΠΌΠ΅ΡΠ΅ΡΠΈ.
PPS
ΠΡΠΎΡΠΈΡΠ°ΡΡΠ΅ ΠΈ Π½Π° Π½Π°ΡΠΈΠΎΡ Π±Π»ΠΎΠ³:
- Β«
ΠΠ°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈ Kubernetes (ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ°Ρ) "; - Β«
Π‘ΠΎΠ²Π΅ΡΠΈ ΠΈ ΡΡΠΈΠΊΠΎΠ²ΠΈ Π·Π° K8s: ΠΠ°Π±ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΠ΄ΠΈΠ³Π°ΡΠ΅ΡΠΎ Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ".
ΠΠ·Π²ΠΎΡ: www.habr.com