Kubernetes ಗೆ RabbitMQ ನ ತಡೆರಹಿತ ವಲಸೆ

Kubernetes ಗೆ RabbitMQ ನ ತಡೆರಹಿತ ವಲಸೆ

RabbitMQ ಎಂಬುದು ಎರ್ಲಾಂಗ್‌ನಲ್ಲಿ ಬರೆಯಲಾದ ಸಂದೇಶ ಬ್ರೋಕರ್ ಆಗಿದ್ದು ಅದು ಬಹು ನೋಡ್‌ಗಳಾದ್ಯಂತ ಪೂರ್ಣ ಡೇಟಾ ಪ್ರತಿಕೃತಿಯೊಂದಿಗೆ ವಿಫಲ ಕ್ಲಸ್ಟರ್ ಅನ್ನು ಸಂಘಟಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಅಲ್ಲಿ ಪ್ರತಿ ನೋಡ್ ವಿನಂತಿಗಳನ್ನು ಓದಲು ಮತ್ತು ಬರೆಯಲು ಸೇವೆ ಸಲ್ಲಿಸಬಹುದು. ಉತ್ಪಾದನಾ ಕಾರ್ಯಾಚರಣೆಯಲ್ಲಿ ಅನೇಕ ಕುಬರ್ನೆಟ್ಸ್ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಹೊಂದಿರುವ ನಾವು ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ RabbitMQ ಸ್ಥಾಪನೆಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತೇವೆ ಮತ್ತು ಅಲಭ್ಯತೆಯಿಲ್ಲದೆ ಡೇಟಾವನ್ನು ಒಂದು ಕ್ಲಸ್ಟರ್‌ನಿಂದ ಇನ್ನೊಂದಕ್ಕೆ ಸ್ಥಳಾಂತರಿಸುವ ಅಗತ್ಯವನ್ನು ಎದುರಿಸುತ್ತಿದ್ದೇವೆ.

ನಮಗೆ ಕನಿಷ್ಠ ಎರಡು ಸಂದರ್ಭಗಳಲ್ಲಿ ಈ ಕಾರ್ಯಾಚರಣೆಯ ಅಗತ್ಯವಿದೆ:

  1. ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ ಇಲ್ಲದ RabbitMQ ಕ್ಲಸ್ಟರ್‌ನಿಂದ ಹೊಸ - ಈಗಾಗಲೇ "ಕುಬರ್ನೆಟೈಸ್ಡ್" (ಅಂದರೆ K8s ಪಾಡ್‌ಗಳಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ) - ಕ್ಲಸ್ಟರ್‌ಗೆ ಡೇಟಾವನ್ನು ವರ್ಗಾಯಿಸುವುದು.
  2. ಒಂದು ನೇಮ್‌ಸ್ಪೇಸ್‌ನಿಂದ ಇನ್ನೊಂದು ನೇಮ್‌ಸ್ಪೇಸ್‌ಗೆ ಕುಬರ್ನೆಟ್ಸ್‌ನೊಳಗೆ RabbitMQ ವಲಸೆ (ಉದಾಹರಣೆಗೆ, ಸರ್ಕ್ಯೂಟ್‌ಗಳನ್ನು ನೇಮ್‌ಸ್ಪೇಸ್‌ಗಳಿಂದ ಡಿಲಿಮಿಟ್ ಮಾಡಿದರೆ, ಮೂಲಸೌಕರ್ಯವನ್ನು ಒಂದು ಸರ್ಕ್ಯೂಟ್‌ನಿಂದ ಇನ್ನೊಂದಕ್ಕೆ ವರ್ಗಾಯಿಸಲು).

ಲೇಖನದಲ್ಲಿ ಪ್ರಸ್ತಾಪಿಸಲಾದ ಪಾಕವಿಧಾನವು ಸನ್ನಿವೇಶಗಳ ಮೇಲೆ ಕೇಂದ್ರೀಕೃತವಾಗಿದೆ (ಆದರೆ ಅವುಗಳಿಗೆ ಸೀಮಿತವಾಗಿಲ್ಲ) ಇದರಲ್ಲಿ ಹಳೆಯ RabbitMQ ಕ್ಲಸ್ಟರ್ (ಉದಾಹರಣೆಗೆ, 3 ನೋಡ್‌ಗಳು) ಈಗಾಗಲೇ K8 ಗಳಲ್ಲಿ ಅಥವಾ ಕೆಲವು ಹಳೆಯ ಸರ್ವರ್‌ಗಳಲ್ಲಿದೆ. ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ ಹೋಸ್ಟ್ ಮಾಡಲಾದ ಅಪ್ಲಿಕೇಶನ್ (ಈಗಾಗಲೇ ಅಥವಾ ಭವಿಷ್ಯದಲ್ಲಿ) ಅದರೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ:

Kubernetes ಗೆ RabbitMQ ನ ತಡೆರಹಿತ ವಲಸೆ

... ಮತ್ತು ನಾವು ಅದನ್ನು ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ ಹೊಸ ಉತ್ಪಾದನೆಗೆ ಸ್ಥಳಾಂತರಿಸುವ ಕಾರ್ಯವನ್ನು ಎದುರಿಸುತ್ತಿದ್ದೇವೆ.

ಮೊದಲನೆಯದಾಗಿ, ವಲಸೆಯ ಸಾಮಾನ್ಯ ವಿಧಾನವನ್ನು ಸ್ವತಃ ವಿವರಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಅದರ ನಂತರ ಅದರ ಅನುಷ್ಠಾನದ ತಾಂತ್ರಿಕ ವಿವರಗಳನ್ನು ವಿವರಿಸಲಾಗುತ್ತದೆ.

ವಲಸೆ ಅಲ್ಗಾರಿದಮ್

ಹಳೆಯ RabbitMQ ಅನುಸ್ಥಾಪನೆಯಲ್ಲಿ ಹೆಚ್ಚಿನ ಲಭ್ಯತೆಯ ಮೋಡ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುವುದು ಯಾವುದೇ ಕ್ರಿಯೆಯ ಮೊದಲು ಮೊದಲ, ಪ್ರಾಥಮಿಕ ಹಂತವಾಗಿದೆ (HA) ಕಾರಣ ಸ್ಪಷ್ಟವಾಗಿದೆ - ನಾವು ಯಾವುದೇ ಡೇಟಾವನ್ನು ಕಳೆದುಕೊಳ್ಳಲು ಬಯಸುವುದಿಲ್ಲ. ಈ ಪರಿಶೀಲನೆಯನ್ನು ಕೈಗೊಳ್ಳಲು, ನೀವು RabbitMQ ನಿರ್ವಾಹಕ ಫಲಕಕ್ಕೆ ಹೋಗಬಹುದು ಮತ್ತು ನಿರ್ವಾಹಕ → ನೀತಿಗಳ ಟ್ಯಾಬ್‌ನಲ್ಲಿ ಮೌಲ್ಯವನ್ನು ಹೊಂದಿಸಲಾಗಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ha-mode: all:

Kubernetes ಗೆ RabbitMQ ನ ತಡೆರಹಿತ ವಲಸೆ

ಮುಂದಿನ ಹಂತವು ಕುಬರ್ನೆಟ್ಸ್ ಪಾಡ್ಗಳಲ್ಲಿ ಹೊಸ RabbitMQ ಕ್ಲಸ್ಟರ್ ಅನ್ನು ಹೆಚ್ಚಿಸುವುದು (ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ಉದಾಹರಣೆಗೆ, 3 ನೋಡ್ಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಆದರೆ ಅವುಗಳ ಸಂಖ್ಯೆ ವಿಭಿನ್ನವಾಗಿರಬಹುದು).

ಇದರ ನಂತರ, ನಾವು ಹಳೆಯ ಮತ್ತು ಹೊಸ RabbitMQ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ವಿಲೀನಗೊಳಿಸುತ್ತೇವೆ, ಒಂದೇ ಕ್ಲಸ್ಟರ್ (6 ನೋಡ್‌ಗಳ):

Kubernetes ಗೆ RabbitMQ ನ ತಡೆರಹಿತ ವಲಸೆ

ಹಳೆಯ ಮತ್ತು ಹೊಸ RabbitMQ ಕ್ಲಸ್ಟರ್‌ಗಳ ನಡುವೆ ಡೇಟಾ ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ. ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ ನೋಡ್‌ಗಳ ನಡುವೆ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡಿದ ನಂತರ, ನಾವು ಹೊಸ ಕ್ಲಸ್ಟರ್ ಅನ್ನು ಬಳಸಲು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಬದಲಾಯಿಸಬಹುದು:

Kubernetes ಗೆ RabbitMQ ನ ತಡೆರಹಿತ ವಲಸೆ

ಈ ಕಾರ್ಯಾಚರಣೆಗಳ ನಂತರ, RabbitMQ ಕ್ಲಸ್ಟರ್‌ನಿಂದ ಹಳೆಯ ನೋಡ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಲು ಸಾಕು, ಮತ್ತು ನಡೆಸುವಿಕೆಯನ್ನು ಸಂಪೂರ್ಣವೆಂದು ಪರಿಗಣಿಸಬಹುದು:

Kubernetes ಗೆ RabbitMQ ನ ತಡೆರಹಿತ ವಲಸೆ

ಉತ್ಪಾದನೆಯಲ್ಲಿ ನಾವು ಈ ಯೋಜನೆಯನ್ನು ಹಲವು ಬಾರಿ ಬಳಸಿದ್ದೇವೆ. ಆದಾಗ್ಯೂ, ನಮ್ಮ ಸ್ವಂತ ಅನುಕೂಲಕ್ಕಾಗಿ, ಬಹು ಕುಬರ್ನೆಟ್ಸ್ ಕ್ಲಸ್ಟರ್‌ಗಳಲ್ಲಿ ಪ್ರಮಾಣಿತ RMQ ಸಂರಚನೆಗಳನ್ನು ವಿತರಿಸುವ ವಿಶೇಷ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ನಾವು ಇದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ್ದೇವೆ (ಕುತೂಹಲ ಹೊಂದಿರುವವರಿಗೆ: ನಾವು ಮಾತನಾಡುತ್ತಿದ್ದೇವೆ addon-ಆಪರೇಟರ್ನಾವು ಅದರ ಬಗ್ಗೆ ಇತ್ತೀಚೆಗೆ ಹೇಳಲಾಗಿದೆ). ಪ್ರಸ್ತಾವಿತ ಪರಿಹಾರವನ್ನು ಕ್ರಿಯೆಯಲ್ಲಿ ಪ್ರಯತ್ನಿಸಲು ಯಾರಾದರೂ ತಮ್ಮ ಸ್ಥಾಪನೆಗಳಲ್ಲಿ ಅನ್ವಯಿಸಬಹುದಾದ ವೈಯಕ್ತಿಕ ಸೂಚನೆಗಳನ್ನು ನಾವು ಕೆಳಗೆ ಪ್ರಸ್ತುತಪಡಿಸುತ್ತೇವೆ.

ಅದನ್ನು ಆಚರಣೆಯಲ್ಲಿ ಪ್ರಯತ್ನಿಸೋಣ

ಅವಶ್ಯಕತೆಗಳನ್ನು

ವಿವರಗಳು ತುಂಬಾ ಸರಳವಾಗಿದೆ:

  1. ಕುಬರ್ನೆಟ್ಸ್ ಕ್ಲಸ್ಟರ್ (ಮಿನಿಕ್ಯೂಬ್ ಸಹ ಕೆಲಸ ಮಾಡುತ್ತದೆ);
  2. RabbitMQ ಕ್ಲಸ್ಟರ್ (ಬೇರ್ ಮೆಟಲ್‌ನಲ್ಲಿ ನಿಯೋಜಿಸಬಹುದು ಮತ್ತು ಅಧಿಕೃತ ಹೆಲ್ಮ್ ಚಾರ್ಟ್‌ನಿಂದ ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ ಸಾಮಾನ್ಯ ಕ್ಲಸ್ಟರ್‌ನಂತೆ ಮಾಡಬಹುದು).

ಕೆಳಗಿನ ಉದಾಹರಣೆಗಾಗಿ, ನಾನು ಕುಬರ್ನೆಟ್ಸ್‌ಗೆ RMQ ಅನ್ನು ನಿಯೋಜಿಸಿದ್ದೇನೆ ಮತ್ತು ಅದನ್ನು ಕರೆದಿದ್ದೇನೆ 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 ನಿರ್ವಾಹಕ ಫಲಕಕ್ಕೆ ಹೋಗಿ, ಹೊಸ ಸರತಿಯನ್ನು ರಚಿಸಿ ಮತ್ತು ಹಲವಾರು ಸಂದೇಶಗಳನ್ನು ಸೇರಿಸಿ. ಅವು ಬೇಕಾಗುತ್ತವೆ ಆದ್ದರಿಂದ ವಲಸೆಯ ನಂತರ ನಾವು ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಸಂರಕ್ಷಿಸಲಾಗಿದೆ ಮತ್ತು ನಾವು ಏನನ್ನೂ ಕಳೆದುಕೊಂಡಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬಹುದು:

Kubernetes ಗೆ 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. 6 ನೋಡ್‌ಗಳ RMQ ಕ್ಲಸ್ಟರ್ ಸಿದ್ಧವಾಗಿದೆ:

Kubernetes ಗೆ RabbitMQ ನ ತಡೆರಹಿತ ವಲಸೆ

ಎಲ್ಲಾ ನೋಡ್‌ಗಳ ನಡುವೆ ಸಂದೇಶಗಳನ್ನು ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡುವಾಗ ನೀವು ಕಾಯಬೇಕು. ಸಂದೇಶ ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಸಮಯವು ಕ್ಲಸ್ಟರ್ ಅನ್ನು ನಿಯೋಜಿಸಲಾದ ಯಂತ್ರಾಂಶದ ಸಾಮರ್ಥ್ಯ ಮತ್ತು ಸಂದೇಶಗಳ ಸಂಖ್ಯೆಯನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ ಎಂದು ಊಹಿಸುವುದು ಕಷ್ಟವೇನಲ್ಲ. ವಿವರಿಸಿದ ಸನ್ನಿವೇಶದಲ್ಲಿ, ಅವುಗಳಲ್ಲಿ ಕೇವಲ 10 ಇವೆ, ಆದ್ದರಿಂದ ಡೇಟಾವನ್ನು ತಕ್ಷಣವೇ ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡಲಾಗಿದೆ, ಆದರೆ ಸಾಕಷ್ಟು ದೊಡ್ಡ ಸಂಖ್ಯೆಯ ಸಂದೇಶಗಳೊಂದಿಗೆ, ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಗಂಟೆಗಳವರೆಗೆ ಇರುತ್ತದೆ.

ಆದ್ದರಿಂದ, ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಸ್ಥಿತಿ:

Kubernetes ಗೆ RabbitMQ ನ ತಡೆರಹಿತ ವಲಸೆ

ಇದು +5 ಸಂದೇಶಗಳು ಈಗಾಗಲೇ ಇವೆ ಎಂದರ್ಥ ಹೆಚ್ಚು 5 ನೋಡ್‌ಗಳಲ್ಲಿ (ಕ್ಷೇತ್ರದಲ್ಲಿ ಸೂಚಿಸಿರುವುದನ್ನು ಹೊರತುಪಡಿಸಿ Node) ಹೀಗಾಗಿ, ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಯಶಸ್ವಿಯಾಗಿದೆ.

4. ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿನ RMQ ವಿಳಾಸವನ್ನು ಹೊಸ ಕ್ಲಸ್ಟರ್‌ಗೆ ಬದಲಾಯಿಸುವುದು ಮಾತ್ರ ಉಳಿದಿದೆ (ಇಲ್ಲಿನ ನಿರ್ದಿಷ್ಟ ಕ್ರಿಯೆಗಳು ನೀವು ಬಳಸುತ್ತಿರುವ ತಂತ್ರಜ್ಞಾನದ ಸ್ಟಾಕ್ ಮತ್ತು ಇತರ ಅಪ್ಲಿಕೇಶನ್ ನಿಶ್ಚಿತಗಳನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ), ಅದರ ನಂತರ ನೀವು ಹಳೆಯದಕ್ಕೆ ವಿದಾಯ ಹೇಳಬಹುದು.

ಕೊನೆಯ ಕಾರ್ಯಾಚರಣೆಗಾಗಿ (ಅಂದರೆ ಈಗಾಗಲೇ после ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಹೊಸ ಕ್ಲಸ್ಟರ್‌ಗೆ ಬದಲಾಯಿಸುವುದು) ಪ್ರತಿ ನೋಡ್‌ಗೆ ಹೋಗಿ ಹಳೆಯದು ಕ್ಲಸ್ಟರ್ ಮತ್ತು ಆಜ್ಞೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿ:

rabbitmqctl stop_app
rabbitmqctl reset

ಹಳೆಯ ನೋಡ್‌ಗಳ ಬಗ್ಗೆ ಕ್ಲಸ್ಟರ್ "ಮರೆತಿದೆ": ನೀವು ಹಳೆಯ RMQ ಅನ್ನು ಅಳಿಸಬಹುದು, ಆ ಸಮಯದಲ್ಲಿ ಚಲನೆಯು ಪೂರ್ಣಗೊಳ್ಳುತ್ತದೆ.

ಹೇಳಿಕೆಯನ್ನು: ನೀವು ಪ್ರಮಾಣಪತ್ರಗಳೊಂದಿಗೆ RMQ ಅನ್ನು ಬಳಸಿದರೆ, ನಂತರ ಏನೂ ಮೂಲಭೂತವಾಗಿ ಬದಲಾಗುವುದಿಲ್ಲ - ಚಲಿಸುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ನಿಖರವಾಗಿ ಅದೇ ರೀತಿಯಲ್ಲಿ ಕೈಗೊಳ್ಳಲಾಗುತ್ತದೆ.

ಸಂಶೋಧನೆಗಳು

ನಾವು RabbitMQ ಅನ್ನು ಸ್ಥಳಾಂತರಿಸಬೇಕಾದಾಗ ಅಥವಾ ಹೊಸ ಕ್ಲಸ್ಟರ್‌ಗೆ ಹೋಗಬೇಕಾದಾಗ ವಿವರಿಸಿದ ಯೋಜನೆಯು ಬಹುತೇಕ ಎಲ್ಲಾ ಸಂದರ್ಭಗಳಲ್ಲಿ ಸೂಕ್ತವಾಗಿದೆ.

ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ಅನೇಕ ಸ್ಥಳಗಳಿಂದ RMQ ಅನ್ನು ಪ್ರವೇಶಿಸಿದಾಗ ಒಮ್ಮೆ ಮಾತ್ರ ತೊಂದರೆಗಳು ಉದ್ಭವಿಸಿದವು ಮತ್ತು RMQ ವಿಳಾಸವನ್ನು ಎಲ್ಲೆಡೆ ಹೊಸದಕ್ಕೆ ಬದಲಾಯಿಸಲು ನಮಗೆ ಅವಕಾಶವಿರಲಿಲ್ಲ. ನಂತರ ನಾವು ಅದೇ ಲೇಬಲ್‌ಗಳೊಂದಿಗೆ ಅದೇ ನೇಮ್‌ಸ್ಪೇಸ್‌ನಲ್ಲಿ ಹೊಸ RMQ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿದ್ದೇವೆ ಇದರಿಂದ ಅದು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸೇವೆಗಳು ಮತ್ತು ಪ್ರವೇಶಗಳ ಅಡಿಯಲ್ಲಿ ಬರುತ್ತದೆ, ಮತ್ತು ಪಾಡ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುವಾಗ ನಾವು ಕೈಯಿಂದ ಲೇಬಲ್‌ಗಳನ್ನು ಕುಶಲತೆಯಿಂದ ಮಾಡಿದ್ದೇವೆ, ವಿನಂತಿಗಳು ಬರದಂತೆ ಪ್ರಾರಂಭದಲ್ಲಿ ಅವುಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತೇವೆ. ಖಾಲಿ RMQ, ಮತ್ತು ಸಂದೇಶಗಳನ್ನು ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡಿದ ನಂತರ ಅವುಗಳನ್ನು ಮರಳಿ ಸೇರಿಸುವುದು.

ಬದಲಾದ ಕಾನ್ಫಿಗರೇಶನ್‌ನೊಂದಿಗೆ ಹೊಸ ಆವೃತ್ತಿಗೆ RabbitMQ ಅನ್ನು ನವೀಕರಿಸುವಾಗ ನಾವು ಅದೇ ತಂತ್ರವನ್ನು ಬಳಸಿದ್ದೇವೆ - ಎಲ್ಲವೂ ಗಡಿಯಾರದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.

ಪಿಎಸ್

ಈ ವಸ್ತುವಿನ ತಾರ್ಕಿಕ ಮುಂದುವರಿಕೆಯಾಗಿ, ನಾವು MongoDB (ಹಾರ್ಡ್‌ವೇರ್ ಸರ್ವರ್‌ನಿಂದ ಕುಬರ್ನೆಟ್ಸ್‌ಗೆ ವಲಸೆ) ಮತ್ತು MySQL (ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ ನಾವು ಈ DBMS ಅನ್ನು ಹೇಗೆ ತಯಾರಿಸುತ್ತೇವೆ) ಕುರಿತು ಲೇಖನಗಳನ್ನು ಸಿದ್ಧಪಡಿಸುತ್ತಿದ್ದೇವೆ. ಅವುಗಳನ್ನು ಮುಂದಿನ ತಿಂಗಳುಗಳಲ್ಲಿ ಪ್ರಕಟಿಸಲಾಗುವುದು.

ಪಿಪಿಎಸ್

ನಮ್ಮ ಬ್ಲಾಗ್‌ನಲ್ಲಿಯೂ ಓದಿ:

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ