Kubernetes க்கான PostgreSQL அறிக்கைகளின் சுருக்கமான கண்ணோட்டம், எங்கள் தேர்வுகள் மற்றும் அனுபவம்

Kubernetes க்கான PostgreSQL அறிக்கைகளின் சுருக்கமான கண்ணோட்டம், எங்கள் தேர்வுகள் மற்றும் அனுபவம்

பெருகிய முறையில், வாடிக்கையாளர்கள் பின்வரும் கோரிக்கைகளைப் பெறுகின்றனர்: "அமேசான் ஆர்டிஎஸ் போன்றவற்றை நாங்கள் விரும்புகிறோம், ஆனால் மலிவானது"; "ஆர்.டி.எஸ். போன்றவற்றை நாங்கள் விரும்புகிறோம், ஆனால் எல்லா இடங்களிலும், எந்த உள்கட்டமைப்பிலும் இருக்க வேண்டும்." Kubernetes இல் இதுபோன்ற நிர்வகிக்கப்பட்ட தீர்வைச் செயல்படுத்த, PostgreSQL (Stolon, Crunchy Data மற்றும் Zalando இலிருந்து ஆபரேட்டர்கள்) மிகவும் பிரபலமான ஆபரேட்டர்களின் தற்போதைய நிலையைப் பார்த்து, எங்கள் விருப்பத்தைத் தேர்ந்தெடுத்தோம்.

இந்தக் கட்டுரை ஒரு கோட்பாட்டுக் கண்ணோட்டத்தில் இருந்தும் (தீர்வுகளின் மறுஆய்வு) மற்றும் நடைமுறைப் பக்கத்திலிருந்தும் (தேர்ந்தெடுக்கப்பட்டது மற்றும் அதில் என்ன வந்தது) ஆகிய இரண்டிலும் நாம் பெற்ற அனுபவமாகும். ஆனால் முதலில், RDS க்கான சாத்தியமான மாற்றத்திற்கான பொதுவான தேவைகள் என்ன என்பதைத் தீர்மானிக்கலாம்...

RDS என்றால் என்ன

மக்கள் RDS பற்றி பேசும்போது, ​​எங்கள் அனுபவத்தில், அவர்கள் நிர்வகிக்கப்படும் DBMS சேவையைக் குறிக்கிறார்கள்:

  1. கட்டமைக்க எளிதானது;
  2. ஸ்னாப்ஷாட்களுடன் பணிபுரியும் திறன் மற்றும் அவற்றிலிருந்து மீள்வது (முன்னுரிமை ஆதரவுடன் PITR);
  3. மாஸ்டர்-ஸ்லேவ் டோபோலாஜிகளை உருவாக்க உங்களை அனுமதிக்கிறது;
  4. நீட்டிப்புகளின் பணக்கார பட்டியல் உள்ளது;
  5. தணிக்கை மற்றும் பயனர்/அணுகல் நிர்வாகத்தை வழங்குகிறது.

பொதுவாக, கையில் உள்ள பணியை செயல்படுத்துவதற்கான அணுகுமுறைகள் மிகவும் வித்தியாசமாக இருக்கலாம், ஆனால் நிபந்தனைக்குட்பட்ட அன்சிபிள் கொண்ட பாதை நமக்கு நெருக்கமாக இல்லை. (2GIS இன் சக ஊழியர்கள் இதன் விளைவாக இதேபோன்ற முடிவுக்கு வந்தனர் அவரது முயற்சி "போஸ்ட்கிரெஸ்-அடிப்படையிலான ஃபெயில்ஓவர் கிளஸ்டரை விரைவாகப் பயன்படுத்துவதற்கான ஒரு கருவியை" உருவாக்கவும்.

குபெர்னெட்ஸ் சுற்றுச்சூழல் அமைப்பில் இதே போன்ற சிக்கல்களைத் தீர்ப்பதற்கான பொதுவான அணுகுமுறை ஆபரேட்டர்கள். "Flanta" இன் தொழில்நுட்ப இயக்குனர் ஏற்கனவே Kubernetes க்குள் தொடங்கப்பட்ட தரவுத்தளங்கள் தொடர்பாக இன்னும் விரிவாகப் பேசியுள்ளார். டிஸ்டோல்இல் அவரது அறிக்கைகளில் ஒன்று.

NB: எளிய ஆபரேட்டர்களை விரைவாக உருவாக்க, எங்கள் திறந்த மூல பயன்பாட்டில் கவனம் செலுத்த பரிந்துரைக்கிறோம் ஷெல்-ஆபரேட்டர். இதைப் பயன்படுத்தி, Go பற்றிய அறிவு இல்லாமல் இதைச் செய்யலாம், ஆனால் கணினி நிர்வாகிகளுக்கு மிகவும் பரிச்சயமான வழிகளில்: பாஷ், பைதான் போன்றவற்றில்.

PostgreSQLக்கு பல பிரபலமான K8s ஆபரேட்டர்கள் உள்ளனர்:

  • ஸ்டோலன்;
  • Crunchy Data PostgreSQL ஆபரேட்டர்;
  • Zalando Postgres ஆபரேட்டர்.

அவற்றை இன்னும் விரிவாகப் பார்ப்போம்.

ஆபரேட்டர் தேர்வு

ஏற்கனவே மேலே குறிப்பிட்டுள்ள முக்கியமான அம்சங்களுடன், நாங்கள் - குபெர்னெட்ஸ் உள்கட்டமைப்பு செயல்பாட்டு பொறியாளர்களாக - ஆபரேட்டர்களிடமிருந்து பின்வருவனவற்றையும் எதிர்பார்க்கிறோம்:

  • Git மற்றும் உடன் பயன்படுத்துதல் விருப்ப வளங்கள்;
  • பாட் எதிர்ப்பு தொடர்பு ஆதரவு;
  • முனை இணைப்பு அல்லது முனை தேர்வியை நிறுவுதல்;
  • சகிப்புத்தன்மையை நிறுவுதல்;
  • சரிப்படுத்தும் திறன்களின் கிடைக்கும் தன்மை;
  • புரிந்துகொள்ளக்கூடிய தொழில்நுட்பங்கள் மற்றும் கட்டளைகள் கூட.

ஒவ்வொரு புள்ளிகளையும் பற்றிய விவரங்களுக்குச் செல்லாமல் (முழு கட்டுரையைப் படித்த பிறகும் அவற்றைப் பற்றி உங்களிடம் கேள்விகள் இருந்தால் கருத்துகளில் கேளுங்கள்), கிளஸ்டர் முனைகளின் நிபுணத்துவத்தை இன்னும் துல்லியமாக விவரிக்க இந்த அளவுருக்கள் தேவை என்பதை நான் பொதுவாகக் கவனிக்கிறேன். குறிப்பிட்ட பயன்பாடுகளுக்கு அவற்றை ஆர்டர் செய்யவும். இந்த வழியில் நாம் செயல்திறன் மற்றும் செலவு அடிப்படையில் உகந்த சமநிலையை அடைய முடியும்.

இப்போது PostgreSQL ஆபரேட்டர்களுக்கு செல்லலாம்.

1. ஸ்டோலன்

ஸ்டோலன் இத்தாலிய நிறுவனமான Sorint.lab இல் இருந்து ஏற்கனவே குறிப்பிட்டுள்ள அறிக்கை DBMSக்கான ஆபரேட்டர்களிடையே ஒரு வகையான தரநிலையாகக் கருதப்பட்டது. இது மிகவும் பழைய திட்டமாகும்: இதன் முதல் பொது வெளியீடு நவம்பர் 2015(!) இல் நடந்தது, மேலும் GitHub களஞ்சியத்தில் கிட்டத்தட்ட 3000 நட்சத்திரங்கள் மற்றும் 40+ பங்களிப்பாளர்கள் உள்ளனர்.

உண்மையில், சிந்தனைமிக்க கட்டிடக்கலைக்கு ஸ்டோலன் ஒரு சிறந்த உதாரணம்:

Kubernetes க்கான PostgreSQL அறிக்கைகளின் சுருக்கமான கண்ணோட்டம், எங்கள் தேர்வுகள் மற்றும் அனுபவம்
இந்த ஆபரேட்டரின் சாதனத்தை அறிக்கையில் விரிவாகக் காணலாம் அல்லது திட்ட ஆவணங்கள். பொதுவாக, விவரிக்கப்பட்டுள்ள அனைத்தையும் செய்ய முடியும் என்று சொன்னால் போதுமானது: தோல்வி, வெளிப்படையான கிளையன்ட் அணுகலுக்கான ப்ராக்ஸிகள், காப்புப்பிரதிகள்... மேலும், ப்ராக்ஸிகள் ஒரு எண்ட்பாயிண்ட் சேவை மூலம் அணுகலை வழங்குகின்றன - கீழே விவாதிக்கப்பட்ட மற்ற இரண்டு தீர்வுகளைப் போலல்லாமல் (அவை ஒவ்வொன்றும் இரண்டு சேவைகளைக் கொண்டுள்ளன. அடிப்படை அணுகல்).

இருப்பினும், ஸ்டோலன் தனிப்பயன் வளங்கள் இல்லை, அதனால்தான் குபெர்னெட்டஸில் DBMS நிகழ்வுகளை உருவாக்குவதற்கு - "ஹாட் கேக் போல" - எளிதாகவும் விரைவாகவும் பயன்படுத்த முடியாது. பயன்பாடு மூலம் மேலாண்மை மேற்கொள்ளப்படுகிறது stolonctl, வரிசைப்படுத்தல் ஹெல்ம் விளக்கப்படம் மூலம் செய்யப்படுகிறது, மேலும் விருப்பமானவை கான்ஃபிக்மேப்பில் வரையறுக்கப்பட்டு குறிப்பிடப்படுகின்றன.

ஒருபுறம், ஆபரேட்டர் உண்மையில் ஒரு ஆபரேட்டர் அல்ல என்று மாறிவிடும் (எல்லாவற்றிற்கும் மேலாக, இது CRD ஐப் பயன்படுத்தாது). ஆனால் மறுபுறம், இது ஒரு நெகிழ்வான அமைப்பாகும், இது K8 களில் வளங்களை நீங்கள் பொருத்தமாக உள்ளமைக்க அனுமதிக்கிறது.

சுருக்கமாக, தனிப்பட்ட முறையில் எங்களுக்கு ஒவ்வொரு தரவுத்தளத்திற்கும் தனித்தனி விளக்கப்படத்தை உருவாக்குவது உகந்ததாகத் தெரியவில்லை. எனவே, நாங்கள் மாற்று வழிகளைத் தேட ஆரம்பித்தோம்.

2. Crunchy Data PostgreSQL ஆபரேட்டர்

க்ரஞ்சி டேட்டாவிலிருந்து ஆபரேட்டர், ஒரு இளம் அமெரிக்க தொடக்கமானது, ஒரு தர்க்கரீதியான மாற்றாகத் தோன்றியது. அதன் பொது வரலாறு மார்ச் 2017 இல் முதல் வெளியீட்டில் தொடங்குகிறது, அதன் பிறகு GitHub களஞ்சியமானது 1300 நட்சத்திரங்களுக்கும் 50+ பங்களிப்பாளர்களுக்கும் குறைவாகவே பெற்றுள்ளது. செப்டம்பர் மாதத்தின் சமீபத்திய வெளியீடு குபெர்னெட்டஸ் 1.15-1.18, ஓபன்ஷிஃப்ட் 3.11+ மற்றும் 4.4+, ஜிகேஇ மற்றும் விஎம்வேர் எண்டர்பிரைஸ் பிகேஎஸ் 1.3+ உடன் வேலை செய்ய சோதிக்கப்பட்டது.

Crunchy Data PostgreSQL ஆபரேட்டரின் கட்டமைப்பும் கூறப்பட்ட தேவைகளைப் பூர்த்தி செய்கிறது:

Kubernetes க்கான PostgreSQL அறிக்கைகளின் சுருக்கமான கண்ணோட்டம், எங்கள் தேர்வுகள் மற்றும் அனுபவம்

மேலாண்மை பயன்பாடு மூலம் நிகழ்கிறது pgoஇருப்பினும், இது குபெர்னெட்டிற்கான தனிப்பயன் வளங்களை உருவாக்குகிறது. எனவே, சாத்தியமான பயனர்களாக ஆபரேட்டர் எங்களை மகிழ்வித்தார்:

  • CRD வழியாக கட்டுப்பாடு உள்ளது;
  • வசதியான பயனர் மேலாண்மை (சிஆர்டி வழியாகவும்);
  • மற்ற கூறுகளுடன் ஒருங்கிணைப்பு முறுமுறுப்பான தரவு கொள்கலன் தொகுப்பு - PostgreSQL க்கான கன்டெய்னர் படங்களின் சிறப்புத் தொகுப்பு மற்றும் அதனுடன் வேலை செய்வதற்கான பயன்பாடுகள் (pgBackRest, pgAudit, contrib இலிருந்து நீட்டிப்புகள் போன்றவை).

இருப்பினும், க்ரஞ்சி டேட்டாவிலிருந்து ஆபரேட்டரைப் பயன்படுத்தத் தொடங்கும் முயற்சிகள் பல சிக்கல்களை வெளிப்படுத்தின:

  • சகிப்புத்தன்மைக்கான சாத்தியம் இல்லை - nodeSelector மட்டுமே வழங்கப்படுகிறது.
  • உருவாக்கப்பட்ட காய்கள் வரிசைப்படுத்தலின் ஒரு பகுதியாகும், இருப்பினும் நாங்கள் ஒரு நிலையான பயன்பாட்டைப் பயன்படுத்தினோம். ஸ்டேட்ஃபுல்செட்களைப் போலன்றி, வரிசைப்படுத்துதல்களால் வட்டுகளை உருவாக்க முடியாது.

கடைசி குறைபாடு வேடிக்கையான தருணங்களுக்கு வழிவகுக்கிறது: சோதனை சூழலில் ஒரு வட்டில் 3 பிரதிகளை இயக்க முடிந்தது. உள்ளூர் சேமிப்பு, 3 பிரதிகள் (அவை இல்லாவிட்டாலும்) வேலை செய்கின்றன என்று ஆபரேட்டருக்கு தெரிவிக்கிறது.

இந்த ஆபரேட்டரின் மற்றொரு அம்சம் பல்வேறு துணை அமைப்புகளுடன் அதன் ஆயத்த ஒருங்கிணைப்பு ஆகும். எடுத்துக்காட்டாக, pgAdmin மற்றும் pgBounce ஐ நிறுவுவது எளிது ஆவணங்கள் முன் கட்டமைக்கப்பட்ட Grafana மற்றும் Prometheus கருதப்படுகிறது. சமீபத்தில் வெளியீடு 4.5.0-beta1 திட்டத்துடன் மேம்படுத்தப்பட்ட ஒருங்கிணைப்பு தனித்தனியாக குறிப்பிடப்பட்டுள்ளது pgMonitor, ஆபரேட்டர் PgSQL அளவீடுகளின் தெளிவான காட்சிப்படுத்தலை பெட்டிக்கு வெளியே வழங்குவதற்கு நன்றி.

இருப்பினும், குபெர்னெட்டஸ் உருவாக்கிய வளங்களின் விசித்திரமான தேர்வு வேறுபட்ட தீர்வைக் கண்டுபிடிக்க வேண்டிய அவசியத்திற்கு நம்மை இட்டுச் சென்றது.

3. Zalando Postgres ஆபரேட்டர்

Zalando தயாரிப்புகளை நாங்கள் நீண்ட காலமாக அறிந்திருக்கிறோம்: Zalenium ஐப் பயன்படுத்திய அனுபவம் எங்களுக்கு உள்ளது, நிச்சயமாக நாங்கள் முயற்சித்தோம் பட்ரோனி PostgreSQL க்கான அவர்களின் பிரபலமான HA தீர்வு. உருவாக்குவதற்கான நிறுவனத்தின் அணுகுமுறை பற்றி போஸ்ட்கிரெஸ் ஆபரேட்டர் அதன் ஆசிரியர்களில் ஒருவரான Alexey Klyukin, காற்றில் கூறினார் Postgres-செவ்வாய் #5, நாங்கள் அதை விரும்பினோம்.

கட்டுரையில் விவாதிக்கப்பட்ட இளைய தீர்வு இதுவாகும்: முதல் வெளியீடு ஆகஸ்ட் 2018 இல் நடந்தது. இருப்பினும், சிறிய எண்ணிக்கையிலான முறையான வெளியீடுகள் இருந்தபோதிலும், திட்டம் நீண்ட தூரம் வந்துள்ளது, GitHub இல் 1300+ நட்சத்திரங்கள் மற்றும் அதிகபட்ச பங்களிப்பாளர்களுடன் (70+) க்ரஞ்சி டேட்டாவின் தீர்வை ஏற்கனவே பிரபலமாக்கியுள்ளது.

“அண்டர் தி ஹூட்” இந்த ஆபரேட்டர் நேரம் சோதனை செய்யப்பட்ட தீர்வுகளைப் பயன்படுத்துகிறது:

  • பட்ரோனி மற்றும் ஸ்பைலோ வாகனம் ஓட்டுவதற்கு,
  • வால்-ஈ - காப்புப்பிரதிகளுக்கு,
  • PgBouncer - இணைப்புக் குளமாக.

ஜலாண்டோவிலிருந்து ஆபரேட்டர் கட்டிடக்கலை இவ்வாறு வழங்கப்படுகிறது:

Kubernetes க்கான PostgreSQL அறிக்கைகளின் சுருக்கமான கண்ணோட்டம், எங்கள் தேர்வுகள் மற்றும் அனுபவம்

ஆபரேட்டர் தனிப்பயன் வளங்கள் மூலம் முழுமையாக நிர்வகிக்கப்படுகிறது, கொள்கலன்களில் இருந்து ஒரு ஸ்டேட்ஃபுல்செட்டை தானாக உருவாக்குகிறது, அதன் பிறகு பல்வேறு பக்க கார்களை பாட்களில் சேர்ப்பதன் மூலம் தனிப்பயனாக்கலாம். Crunchy Data இலிருந்து ஆபரேட்டருடன் ஒப்பிடுகையில் இவை அனைத்தும் குறிப்பிடத்தக்க நன்மையாகும்.

பரிசீலனையில் உள்ள 3 விருப்பங்களில் ஜலாண்டோவிலிருந்து தீர்வை நாங்கள் தேர்ந்தெடுத்ததால், பயன்பாட்டின் நடைமுறையுடன் உடனடியாக அதன் திறன்கள் பற்றிய கூடுதல் விளக்கம் கீழே வழங்கப்படும்.

ஜலாண்டோவிலிருந்து போஸ்ட்கிரெஸ் ஆபரேட்டருடன் பயிற்சி செய்யுங்கள்

ஆபரேட்டர் வரிசைப்படுத்தல் மிகவும் எளிதானது: GitHub இலிருந்து தற்போதைய வெளியீட்டைப் பதிவிறக்கி, கோப்பகத்திலிருந்து YAML கோப்புகளைப் பயன்படுத்தவும். வெளிப்படுகிறது. மாற்றாக, நீங்கள் பயன்படுத்தலாம் ஆபரேட்டர்ஹப்.

நிறுவிய பின், அமைப்பது பற்றி நீங்கள் கவலைப்பட வேண்டும் பதிவுகள் மற்றும் காப்புப்பிரதிகளுக்கான சேமிப்பு. இது ConfigMap மூலம் செய்யப்படுகிறது 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. இது ஆபரேட்டருடன் வருகிறது மற்றும் கிளஸ்டர்களை உருவாக்கவும் நீக்கவும் உங்களை அனுமதிக்கிறது, அத்துடன் ஆபரேட்டரால் செய்யப்பட்ட காப்புப்பிரதிகளுடன் வேலை செய்யவும்.

Kubernetes க்கான PostgreSQL அறிக்கைகளின் சுருக்கமான கண்ணோட்டம், எங்கள் தேர்வுகள் மற்றும் அனுபவம்
PostgreSQL கிளஸ்டர்களின் பட்டியல்

Kubernetes க்கான PostgreSQL அறிக்கைகளின் சுருக்கமான கண்ணோட்டம், எங்கள் தேர்வுகள் மற்றும் அனுபவம்
காப்பு மேலாண்மை

மற்றொரு சுவாரஸ்யமான அம்சம் ஆதரவு அணிகள் API. இந்த பொறிமுறை தானாகவே உருவாக்கப்படும் PostgreSQL இல் பாத்திரங்கள், இதன் விளைவாக வரும் பயனர்பெயர்களின் பட்டியலின் அடிப்படையில். API ஆனது, பாத்திரங்கள் தானாக உருவாக்கப்படும் பயனர்களின் பட்டியலை வழங்க உங்களை அனுமதிக்கிறது.

சிக்கல்கள் மற்றும் அவற்றின் தீர்வு

இருப்பினும், ஆபரேட்டரின் பயன்பாடு விரைவில் பல குறிப்பிடத்தக்க குறைபாடுகளை வெளிப்படுத்தியது:

  1. nodeSelector ஆதரவு இல்லாமை;
  2. காப்புப்பிரதிகளை முடக்க இயலாமை;
  3. தரவுத்தள உருவாக்க செயல்பாட்டைப் பயன்படுத்தும் போது, ​​இயல்புநிலை சலுகைகள் தோன்றாது;
  4. அவ்வப்போது, ​​ஆவணங்கள் இல்லை அல்லது காலாவதியாகிவிட்டன.

அதிர்ஷ்டவசமாக, அவற்றில் பல தீர்க்கப்படலாம். முடிவில் இருந்து தொடங்குவோம் - சிக்கல்கள் ஆவணங்கள்.

பெரும்பாலும், காப்புப்பிரதியை எவ்வாறு பதிவு செய்வது மற்றும் ஆபரேட்டர் UI உடன் காப்புப் பிரதி வாளியை எவ்வாறு இணைப்பது என்பது எப்போதும் தெளிவாகத் தெரியவில்லை என்ற உண்மையை நீங்கள் சந்திப்பீர்கள். ஆவணங்கள் இதைப் பற்றி பேசுகின்றன, ஆனால் உண்மையான விளக்கம் உள்ளது PR:

  1. ஒரு ரகசியம் செய்ய வேண்டும்;
  2. அதை ஒரு அளவுருவாக ஆபரேட்டருக்கு அனுப்பவும் pod_environment_secret_name CRD இல் ஆபரேட்டர் அமைப்புகளுடன் அல்லது ConfigMap இல் (ஆபரேட்டரை எவ்வாறு நிறுவ முடிவு செய்கிறீர்கள் என்பதைப் பொறுத்து).

இருப்பினும், அது மாறிவிடும், இது தற்போது சாத்தியமற்றது. அதனால்தான் சேகரித்தோம் ஆபரேட்டரின் உங்கள் பதிப்பு சில கூடுதல் மூன்றாம் தரப்பு முன்னேற்றங்களுடன். அதைப் பற்றிய கூடுதல் தகவலுக்கு, கீழே பார்க்கவும்.

காப்புப்பிரதிக்கான அளவுருக்களை நீங்கள் ஆபரேட்டருக்கு அனுப்பினால், அதாவது - wal_s3_bucket மற்றும் AWS S3 இல் உள்ள அணுகல் விசைகள், பின்னர் அது எல்லாவற்றையும் காப்புப் பிரதி எடுக்கும்: உற்பத்தியில் அடிப்படைகள் மட்டுமல்ல, அரங்கேற்றமும் கூட. இது எங்களுக்குப் பொருந்தவில்லை.

ஆபரேட்டரைப் பயன்படுத்தும் போது PgSQL க்கான அடிப்படை டோக்கர் ரேப்பரான Spilo க்கான அளவுருக்களின் விளக்கத்தில், அது மாறியது: நீங்கள் ஒரு அளவுருவை அனுப்பலாம் WAL_S3_BUCKET காலியாக உள்ளது, இதன் மூலம் காப்புப்பிரதிகளை முடக்குகிறது. மேலும், மிகுந்த மகிழ்ச்சிக்கு, நான் கண்டேன் தயாராக PR, அதை நாங்கள் உடனடியாக எங்கள் போர்க்கில் ஏற்றுக்கொண்டோம். இப்போது நீங்கள் சேர்க்க வேண்டும் enableWALArchiving: false PostgreSQL கிளஸ்டர் ஆதாரத்திற்கு.

ஆம், 2 ஆபரேட்டர்களை இயக்குவதன் மூலம் வித்தியாசமாக செய்ய ஒரு வாய்ப்பு இருந்தது: ஒன்று (காப்புப்பிரதிகள் இல்லாமல்), மற்றும் இரண்டாவது உற்பத்திக்கு. ஆனால் எங்களால் ஒன்றைச் செய்ய முடிந்தது.

சரி, S3க்கான தரவுத்தளங்களுக்கான அணுகலை எவ்வாறு மாற்றுவது என்பதை நாங்கள் கற்றுக்கொண்டோம் மற்றும் காப்புப்பிரதிகள் சேமிப்பகத்திற்கு வரத் தொடங்கின. ஆபரேட்டர் UI இல் காப்புப் பக்கங்களை எவ்வாறு செயல்பட வைப்பது?

Kubernetes க்கான 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 சேமிப்பகத்தின் மூலம் காத்திருப்பு கிளஸ்டர்களை உருவாக்க ஸ்பைலோ உங்களை அனுமதிக்கிறது வால்-இ, 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 க்கான மிகவும் பிரபலமான மூன்று Kubernetes ஆபரேட்டர்களைக் கருத்தில் கொண்டு, Zalando இலிருந்து திட்டத்தைத் தேர்ந்தெடுத்தோம். மற்றும் சில சிரமங்களை நாங்கள் சமாளிக்க வேண்டியிருந்தது, ஆனால் முடிவு மிகவும் மகிழ்ச்சியாக இருந்தது, எனவே இந்த அனுபவத்தை வேறு சில PgSQL நிறுவல்களுக்கு விரிவுபடுத்த திட்டமிட்டுள்ளோம். இதே போன்ற தீர்வுகளைப் பயன்படுத்தி உங்களுக்கு அனுபவம் இருந்தால், கருத்துகளில் விவரங்களைப் பார்ப்பதில் நாங்கள் மகிழ்ச்சியடைவோம்!

சோசலிஸ்ட் கட்சி

எங்கள் வலைப்பதிவிலும் படிக்கவும்:

ஆதாரம்: www.habr.com

கருத்தைச் சேர்