Workstation Logo
ਉਤਪਾਦ
AI ਲੈਬਜ਼OpenAI ਏਜੰਟClaude ਏਜੰਟGrok BotWorkstation CRM (WSL CRM)ਮਾਰਕੀਟਿੰਗਸਾਰੇ ਉਤਪਾਦ
AI ਹੱਲ
AI ਵਰਕਸਟੇਸ਼ਨAI SME Packagesਪ੍ਰਾਈਵੇਟ AIGPU ਕਲੱਸਟਰਐਜ AIਐਂਟਰਪ੍ਰਾਈਜ਼ AI ਲੈਬਉਦਯੋਗ ਅਨੁਸਾਰ AI
ਸੇਵਾਵਾਂ
Platform ModernisationDigital EngineeringData Foundations & AIAutonomous OperationsAI ਸਲਾਹDevOps ਆਟੋਮੇਸ਼ਨਸਾਈਬਰ ਸੁਰੱਖਿਆਸਾਫਟਵੇਅਰ ਵਿਕਾਸਏਜੰਟ ਨਿਰਮਾਣMLOps ਸੈੱਟਅੱਪ
ਸਾਡੇ ਬਾਰੇ
ਸਾਂਝੇਦਾਰਗਾਹਕ ਕਹਾਣੀਆਂ
ਲੇਖ
ਦਸਤਾਵੇਜ਼
WSL ProxyRing Promoter
ਬਲੌਗ
ਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋLogin
Workstation

AI workstations, AI Multi Agentic Software, GPU infrastructure, and intelligent agent solutions for modern businesses.

ਯੂਕੇ ਦਫ਼ਤਰ: 77-79 Marlowes, Hemel Hempstead HP1 1LF - Directions - Take Junction 20 off M25 Outer London
Company No: 11641870
Mon - Fri: 9:00 AM - 6:00 PM GMT
+44 7515 356 146

ਬੈਲਜੀਅਮ ਦਫ਼ਤਰ: Workstation SRL, Rue Vanderkindere 34, 1180 Uccle, Brussels
BE 0751.518.683
Mon - Fri: 9:00 AM - 6:00 PM CET
+32 492 45 67 46

ਭਾਰਤ ਦਫ਼ਤਰ: #159 Sector 9, Pocket 1, DDA Flats, 110077 Dwarka, New Delhi
+91 98881 98841

ਉਤਪਾਦ

ਸਾਰੇ ਉਤਪਾਦWSL ProxyRing PromoterAI ਲੈਬਜ਼OpenAI ਏਜੰਟClaude ਏਜੰਟGrok BotWorkstation CRM (WSL CRM)

AI ਹੱਲ

AI ਹੱਲAI ਵਰਕਸਟੇਸ਼ਨਪ੍ਰਾਈਵੇਟ AIGPU ਕਲੱਸਟਰਐਂਟਰਪ੍ਰਾਈਜ਼ AI ਲੈਬਸੇਵਾਵਾਂ

ਸਰੋਤ

ਲੇਖਦਸਤਾਵੇਜ਼ਬਲੌਗSearchਸਾਈਟ ਮੈਪ

ਕੰਪਨੀ

ਸਾਡੇ ਬਾਰੇਸਾਂਝੇਦਾਰਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋ

© 2026 Workstation AI. ਸਾਰੇ ਹੱਕ ਰਾਖਵੇਂ ਹਨ

ਗੋਪਨੀਯਤਾ ਨੀਤੀਕੂਕੀ ਨੀਤੀਸਾਈਟ ਮੈਪ

Loading blog...

Home / Blog
DatabaseKubernetesDevOpsBackend

Couchbase ਉਤਪਾਦਨ ਵਿੱਚ ਉੱਚ ਉਪਲਬਧਤਾ: XDCR, Kubernetes ਆਪਰੇਟਰ, ਅਤੇ ਬਹੁ-ਖੇਤਰ ਤੈਨਾਤੀ

XDCR, ਆਟੋਨੋਮਸ ਆਪਰੇਟਰ, ਅਤੇ ਮਲਟੀ-ਕਲਾਊਡ ਡਿਪਲਾਇਮੈਂਟ ਦੇ ਨਾਲ ਐਂਟਰਪ੍ਰਾਈਜ਼ Couchbase HA

Balinder Walia12 ਅਪ੍ਰੈਲ 202636 min read

ਜਾਣ-ਪਛਾਣ: ਉੱਚ ਉਪਲਬਧਤਾ ਉਤਪਾਦਨ ਵਰਕਲੋਡ

ਲਈ Couchbase ਕਿਉਂ

Couchbase ਸਰਵਰ ਇੱਕ ਵੰਡਿਆ, ਬਹੁ-ਮਾਡਲ NoSQL ਡਾਟਾਬੇਸ ਹੈ ਜੋ ਇੰਟਰਐਕਟਿਵ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ ਜੋ ਕਿਸੇ ਵੀ ਪੈਮਾਨੇ 'ਤੇ ਨਿਰੰਤਰ ਘੱਟ-ਲੇਟੈਂਸੀ ਪ੍ਰਦਰਸ਼ਨ ਦੀ ਮੰਗ ਕਰਦੇ ਹਨ। ਡਾਟਾਬੇਸ ਦੇ ਉਲਟ ਜੋ ਵੰਡੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਇੱਕ ਵਿਚਾਰ ਦੇ ਤੌਰ 'ਤੇ ਬੋਲਟ ਕਰਦੇ ਹਨ, Couchbase ਨੂੰ ਇਸਦੀ ਸ਼ੁਰੂਆਤ ਤੋਂ ਹੀ ਇੱਕ ਸ਼ੇਅਰ-ਨਥਿੰਗ, ਪੀਅਰ-ਟੂ-ਪੀਅਰ ਟੋਪੋਲੋਜੀ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਆਰਕੀਟੈਕਟ ਕੀਤਾ ਗਿਆ ਸੀ ਜਿੱਥੇ ਹਰ ਨੋਡ ਬਰਾਬਰ ਹੁੰਦਾ ਹੈ ਅਤੇvBucketsਨਾਮਕ ਇੱਕ ਨਿਰਣਾਇਕ ਹੈਸ਼ਿੰਗ ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਡੇਟਾ ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਕਲੱਸਟਰ ਵਿੱਚ ਸਾਂਝਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਆਰਕੀਟੈਕਚਰਲ ਵਿਕਲਪ ਡੇਟਾ ਲੇਅਰ 'ਤੇ ਅਸਫਲਤਾ ਦੇ ਸਿੰਗਲ ਬਿੰਦੂਆਂ ਨੂੰ ਖਤਮ ਕਰਦਾ ਹੈ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਬਦਲਾਅ ਦੇ ਬਿਨਾਂ ਹਰੀਜੱਟਲ ਸਕੇਲਿੰਗ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ।

ਜੋ Couchbase ਨੂੰ ਉੱਚ ਉਪਲਬਧਤਾ ਵਾਲੇ ਲੈਂਡਸਕੇਪ ਵਿੱਚ ਵੱਖ ਕਰਦਾ ਹੈ ਉਹ ਹੈ ਇਸਦਾਕਰਾਸ ਡੇਟਾ ਸੈਂਟਰ ਰਿਪਲੀਕੇਸ਼ਨ (XDCR)— ਇੱਕ ਬਿਲਟ-ਇਨ, ਅਸਿੰਕਰੋਨਸ ਰੀਪਲੀਕੇਸ਼ਨ ਇੰਜਣ ਜੋ ਭੂਗੋਲਿਕ ਤੌਰ 'ਤੇ ਵੰਡੇ ਗਏ ਕਲੱਸਟਰਾਂ ਵਿਚਕਾਰ ਲਗਾਤਾਰ ਪਰਿਵਰਤਨ ਨੂੰ ਸਟ੍ਰੀਮ ਕਰਦਾ ਹੈ। ਆਟੋਮੈਟਿਕ ਫੇਲਓਵਰ, ਰੈਕ/ਜ਼ੋਨ ਜਾਗਰੂਕਤਾ, ਅਤੇ ਏਕੀਕ੍ਰਿਤ ਸੇਵਾਵਾਂ (ਡੇਟਾ, ਸੂਚਕਾਂਕ, ਪੁੱਛਗਿੱਛ, ਖੋਜ, ਵਿਸ਼ਲੇਸ਼ਣ, ਅਤੇ ਇਵੈਂਟਿੰਗ) ਦੇ ਇੱਕ ਅਮੀਰ ਸਮੂਹ ਦੇ ਨਾਲ ਮਿਲਾ ਕੇ, Couchbase ਇੱਕ ਏਕੀਕ੍ਰਿਤ ਪਲੇਟਫਾਰਮ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਜੋ ਆਧੁਨਿਕ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਸੰਚਾਲਨ ਡੇਟਾਬੇਸ ਅਤੇ ਵਿਸ਼ਲੇਸ਼ਣਾਤਮਕ ਇੰਜਣ ਦੋਵਾਂ ਵਜੋਂ ਕੰਮ ਕਰ ਸਕਦਾ ਹੈ।

ਇਸ ਵਿਆਪਕ ਗਾਈਡ ਵਿੱਚ, ਅਸੀਂ ਉੱਚ ਉਪਲਬਧਤਾ ਉਤਪਾਦਨ ਵਾਤਾਵਰਨ ਵਿੱਚ Couchbase ਸਰਵਰ ਨੂੰ ਚਲਾਉਣ ਦੇ ਹਰ ਪਹਿਲੂ ਦੀ ਪੜਚੋਲ ਕਰਾਂਗੇ: ਅੰਦਰੂਨੀ ਆਰਕੀਟੈਕਚਰ ਜੋ HA ਨੂੰ ਸੰਭਵ ਬਣਾਉਂਦਾ ਹੈ, ਬਹੁ-ਖੇਤਰ ਤੈਨਾਤੀਆਂ ਲਈ XDCR ਸੰਰਚਨਾ, Kubernetes ਲਈ Couchbase ਆਟੋਨੋਮਸ ਆਪਰੇਟਰ, ਕਲਾਉਡ-ਵਿਸ਼ੇਸ਼ ਤੈਨਾਤੀ ਲਈ XPRXK ਪੈਟਰਨ, XPRX5 ਪੈਟਰਨ, XPRXK5 ਲਈ ਕਲਾਉਡ-ਵਿਸ਼ੇਸ਼. GCP GKE, ਰੈਂਚਰ ਅਤੇ ਲੋਂਗਹੋਰਨ ਦੇ ਨਾਲ ਬੇਅਰ ਮੈਟਲ k3s ਤੈਨਾਤੀਆਂ, ਬੈਕਅਪ ਅਤੇ ਰੀਸਟੋਰ ਰਣਨੀਤੀਆਂ, N1QL ਪੁੱਛਗਿੱਛ ਟਿਊਨਿੰਗ, ਸੁਰੱਖਿਆ ਸਖਤੀ, ਨਿਗਰਾਨੀ, ਅਤੇ ਕਿਨਾਰੇ ਤੈਨਾਤੀਆਂ ਲਈ ਸਿੰਕ ਗੇਟਵੇ ਦੇ ਨਾਲ Couchbase ਮੋਬਾਈਲ। ਅੰਤ ਤੱਕ, ਤੁਹਾਡੇ ਕੋਲ ਕਿਸੇ ਵੀ ਬੁਨਿਆਦੀ ਢਾਂਚੇ 'ਤੇ ਉਤਪਾਦਨ-ਗ੍ਰੇਡ Couchbase ਕਲੱਸਟਰਾਂ ਨੂੰ ਤੈਨਾਤ ਕਰਨ ਅਤੇ ਚਲਾਉਣ ਲਈ ਕਾਰਜਯੋਗ ਗਿਆਨ ਹੋਵੇਗਾ।

Couchbase ਸਰਵਰ ਆਰਕੀਟੈਕਚਰ: ਸੇਵਾਵਾਂ, vBuckets, ਅਤੇ ਆਟੋਮੈਟਿਕ ਸ਼ਾਰਡਿੰਗ

ਉੱਚ ਉਪਲਬਧਤਾ ਲਈ ਤੈਨਾਤ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ Couchbase ਦੇ ਅੰਦਰੂਨੀ ਢਾਂਚੇ ਨੂੰ ਸਮਝਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। Couchbase ਇੱਕਮਲਟੀ-ਡਾਇਮੈਂਸ਼ਨਲ ਸਕੇਲਿੰਗ (MDS)ਆਰਕੀਟੈਕਚਰ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਜਿੱਥੇ ਵੱਖ-ਵੱਖ ਸੇਵਾਵਾਂ ਨੂੰ ਕਲੱਸਟਰ ਨੋਡਾਂ ਵਿੱਚ ਸੁਤੰਤਰ ਤੌਰ 'ਤੇ ਤਾਇਨਾਤ ਅਤੇ ਸਕੇਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਓਪਰੇਟਰਾਂ ਨੂੰ ਸਰੋਤ ਵੰਡ ਅਤੇ ਪ੍ਰਦਰਸ਼ਨ ਅਲੱਗ-ਥਲੱਗ 'ਤੇ ਵਧੀਆ ਨਿਯੰਤਰਣ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।

ਛੇ ਮੁੱਖ ਸੇਵਾਵਾਂ

Couchbase ਸਰਵਰ ਛੇ ਏਕੀਕ੍ਰਿਤ ਸੇਵਾਵਾਂ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਹਰੇਕ ਇੱਕ ਵੱਖਰੀ ਵਰਕਲੋਡ ਕਿਸਮ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ:

  • ਡਾਟਾ ਸਰਵਿਸ (KV)— ਇੱਕ ਮੈਮੋਰੀ-ਪਹਿਲੇ ਆਰਕੀਟੈਕਚਰ 'ਤੇ ਬਣਿਆ ਕੋਰ ਕੀ-ਵੈਲਯੂ ਇੰਜਣ। ਇਹ CRUD ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ, vBucket ਡਿਸਟ੍ਰੀਬਿਊਸ਼ਨ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ, ਅਤੇ ਸਥਿਰਤਾ ਪਰਤ ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ। ਡਾਟਾ ਮੈਮੋਰੀ (ਪ੍ਰਬੰਧਿਤ ਕੈਸ਼) ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਅਸਿੰਕਰੋਨਸ ਤੌਰ 'ਤੇ ਡਿਸਕ 'ਤੇ ਬਣਿਆ ਰਹਿੰਦਾ ਹੈ। ਇਹ ਸੇਵਾ ਹਰੇਕ ਕਲੱਸਟਰ ਵਿੱਚ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਨੋਡ 'ਤੇ ਚੱਲਦੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ।
  • ਸੂਚਕਾਂਕ ਸੇਵਾ (GSI)— ਗਲੋਬਲ ਸੈਕੰਡਰੀ ਇੰਡੈਕਸ ਨੂੰ ਕਾਇਮ ਰੱਖਦਾ ਹੈ ਜੋ N1QL ਸਵਾਲਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦੇ ਹਨ। ਸੂਚਕਾਂਕ ਡੇਟਾ ਤੋਂ ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਸਟੋਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਸੁਤੰਤਰ ਸਕੇਲਿੰਗ ਦੀ ਆਗਿਆ ਦਿੰਦੇ ਹੋਏ। ਸਟੈਂਡਰਡ ਅਤੇ ਮੈਮੋਰੀ-ਅਨੁਕੂਲ ਸੂਚਕਾਂਕ ਸਟੋਰੇਜ ਮੋਡਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ।
  • ਪੁੱਛਗਿੱਛ ਸੇਵਾ (N1QL)— ਕਲੱਸਟਰ ਦੇ ਵਿਰੁੱਧ N1QL (SQL++ ਲਈ JSON) ਪੁੱਛਗਿੱਛਾਂ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ। ਡਿਜ਼ਾਇਨ ਦੁਆਰਾ ਸਟੇਟ ਰਹਿਤ, ਲੇਟਵੇਂ ਤੌਰ 'ਤੇ ਸਕੇਲ ਕਰਨਾ ਆਸਾਨ ਬਣਾਉਂਦਾ ਹੈ। ਸਵਾਲਾਂ ਦੀ ਯੋਜਨਾ ਬਣਾਉਣ ਅਤੇ ਲਾਗੂ ਕਰਨ ਲਈ ਡੇਟਾ ਅਤੇ ਸੂਚਕਾਂਕ ਸੇਵਾਵਾਂ ਨਾਲ ਤਾਲਮੇਲ ਕਰਦਾ ਹੈ।
  • ਖੋਜ ਸੇਵਾ (FTS)— ਬਲੀਵ ਖੋਜ ਇੰਜਣ ਦੁਆਰਾ ਸੰਚਾਲਿਤ ਫੁੱਲ-ਟੈਕਸਟ ਖੋਜ ਸਮਰੱਥਾਵਾਂ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਫਜ਼ੀ ਮੈਚਿੰਗ, ਭੂ-ਸਥਾਨਕ ਪੁੱਛਗਿੱਛਾਂ, ਪਹਿਲੂ ਖੋਜ, ਅਤੇ ਕਸਟਮ ਵਿਸ਼ਲੇਸ਼ਕਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। ਸੂਚਕਾਂਕ ਨੂੰ ਵੰਡਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਖੋਜ ਨੋਡਾਂ ਵਿੱਚ ਦੁਹਰਾਇਆ ਜਾਂਦਾ ਹੈ।
  • ਵਿਸ਼ਲੇਸ਼ਣ ਸੇਵਾ (CBAS)— ਅਪਾਚੇ ਐਸਟਰਿਕਸ 'ਤੇ ਆਧਾਰਿਤ ਸਮਾਨਾਂਤਰ ਪ੍ਰੋਸੈਸਿੰਗ ਇੰਜਣ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਗੁੰਝਲਦਾਰ ਵਿਸ਼ਲੇਸ਼ਣਾਤਮਕ ਸਵਾਲਾਂ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ। ਡੇਟਾ ਦੀ ਆਪਣੀ ਕਾਪੀ 'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ, ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ ਕਿ ਵਿਸ਼ਲੇਸ਼ਣਾਤਮਕ ਵਰਕਲੋਡ ਕਦੇ ਵੀ ਕਾਰਜਸ਼ੀਲ ਲੇਟੈਂਸੀ ਨੂੰ ਪ੍ਰਭਾਵਤ ਨਹੀਂ ਕਰਦੇ ਹਨ।
  • ਇਵੈਂਟਿੰਗ ਸਰਵਿਸ— ਡਾਟਾ ਪਰਿਵਰਤਨ ਦੇ ਜਵਾਬ ਵਿੱਚ ਸਰਵਰ-ਸਾਈਡ JavaScript ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ। ਬਾਹਰੀ ਬੁਨਿਆਦੀ ਢਾਂਚੇ ਦੇ ਬਿਨਾਂ ਰੀਅਲ-ਟਾਈਮ ਡੇਟਾ ਸੰਸ਼ੋਧਨ, ਪਰਿਵਰਤਨ, ਕੈਸਕੇਡ ਡਿਲੀਟ, ਅਤੇ ਏਕੀਕਰਣ ਟਰਿਗਰ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ।
Couchbase ਕਲੱਸਟਰ ਆਰਕੀਟੈਕਚਰ & ਸੇਵਾ ਵੰਡCouchbase ਕਲੱਸਟਰ (ਆਟੋ-ਫੇਲਓਵਰ ਸਮਰਥਿਤ, 3-ਸਕਿੰਟ ਖੋਜ)ਨੋਡ 1 (10.0.1.10)ਡਾਟਾ ਸੇਵਾ (KV)vBuckets 0-341 | 256MB ਕੈਸ਼ਇੰਡੈਕਸ ਸੇਵਾ (GSI)ਪੁੱਛਗਿੱਛ ਸੇਵਾ (N1QL)vBucket ਨਕਸ਼ਾ (ਕਿਰਿਆਸ਼ੀਲ)0-341 ਕਿਰਿਆਸ਼ੀਲ | 342-682 ਪ੍ਰਤੀਕ੍ਰਿਤੀਡਿਸਕ (ਅਸਿੰਕ)'ਤੇ ਆਟੋ-ਪ੍ਰਸਿਸਟਨੋਡ 2 (10.0.1.11)ਡਾਟਾ ਸੇਵਾ (KV)vBuckets 342-682 | 256MB ਕੈਸ਼ਖੋਜ ਸੇਵਾ (FTS)ਵਿਸ਼ਲੇਸ਼ਣ ਸੇਵਾ (CBAS)vBucket ਨਕਸ਼ਾ (ਕਿਰਿਆਸ਼ੀਲ)342-682 ਕਿਰਿਆਸ਼ੀਲ | 683-1023 ਪ੍ਰਤੀਕ੍ਰਿਤੀDCP ਸਟ੍ਰੀਮ ਨੂੰ ਵਿਸ਼ਲੇਸ਼ਣਨੋਡ 3 (10.0.1.12)ਡਾਟਾ ਸੇਵਾ (KV)vBuckets 683-1023 | 256MB ਕੈਸ਼ਇਵੈਂਟਿੰਗ ਸੇਵਾਪੁੱਛਗਿੱਛ ਸੇਵਾ (N1QL)vBucket ਨਕਸ਼ਾ (ਕਿਰਿਆਸ਼ੀਲ)683-1023 ਕਿਰਿਆਸ਼ੀਲ | 0-341 ਪ੍ਰਤੀਕ੍ਰਿਤੀਇਵੈਂਟਿੰਗ DCP ਖਪਤਕਾਰਆਟੋ-ਫੇਲਓਵਰ ਮੈਨੇਜਰਦਿਲ ਦੀ ਧੜਕਣ ਦੀ ਨਿਗਰਾਨੀ | 3s ਖੋਜ | vBucket ਤਰੱਕੀ | ਅਧਿਕਤਮ 3 ਕ੍ਰਮਵਾਰ ਫੇਲਓਵਰਡਾਟਾ (KV)ਸੂਚਕਾਂਕ/ਸਵਾਲਖੋਜ/ਵਿਸ਼ਲੇਸ਼ਣ/ਇਵੈਂਟਿੰਗਇੰਟਰਾ-ਕਲੱਸਟਰ ਪ੍ਰਤੀਕ੍ਰਿਤੀਦਿਲ ਦੀ ਧੜਕਣ

vBucket ਡਿਸਟ੍ਰੀਬਿਊਸ਼ਨ ਅਤੇ ਆਟੋਮੈਟਿਕ ਸ਼ਾਰਡਿੰਗ

Couchbase1024 vBuckets(ਵਰਚੁਅਲ ਬਕਟਾਂ) ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਕਲੱਸਟਰ ਵਿੱਚ ਡਾਟਾ ਵੰਡਦਾ ਹੈ। ਹਰੇਕ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਦਸਤਾਵੇਜ਼ ਕੁੰਜੀ ਮੋਡਿਊਲੋ 1024 ਦੇ CRC32 ਹੈਸ਼ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ vBucket ਨਾਲ ਮੈਪ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਕਲੱਸਟਰ ਨਕਸ਼ਾ — ਹਰ ਨੋਡ ਦੁਆਰਾ ਸੰਭਾਲਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਹਰੇਕ SDK ਕਲਾਇੰਟ ਦੁਆਰਾ ਕੈਸ਼ ਕੀਤਾ ਜਾਂਦਾ ਹੈ — ਹਰੇਕ vBucket ਨੂੰ ਇੱਕ ਖਾਸ ਨੋਡ ਨਾਲ ਮੈਪ ਕਰਦਾ ਹੈ। ਇਸ ਨਿਰਧਾਰਕ ਮੈਪਿੰਗ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਕਲਾਇੰਟਸ ਨੂੰ ਹਮੇਸ਼ਾ ਪਤਾ ਹੁੰਦਾ ਹੈ ਕਿ ਕਿਹੜਾ ਨੋਡ ਕਿਸੇ ਵੀ ਦਿੱਤੇ ਗਏ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਰੱਖਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਸਿੰਗਲ-ਹੋਪ ਰੀਡ ਅਤੇ ਸਬ-ਮਿਲੀਸਕਿੰਟ ਲੇਟੈਂਸੀ ਨਾਲ ਲਿਖਣਾ ਸਮਰੱਥ ਹੁੰਦਾ ਹੈ।

ਜਦੋਂ ਨੋਡਸ ਨੂੰ ਜੋੜਿਆ ਜਾਂ ਹਟਾਇਆ ਜਾਂਦਾ ਹੈ, Couchbase ਇੱਕ ਪ੍ਰਕਿਰਿਆ ਦੁਆਰਾ ਆਪਣੇ ਆਪ vBuckets ਨੂੰ ਮੁੜ ਵੰਡਦਾ ਹੈ ਜਿਸਨੂੰਰੀਬੈਲੈਂਸਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਮੁੜ-ਸੰਤੁਲਨ ਦੇ ਦੌਰਾਨ, ਕਲੱਸਟਰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਕਾਰਜਸ਼ੀਲ ਰਹਿੰਦੇ ਹੋਏ ਨੋਡਾਂ ਦੇ ਵਿਚਕਾਰ vBuckets ਨੂੰ ਮੂਵ ਕਰਦਾ ਹੈ। ਪੁਨਰ-ਸੰਤੁਲਨ ਨੂੰ ਹਰ ਸਮੇਂ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਦੀ ਸੰਰਚਿਤ ਸੰਖਿਆ ਨੂੰ ਕਾਇਮ ਰੱਖਣ ਲਈ ਸਾਵਧਾਨੀ ਨਾਲ ਆਰਕੇਸਟ੍ਰੇਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਕਲਾਇੰਟਸ ਨੂੰ ਕਲੱਸਟਰ ਮੈਪ ਅੱਪਡੇਟ ਦੁਆਰਾ ਨਵੇਂ vBucket ਸਥਾਨਾਂ 'ਤੇ ਨਿਰਵਿਘਨ ਰੀਡਾਇਰੈਕਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।

ਇੰਟਰਾ-ਕਲੱਸਟਰ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਅਤੇ ਆਟੋ-ਫੇਲਓਵਰ

ਹਰੇਕ vBucket ਵਿੱਚ ਇੱਕਕਿਰਿਆਸ਼ੀਲਕਾਪੀ ਅਤੇ ਤਿੰਨ ਤੱਕਪ੍ਰਤੀਰੂਪਕਾਪੀਆਂ ਵੱਖ-ਵੱਖ ਨੋਡਾਂ ਵਿੱਚ ਵੰਡੀਆਂ ਗਈਆਂ ਹਨ। ਜਦੋਂ ਇੱਕ ਕਲਾਇੰਟ ਇੱਕ ਦਸਤਾਵੇਜ਼ ਲਿਖਦਾ ਹੈ, ਤਾਂ ਲਿਖਤ ਜ਼ਿੰਮੇਵਾਰ ਨੋਡ 'ਤੇ ਕਿਰਿਆਸ਼ੀਲ vBucket ਵਿੱਚ ਜਾਂਦੀ ਹੈ। ਡਾਟਾ ਸੇਵਾ ਫਿਰ ਅੰਦਰੂਨੀDCP (ਡਾਟਾਬੇਸ ਬਦਲਾਵ ਪ੍ਰੋਟੋਕੋਲ)ਸਟ੍ਰੀਮ ਦੁਆਰਾ ਦੂਜੇ ਨੋਡਾਂ 'ਤੇ vBuckets ਦੀ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਲਈ ਪਰਿਵਰਤਨ ਨੂੰ ਦੁਹਰਾਉਂਦੀ ਹੈ। ਮੂਲ ਰੂਪ ਵਿੱਚ, Couchbase ਇੱਕ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਨੂੰ ਸੰਰਚਿਤ ਕਰਦਾ ਹੈ, ਪਰ ਉਤਪਾਦਨ HA ਤੈਨਾਤੀਆਂ ਲਈ, ਦੋ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ:

# Configure bucket with 2 replicas via CLI
/opt/couchbase/bin/couchbase-cli bucket-create \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --bucket production-data \
  --bucket-type couchbase \
  --bucket-ramsize 4096 \
  --bucket-replica 2 \
  --bucket-priority high \
  --bucket-eviction-policy valueOnly \
  --enable-flush 0 \
  --compression-mode active \
  --max-ttl 0 \
  --durability-min-level majorityAndPersistActive

ਆਟੋ-ਫੇਲਓਵਰਨੋਡ ਅਸਫਲਤਾਵਾਂ ਨੂੰ ਆਪਣੇ ਆਪ ਖੋਜਣ ਅਤੇ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ Couchbase ਦੀ ਵਿਧੀ ਹੈ। ਜਦੋਂ ਇੱਕ ਨੋਡ ਗੈਰ-ਜਵਾਬਦੇਹ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਕਲੱਸਟਰ ਆਰਕੈਸਟਰੇਟਰ ਇੱਕ ਸੰਰਚਨਾਯੋਗ ਸਮਾਂ ਸਮਾਪਤੀ (ਘੱਟੋ-ਘੱਟ 5 ਸਕਿੰਟ, ਉਤਪਾਦਨ ਲਈ 30 ਸਕਿੰਟ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ) ਦੀ ਉਡੀਕ ਕਰਦਾ ਹੈ, ਫਿਰ ਬਚੇ ਹੋਏ ਨੋਡਾਂ 'ਤੇ ਪ੍ਰਤੀਕ੍ਰਿਤੀ vBuckets ਨੂੰ ਸਰਗਰਮ ਸਥਿਤੀ ਵਿੱਚ ਉਤਸ਼ਾਹਿਤ ਕਰਦਾ ਹੈ। ਇਹ ਬਿਨਾਂ ਕਿਸੇ ਐਪਲੀਕੇਸ਼ਨ-ਸਾਈਡ ਦਖਲ ਦੇ ਵਾਪਰਦਾ ਹੈ — SDK ਕਲਾਇੰਟਸ ਇੱਕ ਅੱਪਡੇਟ ਕੀਤਾ ਕਲੱਸਟਰ ਨਕਸ਼ਾ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਨ ਅਤੇ ਤੁਰੰਤ ਨਵੇਂ ਕਿਰਿਆਸ਼ੀਲ vBuckets ਲਈ ਬੇਨਤੀਆਂ ਨੂੰ ਰੂਟ ਕਰਦੇ ਹਨ।

# Configure auto-failover settings
/opt/couchbase/bin/couchbase-cli setting-autofailover \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --enable-auto-failover 1 \
  --auto-failover-timeout 30 \
  --max-failovers 3 \
  --enable-failover-of-server-groups 1 \
  --failover-on-data-disk-issues 1 \
  --failover-data-disk-period 120 \
  --can-abort-rebalance 1

ਮੁੱਖ ਆਟੋ-ਫੇਲਓਵਰ ਪੈਰਾਮੀਟਰ:

  • ਆਟੋ-ਫੇਲਓਵਰ-ਟਾਈਮਆਊਟ— ਫੇਲਓਵਰ ਟਰਿੱਗਰ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਉਡੀਕ ਕਰਨ ਲਈ ਸਕਿੰਟ। ਹੇਠਲੇ ਮੁੱਲ ਡਾਊਨਟਾਈਮ ਨੂੰ ਘਟਾਉਂਦੇ ਹਨ ਪਰ ਝੂਠੇ-ਸਕਾਰਾਤਮਕ ਜੋਖਮ ਨੂੰ ਵਧਾਉਂਦੇ ਹਨ। 30 ਸਕਿੰਟ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਉਤਪਾਦਨ ਸੈਟਿੰਗ ਹੈ।
  • ਅਧਿਕਤਮ-ਫੇਲਓਵਰ— ਮੈਨੂਅਲ ਦਖਲ ਦੀ ਲੋੜ ਤੋਂ ਪਹਿਲਾਂ ਕ੍ਰਮਵਾਰ ਆਟੋ-ਫੇਲਓਵਰਾਂ ਦੀ ਅਧਿਕਤਮ ਸੰਖਿਆ। 5-ਨੋਡ ਕਲੱਸਟਰ ਲਈ 3 'ਤੇ ਸੈੱਟ ਕਰੋ (ਕੋਰਮ ਬਰਕਰਾਰ ਰੱਖਣ ਲਈ)।
  • ਸਰਵਰ-ਗਰੁੱਪਾਂ ਦੇ ਫੇਲਓਵਰ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ— ਇੱਕ ਪੂਰੇ ਸਰਵਰ ਸਮੂਹ (ਰੈਕ/ਜ਼ੋਨ) ਦੇ ਫੇਲਓਵਰ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ, ਜੋ ਜ਼ੋਨ-ਜਾਗਰੂਕ ਤੈਨਾਤੀਆਂ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ।
  • ਫੇਲਓਵਰ-ਆਨ-ਡਾਟਾ-ਡਿਸਕ-ਮੁੱਦੇ— ਫੇਲਓਵਰ ਨੂੰ ਟਰਿੱਗਰ ਕਰਦਾ ਹੈ ਜਦੋਂ ਡੇਟਾ ਸਰਵਿਸ ਲਗਾਤਾਰ ਡਿਸਕ I/O ਤਰੁੱਟੀਆਂ ਦਾ ਪਤਾ ਲਗਾਉਂਦੀ ਹੈ।

XDCR: ਕਰਾਸ ਡਾਟਾ ਸੈਂਟਰ ਪ੍ਰਤੀਕ੍ਰਿਤੀ

XDCR Couchbase ਦੀ ਫਲੈਗਸ਼ਿਪ ਬਹੁ-ਖੇਤਰ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਤਕਨਾਲੋਜੀ ਹੈ। ਰਵਾਇਤੀ RDBMS ਪ੍ਰਣਾਲੀਆਂ ਵਿੱਚ ਪਾਏ ਜਾਣ ਵਾਲੇ ਡੇਟਾਬੇਸ-ਪੱਧਰ ਦੀ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਦੇ ਉਲਟ, XDCRਬਾਲਟੀ ਪੱਧਰ'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ ਅਤੇ ਸੁਤੰਤਰ Couchbase ਕਲੱਸਟਰਾਂ ਵਿਚਕਾਰ ਵਿਅਕਤੀਗਤ ਦਸਤਾਵੇਜ਼ ਪਰਿਵਰਤਨ ਨੂੰ ਸਟ੍ਰੀਮ ਕਰਦਾ ਹੈ। ਹਰੇਕ ਕਲੱਸਟਰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਖੁਦਮੁਖਤਿਆਰ ਰਹਿੰਦਾ ਹੈ - ਇਹ ਸੁਤੰਤਰ ਤੌਰ 'ਤੇ ਪੜ੍ਹਨ ਅਤੇ ਲਿਖਣ ਨੂੰ ਸਵੀਕਾਰ ਕਰ ਸਕਦਾ ਹੈ, XDCR ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ-ਕਿਰਿਆਸ਼ੀਲ ਬਹੁ-ਖੇਤਰ ਤੈਨਾਤੀਆਂ ਲਈ ਆਦਰਸ਼ ਬਣਾਉਂਦਾ ਹੈ ਜਿੱਥੇ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਕਿਸੇ ਵੀ ਭੂਗੋਲ ਤੋਂ ਘੱਟ-ਲੇਟੈਂਸੀ ਪਹੁੰਚ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

ਯੂਨੀਡਾਇਰੈਕਸ਼ਨਲ ਬਨਾਮ ਬਾਈਡਾਇਰੈਕਸ਼ਨਲ XDCR

ਯੂਨੀਡਾਇਰੈਕਸ਼ਨਲ XDCRਇੱਕ ਦਿਸ਼ਾ ਵਿੱਚ ਇੱਕ ਸਰੋਤ ਕਲੱਸਟਰ ਤੋਂ ਇੱਕ ਟੀਚੇ ਦੇ ਕਲੱਸਟਰ ਵਿੱਚ ਪਰਿਵਰਤਨ ਨੂੰ ਦੁਹਰਾਉਂਦਾ ਹੈ। ਇਹ ਆਫ਼ਤ ਰਿਕਵਰੀ ਦ੍ਰਿਸ਼ਾਂ ਲਈ ਢੁਕਵਾਂ ਹੈ, ਰਿਮੋਟ ਖੇਤਰਾਂ ਵਿੱਚ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਨੂੰ ਪੜ੍ਹਨਾ, ਜਾਂ ਇੱਕ ਸੰਚਾਲਨ ਕਲੱਸਟਰ ਤੋਂ ਇੱਕ ਵਿਸ਼ਲੇਸ਼ਣ ਕਲੱਸਟਰ ਤੱਕ ਡੇਟਾ ਨੂੰ ਫੀਡ ਕਰਨਾ।

ਬਾਈਡਾਇਰੈਕਸ਼ਨਲ XDCRਦੋ ਕਲੱਸਟਰਾਂ ਦੇ ਵਿਚਕਾਰ ਦੋਵਾਂ ਦਿਸ਼ਾਵਾਂ ਵਿੱਚ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਲਿੰਕ ਬਣਾਉਂਦਾ ਹੈ, ਸਰਗਰਮ-ਸਰਗਰਮ ਤੈਨਾਤੀਆਂ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ ਜਿੱਥੇ ਦੋਵੇਂ ਕਲੱਸਟਰ ਲਿਖਤਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕਰਦੇ ਹਨ। ਇਹ ਸਭ ਤੋਂ ਸ਼ਕਤੀਸ਼ਾਲੀ ਸੰਰਚਨਾ ਹੈ ਪਰ ਇਸ ਲਈ ਧਿਆਨ ਨਾਲ ਸੰਘਰਸ਼ ਨਿਪਟਾਰਾ ਯੋਜਨਾ ਦੀ ਲੋੜ ਹੈ।

XDCR ਬਹੁ-ਖੇਤਰ ਦੁਵੱਲੀ ਪ੍ਰਤੀਕ੍ਰਿਤੀUS-ਪੂਰਬ (AWS EKS)ਕਲੱਸਟਰ: cb-us-east5 ਨੋਡ | ਡਾਟਾ+ਇੰਡੈਕਸ+ਕਵੇਰੀਬਾਲਟੀ: ਐਪਬਾਲਟੀ: ਉਪਭੋਗਤਾਟਕਰਾਅ ਦਾ ਹੱਲ: LWW (ਟਾਈਮਸਟੈਂਪ)XDCR: ਕੰਪਰੈਸ਼ਨ ਚਾਲੂ | TLS 1.3ਲਿਖਦਾ ਹੈ: ~15k ops/secEU-WEST (Azure AKS)ਕਲੱਸਟਰ: cb-eu-west5 ਨੋਡ | ਡਾਟਾ+ਇੰਡੈਕਸ+ਕਵੇਰੀਬਾਲਟੀ: ਐਪਬਾਲਟੀ: ਉਪਭੋਗਤਾਟਕਰਾਅ ਦਾ ਹੱਲ: LWW (ਟਾਈਮਸਟੈਂਪ)XDCR: ਕੰਪਰੈਸ਼ਨ ਚਾਲੂ | TLS 1.3ਲਿਖਦਾ ਹੈ: ~12k ops/secAP-ਦੱਖਣ (GCP GKE)ਕਲੱਸਟਰ: cb-ap-south3 ਨੋਡ | ਡਾਟਾ+ਇੰਡੈਕਸ+ਕਵੇਰੀਬਾਲਟੀ: ਐਪਬਾਲਟੀ: ਉਪਭੋਗਤਾਟਕਰਾਅ ਦਾ ਹੱਲ: LWW (ਟਾਈਮਸਟੈਂਪ)XDCR: ਕੰਪਰੈਸ਼ਨ ਚਾਲੂ | TLS 1.3ਲਿਖਦਾ ਹੈ: ~8k ops/secXDCRXDCRXDCR (ਦੋ-ਦਿਸ਼ਾਵੀ)ਅਪਵਾਦ ਹੱਲ ਰਣਨੀਤੀਆਂLWW (ਟਾਈਮਸਟੈਂਪ ਦੁਆਰਾ ਆਖਰੀ ਵਾਰ ਜਿੱਤ) | ਕ੍ਰਮ ਸੰਖਿਆ | ਵਿਲੀਨ ਫੰਕਸ਼ਨਾਂ (ਐਂਟਰਪ੍ਰਾਈਜ਼)ਦੁਆਰਾ ਕਸਟਮ ਅਪਵਾਦ ਹੱਲXDCR ਫਾਰਵਰਡXDCR ਉਲਟਾਕ੍ਰਾਸ-ਖੇਤਰ ਲਿੰਕAWSAzureGCP

XDCR ਪ੍ਰਤੀਕ੍ਰਿਤੀ

ਸੈੱਟਅੱਪ ਕਰ ਰਿਹਾ ਹੈ

XDCR ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਨ ਵਿੱਚ ਇੱਕ ਰਿਮੋਟ ਕਲੱਸਟਰ ਸੰਦਰਭ ਬਣਾਉਣਾ ਅਤੇ ਫਿਰ ਬਾਲਟੀ ਪੱਧਰ 'ਤੇ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਲਿੰਕਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨਾ ਸ਼ਾਮਲ ਹੈ। ਹੇਠਾਂ CLI ਕਮਾਂਡਾਂ ਅਤੇ REST API ਇੱਕ ਸੰਪੂਰਨ ਦੋ-ਦਿਸ਼ਾਵੀ ਸੈੱਟਅੱਪ ਲਈ ਕਾਲਾਂ ਹਨ:

# Step 1: Create remote cluster reference on the US-EAST cluster
/opt/couchbase/bin/couchbase-cli xdcr-setup \
  --cluster cb-us-east.example.com:8091 \
  --username Administrator \
  --password password \
  --create \
  --xdcr-cluster-name eu-west-cluster \
  --xdcr-hostname cb-eu-west.example.com:8091 \
  --xdcr-username Administrator \
  --xdcr-password password \
  --xdcr-demand-encryption 1 \
  --xdcr-encryption-type full \
  --xdcr-certificate /path/to/eu-west-ca.pem

# Step 2: Create replication from US-EAST to EU-WEST for the 'app' bucket
/opt/couchbase/bin/couchbase-cli xdcr-replicate \
  --cluster cb-us-east.example.com:8091 \
  --username Administrator \
  --password password \
  --create \
  --xdcr-cluster-name eu-west-cluster \
  --xdcr-from-bucket app \
  --xdcr-to-bucket app \
  --xdcr-replication-mode xmem \
  --enable-compression 1 \
  --filter-expression "" \
  --priority high \
  --network-usage-limit 0

# Step 3: Create the reverse replication on EU-WEST cluster (bidirectional)
/opt/couchbase/bin/couchbase-cli xdcr-setup \
  --cluster cb-eu-west.example.com:8091 \
  --username Administrator \
  --password password \
  --create \
  --xdcr-cluster-name us-east-cluster \
  --xdcr-hostname cb-us-east.example.com:8091 \
  --xdcr-username Administrator \
  --xdcr-password password \
  --xdcr-demand-encryption 1 \
  --xdcr-encryption-type full \
  --xdcr-certificate /path/to/us-east-ca.pem

/opt/couchbase/bin/couchbase-cli xdcr-replicate \
  --cluster cb-eu-west.example.com:8091 \
  --username Administrator \
  --password password \
  --create \
  --xdcr-cluster-name us-east-cluster \
  --xdcr-from-bucket app \
  --xdcr-to-bucket app \
  --xdcr-replication-mode xmem \
  --enable-compression 1

ਅਪਵਾਦ ਹੱਲ ਰਣਨੀਤੀਆਂ

ਦੋ-ਦਿਸ਼ਾਵੀ XDCR ਵਿੱਚ, ਇੱਕੋ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਵੱਖ-ਵੱਖ ਕਲੱਸਟਰਾਂ 'ਤੇ ਇੱਕੋ ਸਮੇਂ ਸੋਧਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਵਿਵਾਦ ਪੈਦਾ ਹੋ ਸਕਦੇ ਹਨ। Couchbase ਮਲਟੀਪਲ ਵਿਵਾਦ ਹੱਲ ਰਣਨੀਤੀਆਂ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ:

  • ਟਾਈਮਸਟੈਂਪ-ਅਧਾਰਿਤ (LWW — ਆਖਰੀ ਲਿਖਣ ਦੀ ਜਿੱਤ)— ਸਭ ਤੋਂ ਤਾਜ਼ਾ ਟਾਈਮਸਟੈਂਪ ਜਿੱਤਾਂ ਵਾਲਾ ਪਰਿਵਰਤਨ। ਇਹ ਡਿਫੌਲਟ ਹੈ ਅਤੇ ਜ਼ਿਆਦਾਤਰ ਵਰਤੋਂ ਦੇ ਮਾਮਲਿਆਂ ਲਈ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ। ਸਾਰੇ ਕਲੱਸਟਰਾਂ ਵਿੱਚ NTP ਸਮਕਾਲੀਕਰਨ ਦੀ ਲੋੜ ਹੈ (5 ਸਕਿੰਟਾਂ ਦੇ ਅੰਦਰ)। ਬਾਲਟੀ ਬਣਾਉਣ ਦੇ ਸਮੇਂ 'ਤੇ ਸੈੱਟ ਕਰੋ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।
  • ਕ੍ਰਮ ਨੰਬਰ-ਅਧਾਰਿਤ— ਵਿਜੇਤਾ ਦਾ ਪਤਾ ਲਗਾਉਣ ਲਈ ਅੰਦਰੂਨੀ ਕ੍ਰਮ ਨੰਬਰ (ਰਿਵੀਜ਼ਨ ID) ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਉੱਚ ਸੰਸ਼ੋਧਨ ਗਿਣਤੀ ਦੇ ਨਾਲ ਪਰਿਵਰਤਨ ਜਿੱਤਦਾ ਹੈ। ਜਦੋਂ ਟਾਈਮਸਟੈਂਪ ਸਿੰਕ੍ਰੋਨਾਈਜ਼ੇਸ਼ਨ ਭਰੋਸੇਯੋਗ ਨਹੀਂ ਹੁੰਦੀ ਹੈ ਤਾਂ ਉਪਯੋਗੀ।
  • ਕਸਟਮ ਅਪਵਾਦ ਰੈਜ਼ੋਲਿਊਸ਼ਨ (ਐਂਟਰਪ੍ਰਾਈਜ਼)— Couchbase ਐਂਟਰਪ੍ਰਾਈਜ਼ ਐਡੀਸ਼ਨ ਕਸਟਮ ਮਰਜ ਫੰਕਸ਼ਨਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ ਜੋ ਐਪਲੀਕੇਸ਼ਨ-ਵਿਸ਼ੇਸ਼ ਤਰਕ ਨਾਲ ਟਕਰਾਅ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਸਰਵਰ-ਸਾਈਡ JavaScript ਨੂੰ ਚਲਾਉਂਦੇ ਹਨ। ਇਹ ਵੱਖ-ਵੱਖ ਖੇਤਰਾਂ ਤੋਂ ਸ਼ਾਪਿੰਗ ਕਾਰਟ ਆਈਟਮਾਂ ਨੂੰ ਮਿਲਾਉਣ ਜਾਂ ਡੋਮੇਨ-ਵਿਸ਼ੇਸ਼ ਵਿਵਾਦ ਨਿਪਟਾਰਾ ਨਿਯਮਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਵਰਗੇ ਦ੍ਰਿਸ਼ਾਂ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ।
# Create a bucket with timestamp-based conflict resolution
curl -X POST http://localhost:8091/pools/default/buckets \
  -u Administrator:password \
  -d name=app \
  -d ramQuota=4096 \
  -d replicaNumber=2 \
  -d bucketType=couchbase \
  -d conflictResolutionType=lww \
  -d compressionMode=active \
  -d durabilityMinLevel=majorityAndPersistActive

# XDCR advanced settings via REST API
curl -X POST http://localhost:8091/settings/replications/<replication-id> \
  -u Administrator:password \
  -d optimisticReplicationThreshold=256 \
  -d sourceNozzlePerNode=4 \
  -d targetNozzlePerNode=4 \
  -d checkpointInterval=600 \
  -d batchCount=500 \
  -d batchSize=2048 \
  -d failureRestartInterval=10 \
  -d docBatchSizeKb=2048 \
  -d networkUsageLimit=0 \
  -d priority=High

XDCR ਫਿਲਟਰਿੰਗ

XDCR ਫਿਲਟਰਿੰਗ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਤੁਸੀਂ ਦਸਤਾਵੇਜ਼ਾਂ ਦੇ ਸਿਰਫ ਇੱਕ ਸਬਸੈੱਟ ਦੀ ਨਕਲ ਕਰ ਸਕੋ। ਫਿਲਟਰ ਦਸਤਾਵੇਜ਼ ਕੁੰਜੀਆਂ ਦੇ ਵਿਰੁੱਧ ਨਿਯਮਤ ਸਮੀਕਰਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ ਅਤੇ ਦਸਤਾਵੇਜ਼ ਦੀ ਮਿਆਦ ਪੁੱਗਣ ਜਾਂ ਮਿਟਾਉਣ ਦੇ ਆਧਾਰ 'ਤੇ ਵੀ ਫਿਲਟਰ ਕਰ ਸਕਦੇ ਹਨ:

# Replicate only documents with keys starting with 'user::'
/opt/couchbase/bin/couchbase-cli xdcr-replicate \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --create \
  --xdcr-cluster-name remote-cluster \
  --xdcr-from-bucket app \
  --xdcr-to-bucket app-users \
  --filter-expression "^user::" \
  --filter-skip-restream 0

# Replicate documents matching a complex pattern
# (orders from 2026 with specific type)
--filter-expression "REGEXP_CONTAINS(META().id, '^order::2026') AND type='premium'"
Kubernetesਲਈ

Couchbase ਆਟੋਨੋਮਸ ਆਪਰੇਟਰ

Couchbase ਆਟੋਨੋਮਸ ਆਪਰੇਟਰ (CAO)ਇੱਕ ਐਂਟਰਪ੍ਰਾਈਜ਼-ਗ੍ਰੇਡ Kubernetes ਆਪਰੇਟਰ ਹੈ ਜੋ Couchbase ਸਰਵਰ ਕਲੱਸਟਰਾਂ ਦੀ ਤੈਨਾਤੀ, ਪ੍ਰਬੰਧਨ, ਸਕੇਲਿੰਗ ਅਤੇ ਰਿਕਵਰੀ ਨੂੰ ਸਵੈਚਾਲਤ ਕਰਦਾ ਹੈ। ਸਧਾਰਨ ਸਟੇਟਫੁਲਸੈਟ ਤੈਨਾਤੀਆਂ ਦੇ ਉਲਟ, ਆਟੋਨੋਮਸ ਆਪਰੇਟਰ Couchbase ਦੀ ਅੰਦਰੂਨੀ ਟੌਪੋਲੋਜੀ ਨੂੰ ਸਮਝਦਾ ਹੈ — ਇਹ ਰੀਬੈਲੈਂਸ ਓਪਰੇਸ਼ਨਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ, ਰੋਲਿੰਗ ਅੱਪਗਰੇਡਾਂ ਦਾ ਤਾਲਮੇਲ ਕਰਦਾ ਹੈ, ਸਰਵਰ ਸਮੂਹ ਜਾਗਰੂਕਤਾ ਨੂੰ ਹੈਂਡਲ ਕਰਦਾ ਹੈ, ਅਤੇ Couchbase ਪੌਡਾਂ ਦੀ ਅਨੁਕੂਲ ਪਲੇਸਮੈਂਟ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ Kubernetes ਸ਼ਡਿਊਲਿੰਗ ਪ੍ਰਾਈਮਿਟਿਵ ਨਾਲ ਏਕੀਕ੍ਰਿਤ ਕਰਦਾ ਹੈ।

Kubernetes'ਤੇCouchbase ਆਟੋਨੋਮਸ ਆਪਰੇਟਰCouchbase ਆਟੋਨੋਮਸ ਆਪਰੇਟਰਘੜੀਆਂ CouchbaseCluster CRD |ਨੂੰ ਮਿਲਾ ਲੈਂਦਾ ਹੈCouchbaseCluster CRDਇੱਛਤ ਰਾਜ ਘੋਸ਼ਣਾTLS ਰਾਜ਼ਸਰਟੀਫਿਕੇਟ-ਪ੍ਰਬੰਧਕਦੁਆਰਾਆਟੋ-ਰੋਟੇਸ਼ਨਸਰਵਰ ਗਰੁੱਪ: ਜ਼ੋਨ-ਏ (ਰੈਕ-1)StatefulSet: cb-prod-data-zacb-prod-0000ਡਾਟਾ + ਸੂਚਕਾਂਕ4 CPU | 16GiPVC: 100Gi gp3cb-prod-0001ਪੁੱਛਗਿੱਛ + ਖੋਜ4 CPU | 8GiPVC: 50Gi gp3PVC (EBS gp3)ClusterIP Svcਐਂਟੀ-ਐਫਿਨਿਟੀ: ਜ਼ੋਨ-ਏ ਨੋਡਸ ਸਿਰਫਸਰਵਰ ਗਰੁੱਪ: ਜ਼ੋਨ-ਬੀ (ਰੈਕ-2)StatefulSet: cb-prod-data-zbcb-prod-0002ਡਾਟਾ + ਸੂਚਕਾਂਕ4 CPU | 16GiPVC: 100Gi gp3cb-prod-0003ਪੁੱਛਗਿੱਛ + ਖੋਜ4 CPU | 8GiPVC: 50Gi gp3PVC (EBS gp3)ClusterIP Svcਐਂਟੀ-ਐਫਿਨਿਟੀ: ਜ਼ੋਨ-ਬੀ ਨੋਡ ਸਿਰਫ਼ਸਰਵਰ ਸਮੂਹ: ਜ਼ੋਨ-ਸੀ (ਰੈਕ-3)StatefulSet: cb-prod-data-zccb-prod-0004ਡਾਟਾ + ਵਿਸ਼ਲੇਸ਼ਣ8 CPU | 32GiPVC: 200Gi gp3cb-prod-0005ਇਵੈਂਟਿੰਗ2 CPU | 8GiPVC: 50Gi gp3PVC (EBS gp3)ClusterIP Svcਐਂਟੀ-ਐਫਿਨਿਟੀ: ਜ਼ੋਨ-ਸੀ ਨੋਡ ਸਿਰਫ਼ਐਕਸਪੋਜ਼ਡ ਸਰਵਿਸਿਜ਼ਨੋਡਪੋਰਟ 8091 | SDK 11210 | N1QL 8093ਦਾਖਲਾ ਕੰਟਰੋਲਰCRD ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਦਾ ਹੈ | ਵੈਬਹੁੱਕ TLSਬੈਕਅੱਪ ਕੰਟਰੋਲਰcbbackupmgr | S3/GCS/Azureਆਪਰੇਟਰਡਾਟਾ/ਸੂਚਨਾ/ਸਵਾਲਵਿਸ਼ਲੇਸ਼ਣ/ਈਵੈਂਟਿੰਗPVC ਸਟੋਰੇਜਪੋਡ ਸ਼ਡਿਊਲਿੰਗਸੁਰੱਖਿਆ/ਪ੍ਰਮਾਣਿਕਤਾ

CouchbaseCluster CRD ਨਿਰਧਾਰਨ

CouchbaseCluster CRD ਕੇਂਦਰੀ ਸੰਰਚਨਾ ਹੈ ਜੋ ਤੁਹਾਡੀ Couchbase ਤੈਨਾਤੀ ਦੀ ਲੋੜੀਂਦੀ ਸਥਿਤੀ ਦਾ ਐਲਾਨ ਕਰਦੀ ਹੈ। ਆਟੋਨੋਮਸ ਆਪਰੇਟਰ ਇਸ ਨੂੰ ਸਟੇਟਫੁਲਸੈਟਸ, ਸਰਵਿਸਿਜ਼, PVC, ਸੀਕਰੇਟਸ, ਅਤੇ RBAC ਸਰੋਤਾਂ ਵਿੱਚ ਮਿਲਾ ਲੈਂਦਾ ਹੈ। ਹੇਠਾਂ ਇੱਕ ਉਤਪਾਦਨ ਲਈ ਤਿਆਰ CRD ਹੈ:

apiVersion: couchbase.com/v2
kind: CouchbaseCluster
metadata:
  name: cb-production
  namespace: couchbase
spec:
  image: couchbase/server:7.6.1-enterprise
  antiAffinity: true
  platform: aws
  cluster:
    autoFailoverTimeout: 30s
    autoFailoverMaxCount: 3
    autoFailoverOnDataDiskIssues: true
    autoFailoverOnDataDiskIssuesTimePeriod: 120s
    autoFailoverServerGroup: true
    clusterName: cb-production
    dataServiceMemoryQuota: 8Gi
    indexServiceMemoryQuota: 4Gi
    searchServiceMemoryQuota: 2Gi
    analyticsServiceMemoryQuota: 4Gi
    eventingServiceMemoryQuota: 2Gi
    indexStorageSetting: memory_optimized
    autoCompaction:
      databaseFragmentationThreshold:
        percent: 30
        size: 1Gi
      viewFragmentationThreshold:
        percent: 30
        size: 1Gi
      parallelCompaction: false
      timeWindow:
        start: "02:00"
        end: "06:00"
        abortCompactionOutsideWindow: true
  security:
    adminSecret: cb-admin-credentials
    rbac:
      managed: true
      selector:
        matchLabels:
          cluster: cb-production
    ldap:
      hosts:
      - ldap.example.com
      port: 636
      encryption: TLS
  networking:
    tls:
      static:
        serverSecret: couchbase-server-tls
        operatorSecret: couchbase-operator-tls
    exposeAdminConsole: true
    adminConsoleServices:
    - data
    adminConsoleServiceType: NodePort
    exposedFeatures:
    - client
    - xdcr
    exposedFeatureServiceType: NodePort
  buckets:
    managed: true
    selector:
      matchLabels:
        cluster: cb-production
  servers:
  - name: data-zone-a
    size: 2
    services:
    - data
    - index
    serverGroups:
    - zone-a
    pod:
      metadata:
        labels:
          couchbase-service: data-index
        annotations:
          prometheus.io/scrape: "true"
          prometheus.io/port: "9091"
      spec:
        nodeSelector:
          topology.kubernetes.io/zone: us-east-1a
        tolerations:
        - key: couchbase
          operator: Equal
          value: "true"
          effect: NoSchedule
        resources:
          requests:
            cpu: "4"
            memory: 16Gi
          limits:
            cpu: "8"
            memory: 20Gi
    volumeMounts:
      default: couchbase-data
      data: couchbase-data
      index: couchbase-index
  - name: data-zone-b
    size: 2
    services:
    - data
    - index
    serverGroups:
    - zone-b
    pod:
      spec:
        nodeSelector:
          topology.kubernetes.io/zone: us-east-1b
        tolerations:
        - key: couchbase
          operator: Equal
          value: "true"
          effect: NoSchedule
        resources:
          requests:
            cpu: "4"
            memory: 16Gi
          limits:
            cpu: "8"
            memory: 20Gi
    volumeMounts:
      default: couchbase-data
      data: couchbase-data
      index: couchbase-index
  - name: query-search
    size: 2
    services:
    - query
    - search
    serverGroups:
    - zone-a
    - zone-b
    pod:
      spec:
        resources:
          requests:
            cpu: "4"
            memory: 8Gi
          limits:
            cpu: "8"
            memory: 12Gi
    volumeMounts:
      default: couchbase-default
  - name: analytics-eventing
    size: 2
    services:
    - analytics
    - eventing
    serverGroups:
    - zone-c
    pod:
      spec:
        nodeSelector:
          topology.kubernetes.io/zone: us-east-1c
        resources:
          requests:
            cpu: "8"
            memory: 32Gi
          limits:
            cpu: "16"
            memory: 40Gi
    volumeMounts:
      default: couchbase-analytics
      analytics:
      - couchbase-analytics
  serverGroups:
  - zone-a
  - zone-b
  - zone-c
  volumeClaimTemplates:
  - metadata:
      name: couchbase-data
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 100Gi
  - metadata:
      name: couchbase-index
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 50Gi
  - metadata:
      name: couchbase-default
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 20Gi
  - metadata:
      name: couchbase-analytics
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 200Gi
Helmਦੁਆਰਾ

ਆਪਰੇਟਰ ਸਥਾਪਨਾ
# Add Couchbase Helm repository
helm repo add couchbase https://couchbase-partners.github.io/helm-charts/
helm repo update

# Install the Couchbase Autonomous Operator
helm install couchbase-operator couchbase/couchbase-operator \
  --namespace couchbase \
  --create-namespace \
  --set operator.image.repository=couchbase/operator \
  --set operator.image.tag=2.7.1 \
  --set admissionController.enabled=true

# Create the admin credentials secret
kubectl create secret generic cb-admin-credentials \
  --namespace couchbase \
  --from-literal=username=Administrator \
  --from-literal=password=$(openssl rand -base64 24)

# Deploy the CouchbaseCluster CRD
kubectl apply -f couchbase-cluster.yaml

# Verify deployment
kubectl get couchbaseclusters -n couchbase
kubectl get pods -n couchbase -l app=couchbase
kubectl get svc -n couchbase

ਸਰਵਰ ਸਮੂਹ ਅਤੇ ਰੈਕ/ਜ਼ੋਨ ਜਾਗਰੂਕਤਾ

ਸਰਵਰ ਸਮੂਹ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ Couchbase ਦੀ ਵਿਧੀ ਹੈ ਕਿ ਕਿਰਿਆਸ਼ੀਲ vBuckets ਅਤੇ ਉਹਨਾਂ ਦੀਆਂ ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਅਸਫਲਤਾ ਡੋਮੇਨਾਂ (ਉਪਲਬਧਤਾ ਜ਼ੋਨ, ਰੈਕ, ਜਾਂ ਡਾਟਾ ਸੈਂਟਰ) ਵਿੱਚ ਰੱਖਿਆ ਗਿਆ ਹੈ। ਜਦੋਂ ਸਰਵਰ ਸਮੂਹਾਂ ਦੀ ਸੰਰਚਨਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਤਾਂ Couchbase ਗਾਰੰਟੀ ਦਿੰਦਾ ਹੈ ਕਿ ਇੱਕੋ ਸਰਵਰ ਸਮੂਹ ਵਿੱਚ ਇੱਕੋ vBucket ਲਈ ਕੋਈ ਕਿਰਿਆਸ਼ੀਲ ਅਤੇ ਪ੍ਰਤੀਰੂਪ ਜੋੜਾ ਨਹੀਂ ਰਹਿੰਦਾ ਹੈ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇੱਕ ਪੂਰੀ ਜ਼ੋਨ ਅਸਫਲਤਾ ਦੇ ਨਤੀਜੇ ਵਜੋਂ ਡੇਟਾ ਦਾ ਨੁਕਸਾਨ ਨਹੀਂ ਹੋਵੇਗਾ।

ਆਟੋਨੋਮਸ ਆਪਰੇਟਰ ਸਰਵਰ ਸਮੂਹਾਂ ਨੂੰ Kubernetes ਨੋਡ ਟੋਪੋਲੋਜੀ ਲੇਬਲਾਂ ਨਾਲ ਨਕਸ਼ੇ ਕਰਦਾ ਹੈ, ਸਹੀ ਜ਼ੋਨਾਂ ਵਿੱਚ ਪੌਡਾਂ ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਤਹਿ ਕਰਦਾ ਹੈ। ਪੌਡ ਐਂਟੀ-ਐਫੀਨਿਟੀ ਨਿਯਮਾਂ ਦੇ ਨਾਲ ਮਿਲਾ ਕੇ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ Couchbase ਪੌਡਾਂ ਨੂੰ ਵੱਧ ਤੋਂ ਵੱਧ ਲਚਕਤਾ ਲਈ ਭੌਤਿਕ ਬੁਨਿਆਦੀ ਢਾਂਚੇ ਵਿੱਚ ਵੰਡਿਆ ਜਾਂਦਾ ਹੈ।

AWS EKS ਤੈਨਾਤੀ

Amazon EKS ਨੂੰ ਅਨੁਕੂਲ Couchbase ਪ੍ਰਦਰਸ਼ਨ ਲਈ ਖਾਸ ਸੰਰਚਨਾ ਦੀ ਲੋੜ ਹੈ। ਮੁੱਖ ਵਿਚਾਰ ਹਨ ਸਟੋਰੇਜ (ਥਰੂਪੁੱਟ ਲਈ EBS gp3), ਉਦਾਹਰਣ ਕਿਸਮਾਂ (ਡੇਟਾ ਨੋਡਾਂ ਲਈ ਮੈਮੋਰੀ-ਅਨੁਕੂਲਿਤ r6i/r7i), ਅਤੇ ਨੈੱਟਵਰਕਿੰਗ (ਪੋਡ-ਪੱਧਰ ਦੇ ਨੈੱਟਵਰਕਿੰਗ ਲਈ VPC CNI)।

# EBS gp3 StorageClass optimized for Couchbase
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ebs-gp3-couchbase
provisioner: ebs.csi.aws.com
parameters:
  type: gp3
  iops: "6000"
  throughput: "500"
  encrypted: "true"
  kmsKeyId: "arn:aws:kms:us-east-1:123456789:key/mrk-abcdef"
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

---
# Recommended EKS node groups for Couchbase
# Data nodes:     r6i.2xlarge (8 vCPU, 64 GiB) or r7i.2xlarge
# Index/Query:    m6i.2xlarge (8 vCPU, 32 GiB)
# Analytics:      r6i.4xlarge (16 vCPU, 128 GiB)
# Eventing:       m6i.xlarge  (4 vCPU, 16 GiB)

# EKS managed node group with taints for Couchbase
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: couchbase-eks
  region: us-east-1
managedNodeGroups:
- name: cb-data
  instanceType: r6i.2xlarge
  desiredCapacity: 4
  minSize: 4
  maxSize: 8
  volumeSize: 200
  volumeType: gp3
  volumeIOPS: 6000
  volumeThroughput: 500
  availabilityZones: ["us-east-1a", "us-east-1b"]
  labels:
    workload: couchbase-data
  taints:
  - key: couchbase
    value: "true"
    effect: NoSchedule
  iam:
    attachPolicyARNs:
    - arn:aws:iam::policy/AmazonEBSCSIDriverPolicy
- name: cb-query
  instanceType: m6i.2xlarge
  desiredCapacity: 2
  minSize: 2
  maxSize: 4
  availabilityZones: ["us-east-1a", "us-east-1b"]
  labels:
    workload: couchbase-query

Azure AKS ਤੈਨਾਤੀ

Azure AKS Couchbase ਦੀਆਂ I/O ਮੰਗਾਂ ਲਈ ਪ੍ਰੀਮੀਅਮ SSD v2 ਜਾਂ ਅਲਟਰਾ ਡਿਸਕ ਅਤੇ ਖੇਤਰਾਂ ਵਿਚਕਾਰ ਸੁਰੱਖਿਅਤ XDCR ਕਨੈਕਟੀਵਿਟੀ ਲਈ Azure ਪ੍ਰਾਈਵੇਟ ਲਿੰਕ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।

# Azure Premium SSD v2 StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: azure-premium-couchbase
provisioner: disk.csi.azure.com
parameters:
  skuName: PremiumV2_LRS
  DiskIOPSReadWrite: "6000"
  DiskMBpsReadWrite: "500"
  cachingMode: None
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

---
# Ultra Disk StorageClass for high-performance workloads
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: azure-ultra-couchbase
provisioner: disk.csi.azure.com
parameters:
  skuName: UltraSSD_LRS
  DiskIOPSReadWrite: "10000"
  DiskMBpsReadWrite: "1000"
  cachingMode: None
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

---
# AKS recommended VM sizes:
# Data nodes:      Standard_E8s_v5  (8 vCPU, 64 GiB)
# Index/Query:     Standard_D8s_v5  (8 vCPU, 32 GiB)
# Analytics:       Standard_E16s_v5 (16 vCPU, 128 GiB)

GCP GKE ਤੈਨਾਤੀ

Google Kubernetes ਇੰਜਣ ਬੈਕਅੱਪ ਲਈ Google ਕਲਾਉਡ ਸਟੋਰੇਜ ਤੱਕ ਸੁਰੱਖਿਅਤ ਪਹੁੰਚ ਲਈ SSD ਪਰਸਿਸਟੈਂਟ ਡਿਸਕ ਅਤੇ ਵਰਕਲੋਡ ਪਛਾਣ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।

# GKE SSD Persistent Disk StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ssd-couchbase
provisioner: pd.csi.storage.gke.io
parameters:
  type: pd-ssd
  provisioned-iops-on-create: "6000"
  provisioned-throughput-on-create: "500"
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

---
# GKE Hyperdisk Balanced for cost-effective performance
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: hyperdisk-couchbase
provisioner: pd.csi.storage.gke.io
parameters:
  type: hyperdisk-balanced
  provisioned-iops-on-create: "6000"
  provisioned-throughput-on-create: "500"
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

---
# GKE recommended machine types:
# Data nodes:      n2-highmem-8   (8 vCPU, 64 GB)
# Index/Query:     n2-standard-8  (8 vCPU, 32 GB)
# Analytics:       n2-highmem-16  (16 vCPU, 128 GB)
ਲੌਂਗਹੋਰਨਦੇ ਨਾਲ

ਬੇਅਰ ਮੈਟਲ k3s/ਰੈਂਚਰ

ਉਹਨਾਂ ਸੰਸਥਾਵਾਂ ਲਈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਕਲਾਉਡ ਵਿਕਰੇਤਾ ਲਾਕ-ਇਨ ਤੋਂ ਬਿਨਾਂ ਪੂਰੇ ਬੁਨਿਆਦੀ ਢਾਂਚੇ ਦੇ ਨਿਯੰਤਰਣ ਦੀ ਜ਼ਰੂਰਤ ਹੈ, ਰੈਂਚਰ ਪ੍ਰਬੰਧਨ ਅਤੇ ਲੋਂਗਹੋਰਨ ਡਿਸਟਰੀਬਿਊਟਿਡ ਸਟੋਰੇਜ ਦੇ ਨਾਲ ਬੇਅਰ ਮੈਟਲ k3s Couchbase HA ਲਈ ਇੱਕ ਸ਼ਾਨਦਾਰ ਬੁਨਿਆਦ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਇਹ ਆਰਕੀਟੈਕਚਰ ਨਿਯੰਤ੍ਰਿਤ ਉਦਯੋਗਾਂ, ਕਿਨਾਰੇ ਕੰਪਿਊਟਿੰਗ ਦ੍ਰਿਸ਼ਾਂ ਅਤੇ ਲਾਗਤ-ਸੰਵੇਦਨਸ਼ੀਲ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਪ੍ਰਸਿੱਧ ਹੈ।

k3s / ਰੈਂਚਰ ਬੇਅਰ ਮੈਟਲ Couchbase ਤੈਨਾਤੀਰੈਂਚਰ ਮੈਨੇਜਮੈਂਟ ਕੰਸੋਲਨੋਡ 1: k3s ਸਰਵਰ (ਰੈਕ-1)Couchbase ਡਾਟਾ + ਸੂਚਕਾਂਕcb-prod-0000 | 8 CPU, 64GBvBuckets 0-341 ਕਿਰਿਆਸ਼ੀਲ | SDK ਪੋਰਟ 11210Couchbase ਪੁੱਛਗਿੱਛ (N1QL)cb-prod-0001 | ਪੋਰਟ 8093MetalLB VIPPrometheusਲੋਂਗਹੋਰਨ ਵਾਲੀਅਮ/dev/sdb NVMe | ਨੋਡਾਂ ਵਿੱਚ 3 ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂਐਂਟੀ-ਐਫੀਨਿਟੀ: ਕੋਈ ਕਲੋਕੇਟਿਡ Couchbase ਪੌਡ ਨਹੀਂਨੋਡ 2: k3s ਸਰਵਰ (ਰੈਕ-2)Couchbase ਡਾਟਾ + ਸੂਚਕਾਂਕcb-prod-0002 | 8 CPU, 64GBvBuckets 342-682 ਕਿਰਿਆਸ਼ੀਲ | SDK ਪੋਰਟ 11210Couchbase ਖੋਜ (FTS)cb-prod-0003 | ਪੋਰਟ 8094MetalLB VIPGrafanaਲੌਂਗਹੋਰਨ ਵਾਲੀਅਮ/dev/sdb NVMe | ਨੋਡਾਂ ਵਿੱਚ 3 ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂਐਂਟੀ-ਐਫੀਨਿਟੀ: ਕੋਈ ਕਲੋਕੇਟਿਡ Couchbase ਪੌਡ ਨਹੀਂਨੋਡ 3: k3s ਏਜੰਟ (ਰੈਕ-3)Couchbase ਡਾਟਾ + ਵਿਸ਼ਲੇਸ਼ਣcb-prod-0004 | 16 CPU, 128GBvBuckets 683-1023 ਕਿਰਿਆਸ਼ੀਲ | CBASCouchbase ਇਵੈਂਟਿੰਗcb-prod-0005 | DCP ਖਪਤਕਾਰMetalLB VIPCAO ਆਪਰੇਟਰਲੌਂਗਹੋਰਨ ਵਾਲੀਅਮ/dev/sdb NVMe | ਨੋਡਾਂ ਵਿੱਚ 3 ਪ੍ਰਤੀਕ੍ਰਿਤੀਆਂਐਂਟੀ-ਐਫੀਨਿਟੀ: ਕੋਈ ਕਲੋਕੇਟਿਡ Couchbase ਪੌਡ ਨਹੀਂMetalLB ਲੋਡਬੈਲੈਂਸਰVIP: 192.168.1.200-210 | SDK + ਵੈੱਬ ਕੰਸੋਲ + XDCRਬੈਕਅੱਪ: cbbackupmgr → MinIO S3ਰੋਜ਼ਾਨਾ ਪੂਰਾ + ਘੰਟਾ ਵਾਧਾ | ਸਮਰਪਿਤ NVMe'ਤੇ MinIOਡਾਟਾ/ਸੂਚੀਪੁੱਛਗਿੱਛ/ਖੋਜਵਿਸ਼ਲੇਸ਼ਣ/ਇਵੈਂਟਿੰਗ/ਮੈਟਲਐਲਬੀਲੋਂਗਹੋਰਨDCP ਪ੍ਰਤੀਕ੍ਰਿਤੀਰੈਂਚਰ Mgmt
# k3s bare metal setup for Couchbase

# Install k3s on master nodes (HA with embedded etcd)
curl -sfL https://get.k3s.io | sh -s - server \
  --cluster-init \
  --disable traefik \
  --disable servicelb \
  --write-kubeconfig-mode 644 \
  --node-taint couchbase=true:NoSchedule \
  --node-label topology.kubernetes.io/zone=rack-1

# Join additional server nodes
curl -sfL https://get.k3s.io | sh -s - server \
  --server https://master-1:6443 \
  --token $(cat /var/lib/rancher/k3s/server/node-token) \
  --node-taint couchbase=true:NoSchedule \
  --node-label topology.kubernetes.io/zone=rack-2

# Join agent nodes
curl -sfL https://get.k3s.io | sh -s - agent \
  --server https://master-1:6443 \
  --token $(cat /var/lib/rancher/k3s/server/node-token) \
  --node-taint couchbase=true:NoSchedule \
  --node-label topology.kubernetes.io/zone=rack-3

# Install Longhorn for distributed storage
helm repo add longhorn https://charts.longhorn.io
helm install longhorn longhorn/longhorn \
  --namespace longhorn-system \
  --create-namespace \
  --set defaultSettings.defaultReplicaCount=3 \
  --set defaultSettings.defaultDataPath=/mnt/longhorn \
  --set defaultSettings.guaranteedInstanceManagerCPU=12

# Create Longhorn StorageClass for Couchbase
kubectl apply -f - <

ਬੈਕਅੱਪ ਅਤੇ cbbackupmgr

ਨਾਲ ਰੀਸਟੋਰ ਕਰੋ

Couchbasecbbackupmgrਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਇੱਕ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਬੈਕਅੱਪ ਟੂਲ ਜੋ ਵਿਕਲਪਿਕ ਕੰਪਰੈਸ਼ਨ ਅਤੇ ਐਨਕ੍ਰਿਪਸ਼ਨ ਦੇ ਨਾਲ ਪੂਰੇ, ਵਾਧੇ ਵਾਲੇ, ਅਤੇ ਡਿਫਰੈਂਸ਼ੀਅਲ ਬੈਕਅੱਪ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। ਉਤਪਾਦਨ HA ਤੈਨਾਤੀਆਂ ਲਈ, ਇੱਕ ਮਜ਼ਬੂਤ ​​ਬੈਕਅੱਪ ਰਣਨੀਤੀ ਕਲਾਉਡ ਸਨੈਪਸ਼ਾਟ ਸਮਰੱਥਾਵਾਂ ਦੇ ਨਾਲ Couchbase-ਪੱਧਰ ਦੇ ਬੈਕਅੱਪ ਨੂੰ ਜੋੜਦੀ ਹੈ।

ਬੈਕਅੱਪ ਸੰਰਚਨਾ

# Initialize a backup repository
/opt/couchbase/bin/cbbackupmgr config \
  --archive /backup/couchbase \
  --repo production-backup \
  --include-data production-data \
  --include-data user-profiles \
  --exclude-data _system

# Run a full backup
/opt/couchbase/bin/cbbackupmgr backup \
  --archive /backup/couchbase \
  --repo production-backup \
  --cluster couchbase://localhost \
  --username Administrator \
  --password "$CB_PASSWORD" \
  --threads 4 \
  --no-progress-bar

# Run an incremental backup (only mutations since last backup)
/opt/couchbase/bin/cbbackupmgr backup \
  --archive /backup/couchbase \
  --repo production-backup \
  --cluster couchbase://localhost \
  --username Administrator \
  --password "$CB_PASSWORD" \
  --threads 4

# List available backups
/opt/couchbase/bin/cbbackupmgr list \
  --archive /backup/couchbase \
  --repo production-backup

# Restore from a specific backup
/opt/couchbase/bin/cbbackupmgr restore \
  --archive /backup/couchbase \
  --repo production-backup \
  --cluster couchbase://target-cluster:8091 \
  --username Administrator \
  --password "$CB_PASSWORD" \
  --start 2026-04-12T00_00_00 \
  --end 2026-04-12T14_30_00 \
  --threads 4
Kubernetesਲਈ

ਆਟੋਮੇਟਿਡ ਬੈਕਅੱਪ ਸਕ੍ਰਿਪਟ
#!/bin/bash
# couchbase-backup.sh — Automated backup to S3-compatible storage

set -euo pipefail

CLUSTER_HOST="cb-production-srv.couchbase.svc.cluster.local"
BACKUP_DIR="/backup/couchbase"
REPO_NAME="prod-$(date +%Y%m%d)"
S3_BUCKET="s3://couchbase-backups/production"
RETENTION_DAYS=14

log() { echo "[$(date +'%Y-%m-%d %H:%M:%S')] $*"; }

log "Starting Couchbase backup for cluster: $CLUSTER_HOST"

if [ ! -d "$BACKUP_DIR/$REPO_NAME" ]; then
  log "Configuring new backup repository: $REPO_NAME"
  cbbackupmgr config \
    --archive "$BACKUP_DIR" \
    --repo "$REPO_NAME" \
    --include-data production-data \
    --include-data user-profiles
fi

log "Running incremental backup..."
cbbackupmgr backup \
  --archive "$BACKUP_DIR" \
  --repo "$REPO_NAME" \
  --cluster "couchbase://$CLUSTER_HOST" \
  --username "$CB_USERNAME" \
  --password "$CB_PASSWORD" \
  --threads 4 \
  --no-progress-bar

BACKUP_SIZE=$(du -sh "$BACKUP_DIR/$REPO_NAME" | cut -f1)
log "Backup complete. Size: $BACKUP_SIZE"

log "Syncing to S3: $S3_BUCKET/$REPO_NAME"
aws s3 sync "$BACKUP_DIR/$REPO_NAME" "$S3_BUCKET/$REPO_NAME" \
  --storage-class STANDARD_IA \
  --sse aws:kms

log "Cleaning up backups older than $RETENTION_DAYS days..."
find "$BACKUP_DIR" -maxdepth 1 -name "prod-*" -mtime +"$RETENTION_DAYS" -exec rm -rf {} \;

log "Backup pipeline complete."

Couchbase ਬੈਕਅੱਪ CRD (ਆਪਰੇਟਰ-ਪ੍ਰਬੰਧਿਤ)

ਆਟੋਨੋਮਸ ਆਪਰੇਟਰ ਆਟੋਮੇਟਿਡ ਬੈਕਅੱਪ ਪ੍ਰਬੰਧਨ ਲਈ CRDs ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ:

apiVersion: couchbase.com/v2
kind: CouchbaseBackup
metadata:
  name: cb-daily-backup
  namespace: couchbase
spec:
  strategy: full_incremental
  full:
    schedule: "0 2 * * 0"   # Full backup every Sunday at 2 AM
  incremental:
    schedule: "0 2 * * 1-6" # Incremental Mon-Sat at 2 AM
  successfulJobsHistoryLimit: 5
  failedJobsHistoryLimit: 3
  backOffLimit: 3
  logRetention: 168h
  size: 100Gi
  s3bucket: s3://couchbase-backups/production
---
apiVersion: couchbase.com/v2
kind: CouchbaseBackupRestore
metadata:
  name: cb-restore-pitr
  namespace: couchbase
spec:
  backup: cb-daily-backup
  repo: "20260412"
  start:
    int: 1
  end:
    int: 5
  backOffLimit: 3

N1QL ਪੁੱਛਗਿੱਛ ਪ੍ਰਦਰਸ਼ਨ ਟਿਊਨਿੰਗ

N1QL (JSON ਲਈ SQL++) Couchbase ਦੀ ਪੁੱਛਗਿੱਛ ਭਾਸ਼ਾ ਹੈ। N1QL ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਟਿਊਨ ਕਰਨ ਲਈ ਪੁੱਛਗਿੱਛ ਯੋਜਨਾਕਾਰ, ਸੂਚਕਾਂਕ ਡਿਜ਼ਾਈਨ, ਅਤੇ ਸਰਵਰ-ਸਾਈਡ ਓਪਟੀਮਾਈਜੇਸ਼ਨ ਨੂੰ ਸਮਝਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

ਸੂਚਕਾਂਕ ਰਣਨੀਤੀਆਂ: GSI ਅਤੇ FTS

-- Global Secondary Index (GSI) for common query patterns

-- Composite index for user lookups
CREATE INDEX idx_users_email_status
  ON `user-profiles`(email, status)
  WHERE type = 'user'
  WITH {"num_replica": 1, "defer_build": false};

-- Covering index (includes all queried fields to avoid fetch)
CREATE INDEX idx_orders_covering
  ON `production-data`(customer_id, order_date, total_amount, status)
  WHERE type = 'order'
  WITH {"num_replica": 1};

-- Array index for nested documents
CREATE INDEX idx_order_items
  ON `production-data`(DISTINCT ARRAY item.product_id FOR item IN items END)
  WHERE type = 'order'
  WITH {"num_replica": 1};

-- Partial index for active records only
CREATE INDEX idx_active_sessions
  ON `production-data`(user_id, created_at)
  WHERE type = 'session' AND status = 'active'
  WITH {"num_replica": 1};

-- Adaptive index for dynamic query patterns
CREATE INDEX idx_adaptive_products
  ON `production-data`(DISTINCT PAIRS(self))
  WHERE type = 'product'
  WITH {"num_replica": 1};

-- Check index status
SELECT name, state, num_docs_indexed, num_docs_pending
FROM system:indexes
WHERE keyspace_id = 'production-data';

-- Analyze query execution plan
EXPLAIN SELECT u.name, u.email, COUNT(o.id) AS order_count
FROM `user-profiles` u
JOIN `production-data` o ON o.customer_id = u.id
WHERE u.status = 'active' AND o.type = 'order'
GROUP BY u.name, u.email
ORDER BY order_count DESC
LIMIT 100;

-- Use ADVISE to get index recommendations
ADVISE SELECT * FROM `production-data`
WHERE type = 'order'
  AND customer_id = 'cust-12345'
  AND order_date BETWEEN '2026-01-01' AND '2026-04-12'
ORDER BY order_date DESC;

ਪੁੱਛਗਿੱਛ ਅਨੁਕੂਲਨ ਸੁਝਾਅ

-- Use PREPARE for frequently executed queries (cached plan)
PREPARE get_user_orders AS
SELECT o.id, o.order_date, o.total_amount, o.status
FROM `production-data` o
WHERE o.type = 'order'
  AND o.customer_id = $customer_id
ORDER BY o.order_date DESC
LIMIT $page_size OFFSET $page_offset;

-- Execute prepared statement
EXECUTE get_user_orders
USING {"customer_id": "cust-12345", "page_size": 20, "page_offset": 0};

-- Use META().id for direct key-value lookups (fastest path)
SELECT META().id, *
FROM `production-data`
USE KEYS ["order::2026-001", "order::2026-002", "order::2026-003"];

-- Correlated subquery with USE KEYS for joins
SELECT u.name,
  (SELECT o.id, o.total_amount
   FROM `production-data` o
   USE KEYS u.order_ids
   WHERE o.status = 'completed') AS completed_orders
FROM `user-profiles` u
WHERE META(u).id = 'user::12345';

-- Use INFER to understand document schema
INFER `production-data` WITH {"sample_size": 10000, "similarity_metric": 0.6};

ਮੈਮੋਰੀ ਪ੍ਰਬੰਧਨ ਅਤੇ ਬਾਲਟੀ ਸੰਰਚਨਾ

Couchbase ਦੀ ਮੈਮੋਰੀ-ਪਹਿਲੀ ਆਰਕੀਟੈਕਚਰ ਦਾ ਅਰਥ ਹੈ RAM ਅਲੋਕੇਸ਼ਨ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਪ੍ਰਭਾਵਤ ਕਰਦੀ ਹੈ। ਹਰੇਕ ਸੇਵਾ ਦਾ ਆਪਣਾ ਮੈਮੋਰੀ ਕੋਟਾ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਬਾਲਟੀਆਂ ਡਾਟਾ ਸੇਵਾ ਕੋਟਾ ਸਾਂਝਾ ਕਰਦੀਆਂ ਹਨ। ਸਹੀ ਆਕਾਰ ਕੈਸ਼ ਬੇਦਖਲੀ ਨੂੰ ਰੋਕਦਾ ਹੈ ਜੋ ਲੇਟੈਂਸੀ ਨੂੰ ਘਟਾਉਂਦੇ ਹਨ।

# Configure cluster-level memory quotas
/opt/couchbase/bin/couchbase-cli setting-cluster \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --cluster-ramsize 8192 \
  --cluster-index-ramsize 4096 \
  --cluster-fts-ramsize 2048 \
  --cluster-eventing-ramsize 2048 \
  --cluster-analytics-ramsize 4096

# Memory allocation guidelines:
# Data Service:      60% of available node RAM
# Index Service:     20% of available node RAM
# Search Service:    10% of available node RAM
# OS/overhead:       10% reserved

# Bucket memory sizing formula:
# Required RAM = (avg_doc_size * num_docs * 2.5) / num_data_nodes
# The 2.5 multiplier accounts for:
#   - Metadata overhead (~56 bytes per document)
#   - Internal fragmentation
#   - Replica copies in memory

# Create an optimized production bucket
curl -X POST http://localhost:8091/pools/default/buckets \
  -u Administrator:password \
  -d name=production-data \
  -d ramQuota=4096 \
  -d bucketType=couchbase \
  -d replicaNumber=2 \
  -d threadsNumber=8 \
  -d evictionPolicy=valueOnly \
  -d compressionMode=active \
  -d maxTTL=0 \
  -d conflictResolutionType=lww \
  -d flushEnabled=0 \
  -d durabilityMinLevel=majorityAndPersistActive

# Eviction policies:
# valueOnly  - Evicts document values but keeps metadata in RAM
#              Best for workloads where key access patterns are predictable
# fullEviction - Evicts both values and metadata
#                Best for very large datasets that exceed available RAM
# noEviction - (Ephemeral buckets only) Rejects writes when RAM is full
#              Best for caching use cases

TLS ਐਨਕ੍ਰਿਪਸ਼ਨ ਅਤੇ RBAC

ਉਤਪਾਦਨ ਵਿੱਚ Couchbase ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਨ ਲਈ ਟ੍ਰਾਂਜ਼ਿਟ (TLS), ਫਾਈਨ-ਗ੍ਰੇਨਡ ਰੋਲ-ਬੇਸਡ ਐਕਸੈਸ ਕੰਟਰੋਲ (RBAC), ਅਤੇ ਆਡਿਟ ਲੌਗਿੰਗ ਵਿੱਚ ਡੇਟਾ ਦੀ ਐਨਕ੍ਰਿਪਸ਼ਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

# Enable TLS for all Couchbase services
/opt/couchbase/bin/couchbase-cli ssl-manage \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --set-node-certificate

# Enforce minimum TLS version
/opt/couchbase/bin/couchbase-cli setting-security \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --set \
  --tls-min-version tlsv1.2 \
  --tls-honor-cipher-order 1 \
  --hsts-max-age 31536000 \
  --hsts-preload-enabled 1

# Create application-specific RBAC users
/opt/couchbase/bin/couchbase-cli user-manage \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --set \
  --rbac-username app-service \
  --rbac-password "$(openssl rand -base64 32)" \
  --rbac-name "Application Service Account" \
  --roles 'data_reader[production-data],data_writer[production-data],query_select[production-data],query_insert[production-data],query_update[production-data],query_delete[production-data]' \
  --auth-domain local

# Create a read-only analytics user
/opt/couchbase/bin/couchbase-cli user-manage \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --set \
  --rbac-username analytics-reader \
  --rbac-password "$(openssl rand -base64 32)" \
  --roles 'data_reader[production-data],query_select[production-data],analytics_reader[production-data]' \
  --auth-domain local

# Enable audit logging
/opt/couchbase/bin/couchbase-cli setting-audit \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --set \
  --audit-enabled 1 \
  --audit-log-path /opt/couchbase/var/lib/couchbase/logs \
  --audit-log-rotate-interval 86400 \
  --audit-log-rotate-size 20971520

Kubernetes TLS ਸਰਟੀਫਿਕੇਟ-ਪ੍ਰਬੰਧਕ

ਨਾਲ
# Certificate for Couchbase server TLS
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: couchbase-server-tls
  namespace: couchbase
spec:
  secretName: couchbase-server-tls
  duration: 8760h   # 1 year
  renewBefore: 720h  # 30 days before expiry
  privateKey:
    algorithm: RSA
    size: 4096
  usages:
  - server auth
  - client auth
  dnsNames:
  - "*.cb-production.couchbase.svc.cluster.local"
  - "*.cb-production.couchbase.svc"
  - "cb-production-srv.couchbase.svc.cluster.local"
  - "localhost"
  issuerRef:
    name: couchbase-ca-issuer
    kind: ClusterIssuer
Prometheus ਐਕਸਪੋਰਟਰਨਾਲ

ਨਿਗਰਾਨੀ

Couchbase ਆਪਣੇ REST API ਰਾਹੀਂ ਅਮੀਰ ਮੈਟ੍ਰਿਕਸ ਨੂੰ ਉਜਾਗਰ ਕਰਦਾ ਹੈ।couchbase-exporterਇਹਨਾਂ ਨੂੰ ਵਿਆਪਕ ਨਿਗਰਾਨੀ ਲਈ Prometheus ਫਾਰਮੈਟ ਵਿੱਚ ਅਨੁਵਾਦ ਕਰਦਾ ਹੈ।

# Deploy Couchbase Prometheus Exporter
apiVersion: apps/v1
kind: Deployment
metadata:
  name: couchbase-exporter
  namespace: couchbase
spec:
  replicas: 1
  selector:
    matchLabels:
      app: couchbase-exporter
  template:
    metadata:
      labels:
        app: couchbase-exporter
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "9091"
    spec:
      containers:
      - name: exporter
        image: couchbase/exporter:1.0.9
        args:
        - --couchbase-address=cb-production-srv.couchbase.svc.cluster.local
        - --couchbase-port=8091
        - --couchbase-username=$(CB_USERNAME)
        - --couchbase-password=$(CB_PASSWORD)
        - --server-address=0.0.0.0:9091
        - --per-node-refresh=5
        env:
        - name: CB_USERNAME
          valueFrom:
            secretKeyRef:
              name: cb-admin-credentials
              key: username
        - name: CB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: cb-admin-credentials
              key: password
        ports:
        - containerPort: 9091
          name: metrics
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 500m
            memory: 256Mi
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: couchbase-monitor
  namespace: couchbase
spec:
  selector:
    matchLabels:
      app: couchbase-exporter
  endpoints:
  - port: metrics
    interval: 15s
    path: /metrics

ਦੀ ਨਿਗਰਾਨੀ ਕਰਨ ਲਈ

ਕੁੰਜੀ Couchbase ਮੈਟ੍ਰਿਕਸ
  • cb_bucket_ops_per_sec— ਕੁੱਲ ਓਪਰੇਸ਼ਨ ਪ੍ਰਤੀ ਸਕਿੰਟ ਪ੍ਰਤੀ ਬਾਲਟੀ। ਬੇਸਲਾਈਨ ਤੁਹਾਡੇ ਸਧਾਰਨ ਥ੍ਰੁਪੁੱਟ ਅਤੇ ਅਸੰਗਤੀਆਂ 'ਤੇ ਚੇਤਾਵਨੀ.
  • cb_bucket_mem_used_bytes— ਬਾਲਟੀ ਮੈਮੋਰੀ ਵਰਤੋਂ। ਬੇਦਖਲੀ ਨੂੰ ਰੋਕਣ ਲਈ RAM ਕੋਟੇ ਤੱਕ ਪਹੁੰਚਣ 'ਤੇ ਚੇਤਾਵਨੀ।
  • cb_bucket_cache_miss_ratio— ਬੇਨਤੀਆਂ ਦਾ ਅਨੁਪਾਤ ਜੋ ਕੈਸ਼ ਨੂੰ ਖੁੰਝਾਉਂਦੇ ਹਨ ਅਤੇ ਡਿਸਕ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਸਰਵੋਤਮ ਪ੍ਰਦਰਸ਼ਨ ਲਈ 2% ਤੋਂ ਹੇਠਾਂ ਰਹਿਣਾ ਚਾਹੀਦਾ ਹੈ।
  • cb_bucket_disk_queue_items— ਡਿਸਕ ਰਾਈਟ ਕਤਾਰ ਡੂੰਘਾਈ। ਇੱਕ ਵਧ ਰਹੀ ਕਤਾਰ ਦਰਸਾਉਂਦੀ ਹੈ ਕਿ ਡਿਸਕ I/O ਰਾਈਟ ਥ੍ਰੁਪੁੱਟ ਨਾਲ ਜਾਰੀ ਨਹੀਂ ਰਹਿ ਸਕਦੀ ਹੈ।
  • cb_xdcr_changes_left— XDCR ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਬਕਾਇਆ ਮਿਊਟੇਸ਼ਨਾਂ ਦੀ ਸੰਖਿਆ। ਅੰਤਰ-ਖੇਤਰ ਪ੍ਰਤੀਕ੍ਰਿਤੀ ਦੇ ਪਛੜ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।
  • cb_xdcr_docs_written— XDCR ਰਾਹੀਂ ਪ੍ਰਤੀ ਸਕਿੰਟ ਦੁਹਰਾਇਆ ਗਿਆ ਦਸਤਾਵੇਜ਼।
  • cb_node_cpu_utilization_percent— ਪ੍ਰਤੀ-ਨੋਡ CPU ਵਰਤੋਂ। Couchbase ਕੰਪੈਕਸ਼ਨ ਅਤੇ ਇੰਡੈਕਸਿੰਗ ਲਈ CPU-ਇੰਟੈਂਸਿਵ ਹੈ।
  • cb_bucket_vbucket_active_num— ਪ੍ਰਤੀ ਨੋਡ ਸਰਗਰਮ vBucket ਦੀ ਸੰਖਿਆ। ਲਗਭਗ ਡੇਟਾ ਨੋਡਾਂ ਵਿੱਚ ਵੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।
  • cb_index_num_docs_pending— ਇੰਡੈਕਸ ਅੱਪਡੇਟ ਬਕਾਇਆ ਦਸਤਾਵੇਜ਼। ਸੂਚਕਾਂਕ ਬਿਲਡ ਲੈਗ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।
  • cb_n1ql_requests_per_sec— N1QL ਪੁੱਛਗਿੱਛ ਥ੍ਰੋਪੁੱਟ। ਔਸਤ ਲੇਟੈਂਸੀ ਦੇ ਨਾਲ ਮਿਲਾ ਕੇ, ਪੁੱਛਗਿੱਛ ਪ੍ਰਦਰਸ਼ਨ ਮੁੱਦਿਆਂ ਦੀ ਪਛਾਣ ਕਰਦਾ ਹੈ।

Prometheus ਚੇਤਾਵਨੀ ਨਿਯਮ

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: couchbase-alerts
  namespace: couchbase
spec:
  groups:
  - name: couchbase.rules
    rules:
    - alert: CouchbaseNodeDown
      expr: cb_node_healthy == 0
      for: 1m
      labels:
        severity: critical
      annotations:
        summary: "Couchbase node {{ $labels.node }} is unhealthy"
    - alert: CouchbaseHighCacheMissRate
      expr: cb_bucket_cache_miss_ratio > 0.05
      for: 5m
      labels:
        severity: warning
      annotations:
        summary: "Cache miss rate {{ $value | humanizePercentage }} on bucket {{ $labels.bucket }}"
    - alert: CouchbaseXDCRLag
      expr: cb_xdcr_changes_left > 10000
      for: 10m
      labels:
        severity: warning
      annotations:
        summary: "XDCR replication lag: {{ $value }} pending mutations"
    - alert: CouchbaseDiskQueueGrowing
      expr: rate(cb_bucket_disk_queue_items[5m]) > 100
      for: 10m
      labels:
        severity: warning
      annotations:
        summary: "Disk queue growing on bucket {{ $labels.bucket }}"
    - alert: CouchbaseMemoryPressure
      expr: cb_bucket_mem_used_bytes / cb_bucket_mem_quota_bytes > 0.9
      for: 5m
      labels:
        severity: critical
      annotations:
        summary: "Memory usage at {{ $value | humanizePercentage }} for bucket {{ $labels.bucket }}"
HAਲਈ

SDK ਕਨੈਕਸ਼ਨ ਸਟ੍ਰਿੰਗ ਕੌਂਫਿਗਰੇਸ਼ਨ

Couchbase SDK ਟੌਪੋਲੋਜੀ-ਜਾਣੂ ਹਨ — ਉਹ ਇੱਕ ਅੰਦਰੂਨੀ ਕਲੱਸਟਰ ਮੈਪ ਅਤੇ ਰੂਟ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਸਿੱਧੇ ਸਹੀ ਨੋਡ ਤੱਕ ਬਣਾਈ ਰੱਖਦੇ ਹਨ। ਸਹੀ SDK ਸੰਰਚਨਾ HA ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਤੇਜ਼ ਫੇਲਓਵਰ ਖੋਜ ਅਤੇ ਅਸਥਾਈ ਗਲਤੀਆਂ 'ਤੇ ਆਟੋਮੈਟਿਕ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ।

// Node.js SDK configuration for HA
const couchbase = require('couchbase');

const clusterConnStr = 'couchbases://cb-node1.example.com,cb-node2.example.com,cb-node3.example.com';

const cluster = await couchbase.connect(clusterConnStr, {
  username: process.env.CB_USERNAME,
  password: process.env.CB_PASSWORD,
  timeouts: {
    kvTimeout: 2500,           // Key-value operation timeout (ms)
    kvDurableTimeout: 10000,   // Durable write timeout
    queryTimeout: 75000,       // N1QL query timeout
    searchTimeout: 75000,      // FTS search timeout
    analyticsTimeout: 75000,   // Analytics query timeout
    connectTimeout: 10000,     // Initial connection timeout
    managementTimeout: 75000   // Management API timeout
  },
  security: {
    trustStorePath: '/etc/couchbase/ca.pem'
  },
  transactions: {
    durabilityLevel: couchbase.DurabilityLevel.MajorityAndPersistToActive,
    timeout: 15000
  }
});

const bucket = cluster.bucket('production-data');
const collection = bucket.defaultCollection();

// Durable write with observe-based durability
await collection.upsert('order::2026-001', orderDocument, {
  durabilityLevel: couchbase.DurabilityLevel.MajorityAndPersistToActive,
  timeout: 10000
});

// Read with replica fallback for HA
try {
  const result = await collection.get('user::12345');
} catch (err) {
  if (err instanceof couchbase.errors.TimeoutError) {
    const replicaResult = await collection.getAnyReplica('user::12345');
  }
}
# Java SDK configuration for HA
import com.couchbase.client.java.*;
import com.couchbase.client.java.env.*;
import java.time.Duration;

ClusterEnvironment env = ClusterEnvironment.builder()
    .timeoutConfig(TimeoutConfig.builder()
        .kvTimeout(Duration.ofMillis(2500))
        .kvDurableTimeout(Duration.ofSeconds(10))
        .queryTimeout(Duration.ofSeconds(75))
        .connectTimeout(Duration.ofSeconds(10))
        .build())
    .ioConfig(IoConfig.builder()
        .numKvConnections(4)
        .enableMutationTokens(true)
        .enableDnsSrv(true)
        .build())
    .securityConfig(SecurityConfig.builder()
        .enableTls(true)
        .trustCertificate(Paths.get("/etc/couchbase/ca.pem"))
        .build())
    .build();

Cluster cluster = Cluster.connect(
    "couchbases://cb-node1.example.com,cb-node2.example.com",
    ClusterOptions.clusterOptions("username", "password")
        .environment(env)
);
SDK ਕਨੈਕਸ਼ਨ ਲਈ

Kubernetes ਸੇਵਾ DNS

# When using the Autonomous Operator, connect via the headless service:
# couchbase://cb-production-srv.couchbase.svc.cluster.local
#
# The operator creates these services:
# cb-production-srv      - Headless service for SDK auto-discovery
# cb-production-ui       - Web Console (port 8091/18091)
# cb-production-cloud    - External connectivity (NodePort/LoadBalancer)
#
# For external SDK access (outside Kubernetes), use:
# - NodePort with explicit node addresses
# - LoadBalancer with MetalLB (bare metal)
# - Ingress with TCP passthrough for port 11210 (SDK) and 11207 (SDK TLS)

Couchbase ਮੋਬਾਈਲ ਅਤੇ ਐਜ ਤੈਨਾਤੀਆਂ ਲਈ ਸਿੰਕ ਗੇਟਵੇ

Couchbase ਮੋਬਾਈਲ Couchbase ਈਕੋਸਿਸਟਮ ਨੂੰ ਐਜ ਡਿਵਾਈਸਾਂ ਅਤੇ ਮੋਬਾਈਲ ਐਪਲੀਕੇਸ਼ਨਾਂ ਤੱਕ ਵਧਾਉਂਦਾ ਹੈ।Couchbase LiteiOS, Android, ਅਤੇ IoT ਡਿਵਾਈਸਾਂ 'ਤੇ ਏਮਬੈਡਡ ਚੱਲਦਾ ਹੈ, ਜਦੋਂ ਕਿਸਿੰਕ ਗੇਟਵੇCouchbase ਲਾਈਟ ਅਤੇ Couchbase ਸਰਵਰ ਵਿਚਕਾਰ ਸਮਕਾਲੀਕਰਨ ਮਿਡਲਵੇਅਰ ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ।

// Sync Gateway configuration for production
{
  "interface": ":4984",
  "adminInterface": "127.0.0.1:4985",
  "logging": {
    "console": {
      "log_level": "info",
      "log_keys": ["HTTP", "Sync", "Auth", "Changes"]
    }
  },
  "databases": {
    "mobile-app": {
      "server": "couchbases://cb-production-srv.couchbase.svc.cluster.local",
      "bucket": "production-data",
      "username": "sync-gateway",
      "password": "${SG_PASSWORD}",
      "enable_shared_bucket_access": true,
      "import_docs": true,
      "num_index_replicas": 1,
      "delta_sync": {
        "enabled": true,
        "rev_max_age_seconds": 86400
      },
      "cache": {
        "channel_cache": {
          "max_number": 50000,
          "compact_high_watermark_pct": 80,
          "compact_low_watermark_pct": 60
        },
        "rev_cache": {
          "size": 5000,
          "shard_count": 16
        }
      },
      "users": {
        "GUEST": {"disabled": true}
      },
      "sync": "function(doc, oldDoc) { if (doc.type === 'user-data') { channel(doc.channels); requireAccess(doc.channels); } else { channel('public'); } }"
    }
  }
}

# Deploy Sync Gateway on Kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
  name: sync-gateway
  namespace: couchbase
spec:
  replicas: 3
  selector:
    matchLabels:
      app: sync-gateway
  template:
    metadata:
      labels:
        app: sync-gateway
    spec:
      containers:
      - name: sync-gateway
        image: couchbase/sync-gateway:3.1.4-enterprise
        args: ["/etc/sync-gateway/config.json"]
        ports:
        - containerPort: 4984
          name: public
        - containerPort: 4985
          name: admin
        resources:
          requests:
            cpu: "2"
            memory: 4Gi
          limits:
            cpu: "4"
            memory: 8Gi
        volumeMounts:
        - name: config
          mountPath: /etc/sync-gateway
      volumes:
      - name: config
        configMap:
          name: sync-gateway-config

ਸਮਰੱਥਾ ਯੋਜਨਾ ਅਤੇ ਆਕਾਰ

Couchbase ਪ੍ਰਦਰਸ਼ਨ ਅਤੇ ਲਾਗਤ ਅਨੁਕੂਲਨ ਲਈ ਸਹੀ ਸਮਰੱਥਾ ਦੀ ਯੋਜਨਾਬੰਦੀ ਜ਼ਰੂਰੀ ਹੈ। ਨਿਮਨਲਿਖਤ ਸਾਰਣੀ ਵਰਕਲੋਡ ਟੀਅਰ ਦੇ ਆਧਾਰ 'ਤੇ ਆਕਾਰ ਦੇ ਦਿਸ਼ਾ-ਨਿਰਦੇਸ਼ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ:

ਵਰਕਲੋਡ ਟੀਅਰਡਾਟਾ ਨੋਡਸੂਚਕਾਂਕ/ਸਵਾਲRAM ਪ੍ਰਤੀ ਨੋਡਸਟੋਰੇਜਥ੍ਰੋਪੁੱਟ
ਵਿਕਾਸ1 (ਸਾਰੀਆਂ ਸੇਵਾਵਾਂ)ਸਹਿ-ਸਥਿਤ4 GB20 GB SSD<1k ਓਪਸ/s
ਛੋਟਾ ਉਤਪਾਦਨ3 ਡਾਟਾ2 ਪੁੱਛਗਿੱਛ + ਸੂਚਕਾਂਕ16 GB100 GB SSD10k ops/s
ਮੱਧਮ ਉਤਪਾਦਨ5 ਡਾਟਾ3 ਪੁੱਛਗਿੱਛ + ਸੂਚਕਾਂਕ32 GB500 GB SSD50k ops/s
ਵੱਡਾ ਉਤਪਾਦਨ7-10 ਡਾਟਾ4+ ਪੁੱਛਗਿੱਛ + ਸੂਚਕਾਂਕ64 GB1 TB NVMe200k+ ops/s
ਐਂਟਰਪ੍ਰਾਈਜ਼ / ਗਲੋਬਲ10+ ਡਾਟਾ (ਬਹੁ-ਖੇਤਰ)6+ ਪੁੱਛਗਿੱਛ + ਸੂਚਕਾਂਕ128 GB2+ TB NVMe500k+ ops/s

ਸਾਈਜ਼ਿੰਗ ਫਾਰਮੂਲਾ

# Data Service RAM sizing
# Required RAM per node = (num_documents * (doc_metadata_size + avg_value_size)) / num_data_nodes * (1 + num_replicas)
# doc_metadata_size = 56 bytes (fixed overhead per document)
# Include 25% headroom for fragmentation and growth

# Example: 100M documents, 1KB avg size, 3 data nodes, 1 replica
# RAM = (100,000,000 * (56 + 1024)) / 3 * 2 = ~72 GB per node
# With 25% headroom: ~90 GB per node

# Index Service RAM sizing (memory-optimized)
# RAM = total_index_size * 3 (for build/merge overhead)
# Use system:indexes to check current index sizes

# Disk sizing
# Disk = (num_documents * avg_doc_size * (1 + num_replicas)) * 3 (compaction headroom)
# Use SSD/NVMe with provisioned IOPS for predictable performance

ਡਿਜ਼ਾਸਟਰ ਰਿਕਵਰੀ ਅਤੇ ਫੇਲਓਵਰ ਪ੍ਰਕਿਰਿਆਵਾਂ

ਇੱਕ ਵਿਆਪਕ ਤਬਾਹੀ ਰਿਕਵਰੀ ਯੋਜਨਾ ਵਪਾਰਕ ਨਿਰੰਤਰਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਜਦੋਂ ਬੁਨਿਆਦੀ ਢਾਂਚੇ ਦੀਆਂ ਅਸਫਲਤਾਵਾਂ ਆਟੋਮੈਟਿਕ ਫੇਲਓਵਰ ਦੇ ਦਾਇਰੇ ਤੋਂ ਵੱਧ ਜਾਂਦੀਆਂ ਹਨ।

ਸਿੰਗਲ ਨੋਡ ਅਸਫਲਤਾ (ਆਟੋਮੈਟਿਕ)

# Auto-failover handles single node failures automatically.
# Verify failover occurred:
/opt/couchbase/bin/couchbase-cli server-list \
  --cluster localhost:8091 \
  --username Administrator \
  --password password

# After replacing the failed node, add and rebalance:
/opt/couchbase/bin/couchbase-cli server-add \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --server-add new-node.example.com:8091 \
  --server-add-username Administrator \
  --server-add-password password \
  --services data,index

/opt/couchbase/bin/couchbase-cli rebalance \
  --cluster localhost:8091 \
  --username Administrator \
  --password password

ਸੰਪੂਰਨ ਕਲੱਸਟਰ ਅਸਫਲਤਾ (ਮੈਨੂਅਲ)

# Scenario: Primary region (US-EAST) completely lost

# Step 1: Verify XDCR target cluster (EU-WEST) has latest data
# Check XDCR replication status before failure
curl -s http://eu-west-node:8091/pools/default/remoteClusters \
  -u Administrator:password | jq .

# Step 2: Pause XDCR replications pointing to the failed cluster
/opt/couchbase/bin/couchbase-cli xdcr-replicate \
  --cluster cb-eu-west.example.com:8091 \
  --username Administrator \
  --password password \
  --pause \
  --xdcr-replicator <replication-id>

# Step 3: Update application connection strings to EU-WEST cluster
# (via DNS update, service mesh, or environment variable change)

# Step 4: Scale up EU-WEST cluster if needed to handle full production load
# In Kubernetes, update the CouchbaseCluster CRD:
kubectl patch couchbasecluster cb-eu-west -n couchbase --type merge \
  -p '{"spec":{"servers":[{"name":"data-zone-a","size":4}]}}'

# Step 5: After US-EAST cluster is restored, re-establish XDCR
# and perform a full resync from EU-WEST back to US-EAST

ਸ਼ਾਨਦਾਰ ਫੇਲਓਵਰ ਅਤੇ ਰਿਕਵਰੀ

# Graceful failover (for maintenance, drains data before removal)
/opt/couchbase/bin/couchbase-cli failover \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --server-failover node-to-remove.example.com:8091

# Recovery (re-add the node after maintenance)
/opt/couchbase/bin/couchbase-cli recovery \
  --cluster localhost:8091 \
  --username Administrator \
  --password password \
  --server-recovery node-to-recover.example.com:8091 \
  --recovery-type delta

# Delta recovery re-synchronizes only the changed data,
# which is much faster than full recovery.
# Full recovery rebuilds the node from scratch.

# Rebalance to complete the recovery
/opt/couchbase/bin/couchbase-cli rebalance \
  --cluster localhost:8091 \
  --username Administrator \
  --password password
ਸੰਪੂਰਨ ਉਤਪਾਦਨ ਤੈਨਾਤੀ ਲਈ

Helm ਮੁੱਲ

ਹੇਠਾਂ ਇੱਕ ਉਤਪਾਦਨ ਵਾਤਾਵਰਣ ਵਿੱਚ ਆਟੋਨੋਮਸ ਓਪਰੇਟਰ ਦੇ ਨਾਲ Couchbase ਨੂੰ ਤੈਨਾਤ ਕਰਨ ਲਈ ਇੱਕ ਵਿਆਪਕ Helm ਮੁੱਲ ਫਾਈਲ ਹੈ:

# helm-values-production.yaml
couchbase-operator:
  operator:
    image:
      repository: couchbase/operator
      tag: 2.7.1
    resources:
      requests:
        cpu: 500m
        memory: 512Mi
      limits:
        cpu: "1"
        memory: 1Gi
  admissionController:
    enabled: true
    resources:
      requests:
        cpu: 100m
        memory: 128Mi

cluster:
  image: couchbase/server:7.6.1-enterprise
  antiAffinity: true
  autoFailoverTimeout: 30s
  autoFailoverMaxCount: 3
  autoFailoverOnDataDiskIssues: true
  autoFailoverServerGroup: true
  security:
    adminSecret: cb-admin-credentials
  networking:
    tls:
      static:
        serverSecret: couchbase-server-tls
        operatorSecret: couchbase-operator-tls
    exposeAdminConsole: true
    adminConsoleServiceType: NodePort
  buckets:
    managed: true
  servers:
    data:
      size: 4
      services:
      - data
      - index
      serverGroups:
      - zone-a
      - zone-b
      resources:
        requests:
          cpu: "4"
          memory: 16Gi
        limits:
          cpu: "8"
          memory: 20Gi
      volumeMounts:
        default: couchbase-data
        data: couchbase-data
        index: couchbase-index
    query:
      size: 2
      services:
      - query
      - search
      resources:
        requests:
          cpu: "4"
          memory: 8Gi
        limits:
          cpu: "8"
          memory: 12Gi
      volumeMounts:
        default: couchbase-default
    analytics:
      size: 2
      services:
      - analytics
      - eventing
      serverGroups:
      - zone-c
      resources:
        requests:
          cpu: "8"
          memory: 32Gi
        limits:
          cpu: "16"
          memory: 40Gi
      volumeMounts:
        default: couchbase-analytics
        analytics:
        - couchbase-analytics
  serverGroups:
  - zone-a
  - zone-b
  - zone-c
  volumeClaimTemplates:
  - metadata:
      name: couchbase-data
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 100Gi
  - metadata:
      name: couchbase-index
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 50Gi
  - metadata:
      name: couchbase-default
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 20Gi
  - metadata:
      name: couchbase-analytics
    spec:
      storageClassName: ebs-gp3-couchbase
      resources:
        requests:
          storage: 200Gi

ਸਿੱਟਾ

Couchbase ਸਰਵਰ ਦਾ ਆਰਕੀਟੈਕਚਰ—vBucket-ਅਧਾਰਿਤ ਸ਼ਾਰਡਿੰਗ, ਮੈਮੋਰੀ-ਪਹਿਲੀ ਡਾਟਾ ਐਕਸੈਸ, ਅਤੇ ਏਕੀਕ੍ਰਿਤ ਮਲਟੀ-ਮਾਡਲ ਸੇਵਾਵਾਂ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਬਣਾਇਆ ਗਿਆ—ਉੱਚ ਉਪਲਬਧਤਾ ਉਤਪਾਦਨ ਤੈਨਾਤੀਆਂ ਲਈ ਇੱਕ ਵਿਲੱਖਣ ਤੌਰ 'ਤੇ ਸ਼ਕਤੀਸ਼ਾਲੀ ਬੁਨਿਆਦ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਆਟੋਮੈਟਿਕ ਫੇਲਓਵਰ ਦੇ ਨਾਲ ਇੰਟਰਾ-ਕਲੱਸਟਰ ਰੀਪਲੀਕੇਸ਼ਨ ਦਾ ਸੁਮੇਲ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਸਿੰਗਲ-ਨੋਡ ਅਸਫਲਤਾਵਾਂ ਨੂੰ ਪਾਰਦਰਸ਼ੀ ਢੰਗ ਨਾਲ ਸੰਭਾਲਿਆ ਜਾਂਦਾ ਹੈ, ਜਦੋਂ ਕਿ XDCR ਗਲੋਬਲ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਭੂਗੋਲਿਕ ਖੇਤਰਾਂ ਵਿੱਚ ਇਸ ਲਚਕਤਾ ਨੂੰ ਵਧਾਉਂਦਾ ਹੈ।

Kubernetes ਲਈ Couchbase ਆਟੋਨੋਮਸ ਆਪਰੇਟਰ, ਜੋ ਕਿ ਗੁੰਝਲਦਾਰ ਮੈਨੂਅਲ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਘੋਸ਼ਣਾਤਮਕ, ਸਵੈ-ਚੰਗਾ ਕਰਨ ਵਾਲੀਆਂ ਤੈਨਾਤੀਆਂ ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ। ਸਰਵਰ ਸਮੂਹ ਰੈਕ/ਜ਼ੋਨ ਜਾਗਰੂਕਤਾ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ, ਓਪਰੇਟਰ ਸਕੇਲਿੰਗ ਇਵੈਂਟਸ ਦੇ ਦੌਰਾਨ ਪੁਨਰ-ਸੰਤੁਲਨ ਕਾਰਜਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ, ਅਤੇ ਏਕੀਕ੍ਰਿਤ ਬੈਕਅੱਪ CRDs ਸਵੈਚਾਲਤ ਆਫ਼ਤ ਰਿਕਵਰੀ ਤਿਆਰੀ।

ਇਸ ਗਾਈਡ ਤੋਂ

ਮੁੱਖ ਉਪਾਅ:

  • ਲੀਵਰੇਜ ਮਲਟੀ-ਆਯਾਮੀ ਸਕੇਲਿੰਗ— ਸੁਤੰਤਰ ਸਕੇਲਿੰਗ ਅਤੇ ਸਰੋਤ ਅਲੱਗ-ਥਲੱਗ ਲਈ ਸਮਰਪਿਤ ਨੋਡ ਪੂਲ 'ਤੇ ਵੱਖਰਾ ਡਾਟਾ, ਸੂਚਕਾਂਕ, ਪੁੱਛਗਿੱਛ, ਖੋਜ, ਵਿਸ਼ਲੇਸ਼ਣ, ਅਤੇ ਇਵੈਂਟਿੰਗ ਸੇਵਾਵਾਂ।
  • ਬਹੁ-ਖੇਤਰ ਲਚਕੀਲੇਪਣ ਲਈ XDCR ਨੂੰ ਸੰਰਚਿਤ ਕਰੋ— ਟਾਈਮਸਟੈਂਪ-ਅਧਾਰਿਤ ਸੰਘਰਸ਼ ਰੈਜ਼ੋਲੂਸ਼ਨ ਦੇ ਨਾਲ ਦੋ-ਦਿਸ਼ਾਵੀ XDCR AWS, Azure, ਅਤੇ GCP ਵਿੱਚ ਸਰਗਰਮ-ਸਰਗਰਮ ਤੈਨਾਤੀਆਂ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ। ਹਮੇਸ਼ਾ NTP ਸਮਕਾਲੀਕਰਨ ਨੂੰ ਯਕੀਨੀ ਬਣਾਓ।
  • ਜ਼ੋਨ ਜਾਗਰੂਕਤਾ ਲਈ ਸਰਵਰ ਸਮੂਹਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ— ਸਰਵਰ ਸਮੂਹਾਂ ਨੂੰ ਉਪਲਬਧਤਾ ਜ਼ੋਨਾਂ ਜਾਂ ਰੈਕਾਂ ਲਈ ਮੈਪ ਕਰੋ ਇਹ ਗਾਰੰਟੀ ਦੇਣ ਲਈ ਕਿ ਕਿਰਿਆਸ਼ੀਲ ਅਤੇ ਪ੍ਰਤੀਕ੍ਰਿਤੀ vBuckets ਵੱਖ-ਵੱਖ ਅਸਫਲ ਡੋਮੇਨਾਂ ਵਿੱਚ ਹਨ।
  • ਸਾਈਜ਼ ਮੈਮੋਰੀ ਨੂੰ ਧਿਆਨ ਨਾਲ— Couchbase ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਇਸ ਗੱਲ ਨਾਲ ਜੁੜੀ ਹੋਈ ਹੈ ਕਿ RAM ਵਿੱਚ ਕਿੰਨੇ ਵਰਕਿੰਗ ਸੈੱਟ ਫਿੱਟ ਹਨ। ਸਾਈਜ਼ਿੰਗ ਫਾਰਮੂਲੇ ਦੀ ਵਰਤੋਂ ਕਰੋ ਅਤੇ ਕੈਸ਼ ਮਿਸ ਅਨੁਪਾਤ ਦੀ ਨਿਗਰਾਨੀ ਕਰੋ।
  • ਵਿਆਪਕ ਨਿਗਰਾਨੀਨੂੰ ਲਾਗੂ ਕਰੋ — Prometheus ਨਿਰਯਾਤਕ ਨੂੰ ਪਹਿਲੇ ਦਿਨ ਤੋਂ ਲਾਗੂ ਕਰੋ। XDCR ਰੀਪਲੀਕੇਸ਼ਨ ਲੈਗ, ਕੈਸ਼ ਮਿਸ ਅਨੁਪਾਤ, ਡਿਸਕ ਕਤਾਰ ਦੀ ਡੂੰਘਾਈ, ਅਤੇ ਨੋਡ ਦੀ ਸਿਹਤ ਤੁਹਾਡੇ ਮਹੱਤਵਪੂਰਨ ਸੰਕੇਤ ਹਨ।
  • cbbackupmgrਨਾਲ ਬੈਕਅੱਪਾਂ ਨੂੰ ਆਟੋਮੇਟ ਕਰੋ — ਕਲਾਊਡ ਸਨੈਪਸ਼ਾਟ ਦੇ ਨਾਲ ਪੂਰੇ ਅਤੇ ਵਾਧੇ ਵਾਲੇ ਬੈਕਅੱਪ ਨੂੰ ਜੋੜੋ। ਨਿਯਮਿਤ ਤੌਰ 'ਤੇ ਰੀਸਟੋਰ ਪ੍ਰਕਿਰਿਆਵਾਂ ਦੀ ਜਾਂਚ ਕਰੋ।
  • TLS ਅਤੇ RBACਨਾਲ ਸੁਰੱਖਿਅਤ — ਨੋਡ-ਟੂ-ਨੋਡ ਅਤੇ ਕਲਾਇੰਟ-ਟੂ-ਨੋਡ TLS ਇਨਕ੍ਰਿਪਸ਼ਨ ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ। ਹਰੇਕ ਐਪਲੀਕੇਸ਼ਨ ਸੇਵਾ ਖਾਤੇ ਲਈ ਵਧੀਆ RBAC ਰੋਲ ਦੀ ਵਰਤੋਂ ਕਰੋ।
  • HAਲਈ SDK ਕੌਂਫਿਗਰ ਕਰੋ — ਮਲਟੀਪਲ ਬੂਟਸਟਰੈਪ ਨੋਡਸ ਦੀ ਵਰਤੋਂ ਕਰੋ, ਢੁਕਵੇਂ ਟਾਈਮਆਉਟਸ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰੋ, ਫਾਲਬੈਕ ਦੇ ਤੌਰ 'ਤੇ ਰੀਪਲੀਕਾ ਰੀਡਜ਼ ਨੂੰ ਲਾਗੂ ਕਰੋ, ਅਤੇ ਨਾਜ਼ੁਕ ਡੇਟਾ ਲਈ ਟਿਕਾਊ ਰਾਈਟਸ ਦਾ ਲਾਭ ਉਠਾਓ।
  • ਆਫ਼ਤ ਰਿਕਵਰੀ ਲਈ ਯੋਜਨਾ— ਸਿੰਗਲ-ਨੋਡ, ਮਲਟੀ-ਨੋਡ, ਅਤੇ ਸੰਪੂਰਨ ਕਲੱਸਟਰ ਅਸਫਲਤਾ ਦ੍ਰਿਸ਼ਾਂ ਲਈ ਦਸਤਾਵੇਜ਼ ਅਤੇ ਰੀਹਰਸਲ ਫੇਲਓਵਰ ਪ੍ਰਕਿਰਿਆਵਾਂ। XDCR ਸਟੈਂਡਬਾਏ ਕਲੱਸਟਰ ਹਰ ਸਮੇਂ ਪ੍ਰਚਾਰ ਲਈ ਤਿਆਰ ਰਹਿਣੇ ਚਾਹੀਦੇ ਹਨ।

ਇਸ ਵਿਆਪਕ ਬੁਨਿਆਦ ਦੇ ਨਾਲ, ਤੁਸੀਂ Couchbase ਸਰਵਰ ਨੂੰ ਕਿਸੇ ਵੀ ਬੁਨਿਆਦੀ ਢਾਂਚੇ ਵਿੱਚ ਉੱਚ ਉਪਲਬਧਤਾ ਉਤਪਾਦਨ ਵਾਤਾਵਰਨ ਵਿੱਚ ਤਾਇਨਾਤ ਕਰਨ ਅਤੇ ਚਲਾਉਣ ਲਈ ਲੈਸ ਹੋ-AWS, Azure, ਅਤੇ GCP 'ਤੇ ਪ੍ਰਬੰਧਿਤ Kubernetes ਤੋਂ ਲੈ ਕੇ ਰੈਂਚਰ ਦੁਆਰਾ ਪ੍ਰਬੰਧਿਤ ਬੇਅਰ ਮੈਟਲ k3s ਕਲੱਸਟਰਾਂ ਤੱਕ। Couchbase ਦੇ ਮੂਲ ਵਿਤਰਿਤ ਆਰਕੀਟੈਕਚਰ ਦਾ Kubernetes ਆਰਕੈਸਟਰੇਸ਼ਨ ਨਾਲ ਸੁਮੇਲ ਇੱਕ ਡਾਟਾਬੇਸ ਪਲੇਟਫਾਰਮ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਜੋ ਆਧੁਨਿਕ, ਵਿਸ਼ਵ ਪੱਧਰ 'ਤੇ ਵੰਡੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੀਆਂ ਮੰਗਾਂ ਨੂੰ ਪੂਰਾ ਕਰਦਾ ਹੈ।