ಕುಬರ್ನೆಟ್ಸ್, ನಮ್ಮ ಆಯ್ಕೆಗಳು ಮತ್ತು ಅನುಭವಕ್ಕಾಗಿ PostgreSQL ಹೇಳಿಕೆಗಳ ಸಂಕ್ಷಿಪ್ತ ಅವಲೋಕನ

ಕುಬರ್ನೆಟ್ಸ್, ನಮ್ಮ ಆಯ್ಕೆಗಳು ಮತ್ತು ಅನುಭವಕ್ಕಾಗಿ PostgreSQL ಹೇಳಿಕೆಗಳ ಸಂಕ್ಷಿಪ್ತ ಅವಲೋಕನ

ಹೆಚ್ಚುತ್ತಿರುವಂತೆ, ಗ್ರಾಹಕರು ಈ ಕೆಳಗಿನ ವಿನಂತಿಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತಿದ್ದಾರೆ: "ಅಮೆಜಾನ್ RDS ನಂತೆ ನಾವು ಬಯಸುತ್ತೇವೆ, ಆದರೆ ಅಗ್ಗವಾಗಿದೆ"; "ನಾವು ಅದನ್ನು RDS ನಂತೆ ಬಯಸುತ್ತೇವೆ, ಆದರೆ ಎಲ್ಲೆಡೆ, ಯಾವುದೇ ಮೂಲಸೌಕರ್ಯದಲ್ಲಿ." ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ ಅಂತಹ ನಿರ್ವಹಿಸಲಾದ ಪರಿಹಾರವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು, ನಾವು PostgreSQL (ಸ್ಟೋಲನ್, ಕ್ರಂಚಿ ಡೇಟಾ ಮತ್ತು ಝಲಾಂಡೋದಿಂದ ಆಪರೇಟರ್‌ಗಳು) ಗಾಗಿ ಅತ್ಯಂತ ಜನಪ್ರಿಯ ಆಪರೇಟರ್‌ಗಳ ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಯನ್ನು ನೋಡಿದ್ದೇವೆ ಮತ್ತು ನಮ್ಮ ಆಯ್ಕೆಯನ್ನು ಮಾಡಿದ್ದೇವೆ.

ಈ ಲೇಖನವು ಸೈದ್ಧಾಂತಿಕ ದೃಷ್ಟಿಕೋನದಿಂದ (ಪರಿಹಾರಗಳ ವಿಮರ್ಶೆ) ಮತ್ತು ಪ್ರಾಯೋಗಿಕ ಬದಿಯಿಂದ (ಯಾವುದನ್ನು ಆರಿಸಲಾಗಿದೆ ಮತ್ತು ಅದರಿಂದ ಬಂದದ್ದು) ಎರಡನ್ನೂ ನಾವು ಪಡೆದ ಅನುಭವವಾಗಿದೆ. ಆದರೆ ಮೊದಲು, RDS ಗಾಗಿ ಸಂಭಾವ್ಯ ಬದಲಿಗಾಗಿ ಸಾಮಾನ್ಯ ಅವಶ್ಯಕತೆಗಳು ಏನೆಂದು ನಿರ್ಧರಿಸೋಣ...

RDS ಎಂದರೇನು

ಜನರು RDS ಕುರಿತು ಮಾತನಾಡುವಾಗ, ನಮ್ಮ ಅನುಭವದಲ್ಲಿ, ಅವರು ನಿರ್ವಹಿಸಿದ DBMS ಸೇವೆಯನ್ನು ಅರ್ಥೈಸುತ್ತಾರೆ:

  1. ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಸುಲಭ;
  2. ಸ್ನ್ಯಾಪ್‌ಶಾಟ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಮತ್ತು ಅವುಗಳಿಂದ ಚೇತರಿಸಿಕೊಳ್ಳುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಹೊಂದಿದೆ (ಮೇಲಾಗಿ ಬೆಂಬಲದೊಂದಿಗೆ PITR);
  3. ಮಾಸ್ಟರ್-ಸ್ಲೇವ್ ಟೋಪೋಲಾಜಿಗಳನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ;
  4. ವಿಸ್ತರಣೆಗಳ ಶ್ರೀಮಂತ ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿದೆ;
  5. ಲೆಕ್ಕಪರಿಶೋಧನೆ ಮತ್ತು ಬಳಕೆದಾರ/ಪ್ರವೇಶ ನಿರ್ವಹಣೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ.

ಸಾಮಾನ್ಯವಾಗಿ ಹೇಳುವುದಾದರೆ, ಕೈಯಲ್ಲಿರುವ ಕೆಲಸವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ವಿಧಾನಗಳು ತುಂಬಾ ವಿಭಿನ್ನವಾಗಿರಬಹುದು, ಆದರೆ ಷರತ್ತುಬದ್ಧ ಅನ್ಸಿಬಲ್ನ ಮಾರ್ಗವು ನಮಗೆ ಹತ್ತಿರದಲ್ಲಿಲ್ಲ. (2GIS ನ ಸಹೋದ್ಯೋಗಿಗಳು ಪರಿಣಾಮವಾಗಿ ಇದೇ ರೀತಿಯ ತೀರ್ಮಾನಕ್ಕೆ ಬಂದರು ಅವನ ಪ್ರಯತ್ನ "ಪೋಸ್ಟ್‌ಗ್ರೆಸ್-ಆಧಾರಿತ ಫೇಲ್‌ಓವರ್ ಕ್ಲಸ್ಟರ್ ಅನ್ನು ತ್ವರಿತವಾಗಿ ನಿಯೋಜಿಸಲು ಒಂದು ಸಾಧನವನ್ನು" ರಚಿಸಿ.

ಕುಬರ್ನೆಟ್ಸ್ ಪರಿಸರ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಇದೇ ರೀತಿಯ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಆಪರೇಟರ್‌ಗಳು ಸಾಮಾನ್ಯ ವಿಧಾನವಾಗಿದೆ. "ಫ್ಲಾಂಟಾ" ನ ತಾಂತ್ರಿಕ ನಿರ್ದೇಶಕರು ಈಗಾಗಲೇ ಕುಬರ್ನೆಟ್ಸ್ ಒಳಗೆ ಪ್ರಾರಂಭಿಸಲಾದ ಡೇಟಾಬೇಸ್ಗಳಿಗೆ ಸಂಬಂಧಿಸಿದಂತೆ ಅವರ ಬಗ್ಗೆ ಹೆಚ್ಚು ವಿವರವಾಗಿ ಮಾತನಾಡಿದ್ದಾರೆ. ಡಿಸ್ಟಾಲ್, ಇನ್ ಅವರ ಒಂದು ವರದಿ.

NB: ಸರಳ ನಿರ್ವಾಹಕರನ್ನು ತ್ವರಿತವಾಗಿ ರಚಿಸಲು, ನಮ್ಮ ಓಪನ್ ಸೋರ್ಸ್ ಉಪಯುಕ್ತತೆಗೆ ಗಮನ ಕೊಡಲು ನಾವು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ ಶೆಲ್-ಆಪರೇಟರ್. ಇದನ್ನು ಬಳಸಿಕೊಂಡು, ನೀವು ಇದನ್ನು Go ನ ಜ್ಞಾನವಿಲ್ಲದೆ ಮಾಡಬಹುದು, ಆದರೆ ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರಿಗೆ ಹೆಚ್ಚು ಪರಿಚಿತವಾಗಿರುವ ವಿಧಾನಗಳಲ್ಲಿ: Bash, Python, ಇತ್ಯಾದಿ.

PostgreSQL ಗಾಗಿ ಹಲವಾರು ಜನಪ್ರಿಯ K8s ಆಪರೇಟರ್‌ಗಳಿವೆ:

  • ಸ್ಟೋಲನ್;
  • ಕುರುಕುಲಾದ ಡೇಟಾ PostgreSQL ಆಪರೇಟರ್;
  • ಝಲ್ಯಾಂಡೊ ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಆಪರೇಟರ್.

ಅವುಗಳನ್ನು ಹೆಚ್ಚು ಹತ್ತಿರದಿಂದ ನೋಡೋಣ.

ಆಪರೇಟರ್ ಆಯ್ಕೆ

ಮೇಲೆ ಈಗಾಗಲೇ ತಿಳಿಸಲಾದ ಪ್ರಮುಖ ವೈಶಿಷ್ಟ್ಯಗಳ ಜೊತೆಗೆ, ನಾವು - ಕುಬರ್ನೆಟ್ಸ್ ಮೂಲಸೌಕರ್ಯ ಕಾರ್ಯಾಚರಣೆಯ ಎಂಜಿನಿಯರ್‌ಗಳಾಗಿ - ನಿರ್ವಾಹಕರಿಂದ ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಸಹ ನಿರೀಕ್ಷಿಸುತ್ತೇವೆ:

  • Git ಮತ್ತು ಇದರೊಂದಿಗೆ ನಿಯೋಜನೆ ಕಸ್ಟಮ್ ಸಂಪನ್ಮೂಲಗಳು;
  • ಪಾಡ್ ವಿರೋಧಿ ಸಂಬಂಧ ಬೆಂಬಲ;
  • ನೋಡ್ ಅಫಿನಿಟಿ ಅಥವಾ ನೋಡ್ ಸೆಲೆಕ್ಟರ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವುದು;
  • ಸಹಿಷ್ಣುತೆಗಳ ಸ್ಥಾಪನೆ;
  • ಶ್ರುತಿ ಸಾಮರ್ಥ್ಯಗಳ ಲಭ್ಯತೆ;
  • ಅರ್ಥವಾಗುವ ತಂತ್ರಜ್ಞಾನಗಳು ಮತ್ತು ಆಜ್ಞೆಗಳು.

ಪ್ರತಿಯೊಂದು ಅಂಶಗಳ ವಿವರಗಳಿಗೆ ಹೋಗದೆ (ಇಡೀ ಲೇಖನವನ್ನು ಓದಿದ ನಂತರ ನೀವು ಇನ್ನೂ ಅವರ ಬಗ್ಗೆ ಪ್ರಶ್ನೆಗಳನ್ನು ಹೊಂದಿದ್ದರೆ ಕಾಮೆಂಟ್‌ಗಳಲ್ಲಿ ಕೇಳಿ), ಕ್ಲಸ್ಟರ್ ನೋಡ್‌ಗಳ ವಿಶೇಷತೆಯನ್ನು ಹೆಚ್ಚು ನಿಖರವಾಗಿ ವಿವರಿಸಲು ಈ ನಿಯತಾಂಕಗಳು ಅಗತ್ಯವಿದೆ ಎಂದು ನಾನು ಸಾಮಾನ್ಯವಾಗಿ ಗಮನಿಸುತ್ತೇನೆ ನಿರ್ದಿಷ್ಟ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗಾಗಿ ಅವುಗಳನ್ನು ಆದೇಶಿಸಿ. ಈ ರೀತಿಯಾಗಿ ನಾವು ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ವೆಚ್ಚದ ವಿಷಯದಲ್ಲಿ ಅತ್ಯುತ್ತಮ ಸಮತೋಲನವನ್ನು ಸಾಧಿಸಬಹುದು.

ಈಗ ನಾವು PostgreSQL ಆಪರೇಟರ್‌ಗಳಿಗೆ ಹೋಗೋಣ.

1. ಸ್ಟೋಲನ್

ಸ್ಟೋಲನ್ ಇಟಾಲಿಯನ್ ಕಂಪನಿ Sorint.lab ನಿಂದ ಈಗಾಗಲೇ ಉಲ್ಲೇಖಿಸಿರುವ ವರದಿ DBMS ಗಾಗಿ ನಿರ್ವಾಹಕರಲ್ಲಿ ಒಂದು ರೀತಿಯ ಮಾನದಂಡವೆಂದು ಪರಿಗಣಿಸಲಾಗಿದೆ. ಇದು ಸಾಕಷ್ಟು ಹಳೆಯ ಯೋಜನೆಯಾಗಿದೆ: ಇದರ ಮೊದಲ ಸಾರ್ವಜನಿಕ ಬಿಡುಗಡೆಯು ನವೆಂಬರ್ 2015 (!) ನಲ್ಲಿ ಮತ್ತೆ ನಡೆಯಿತು ಮತ್ತು GitHub ರೆಪೊಸಿಟರಿಯು ಸುಮಾರು 3000 ನಕ್ಷತ್ರಗಳು ಮತ್ತು 40+ ಕೊಡುಗೆದಾರರನ್ನು ಹೊಂದಿದೆ.

ವಾಸ್ತವವಾಗಿ, ಸ್ಟೋಲನ್ ಚಿಂತನಶೀಲ ವಾಸ್ತುಶಿಲ್ಪದ ಅತ್ಯುತ್ತಮ ಉದಾಹರಣೆಯಾಗಿದೆ:

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

ಆದಾಗ್ಯೂ, ಸ್ಟೋಲನ್ ಯಾವುದೇ ಕಸ್ಟಮ್ ಸಂಪನ್ಮೂಲಗಳಿಲ್ಲ, ಅದಕ್ಕಾಗಿಯೇ ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ DBMS ನಿದರ್ಶನಗಳನ್ನು ರಚಿಸಲು - "ಹಾಟ್ ಕೇಕ್‌ಗಳಂತೆ" - ಅದನ್ನು ಸುಲಭವಾಗಿ ಮತ್ತು ತ್ವರಿತವಾಗಿ ನಿಯೋಜಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ನಿರ್ವಹಣೆಯನ್ನು ಉಪಯುಕ್ತತೆಯ ಮೂಲಕ ನಡೆಸಲಾಗುತ್ತದೆ stolonctl, ನಿಯೋಜನೆಯನ್ನು ಹೆಲ್ಮ್ ಚಾರ್ಟ್ ಮೂಲಕ ಮಾಡಲಾಗುತ್ತದೆ, ಮತ್ತು ಕಸ್ಟಮ್ ಅನ್ನು ಕಾನ್ಫಿಗ್‌ಮ್ಯಾಪ್‌ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ ಮತ್ತು ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ.

ಒಂದೆಡೆ, ಆಪರೇಟರ್ ನಿಜವಾಗಿಯೂ ಆಪರೇಟರ್ ಅಲ್ಲ ಎಂದು ಅದು ತಿರುಗುತ್ತದೆ (ಎಲ್ಲಾ ನಂತರ, ಇದು CRD ಅನ್ನು ಬಳಸುವುದಿಲ್ಲ). ಆದರೆ ಮತ್ತೊಂದೆಡೆ, ಇದು ಹೊಂದಿಕೊಳ್ಳುವ ವ್ಯವಸ್ಥೆಯಾಗಿದ್ದು ಅದು ನಿಮಗೆ ಸರಿಹೊಂದುವಂತೆ K8 ಗಳಲ್ಲಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.

ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಹೇಳುವುದಾದರೆ, ನಮಗೆ ವೈಯಕ್ತಿಕವಾಗಿ ಪ್ರತಿ ಡೇಟಾಬೇಸ್‌ಗೆ ಪ್ರತ್ಯೇಕ ಚಾರ್ಟ್ ಅನ್ನು ರಚಿಸುವುದು ಸೂಕ್ತವೆಂದು ತೋರುತ್ತಿಲ್ಲ. ಆದ್ದರಿಂದ, ನಾವು ಪರ್ಯಾಯಗಳನ್ನು ಹುಡುಕಲು ಪ್ರಾರಂಭಿಸಿದ್ದೇವೆ.

2. ಕುರುಕುಲಾದ ಡೇಟಾ PostgreSQL ಆಪರೇಟರ್

ಕುರುಕುಲಾದ ಡೇಟಾದಿಂದ ಆಪರೇಟರ್, ಯುವ ಅಮೇರಿಕನ್ ಸ್ಟಾರ್ಟ್ಅಪ್, ತಾರ್ಕಿಕ ಪರ್ಯಾಯದಂತೆ ತೋರುತ್ತಿದೆ. ಇದರ ಸಾರ್ವಜನಿಕ ಇತಿಹಾಸವು ಮಾರ್ಚ್ 2017 ರಲ್ಲಿ ಮೊದಲ ಬಿಡುಗಡೆಯೊಂದಿಗೆ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ, ಅಂದಿನಿಂದ GitHub ರೆಪೊಸಿಟರಿಯು ಕೇವಲ 1300 ನಕ್ಷತ್ರಗಳು ಮತ್ತು 50+ ಕೊಡುಗೆದಾರರನ್ನು ಸ್ವೀಕರಿಸಿದೆ. ಸೆಪ್ಟೆಂಬರ್‌ನಿಂದ ಇತ್ತೀಚಿನ ಬಿಡುಗಡೆಯನ್ನು Kubernetes 1.15-1.18, OpenShift 3.11+ ಮತ್ತು 4.4+, GKE ಮತ್ತು VMware ಎಂಟರ್‌ಪ್ರೈಸ್ PKS 1.3+ ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಪರೀಕ್ಷಿಸಲಾಗಿದೆ.

ಕುರುಕುಲಾದ ಡೇಟಾ PostgreSQL ಆಪರೇಟರ್‌ನ ಆರ್ಕಿಟೆಕ್ಚರ್ ಹೇಳಲಾದ ಅವಶ್ಯಕತೆಗಳನ್ನು ಸಹ ಪೂರೈಸುತ್ತದೆ:

ಕುಬರ್ನೆಟ್ಸ್, ನಮ್ಮ ಆಯ್ಕೆಗಳು ಮತ್ತು ಅನುಭವಕ್ಕಾಗಿ PostgreSQL ಹೇಳಿಕೆಗಳ ಸಂಕ್ಷಿಪ್ತ ಅವಲೋಕನ

ನಿರ್ವಹಣೆಯು ಉಪಯುಕ್ತತೆಯ ಮೂಲಕ ಸಂಭವಿಸುತ್ತದೆ pgo, ಆದಾಗ್ಯೂ, ಇದು ಕುಬರ್ನೆಟ್ಸ್‌ಗಾಗಿ ಕಸ್ಟಮ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ. ಆದ್ದರಿಂದ, ಸಂಭಾವ್ಯ ಬಳಕೆದಾರರಾಗಿ ಆಪರೇಟರ್ ನಮಗೆ ಸಂತೋಷವಾಯಿತು:

  • CRD ಮೂಲಕ ನಿಯಂತ್ರಣವಿದೆ;
  • ಅನುಕೂಲಕರ ಬಳಕೆದಾರ ನಿರ್ವಹಣೆ (ಸಿಆರ್ಡಿ ಮೂಲಕ ಸಹ);
  • ಇತರ ಘಟಕಗಳೊಂದಿಗೆ ಏಕೀಕರಣ ಕುರುಕುಲಾದ ಡೇಟಾ ಕಂಟೈನರ್ ಸೂಟ್ - PostgreSQL ಗಾಗಿ ಕಂಟೈನರ್ ಚಿತ್ರಗಳ ವಿಶೇಷ ಸಂಗ್ರಹ ಮತ್ತು ಅದರೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಉಪಯುಕ್ತತೆಗಳು (pgBackRest, pgAudit, ಕೊಡುಗೆಯಿಂದ ವಿಸ್ತರಣೆಗಳು, ಇತ್ಯಾದಿ.).

ಆದಾಗ್ಯೂ, ಕುರುಕುಲಾದ ಡೇಟಾದಿಂದ ಆಪರೇಟರ್ ಅನ್ನು ಬಳಸಲು ಪ್ರಾರಂಭಿಸುವ ಪ್ರಯತ್ನಗಳು ಹಲವಾರು ಸಮಸ್ಯೆಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸಿದವು:

  • ಸಹಿಷ್ಣುತೆಗಳ ಯಾವುದೇ ಸಾಧ್ಯತೆ ಇರಲಿಲ್ಲ - ನೋಡ್ ಸೆಲೆಕ್ಟರ್ ಅನ್ನು ಮಾತ್ರ ಒದಗಿಸಲಾಗಿದೆ.
  • ನಾವು ಸ್ಟೇಟ್‌ಫುಲ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿಯೋಜಿಸಿದ್ದರೂ ಸಹ, ರಚಿಸಲಾದ ಪಾಡ್‌ಗಳು ನಿಯೋಜನೆಯ ಭಾಗವಾಗಿದೆ. ಸ್ಟೇಟ್‌ಫುಲ್‌ಸೆಟ್‌ಗಳಂತೆ, ನಿಯೋಜನೆಗಳು ಡಿಸ್ಕ್‌ಗಳನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.

ಕೊನೆಯ ನ್ಯೂನತೆಯು ತಮಾಷೆಯ ಕ್ಷಣಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ: ಪರೀಕ್ಷಾ ಪರಿಸರದಲ್ಲಿ ನಾವು ಒಂದು ಡಿಸ್ಕ್ನೊಂದಿಗೆ 3 ಪ್ರತಿಕೃತಿಗಳನ್ನು ಚಲಾಯಿಸಲು ನಿರ್ವಹಿಸುತ್ತಿದ್ದೇವೆ ಸ್ಥಳೀಯ ಸಂಗ್ರಹಣೆ, 3 ಪ್ರತಿಕೃತಿಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿವೆ ಎಂದು ಆಪರೇಟರ್ ವರದಿ ಮಾಡಲು ಕಾರಣವಾಗುತ್ತದೆ (ಅವುಗಳು ಇಲ್ಲದಿದ್ದರೂ ಸಹ).

ಈ ಆಪರೇಟರ್‌ನ ಮತ್ತೊಂದು ವೈಶಿಷ್ಟ್ಯವೆಂದರೆ ವಿವಿಧ ಸಹಾಯಕ ವ್ಯವಸ್ಥೆಗಳೊಂದಿಗೆ ಅದರ ಸಿದ್ಧ-ಸಿದ್ಧ ಏಕೀಕರಣ. ಉದಾಹರಣೆಗೆ, pgAdmin ಮತ್ತು pgBounce ಅನ್ನು ಸ್ಥಾಪಿಸುವುದು ಸುಲಭ, ಮತ್ತು ಇನ್ ದಸ್ತಾವೇಜನ್ನು ಮೊದಲೇ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ಗ್ರಾಫಾನಾ ಮತ್ತು ಪ್ರಮೀತಿಯಸ್ ಅನ್ನು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ಇತ್ತೀಚಿನ ದಿನಗಳಲ್ಲಿ ಬಿಡುಗಡೆ 4.5.0-beta1 ಯೋಜನೆಯೊಂದಿಗೆ ಸುಧಾರಿತ ಏಕೀಕರಣವನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಗಮನಿಸಲಾಗಿದೆ pgMonitor, ಆಯೋಜಕರು ಪೆಟ್ಟಿಗೆಯ ಹೊರಗೆ PgSQL ಮೆಟ್ರಿಕ್‌ಗಳ ಸ್ಪಷ್ಟ ದೃಶ್ಯೀಕರಣವನ್ನು ಒದಗಿಸುವುದಕ್ಕೆ ಧನ್ಯವಾದಗಳು.

ಆದಾಗ್ಯೂ, ಕುಬರ್ನೆಟ್ಸ್-ಉತ್ಪಾದಿತ ಸಂಪನ್ಮೂಲಗಳ ವಿಚಿತ್ರ ಆಯ್ಕೆಯು ನಮಗೆ ವಿಭಿನ್ನ ಪರಿಹಾರವನ್ನು ಕಂಡುಹಿಡಿಯುವ ಅಗತ್ಯಕ್ಕೆ ಕಾರಣವಾಯಿತು.

3. ಝಲ್ಯಾಂಡೊ ಪೋಸ್ಟ್ಗ್ರೆಸ್ ಆಪರೇಟರ್

ನಾವು ದೀರ್ಘಕಾಲದವರೆಗೆ ಝಲ್ಯಾಂಡೊ ಉತ್ಪನ್ನಗಳನ್ನು ತಿಳಿದಿದ್ದೇವೆ: ನಾವು ಝಲೆನಿಯಮ್ ಅನ್ನು ಬಳಸುವ ಅನುಭವವನ್ನು ಹೊಂದಿದ್ದೇವೆ ಮತ್ತು ನಾವು ಪ್ರಯತ್ನಿಸಿದ್ದೇವೆ ಪತ್ರೋನಿ PostgreSQL ಗಾಗಿ ಅವರ ಜನಪ್ರಿಯ HA ಪರಿಹಾರವಾಗಿದೆ. ರಚಿಸುವ ಕಂಪನಿಯ ವಿಧಾನದ ಬಗ್ಗೆ ಪೋಸ್ಟ್ಗ್ರೆಸ್ ಆಪರೇಟರ್ ಅದರ ಲೇಖಕರಲ್ಲಿ ಒಬ್ಬರಾದ ಅಲೆಕ್ಸಿ ಕ್ಲುಕಿನ್ ಅವರು ಪ್ರಸಾರದಲ್ಲಿ ಹೇಳಿದರು ಪೋಸ್ಟ್‌ಗ್ರೆಸ್-ಮಂಗಳವಾರ #5, ಮತ್ತು ನಾವು ಅದನ್ನು ಇಷ್ಟಪಟ್ಟಿದ್ದೇವೆ.

ಇದು ಲೇಖನದಲ್ಲಿ ಚರ್ಚಿಸಲಾದ ಅತ್ಯಂತ ಕಿರಿಯ ಪರಿಹಾರವಾಗಿದೆ: ಮೊದಲ ಬಿಡುಗಡೆಯು ಆಗಸ್ಟ್ 2018 ರಲ್ಲಿ ನಡೆಯಿತು. ಆದಾಗ್ಯೂ, ಕಡಿಮೆ ಸಂಖ್ಯೆಯ ಔಪಚಾರಿಕ ಬಿಡುಗಡೆಗಳ ಹೊರತಾಗಿಯೂ, ಯೋಜನೆಯು ಬಹಳ ದೂರ ಸಾಗಿದೆ, GitHub ನಲ್ಲಿ 1300+ ನಕ್ಷತ್ರಗಳು ಮತ್ತು ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯ ಕೊಡುಗೆದಾರರನ್ನು (70+) ಹೊಂದಿರುವ Crunchy ಡೇಟಾದ ಪರಿಹಾರವನ್ನು ಈಗಾಗಲೇ ಜನಪ್ರಿಯತೆಯಲ್ಲಿ ಮೀರಿಸಿದೆ.

"ಅಂಡರ್ ದಿ ಹುಡ್" ಈ ಆಪರೇಟರ್ ಸಮಯ-ಪರೀಕ್ಷಿತ ಪರಿಹಾರಗಳನ್ನು ಬಳಸುತ್ತದೆ:

  • ಪತ್ರೋನಿ ಮತ್ತು ಸ್ಪಿಲೋ ಚಾಲನೆಗಾಗಿ,
  • ವಾಲ್-ಇ - ಬ್ಯಾಕ್‌ಅಪ್‌ಗಳಿಗಾಗಿ,
  • PgBouncer - ಸಂಪರ್ಕ ಪೂಲ್ ಆಗಿ.

Zalando ನಿಂದ ಆಪರೇಟರ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು ಈ ರೀತಿ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ:

ಕುಬರ್ನೆಟ್ಸ್, ನಮ್ಮ ಆಯ್ಕೆಗಳು ಮತ್ತು ಅನುಭವಕ್ಕಾಗಿ PostgreSQL ಹೇಳಿಕೆಗಳ ಸಂಕ್ಷಿಪ್ತ ಅವಲೋಕನ

ಆಪರೇಟರ್ ಅನ್ನು ಕಸ್ಟಮ್ ಸಂಪನ್ಮೂಲಗಳ ಮೂಲಕ ಸಂಪೂರ್ಣವಾಗಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ, ಕಂಟೇನರ್‌ಗಳಿಂದ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸ್ಟೇಟ್‌ಫುಲ್‌ಸೆಟ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ, ನಂತರ ಅದನ್ನು ಪಾಡ್‌ಗೆ ವಿವಿಧ ಸೈಡ್‌ಕಾರ್‌ಗಳನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ಕಸ್ಟಮೈಸ್ ಮಾಡಬಹುದು. ಕುರುಕುಲಾದ ಡೇಟಾದಿಂದ ಆಪರೇಟರ್‌ಗೆ ಹೋಲಿಸಿದರೆ ಇವೆಲ್ಲವೂ ಗಮನಾರ್ಹ ಪ್ರಯೋಜನವಾಗಿದೆ.

ಪರಿಗಣನೆಯಲ್ಲಿರುವ 3 ಆಯ್ಕೆಗಳಲ್ಲಿ ನಾವು Zalando ನಿಂದ ಪರಿಹಾರವನ್ನು ಆಯ್ಕೆ ಮಾಡಿರುವುದರಿಂದ, ಅದರ ಸಾಮರ್ಥ್ಯಗಳ ಹೆಚ್ಚಿನ ವಿವರಣೆಯನ್ನು ಅಪ್ಲಿಕೇಶನ್ ಅಭ್ಯಾಸದ ಜೊತೆಗೆ ತಕ್ಷಣವೇ ಕೆಳಗೆ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗುತ್ತದೆ.

ಝಲ್ಯಾಂಡೊದಿಂದ ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಆಪರೇಟರ್‌ನೊಂದಿಗೆ ಅಭ್ಯಾಸ ಮಾಡಿ

ಆಪರೇಟರ್ ನಿಯೋಜನೆ ತುಂಬಾ ಸರಳವಾಗಿದೆ: GitHub ನಿಂದ ಪ್ರಸ್ತುತ ಬಿಡುಗಡೆಯನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ಡೈರೆಕ್ಟರಿಯಿಂದ YAML ಫೈಲ್‌ಗಳನ್ನು ಅನ್ವಯಿಸಿ ಪ್ರಕಟವಾಗುತ್ತದೆ. ಪರ್ಯಾಯವಾಗಿ, ನೀವು ಸಹ ಬಳಸಬಹುದು ಆಪರೇಟರ್ಹಬ್.

ಅನುಸ್ಥಾಪನೆಯ ನಂತರ, ನೀವು ಹೊಂದಿಸುವ ಬಗ್ಗೆ ಚಿಂತಿಸಬೇಕು ಲಾಗ್‌ಗಳು ಮತ್ತು ಬ್ಯಾಕ್‌ಅಪ್‌ಗಳಿಗಾಗಿ ಸಂಗ್ರಹಣೆ. ಇದನ್ನು ಕಾನ್ಫಿಗ್ಮ್ಯಾಪ್ ಮೂಲಕ ಮಾಡಲಾಗುತ್ತದೆ postgres-operator ನೀವು ಆಪರೇಟರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿದ ನೇಮ್‌ಸ್ಪೇಸ್‌ನಲ್ಲಿ. ರೆಪೊಸಿಟರಿಗಳನ್ನು ಒಮ್ಮೆ ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ ನಂತರ, ನಿಮ್ಮ ಮೊದಲ PostgreSQL ಕ್ಲಸ್ಟರ್ ಅನ್ನು ನೀವು ನಿಯೋಜಿಸಬಹುದು.

ಉದಾಹರಣೆಗೆ, ನಮ್ಮ ಪ್ರಮಾಣಿತ ನಿಯೋಜನೆಯು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

apiVersion: acid.zalan.do/v1
kind: postgresql
metadata:
 name: staging-db
spec:
 numberOfInstances: 3
 patroni:
   synchronous_mode: true
 postgresql:
   version: "12"
 resources:
   limits:
     cpu: 100m
     memory: 1Gi
   requests:
     cpu: 100m
     memory: 1Gi
 sidecars:
 - env:
   - name: DATA_SOURCE_URI
     value: 127.0.0.1:5432
   - name: DATA_SOURCE_PASS
     valueFrom:
       secretKeyRef:
         key: password
         name: postgres.staging-db.credentials
   - name: DATA_SOURCE_USER
     value: postgres
   image: wrouesnel/postgres_exporter
   name: prometheus-exporter
   resources:
     limits:
       cpu: 500m
       memory: 100Mi
     requests:
       cpu: 100m
       memory: 100Mi
 teamId: staging
 volume:
   size: 2Gi

ಈ ಮ್ಯಾನಿಫೆಸ್ಟ್ ರೂಪದಲ್ಲಿ ಸೈಡ್‌ಕಾರ್‌ನೊಂದಿಗೆ 3 ನಿದರ್ಶನಗಳ ಕ್ಲಸ್ಟರ್ ಅನ್ನು ನಿಯೋಜಿಸುತ್ತದೆ postgres_exporter, ಇದರಿಂದ ನಾವು ಅಪ್ಲಿಕೇಶನ್ ಮೆಟ್ರಿಕ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ. ನೀವು ನೋಡುವಂತೆ, ಎಲ್ಲವೂ ತುಂಬಾ ಸರಳವಾಗಿದೆ, ಮತ್ತು ನೀವು ಬಯಸಿದರೆ, ನೀವು ಅಕ್ಷರಶಃ ಅನಿಯಮಿತ ಸಂಖ್ಯೆಯ ಕ್ಲಸ್ಟರ್ಗಳನ್ನು ರಚಿಸಬಹುದು.

ಇದು ಗಮನ ಕೊಡುವುದು ಯೋಗ್ಯವಾಗಿದೆ ವೆಬ್ ಆಡಳಿತ ಫಲಕ - postgres-operator-ui. ಇದು ಆಪರೇಟರ್‌ನೊಂದಿಗೆ ಬರುತ್ತದೆ ಮತ್ತು ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ರಚಿಸಲು ಮತ್ತು ಅಳಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಜೊತೆಗೆ ಆಪರೇಟರ್ ಮಾಡಿದ ಬ್ಯಾಕ್‌ಅಪ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ.

ಕುಬರ್ನೆಟ್ಸ್, ನಮ್ಮ ಆಯ್ಕೆಗಳು ಮತ್ತು ಅನುಭವಕ್ಕಾಗಿ PostgreSQL ಹೇಳಿಕೆಗಳ ಸಂಕ್ಷಿಪ್ತ ಅವಲೋಕನ
PostgreSQL ಕ್ಲಸ್ಟರ್‌ಗಳ ಪಟ್ಟಿ

ಕುಬರ್ನೆಟ್ಸ್, ನಮ್ಮ ಆಯ್ಕೆಗಳು ಮತ್ತು ಅನುಭವಕ್ಕಾಗಿ PostgreSQL ಹೇಳಿಕೆಗಳ ಸಂಕ್ಷಿಪ್ತ ಅವಲೋಕನ
ಬ್ಯಾಕಪ್ ನಿರ್ವಹಣೆ

ಮತ್ತೊಂದು ಆಸಕ್ತಿದಾಯಕ ವೈಶಿಷ್ಟ್ಯವೆಂದರೆ ಬೆಂಬಲ ತಂಡಗಳ API. ಈ ಕಾರ್ಯವಿಧಾನವು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸುತ್ತದೆ PostgreSQL ನಲ್ಲಿ ಪಾತ್ರಗಳು, ಪರಿಣಾಮವಾಗಿ ಬಳಕೆದಾರಹೆಸರುಗಳ ಪಟ್ಟಿಯನ್ನು ಆಧರಿಸಿ. ಪಾತ್ರಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲಾದ ಬಳಕೆದಾರರ ಪಟ್ಟಿಯನ್ನು ಹಿಂತಿರುಗಿಸಲು API ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ಸಮಸ್ಯೆಗಳು ಮತ್ತು ಪರಿಹಾರಗಳು

ಆದಾಗ್ಯೂ, ಆಪರೇಟರ್ನ ಬಳಕೆಯು ಶೀಘ್ರದಲ್ಲೇ ಹಲವಾರು ಗಮನಾರ್ಹ ನ್ಯೂನತೆಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸಿತು:

  1. ನೋಡ್ ಸೆಲೆಕ್ಟರ್ ಬೆಂಬಲದ ಕೊರತೆ;
  2. ಬ್ಯಾಕ್ಅಪ್ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಅಸಮರ್ಥತೆ;
  3. ಡೇಟಾಬೇಸ್ ರಚನೆ ಕಾರ್ಯವನ್ನು ಬಳಸುವಾಗ, ಡೀಫಾಲ್ಟ್ ಸವಲತ್ತುಗಳು ಗೋಚರಿಸುವುದಿಲ್ಲ;
  4. ಕೆಲವೊಮ್ಮೆ ದಸ್ತಾವೇಜನ್ನು ಕಾಣೆಯಾಗಿದೆ ಅಥವಾ ಅವಧಿ ಮೀರಿದೆ.

ಅದೃಷ್ಟವಶಾತ್, ಅವುಗಳಲ್ಲಿ ಹಲವು ಪರಿಹರಿಸಬಹುದು. ಅಂತ್ಯದಿಂದ ಪ್ರಾರಂಭಿಸೋಣ - ಸಮಸ್ಯೆಗಳು ದಸ್ತಾವೇಜನ್ನು.

ಹೆಚ್ಚಾಗಿ, ಬ್ಯಾಕ್ಅಪ್ ಅನ್ನು ಹೇಗೆ ನೋಂದಾಯಿಸುವುದು ಮತ್ತು ಆಪರೇಟರ್ UI ಗೆ ಬ್ಯಾಕಪ್ ಬಕೆಟ್ ಅನ್ನು ಹೇಗೆ ಸಂಪರ್ಕಿಸುವುದು ಎಂಬುದು ಯಾವಾಗಲೂ ಸ್ಪಷ್ಟವಾಗಿಲ್ಲ ಎಂಬ ಅಂಶವನ್ನು ನೀವು ಎದುರಿಸುತ್ತೀರಿ. ದಸ್ತಾವೇಜನ್ನು ಹಾದುಹೋಗುವಲ್ಲಿ ಈ ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತಾರೆ, ಆದರೆ ನಿಜವಾದ ವಿವರಣೆಯಲ್ಲಿದೆ PR:

  1. ರಹಸ್ಯವನ್ನು ಮಾಡಬೇಕಾಗಿದೆ;
  2. ಅದನ್ನು ಪ್ಯಾರಾಮೀಟರ್ ಆಗಿ ಆಪರೇಟರ್‌ಗೆ ರವಾನಿಸಿ pod_environment_secret_name CRD ನಲ್ಲಿ ಆಪರೇಟರ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳೊಂದಿಗೆ ಅಥವಾ ಕಾನ್ಫಿಗ್‌ಮ್ಯಾಪ್‌ನಲ್ಲಿ (ನೀವು ಆಪರೇಟರ್ ಅನ್ನು ಹೇಗೆ ಸ್ಥಾಪಿಸಲು ನಿರ್ಧರಿಸುತ್ತೀರಿ ಎಂಬುದರ ಆಧಾರದ ಮೇಲೆ).

ಆದಾಗ್ಯೂ, ಇದು ಬದಲಾದಂತೆ, ಇದು ಪ್ರಸ್ತುತ ಅಸಾಧ್ಯವಾಗಿದೆ. ಅದಕ್ಕಾಗಿಯೇ ನಾವು ಸಂಗ್ರಹಿಸಿದ್ದೇವೆ ನಿಮ್ಮ ಆಪರೇಟರ್ ಆವೃತ್ತಿ ಕೆಲವು ಹೆಚ್ಚುವರಿ ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಬೆಳವಣಿಗೆಗಳೊಂದಿಗೆ. ಅದರ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ, ಕೆಳಗೆ ನೋಡಿ.

ನೀವು ಆಪರೇಟರ್‌ಗೆ ಬ್ಯಾಕಪ್‌ಗಾಗಿ ನಿಯತಾಂಕಗಳನ್ನು ರವಾನಿಸಿದರೆ, ಅವುಗಳೆಂದರೆ - wal_s3_bucket ಮತ್ತು AWS S3 ನಲ್ಲಿ ಪ್ರವೇಶ ಕೀಗಳು, ನಂತರ ಅದು ಎಲ್ಲವನ್ನೂ ಬ್ಯಾಕಪ್ ಮಾಡುತ್ತದೆ: ಉತ್ಪಾದನೆಯಲ್ಲಿ ನೆಲೆಗಳು ಮಾತ್ರವಲ್ಲದೆ, ವೇದಿಕೆಯೂ ಸಹ. ಇದು ನಮಗೆ ಹಿಡಿಸಲಿಲ್ಲ.

ಆಪರೇಟರ್ ಬಳಸುವಾಗ PgSQL ಗಾಗಿ ಮೂಲ ಡಾಕರ್ ಹೊದಿಕೆಯಾದ ಸ್ಪಿಲೋಗಾಗಿ ನಿಯತಾಂಕಗಳ ವಿವರಣೆಯಲ್ಲಿ, ಅದು ಹೊರಹೊಮ್ಮಿತು: ನೀವು ಪ್ಯಾರಾಮೀಟರ್ ಅನ್ನು ರವಾನಿಸಬಹುದು WAL_S3_BUCKET ಖಾಲಿ, ಆ ಮೂಲಕ ಬ್ಯಾಕ್‌ಅಪ್‌ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ. ಇದಲ್ಲದೆ, ಬಹಳ ಸಂತೋಷಕ್ಕೆ, ನಾನು ಕಂಡುಕೊಂಡೆ ಸಿದ್ಧ PR, ನಾವು ತಕ್ಷಣ ನಮ್ಮ ಫೋರ್ಕ್ಗೆ ಒಪ್ಪಿಕೊಂಡೆವು. ಈಗ ನೀವು ಸೇರಿಸಬೇಕಾಗಿದೆ enableWALArchiving: false PostgreSQL ಕ್ಲಸ್ಟರ್ ಸಂಪನ್ಮೂಲಕ್ಕೆ.

ಹೌದು, 2 ಆಪರೇಟರ್‌ಗಳನ್ನು ಚಲಾಯಿಸುವ ಮೂಲಕ ವಿಭಿನ್ನವಾಗಿ ಮಾಡಲು ಅವಕಾಶವಿತ್ತು: ಒಂದು ಹಂತಕ್ಕೆ (ಬ್ಯಾಕ್‌ಅಪ್‌ಗಳಿಲ್ಲದೆ), ಮತ್ತು ಎರಡನೆಯದು ಉತ್ಪಾದನೆಗೆ. ಆದರೆ ನಾವು ಒಂದನ್ನು ಮಾಡಲು ಸಾಧ್ಯವಾಯಿತು.

ಸರಿ, S3 ಗಾಗಿ ಡೇಟಾಬೇಸ್‌ಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಹೇಗೆ ವರ್ಗಾಯಿಸುವುದು ಎಂದು ನಾವು ಕಲಿತಿದ್ದೇವೆ ಮತ್ತು ಬ್ಯಾಕ್‌ಅಪ್‌ಗಳು ಸಂಗ್ರಹಣೆಗೆ ಬರಲು ಪ್ರಾರಂಭಿಸಿದವು. ಆಪರೇಟರ್ UI ನಲ್ಲಿ ಬ್ಯಾಕಪ್ ಪುಟಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸುವಂತೆ ಮಾಡುವುದು ಹೇಗೆ?

ಕುಬರ್ನೆಟ್ಸ್, ನಮ್ಮ ಆಯ್ಕೆಗಳು ಮತ್ತು ಅನುಭವಕ್ಕಾಗಿ PostgreSQL ಹೇಳಿಕೆಗಳ ಸಂಕ್ಷಿಪ್ತ ಅವಲೋಕನ

ನೀವು ಆಪರೇಟರ್ UI ಗೆ 3 ವೇರಿಯೇಬಲ್‌ಗಳನ್ನು ಸೇರಿಸುವ ಅಗತ್ಯವಿದೆ:

  • SPILO_S3_BACKUP_BUCKET
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

ಇದರ ನಂತರ, ಬ್ಯಾಕ್‌ಅಪ್‌ಗಳ ನಿರ್ವಹಣೆಯು ಲಭ್ಯವಾಗುತ್ತದೆ, ಇದು ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ ಕಾರ್ಯವನ್ನು ವೇದಿಕೆಯೊಂದಿಗೆ ಸರಳಗೊಳಿಸುತ್ತದೆ, ಹೆಚ್ಚುವರಿ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಿಲ್ಲದೆ ಉತ್ಪಾದನೆಯಿಂದ ಚೂರುಗಳನ್ನು ತಲುಪಿಸಲು ನಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.

ಮತ್ತೊಂದು ಪ್ರಯೋಜನವೆಂದರೆ ತಂಡಗಳ API ಯೊಂದಿಗಿನ ಕೆಲಸ ಮತ್ತು ಆಪರೇಟರ್ ಪರಿಕರಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಡೇಟಾಬೇಸ್‌ಗಳು ಮತ್ತು ಪಾತ್ರಗಳನ್ನು ರಚಿಸಲು ಸಾಕಷ್ಟು ಅವಕಾಶಗಳು. ಆದಾಗ್ಯೂ, ರಚಿಸಲಾಗಿದೆ ಪಾತ್ರಗಳಿಗೆ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಯಾವುದೇ ಹಕ್ಕುಗಳಿಲ್ಲ. ಅಂತೆಯೇ, ಓದುವ ಹಕ್ಕುಗಳನ್ನು ಹೊಂದಿರುವ ಬಳಕೆದಾರರು ಹೊಸ ಕೋಷ್ಟಕಗಳನ್ನು ಓದಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.

ಅದು ಏಕೆ? ಕೋಡ್ನಲ್ಲಿ ಎಂದು ವಾಸ್ತವವಾಗಿ ಹೊರತಾಗಿಯೂ ಆಗಿದೆ ಅಗತ್ಯ GRANT, ಅವುಗಳನ್ನು ಯಾವಾಗಲೂ ಬಳಸಲಾಗುವುದಿಲ್ಲ. 2 ವಿಧಾನಗಳಿವೆ: syncPreparedDatabases и syncDatabases. ದಿ syncPreparedDatabases - ವಿಭಾಗದಲ್ಲಿ ಎಂದು ವಾಸ್ತವವಾಗಿ ಹೊರತಾಗಿಯೂ preparedDatabases ಆಗಿದೆ ಒಂದು ಷರತ್ತು ಇದೆ defaultRoles и defaultUsers ಪಾತ್ರಗಳನ್ನು ರಚಿಸಲು, ಡೀಫಾಲ್ಟ್ ಹಕ್ಕುಗಳನ್ನು ಅನ್ವಯಿಸುವುದಿಲ್ಲ. ಈ ಹಕ್ಕುಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅನ್ವಯವಾಗುವಂತೆ ನಾವು ಪ್ಯಾಚ್ ಅನ್ನು ಸಿದ್ಧಪಡಿಸುವ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿದ್ದೇವೆ.

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

ಏನು ಸಂಭವಿಸಿದೆ?

ಮೇಲಿನ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸುವ ಫಲಿತಾಂಶಗಳ ಆಧಾರದ ಮೇಲೆ, ನಾವು ಝಲ್ಯಾಂಡೊದಿಂದ ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಆಪರೇಟರ್ ಅನ್ನು ಫೋರ್ಕ್ ಮಾಡಿದ್ದೇವೆ ನಿಮ್ಮ ಭಂಡಾರ, ಅಂತಹ ಉಪಯುಕ್ತ ಪ್ಯಾಚ್ಗಳೊಂದಿಗೆ ಅದನ್ನು ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ಮತ್ತು ಹೆಚ್ಚಿನ ಅನುಕೂಲಕ್ಕಾಗಿ, ನಾವು ಕೂಡ ಸಂಗ್ರಹಿಸಿದ್ದೇವೆ ಡಾಕರ್ ಚಿತ್ರ.

ಫೋರ್ಕ್‌ಗೆ ಅಂಗೀಕರಿಸಲ್ಪಟ್ಟ PR ಗಳ ಪಟ್ಟಿ:

ಸಮುದಾಯವು ಈ PR ಗಳನ್ನು ಬೆಂಬಲಿಸಿದರೆ ಅದು ಉತ್ತಮವಾಗಿರುತ್ತದೆ, ಇದರಿಂದಾಗಿ ಅವರು ಆಪರೇಟರ್‌ನ ಮುಂದಿನ ಆವೃತ್ತಿಯೊಂದಿಗೆ ಅಪ್‌ಸ್ಟ್ರೀಮ್ ಆಗುತ್ತಾರೆ (1.6).

ಬೋನಸ್! ಉತ್ಪಾದನೆಯ ವಲಸೆಯ ಯಶಸ್ಸಿನ ಕಥೆ

ನೀವು Patroni ಅನ್ನು ಬಳಸಿದರೆ, ಲೈವ್ ಉತ್ಪಾದನೆಯನ್ನು ಕನಿಷ್ಠ ಅಲಭ್ಯತೆಯೊಂದಿಗೆ ಆಪರೇಟರ್‌ಗೆ ಸ್ಥಳಾಂತರಿಸಬಹುದು.

S3 ಸಂಗ್ರಹಣೆಯ ಮೂಲಕ ಸ್ಟ್ಯಾಂಡ್‌ಬೈ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ರಚಿಸಲು Spilo ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ ವಾಲ್-ಇ, PgSQL ಬೈನರಿ ಲಾಗ್ ಅನ್ನು ಮೊದಲು S3 ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ ನಂತರ ಪ್ರತಿಕೃತಿಯಿಂದ ಪಂಪ್ ಮಾಡಿದಾಗ. ಆದರೆ ನೀವು ಹೊಂದಿದ್ದರೆ ಏನು ಮಾಡಬೇಕು ಕೇವಲ ಹಳೆಯ ಮೂಲಸೌಕರ್ಯದಲ್ಲಿ ವಾಲ್-ಇ ಬಳಸಿದೆಯೇ? ಈ ಸಮಸ್ಯೆಗೆ ಈಗಾಗಲೇ ಪರಿಹಾರವಿದೆ ಅದನ್ನು ಸೂಚಿಸಲಾಯಿತು ಹಬ್ ಮೇಲೆ.

PostgreSQL ತಾರ್ಕಿಕ ಪ್ರತಿರೂಪವು ಪಾರುಗಾಣಿಕಾಕ್ಕೆ ಬರುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಪ್ರಕಟಣೆಗಳು ಮತ್ತು ಚಂದಾದಾರಿಕೆಗಳನ್ನು ಹೇಗೆ ರಚಿಸುವುದು ಎಂಬುದರ ಕುರಿತು ನಾವು ವಿವರವಾಗಿ ಹೋಗುವುದಿಲ್ಲ, ಏಕೆಂದರೆ... ನಮ್ಮ ಯೋಜನೆಯು ವಿಫಲವಾಗಿದೆ.

ವಾಸ್ತವವೆಂದರೆ ಡೇಟಾಬೇಸ್ ಲಕ್ಷಾಂತರ ಸಾಲುಗಳೊಂದಿಗೆ ಹಲವಾರು ಲೋಡ್ ಮಾಡಿದ ಕೋಷ್ಟಕಗಳನ್ನು ಹೊಂದಿತ್ತು, ಮೇಲಾಗಿ, ನಿರಂತರವಾಗಿ ಮರುಪೂರಣ ಮತ್ತು ಅಳಿಸಲಾಗಿದೆ. ಸರಳ ಚಂದಾದಾರಿಕೆ с copy_data, ಹೊಸ ಪ್ರತಿಕೃತಿಯು ಮಾಸ್ಟರ್‌ನಿಂದ ಎಲ್ಲಾ ವಿಷಯಗಳನ್ನು ನಕಲಿಸಿದಾಗ, ಅದು ಮಾಸ್ಟರ್‌ನೊಂದಿಗೆ ಮುಂದುವರಿಯಲು ಸಾಧ್ಯವಿಲ್ಲ. ವಿಷಯವನ್ನು ನಕಲು ಮಾಡುವುದು ಒಂದು ವಾರದವರೆಗೆ ಕೆಲಸ ಮಾಡಿದೆ, ಆದರೆ ಮಾಸ್ಟರ್‌ನೊಂದಿಗೆ ಎಂದಿಗೂ ಹಿಡಿಯಲಿಲ್ಲ. ಕೊನೆಯಲ್ಲಿ, ಇದು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ನನಗೆ ಸಹಾಯ ಮಾಡಿತು ಲೇಖನ Avito ನಿಂದ ಸಹೋದ್ಯೋಗಿಗಳು: ನೀವು ಬಳಸಿಕೊಂಡು ಡೇಟಾವನ್ನು ವರ್ಗಾಯಿಸಬಹುದು pg_dump. ಈ ಅಲ್ಗಾರಿದಮ್‌ನ ನಮ್ಮ (ಸ್ವಲ್ಪ ಮಾರ್ಪಡಿಸಿದ) ಆವೃತ್ತಿಯನ್ನು ನಾನು ವಿವರಿಸುತ್ತೇನೆ.

ನೀವು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ ಚಂದಾದಾರಿಕೆಯನ್ನು ನಿರ್ದಿಷ್ಟ ಪುನರಾವರ್ತನೆಯ ಸ್ಲಾಟ್‌ಗೆ ಜೋಡಿಸಬಹುದು ಮತ್ತು ನಂತರ ವಹಿವಾಟು ಸಂಖ್ಯೆಯನ್ನು ಸರಿಪಡಿಸಬಹುದು ಎಂಬುದು ಕಲ್ಪನೆ. ಉತ್ಪಾದನಾ ಕಾರ್ಯಕ್ಕೆ ಪ್ರತಿಕೃತಿಗಳು ಲಭ್ಯವಿವೆ. ಇದು ಮುಖ್ಯವಾಗಿದೆ ಏಕೆಂದರೆ ಪ್ರತಿಕೃತಿಯು ಸ್ಥಿರವಾದ ಡಂಪ್ ಅನ್ನು ರಚಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ ಮತ್ತು ಮಾಸ್ಟರ್‌ನಿಂದ ಬದಲಾವಣೆಗಳನ್ನು ಸ್ವೀಕರಿಸುವುದನ್ನು ಮುಂದುವರಿಸುತ್ತದೆ.

ವಲಸೆ ಪ್ರಕ್ರಿಯೆಯನ್ನು ವಿವರಿಸುವ ನಂತರದ ಆಜ್ಞೆಗಳು ಈ ಕೆಳಗಿನ ಹೋಸ್ಟ್ ಸಂಕೇತಗಳನ್ನು ಬಳಸುತ್ತವೆ:

  1. ಮಾಸ್ಟರ್ - ಮೂಲ ಸರ್ವರ್;
  2. ಪ್ರತಿಕೃತಿ1 - ಹಳೆಯ ಉತ್ಪಾದನೆಯಲ್ಲಿ ಸ್ಟ್ರೀಮಿಂಗ್ ಪ್ರತಿಕೃತಿ;
  3. ಪ್ರತಿಕೃತಿ2 - ಹೊಸ ತಾರ್ಕಿಕ ಪ್ರತಿಕೃತಿ.

ವಲಸೆ ಯೋಜನೆ

1. ಸ್ಕೀಮಾದಲ್ಲಿನ ಎಲ್ಲಾ ಕೋಷ್ಟಕಗಳಿಗೆ ಮಾಸ್ಟರ್‌ನಲ್ಲಿ ಚಂದಾದಾರಿಕೆಯನ್ನು ರಚಿಸಿ public ಬೇಸ್ dbname:

psql -h master -d dbname -c "CREATE PUBLICATION dbname FOR ALL TABLES;"

2. ಮಾಸ್ಟರ್‌ನಲ್ಲಿ ಪ್ರತಿಕೃತಿ ಸ್ಲಾಟ್ ಅನ್ನು ರಚಿಸಿ:

psql -h master -c "select pg_create_logical_replication_slot('repl', 'pgoutput');"

3. ಹಳೆಯ ಪ್ರತಿಕೃತಿಯಲ್ಲಿ ಪ್ರತಿಕೃತಿಯನ್ನು ನಿಲ್ಲಿಸಿ:

psql -h replica1 -c "select pg_wal_replay_pause();"

4. ಮಾಸ್ಟರ್‌ನಿಂದ ವಹಿವಾಟಿನ ಸಂಖ್ಯೆಯನ್ನು ಪಡೆಯಿರಿ:

psql -h master -c "select replay_lsn from pg_stat_replication where client_addr = 'replica1';"

5. ಹಳೆಯ ಪ್ರತಿಕೃತಿಯಿಂದ ಡಂಪ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ. ನಾವು ಇದನ್ನು ಹಲವಾರು ಎಳೆಗಳಲ್ಲಿ ಮಾಡುತ್ತೇವೆ, ಇದು ಪ್ರಕ್ರಿಯೆಯನ್ನು ವೇಗಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ:

pg_dump -h replica1 --no-publications --no-subscriptions -O -C -F d -j 8 -f dump/ dbname

6. ಡಂಪ್ ಅನ್ನು ಹೊಸ ಸರ್ವರ್‌ಗೆ ಅಪ್‌ಲೋಡ್ ಮಾಡಿ:

pg_restore -h replica2 -F d -j 8 -d dbname dump/

7. ಡಂಪ್ ಅನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ನಂತರ, ನೀವು ಸ್ಟ್ರೀಮಿಂಗ್ ಪ್ರತಿಕೃತಿಯಲ್ಲಿ ಪ್ರತಿಕೃತಿಯನ್ನು ಪ್ರಾರಂಭಿಸಬಹುದು:

psql -h replica1 -c "select pg_wal_replay_resume();"

7. ಹೊಸ ತಾರ್ಕಿಕ ಪ್ರತಿಕೃತಿಯಲ್ಲಿ ಚಂದಾದಾರಿಕೆಯನ್ನು ರಚಿಸೋಣ:

psql -h replica2 -c "create subscription oldprod connection 'host=replica1 port=5432 user=postgres password=secret dbname=dbname' publication dbname with (enabled = false, create_slot = false, copy_data = false, slot_name='repl');"

8. ಪಡೆಯೋಣ oid ಚಂದಾದಾರಿಕೆಗಳು:

psql -h replica2 -d dbname -c "select oid, * from pg_subscription;"

9. ಅದನ್ನು ಸ್ವೀಕರಿಸಲಾಗಿದೆ ಎಂದು ಹೇಳೋಣ oid=1000. ಚಂದಾದಾರಿಕೆಗೆ ವಹಿವಾಟು ಸಂಖ್ಯೆಯನ್ನು ಅನ್ವಯಿಸೋಣ:

psql -h replica2 -d dbname -c "select pg_replication_origin_advance('pg_1000', 'AA/AAAAAAAA');"

10. ನಕಲು ಮಾಡುವುದನ್ನು ಪ್ರಾರಂಭಿಸೋಣ:

psql -h replica2 -d dbname -c "alter subscription oldprod enable;"

11. ಚಂದಾದಾರಿಕೆ ಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸಿ, ಪ್ರತಿಕೃತಿಯು ಕಾರ್ಯನಿರ್ವಹಿಸಬೇಕು:

psql -h replica2 -d dbname -c "select * from pg_replication_origin_status;"
psql -h master -d dbname -c "select slot_name, restart_lsn, confirmed_flush_lsn from pg_replication_slots;"

12. ಪುನರಾವರ್ತನೆ ಪ್ರಾರಂಭವಾದ ನಂತರ ಮತ್ತು ಡೇಟಾಬೇಸ್‌ಗಳನ್ನು ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡಿದ ನಂತರ, ನೀವು ಬದಲಾಯಿಸಬಹುದು.

13. ಪ್ರತಿಕೃತಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ ನಂತರ, ನೀವು ಅನುಕ್ರಮಗಳನ್ನು ಸರಿಪಡಿಸಬೇಕಾಗಿದೆ. ಇದನ್ನು ಚೆನ್ನಾಗಿ ವಿವರಿಸಲಾಗಿದೆ wiki.postgresql.org ಲೇಖನದಲ್ಲಿ.

ಈ ಯೋಜನೆಗೆ ಧನ್ಯವಾದಗಳು, ಸ್ವಿಚ್ಓವರ್ ಕನಿಷ್ಠ ವಿಳಂಬಗಳೊಂದಿಗೆ ನಡೆಯಿತು.

ತೀರ್ಮಾನಕ್ಕೆ

Kubernetes ನಿರ್ವಾಹಕರು K8s ಸಂಪನ್ಮೂಲಗಳ ರಚನೆಗೆ ಅವುಗಳನ್ನು ಕಡಿಮೆ ಮಾಡುವ ಮೂಲಕ ವಿವಿಧ ಕ್ರಿಯೆಗಳನ್ನು ಸರಳೀಕರಿಸಲು ನಿಮಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತಾರೆ. ಆದಾಗ್ಯೂ, ಅವರ ಸಹಾಯದಿಂದ ಗಮನಾರ್ಹವಾದ ಯಾಂತ್ರೀಕರಣವನ್ನು ಸಾಧಿಸಿದ ನಂತರ, ಇದು ಹಲವಾರು ಅನಿರೀಕ್ಷಿತ ಸೂಕ್ಷ್ಮ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಸಹ ತರಬಹುದು ಎಂದು ನೆನಪಿನಲ್ಲಿಟ್ಟುಕೊಳ್ಳುವುದು ಯೋಗ್ಯವಾಗಿದೆ, ಆದ್ದರಿಂದ ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಬುದ್ಧಿವಂತಿಕೆಯಿಂದ ಆಯ್ಕೆ ಮಾಡಿ.

PostgreSQL ಗಾಗಿ ಮೂರು ಅತ್ಯಂತ ಜನಪ್ರಿಯ ಕುಬರ್ನೆಟ್ಸ್ ಆಪರೇಟರ್‌ಗಳನ್ನು ಪರಿಗಣಿಸಿದ ನಂತರ, ನಾವು ಝಲ್ಯಾಂಡೊದಿಂದ ಯೋಜನೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಿದ್ದೇವೆ. ಮತ್ತು ನಾವು ಅದರೊಂದಿಗೆ ಕೆಲವು ತೊಂದರೆಗಳನ್ನು ನಿವಾರಿಸಬೇಕಾಗಿತ್ತು, ಆದರೆ ಫಲಿತಾಂಶವು ನಿಜವಾಗಿಯೂ ಸಂತೋಷಕರವಾಗಿದೆ, ಆದ್ದರಿಂದ ನಾವು ಈ ಅನುಭವವನ್ನು ಕೆಲವು PgSQL ಸ್ಥಾಪನೆಗಳಿಗೆ ವಿಸ್ತರಿಸಲು ಯೋಜಿಸುತ್ತೇವೆ. ಇದೇ ರೀತಿಯ ಪರಿಹಾರಗಳನ್ನು ಬಳಸುವ ಅನುಭವವನ್ನು ನೀವು ಹೊಂದಿದ್ದರೆ, ಕಾಮೆಂಟ್‌ಗಳಲ್ಲಿ ವಿವರಗಳನ್ನು ನೋಡಲು ನಾವು ಸಂತೋಷಪಡುತ್ತೇವೆ!

ಪಿಎಸ್

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

ಮೂಲ: www.habr.com

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