രണ്ട് സൈറ്റുകളിലെ Kubernetes ക്ലസ്റ്ററിന് മൂന്ന് etcd വോട്ടർമാർ വേണോ?
രണ്ട് VPN സൈറ്റുകളിലായി മൂന്ന് നിയന്ത്രണ-തലം നോഡുകൾ വലിയ സൈറ്റ് ഓഫാകുമ്പോൾ ഇപ്പോഴും ക്വോറം നഷ്ടപ്പെടുത്തുന്നു. യഥാർത്ഥ etcd വോട്ടർമാരെ എണ്ണി നിങ്ങൾ അതിജീവിക്കുന്ന നഷ്ടം തിരഞ്ഞെടുക്കുക.
മൂന്ന് നിയന്ത്രണ-തലം VM-കൾ ഒരു ചീത്ത രാത്രിയെ അതിജീവിക്കാനുള്ള മൂന്ന് അവസരങ്ങളായി തോന്നുന്നു. എന്നാൽ അങ്ങനെയല്ല, ഈ രണ്ട് വിശ്വാസങ്ങൾ തമ്മിലുള്ള ദൂരമാണ് ഒരു വൃത്തിയുള്ള മൂന്ന്-നോഡ് ഡിസൈനിനെ, ഒരു കെട്ടിടം വൈദ്യുതി നഷ്ടപ്പെടുമ്പോൾ എഴുത്ത് സ്വീകരിക്കുന്നത് നിർത്തുന്ന ക്ലസ്റ്ററാക്കി മാറ്റുന്നത്. സൈറ്റുകൾക്കിടയിലെ VPN ലിങ്ക് യന്ത്രങ്ങളെ പരസ്പരം എത്താവുന്നതാക്കുകയും പ്രശ്നം പരിഹരിക്കുന്നതിന് പകരം മറയ്ക്കുകയും ചെയ്യുന്നു. വോട്ടുകൾ ഓരോ etcd അംഗത്തിനും എണ്ണുന്നു, ആ അംഗങ്ങളിൽ രണ്ട് പേർക്ക് ഇപ്പോഴും ഒരു സ്വിച്ച്, ഒരു UPS, ഒരു അപ്ലിങ്ക് എന്നിവയുടെ പിന്നിൽ ഇരിക്കാം.
മൂന്ന് നിയന്ത്രണ-തലം നോഡുകൾ, ഒരു പരാജയ ഡൊമെയ്ൻ
നിങ്ങൾ kubectl get nodes പ്രവർത്തിപ്പിക്കുന്നു, മൂന്ന് നിയന്ത്രണ-തലം എൻട്രികൾ കാണുന്നു, ക്ലസ്റ്റർ ഉയർന്ന ലഭ്യതയായി രേഖപ്പെടുത്തുന്നു. ആ സംഖ്യ ഷെഡ്യൂൾ ചെയ്യാവുന്ന ശേഷി വിവരിക്കുന്നു, അതിജീവനമല്ല. ബാഹ്യ etcd ഇല്ലാതെ സൂക്ഷിക്കുന്ന kubeadm-ൽ, ഓരോ നിയന്ത്രണ-തലം നോഡും ഒരു അംഗത്തെ ഹോസ്റ്റ് ചെയ്യുന്നു, അതിനാൽ മൂന്ന് നോഡുകൾ യഥാർത്ഥത്തിൽ മൂന്ന് വോട്ടർമാരെ നൽകുന്നു. ആ വോട്ടർമാർ സ്വതന്ത്രമായി പരാജയപ്പെടുന്നുണ്ടോ എന്നത് നോഡ് പട്ടിക ഉത്തരം നൽകാൻ കഴിയാത്ത വേറിട്ട ചോദ്യമാണ്.
ഒരു ഹൈപ്പർവൈസറിൽ രണ്ട് VM-കൾ, ഒരു വൈദ്യുതി വിതരണത്തിൽ രണ്ട് റാക്കുകൾ, ഒരു ISP-യിൽ നിന്ന് രണ്ട് അപ്ലിങ്കുകൾ: ഓരോ ജോഡിയും രണ്ട് ഹോസ്റ്റ്നെയിമുകൾ ധരിച്ച ഒരു ഡൊമെയ്നാണ്. പ്ലെയ്സ്മെന്റ് എഴുതി ഓരോ വോട്ടറും എന്ത് പങ്കിടുന്നു എന്ന് അടയാളപ്പെടുത്തുക — ഹൈപ്പർവൈസർ, PDU, റാക്കിന്റെ മുകൾഭാഗം സ്വിച്ച്, സ്റ്റോറേജ് അറേ, NAT ഉപകരണം, VPN കോൺസൺട്രേറ്റർ. തുടർന്ന് കടലാസിൽ ഓരോ പങ്കിട്ട വസ്തുവും നീക്കം ചെയ്ത് ബാക്കിയുള്ള വോട്ടുകൾ വീണ്ടും എണ്ണുക. ഒരു പരാജയപ്പെട്ട ഹോസ്റ്റ് കാരണം രണ്ട് വോട്ടർമാരെ നഷ്ടപ്പെടുത്തുന്ന ക്ലസ്റ്റർ തുടക്കം മുതലേ ഒരു-വോട്ടർ ക്ലസ്റ്ററായിരുന്നു; ആരും അതിനോട് ഈ ചോദ്യം ഇതുവരെ ചോദിച്ചിരുന്നില്ല.
രണ്ട് സൈറ്റ് വിഭജനം എന്ത് സഹിക്കും, എന്ത് സഹിക്കില്ല
മൂന്ന് വോട്ടർമാരെ രണ്ട് സൈറ്റുകളിൽ രണ്ടും ഒന്നും ആയി വയ്ക്കുമ്പോൾ, മറ്റേ സൈറ്റ് അപ്രത്യക്ഷമാകുമ്പോൾ വലിയ വശം ക്വോറം നിലനിർത്തുന്നു, ഒരു-വോട്ടർ വശം ഒരിക്കലും നിലനിർത്തുന്നില്ല. ആ അസമത്വം ഗണിതമാണ്, ട്യൂണിംഗല്ല. കൃത്യം രണ്ട് സ്വതന്ത്ര സൈറ്റുകളിൽ വ്യാപിച്ചിട്ടുള്ള ഏതൊരു ഭൂരിപക്ഷാധിഷ്ഠിത etcd ക്ലസ്റ്ററും "ഏതെങ്കിലും സൈറ്റ് നഷ്ടപ്പെട്ടാലും പ്രതിബദ്ധത തുടരുക" പരിശോധനയിൽ പരാജയപ്പെടുന്നു, കാരണം ഇരുവശങ്ങൾക്കും ഒരേ സമയം പകുതിയിൽ കൂടുതൽ വോട്ടുകൾ ഉണ്ടായിരിക്കണം.
താഴെയുള്ള പട്ടിക നിങ്ങൾ യഥാർത്ഥത്തിൽ ഏത് പരാജയങ്ങൾ വാങ്ങി എന്ന് കാണാനുള്ള വേഗതയേറിയ വഴിയാണ്. ഓരോ വരിയും ഇങ്ങനെ വായിക്കുക: ഇന്ന് രാത്രി ഈ മുഴുവൻ വരിയും അപ്രത്യക്ഷമായാൽ, അതിജീവിച്ചവർക്ക് ഇപ്പോഴും ഒരു എഴുത്ത് പ്രതിബദ്ധമാക്കാൻ കഴിയുമോ?
| What disappears | Voters left | Writes still commit |
|---|---|---|
| Site B, holding voter 3 | 2 of 3 | Yes |
| Site A, holding voters 1 and 2 | 1 of 3 | No |
| One hypervisor carrying any two voters | 1 of 3 | No |
| The inter-site VPN only | 2 of 3 on one side | Only on the majority side |
ടണൽ ഒരിക്കലും ഒരു വോട്ട് ചേർക്കാത്തത് എന്തുകൊണ്ട്
VPN ഗതാഗതമാണ്, അംഗമല്ല. അതിന് ദൂരെയുള്ള ഒരു വോട്ടറെ എത്താവുന്നതാക്കാം, ഒരു വിഭജനത്തെ മന്ദഗതിയിലുള്ള സമയപരിധി പോലെ തോന്നിക്കുന്ന ഒന്നാക്കി മാറ്റാം, ക്വോറത്തിന് അതിന്റെ മുഴുവൻ സംഭാവന അത്രമാത്രമാണ്. അത് ചേർക്കുന്നത് ചെലവാണ്, കാരണം ഓരോ പ്രതിബദ്ധതയും ലിങ്ക് കടക്കണം, raft ലോഗിനെ സ്പർശിക്കുന്ന എഴുത്തുകളിൽ etcd ആ യാത്രാചെലവ് നൽകുന്നു. ആടുന്ന പാത പകർപ്പെഴുത്തിനെ വീണ്ടും ശ്രമങ്ങളും തിരഞ്ഞെടുപ്പുകളുമാക്കി മാറ്റുന്നു.
വിഭജനങ്ങൾ ആളുകൾ മാന്ത്രികത പ്രതീക്ഷിക്കുന്ന സ്ഥലമാണ്, അതിനാൽ അവയെക്കുറിച്ച് കൃത്യത പാലിക്കുക. പഴയ നേതാവ് ഒരു-വോട്ടർ വശത്ത് ഇരിക്കുമ്പോൾ ലിങ്ക് വീണാൽ, ആ വശത്തിന് പ്രതിബദ്ധമാക്കാൻ കഴിയില്ല, തിരഞ്ഞെടുപ്പ് സമയപരിധി കഴിയുമ്പോൾ നേതാവ് പടിയിറങ്ങുന്നു, അതേസമയം രണ്ട്-വോട്ടർ വശം ഒരു പകരക്കാരനെ തിരഞ്ഞെടുക്കുന്നു. etcd-ന്റെ പരാജയ മോഡ് ഗൈഡ് സ്വഭാവം വ്യക്തമായി വിവരിക്കുന്നു: ഭൂരിപക്ഷ വശത്ത് തുടരുന്ന സേവനം, ഒറ്റപ്പെട്ട വശത്ത് രണ്ടാമതൊരു എഴുതാവുന്ന ക്ലസ്റ്ററുമില്ല.
നിങ്ങൾ ഏത് തടസ്സം വാങ്ങുന്നു എന്ന് തീരുമാനിക്കുക
സൈറ്റ് A പ്രാഥമികമായിരിക്കുകയും, അത് നഷ്ടപ്പെടുന്നത് ആരെങ്കിലും നടപടിയെടുക്കുന്നതുവരെ നിയന്ത്രണ-തലം എഴുത്തുകൾ നഷ്ടപ്പെടുന്നു എന്ന് നിങ്ങൾ അംഗീകരിക്കുകയും ചെയ്യുമ്പോൾ രണ്ട് കൂടെ ഒന്ന് ഒരു സാധുവായ ഡിസൈനാണ്. അതിനെ ഒരു വീഴ്ചയാക്കി മാറ്റുന്നത് ആ തീരുമാനം പരോക്ഷമായി വിടുന്നതാണ്. അത് റൺബുക്കിൽ എഴുതുക: നിങ്ങളുടെ നിയന്ത്രണ തലം ഏത് സൈറ്റിൽ നിന്ന് അതിജീവിക്കുന്നു, മറ്റേ സൈറ്റ് 03:00-ന് ഓഫാകുമ്പോൾ ഒരു ഓപ്പറേറ്റർ എന്ത് ചെയ്യുന്നു.
ആവശ്യകത പകരം "ഏതെങ്കിലും സൈറ്റ് പരാജയപ്പെടാം" എന്നാണെങ്കിൽ, പ്ലെയ്സ്മെന്റ് ഓരോ സൈറ്റിലും ഭൂരിപക്ഷം നിലനിർത്തണം, രണ്ട് സൈറ്റുകളിൽ മൂന്ന് വോട്ടർമാർക്ക് അത് കഴിയില്ല. നിങ്ങൾ യഥാർത്ഥത്തിൽ സ്വതന്ത്രമായ മൂന്നാമതൊരു ഡൊമെയ്ൻ ചേർക്കുന്നു — മറ്റൊരു ദാതാവിലെ ചെറിയ പ്രദേശം അങ്ങോട്ടുള്ള പാത സ്ഥിരമാണെങ്കിൽ പ്രവർത്തിക്കും — അല്ലെങ്കിൽ വേറിട്ട etcd-യുള്ള രണ്ട് ക്ലസ്റ്ററുകളായി പിരിഞ്ഞ് ആ വിഭജനത്തിന്റെ പ്രവർത്തനച്ചെലവ് അംഗീകരിക്കുന്നു. ഒരു സാക്ഷി ഷോർട്ട്കട്ടും ഇത് ഒഴിവാക്കുന്നില്ല: etcd-യിൽ ഭാരം കുറഞ്ഞ മധ്യസ്ഥ അംഗമില്ല, അതിനാൽ മൂന്നാമത്തെ വോട്ടർ സ്വന്തം ഡിസ്ക്, മെമ്മറി, നെറ്റ്വർക്ക് ആവശ്യകതകളുള്ള പൂർണ്ണ അംഗമാണ്. ഡയഗ്രാമിൽ "സാക്ഷി" എന്ന് എഴുതിയ ഒരു പെട്ടി വരയ്ക്കുന്നത് സാക്ഷിയെ സൃഷ്ടിക്കുന്നില്ല.
ക്വോറം സേവനത്തിന് തുല്യമല്ല
etcd ക്വോറം API സെർവറിനെ എഴുത്തുകൾ സ്വീകരിക്കാൻ പ്രാപ്തമായി നിലനിർത്തുന്നു, നിലനിർത്തുന്നത് അത്രമാത്രം. ലോഡ് ബാലൻസറിന്റെ ആരോഗ്യ പരിശോധനകൾ, ingress, ടണലിലൂടെയുള്ള CNI എത്തിച്ചേരൽ, വോളിയം അറ്റാച്ച് മേഖലകൾ, ആപ്ലിക്കേഷൻ പകർപ്പെഴുത്ത് എന്നിവയ്ക്ക് ഓരോന്നിനും സ്വന്തം ഉത്തരം വേണം. ഒരു ക്ലസ്റ്ററിന് വ്യക്തമായ ഭൂരിപക്ഷം ഉണ്ടായിരിക്കാം, എന്നിട്ടും ഉപയോക്താക്കൾക്ക് ഉപയോഗപ്രദമായ ഒന്നും നൽകാൻ കഴിയില്ല.
തുടർന്ന് നിങ്ങൾക്കുണ്ടെന്ന് കരുതുന്ന അംഗത്വം സ്ഥിരീകരിക്കുക, കാരണം ഡയഗ്രാമുകൾ നീങ്ങുന്നു:
kubectl -n kube-system get pods -l component=etcd -o wide
kubectl get endpoints kube-apiserver -n default
etcdctl member list -w table
അംഗങ്ങളുടെ പട്ടിക പ്ലെയ്സ്മെന്റ് ചിത്രവുമായി താരതമ്യം ചെയ്യുക. രണ്ട് അംഗങ്ങൾ ഒരേ ഹോസ്റ്റിലേക്കോ ഒരേ റാക്കിലേക്കോ പരിഹരിക്കുന്നുവെങ്കിൽ, തെറ്റ് ക്ലസ്റ്ററിലല്ല, ചിത്രത്തിലാണ്, തെറ്റായ ടോപ്പോളജിക്ക് ചുറ്റും വലുപ്പം മാറ്റുന്നത് അതേ തടസ്സത്തിന്റെ കൂടുതൽ ചെലവേറിയ പതിപ്പ് മാത്രം വാങ്ങുന്നു.
ഏതെങ്കിലും മൂന്ന്-വോട്ടർ ഡിസൈൻ അംഗീകരിക്കുന്നതിന് മുമ്പ് നാല് ചോദ്യങ്ങൾക്ക് ഉത്തരം നൽകുക: എത്ര വോട്ടർമാർ ഒരുമിച്ച് വൈദ്യുതി നഷ്ടപ്പെടുത്തുന്നു, ഏത് സൈറ്റിന്റെ നഷ്ടം ഇപ്പോഴും ഭൂരിപക്ഷം അവശേഷിപ്പിക്കുന്നു, ടണൽ വീഴുമ്പോൾ നേതാവ് എവിടെ ഇരിക്കുന്നു, അതിജീവിച്ച സൈറ്റിന് ഇപ്പോഴും എന്ത് ചെയ്യാനാകും. അവയിലേതെങ്കിലും "ഉറപ്പില്ല" എന്നാൽ ക്ലസ്റ്റർ ഇപ്പോഴും ഉയർന്ന ലഭ്യമല്ല എന്നാണ് അർത്ഥം. അത് ഭാഗ്യമുള്ള മൂന്ന് യന്ത്രങ്ങളാണ്.