இரண்டு தளங்களின் 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 முதன்மையாக இருக்கும்போதும், அதை இழப்பது யாராவது நடவடிக்கை எடுக்கும் வரை கட்டுப்பாட்டு-தள எழுத்துக்களை இழப்பது என்பதை நீங்கள் ஏற்கும்போதும் இரண்டு கூட்டல் ஒன்று சட்டபூர்வமான வடிவமைப்பு. அதைக் குறையாக மாற்றுவது அந்த முடிவை மறைமுகமாக விடுவதே. அதை runbook இல் எழுதுங்கள்: உங்கள் கட்டுப்பாட்டு தளம் எந்தத் தளத்திலிருந்து தப்பிப்பிழைக்கிறது, மற்ற தளம் 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
உறுப்பினர் பட்டியலை இட வரைபடத்துடன் ஒப்பிடுங்கள். இரண்டு உறுப்பினர்கள் ஒரே ஹோஸ்ட் அல்லது ஒரே ரேக்கிற்குத் தீர்க்கப்பட்டால், தவறு கிளஸ்டரில் அல்ல, வரைபடத்தில், தவறான இடவியல் சுற்றி அளவை மாற்றுவது அதே இடைநிறுத்தத்தின் விலை அதிகமான பதிப்பை மட்டுமே வாங்குகிறது.
எந்த மூன்று-வாக்காளர் வடிவமைப்பையும் அங்கீகரிக்கும் முன் நான்கு கேள்விகளுக்குப் பதிலளியுங்கள்: எத்தனை வாக்காளர்கள் ஒன்றாக மின்சாரத்தை இழக்கிறார்கள், எந்தத் தளத்தின் இழப்பு இன்னும் பெரும்பான்மையை விட்டுச் செல்கிறது, பாதை விழும்போது தலைவர் எங்கே அமர்கிறார், தப்பிப்பிழைத்த தளம் இன்னும் என்ன செய்ய முடியும். அவற்றில் ஏதேனும் ஒன்றில் "உறுதியாகத் தெரியவில்லை" என்றால் கிளஸ்டர் இன்னும் மிக உயர்ந்த கிடைப்புத்திறன் இல்லை. அவை அதிர்ஷ்டம் பெற்ற மூன்று இயந்திரங்கள்.