MySQL கிளஸ்டருக்கான HA தீர்வாக ஆர்கெஸ்ட்ரேட்டர் மற்றும் VIP

Citymobil இல் நாங்கள் MySQL தரவுத்தளத்தை எங்களின் முக்கிய நிலையான தரவு சேமிப்பகமாகப் பயன்படுத்துகிறோம். பல்வேறு சேவைகள் மற்றும் நோக்கங்களுக்காக எங்களிடம் பல தரவுத்தள கிளஸ்டர்கள் உள்ளன.

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

MySQL கிளஸ்டருக்கான HA தீர்வாக ஆர்கெஸ்ட்ரேட்டர் மற்றும் VIP

விஐபி அடிப்படையில் HA தீர்வு

முதலில், எங்கள் தரவு சேமிப்பக அமைப்பு என்ன என்பதை சுருக்கமாக உங்களுக்குச் சொல்கிறேன்.

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

அதன் அடிப்படையில் அரை-ஒத்திசைவு முறையில் நகலெடுக்கப்படுகிறது GTID. அதாவது ஒரு பரிவர்த்தனை வெற்றிகரமாக கருதப்படுவதற்கு முன்பு குறைந்தபட்சம் ஒரு பிரதியையாவது பதிவு செய்ய வேண்டும். முதன்மை முனை செயலிழந்தால், செயல்திறன் மற்றும் தரவுப் பாதுகாப்பு ஆகியவற்றுக்கு இடையே இந்த நகலெடுக்கும் முறை உகந்த சமநிலையை வழங்குகிறது. அடிப்படையில் அனைத்து மாற்றங்களும் மாஸ்டரிலிருந்து பிரதிகளைப் பயன்படுத்தி மாற்றப்படும் Row Based Replication (RBR), ஆனால் சில முனைகள் இருக்கலாம் mixed binlog format.

ஆர்கெஸ்ட்ரேட்டர் அவ்வப்போது கிளஸ்டர் டோபோலஜியின் நிலையை புதுப்பித்து, பெறப்பட்ட தகவலை பகுப்பாய்வு செய்கிறார், மேலும் சிக்கல்கள் ஏற்பட்டால், அது தானியங்கி மீட்பு செயல்முறையைத் தொடங்கலாம். விஐபி, டிஎன்எஸ் அடிப்படையில், சேவை கண்டுபிடிப்பு சேவைகள் அல்லது சுயமாக எழுதப்பட்ட வழிமுறைகளைப் பயன்படுத்தி, இது வெவ்வேறு வழிகளில் செயல்படுத்தப்படுவதால், டெவலப்பர் இந்த செயல்முறைக்கு பொறுப்பேற்கிறார்.

ஒரு மாஸ்டர் தோல்வியுற்றால் அதை மீட்டெடுப்பதற்கான ஒரு எளிய வழி, மிதக்கும் விஐபி முகவரிகளைப் பயன்படுத்துவதாகும்.

முன்னோக்கிச் செல்வதற்கு முன் இந்த தீர்வைப் பற்றி நீங்கள் தெரிந்து கொள்ள வேண்டியது:

  • ஒரு விஐபி என்பது ஒரு குறிப்பிட்ட இயற்பியல் நெட்வொர்க் இடைமுகத்துடன் தொடர்புபடுத்தப்படாத ஒரு ஐபி முகவரி. ஒரு முனை தோல்வியுற்றால் அல்லது திட்டமிடப்பட்ட பராமரிப்பின் போது, ​​குறைந்த வேலையில்லா நேரத்துடன் விஐபியை மற்றொரு ஆதாரத்திற்கு மாற்றலாம்.
  • மெய்நிகர் ஐபி முகவரியை விடுவிப்பதும் வழங்குவதும் மலிவான மற்றும் விரைவான செயல்பாடாகும்.
  • விஐபியுடன் பணிபுரிய, நீங்கள் SSH வழியாக சேவையகத்தை அணுக வேண்டும் அல்லது சிறப்பு பயன்பாடுகளைப் பயன்படுத்த வேண்டும், எடுத்துக்காட்டாக, keepalived.

எங்கள் வழிகாட்டியின் சாத்தியமான சிக்கல்களைப் பார்ப்போம் மற்றும் தானியங்கு மீட்பு பொறிமுறை எவ்வாறு செயல்பட வேண்டும் என்பதை கற்பனை செய்து பாருங்கள்.

மாஸ்டருக்கான பிணைய இணைப்பு மறைந்துவிட்டது அல்லது வன்பொருள் மட்டத்தில் சிக்கல் எழுந்துள்ளது, மேலும் சேவையகம் கிடைக்கவில்லை

  1. ஆர்கெஸ்ட்ரேட்டர் கிளஸ்டர் டோபாலஜியைப் புதுப்பிக்கிறார், ஒவ்வொரு பிரதியும் மாஸ்டர் கிடைக்கவில்லை என்று தெரிவிக்கிறது. ஆர்கெஸ்ட்ரேட்டர் புதிய மாஸ்டரின் பாத்திரத்திற்கு பொருத்தமான ஒரு பிரதியைத் தேர்ந்தெடுக்கும் செயல்முறையைத் தொடங்குகிறார் மற்றும் மீட்டெடுக்கத் தொடங்குகிறார்.
  2. பழைய மாஸ்டரிடமிருந்து விஐபியை அகற்ற முயற்சிக்கிறோம் - வெற்றி இல்லாமல்.
  3. பிரதி மாஸ்டர் பாத்திரத்திற்கு மாறுகிறது. இடவியல் மீண்டும் கட்டமைக்கப்படுகிறது.
  4. VIP உடன் புதிய பிணைய இடைமுகத்தைச் சேர்த்தல். விஐபியை அகற்றுவது சாத்தியமில்லை என்பதால், பின்னணியில் அவ்வப்போது கோரிக்கையை அனுப்பத் தொடங்குகிறோம் இலவச ARP. இந்த வகையான கோரிக்கை/பதில், இணைக்கப்பட்ட சுவிட்சுகளில் IP மற்றும் MAC முகவரி மேப்பிங் அட்டவணையைப் புதுப்பிக்க உங்களை அனுமதிக்கிறது. இது வாய்ப்பைக் குறைக்கிறது split brain பழைய மாஸ்டர் திரும்பும் போது.
  5. அனைத்து புதிய இணைப்புகளும் உடனடியாக புதிய மாஸ்டருக்கு திருப்பி விடப்படும். பழைய இணைப்புகள் தோல்வியடைகின்றன மற்றும் தரவுத்தளத்திற்கு மீண்டும் மீண்டும் அழைப்புகள் பயன்பாட்டு மட்டத்தில் செய்யப்படுகின்றன.

சர்வர் சாதாரண பயன்முறையில் இயங்குகிறது, DBMS அளவில் தோல்வி ஏற்பட்டது

அல்காரிதம் முந்தைய வழக்கைப் போலவே உள்ளது: இடவியல் புதுப்பித்தல் மற்றும் மீட்பு செயல்முறையைத் தொடங்குதல். சேவையகம் இருப்பதால், பழைய மாஸ்டரில் விஐபியை வெற்றிகரமாக வெளியிடுகிறோம், அதை புதியதாக மாற்றி, பல ARP கோரிக்கைகளை அனுப்புகிறோம். பழைய மாஸ்டரின் சாத்தியமான திரும்புதல், மறுகட்டமைக்கப்பட்ட கிளஸ்டர் மற்றும் பயன்பாட்டின் செயல்பாட்டை பாதிக்கக்கூடாது.

பிற பிரச்சினைகள்

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

ஒரு மெய்நிகர் நெட்வொர்க் இடைமுகம் எப்போதும் தற்காலிகமாக சேர்க்கப்படும், அதாவது, சேவையகத்தை மறுதொடக்கம் செய்த பிறகு, VIP தானாகவே ஒதுக்கப்படாது. ஒவ்வொரு தரவுத்தள நிகழ்வும் இயல்புநிலையாக படிக்க-மட்டும் பயன்முறையில் தொடங்குகிறது, ஆர்கெஸ்ட்ரேட்டர் தானாகவே புதிய மாஸ்டரை எழுதுவதற்கு மாற்றி நிறுவ முயற்சிக்கும் read only பழைய மாஸ்டர் மீது. இந்த நடவடிக்கைகள் நிகழ்தகவைக் குறைப்பதை நோக்கமாகக் கொண்டுள்ளன split brain.

மீட்டெடுப்புச் செயல்பாட்டின் போது சிக்கல்கள் ஏற்படலாம், இது நிலையான கண்காணிப்பு கருவிகளுடன் கூடுதலாக ஆர்கெஸ்ட்ரேட்டர் UI மூலமாகவும் தெரிவிக்கப்பட வேண்டும். இந்த அம்சத்தைச் சேர்ப்பதன் மூலம் REST APIயை விரிவுபடுத்தியுள்ளோம் (PR தற்போது மதிப்பாய்வில் உள்ளது).

HA தீர்வுக்கான பொதுவான வரைபடம் கீழே கொடுக்கப்பட்டுள்ளது.

MySQL கிளஸ்டருக்கான HA தீர்வாக ஆர்கெஸ்ட்ரேட்டர் மற்றும் VIP

ஒரு புதிய மாஸ்டர் தேர்வு

ஆர்கெஸ்ட்ரேட்டர் போதுமான புத்திசாலி மற்றும் தேர்வு செய்ய முயற்சிக்கிறார் மிகவும் பொருத்தமான பிரதி பின்வரும் அளவுகோல்களின்படி புதிய மாஸ்டராக:

  • பிரதி எஜமானரை விட பின்தங்கியுள்ளது;
  • மாஸ்டர் மற்றும் பிரதியின் MySQL பதிப்பு;
  • பிரதி வகை (RBR, SBR அல்லது கலப்பு);
  • ஒரே அல்லது வெவ்வேறு தரவு மையங்களில் இடம்;
  • கிடைக்கும் errant GTID - பிரதியில் செயல்படுத்தப்பட்ட மற்றும் மாஸ்டரில் இல்லாத பரிவர்த்தனைகள்;
  • விருப்ப தேர்வு விதிகளும் கணக்கில் எடுத்துக்கொள்ளப்படுகின்றன.

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

பதில் மற்றும் மீட்பு நேரம்

ஒரு சம்பவம் நடந்தால், கணினி செயலிழப்பைக் குறைப்பது முக்கியம், எனவே இசைக்குழுவால் கிளஸ்டர் இடவியல் உருவாக்கம் மற்றும் புதுப்பிப்பை பாதிக்கும் MySQL அளவுருக்களைக் கருத்தில் கொள்வோம்:

  • slave_net_timeout - இணைப்பு தொலைந்து மீண்டும் இணைக்கப்பட்டதாக அங்கீகரிக்கப்படுவதற்கு முன், மாஸ்டரிடமிருந்து புதிய தரவு அல்லது இதயத் துடிப்பு சிக்னல் வருவதற்கு பிரதி காத்திருக்கும் வினாடிகளின் எண்ணிக்கை. குறைந்த மதிப்பு, மாஸ்டருடன் தொடர்பு உடைந்துவிட்டது என்பதை பிரதி வேகமாக தீர்மானிக்க முடியும். இந்த மதிப்பை 5 வினாடிகளாக அமைக்கிறோம்.
  • MASTER_CONNECT_RETRY - மீண்டும் இணைக்கும் முயற்சிகளுக்கு இடையே உள்ள வினாடிகளின் எண்ணிக்கை. நெட்வொர்க் சிக்கல்கள் ஏற்பட்டால், இந்த அளவுருவின் குறைந்த மதிப்பு விரைவாக மீண்டும் இணைக்க அனுமதிக்கும் மற்றும் கிளஸ்டர் மீட்பு செயல்முறை தொடங்குவதைத் தடுக்கும். பரிந்துரைக்கப்பட்ட மதிப்பு 1 வினாடி.
  • MASTER_RETRY_COUNT - அதிகபட்ச எண்ணிக்கையிலான மறு இணைப்பு முயற்சிகள்.
  • MASTER_HEARTBEAT_PERIOD - மாஸ்டர் இதயத்துடிப்பு சமிக்ஞையை அனுப்பும் வினாடிகளில் இடைவெளி. இயல்புநிலை மதிப்பில் பாதி slave_net_timeout.

ஆர்கெஸ்ட்ரேட்டர் விருப்பங்கள்:

  • DelayMasterPromotionIfSQLThreadNotUpToDate - சமமாக இருந்தால் true, பின்னர் ரிலே லாக்கில் இருந்து பயன்படுத்தப்படாத அனைத்து பரிவர்த்தனைகளையும் பிரதியின் SQL நூல் முடிக்கும் வரை முதன்மைப் பாத்திரம் வேட்பாளர் பிரதியில் பயன்படுத்தப்படாது. அனைத்து வேட்பாளர் பிரதிகளும் பின்வாங்கும்போது பரிவர்த்தனைகளை இழப்பதைத் தவிர்க்க இந்த விருப்பத்தைப் பயன்படுத்துகிறோம்.
  • InstancePollSeconds - இடவியல் உருவாக்கம் மற்றும் புதுப்பித்தல் அதிர்வெண்.
  • RecoveryPollSeconds - இடவியல் பகுப்பாய்வு அதிர்வெண். சிக்கல் கண்டறியப்பட்டால், இடவியல் மீட்பு தொடங்கப்படும். இது நிலையான, 1 வினாடிக்கு சமம்.

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

சோதனை பெஞ்ச்

ஒரு உள்ளூர் வளர்ச்சியுடன் HA திட்டத்தை சோதிக்கத் தொடங்கினோம் சோதனை பெஞ்ச் சோதனை மற்றும் உற்பத்தி சூழல்களில் மேலும் செயல்படுத்துதல். லோக்கல் ஸ்டாண்ட் டோக்கரை அடிப்படையாகக் கொண்டு முழுமையாக தானியங்கி முறையில் இயங்குகிறது, மேலும் ஆர்கெஸ்ட்ரேட்டர் மற்றும் நெட்வொர்க்கின் உள்ளமைவைப் பரிசோதிக்கவும், கிளஸ்டரை 2-3 சர்வர்களில் இருந்து பல டஜன் வரை அளவிடவும் மற்றும் பாதுகாப்பான சூழலில் பயிற்சிகளை மேற்கொள்ளவும் உங்களை அனுமதிக்கிறது.

பயிற்சிகளின் போது, ​​சிக்கல் எமுலேஷன் முறைகளில் ஒன்றை நாங்கள் தேர்வு செய்கிறோம்: உடனடியாக மாஸ்டரைப் பயன்படுத்தி சுடவும் kill -9, செயல்முறையை மெதுவாக முடித்து, சேவையகத்தை நிறுத்தவும் (docker-compose stop), நெட்வொர்க் சிக்கல்களைப் பயன்படுத்தி உருவகப்படுத்தவும் iptables -j REJECT அல்லது iptables -j DROP. பின்வரும் முடிவுகளை நாங்கள் எதிர்பார்க்கிறோம்:

  • ஆர்கெஸ்ட்ரேட்டர் மாஸ்டருடன் உள்ள சிக்கல்களைக் கண்டறிந்து 10 வினாடிகளுக்கு மேல் இடவியலைப் புதுப்பிப்பார்;
  • மீட்பு செயல்முறை தானாகவே தொடங்கும்: பிணைய உள்ளமைவு மாறும், மாஸ்டரின் பங்கு பிரதிக்கு அனுப்பப்படும், இடவியல் மீண்டும் கட்டமைக்கப்படும்;
  • புதிய மாஸ்டர் எழுதக்கூடியவராக மாறுவார், மறுகட்டமைப்பின் போது நேரடி பிரதிகள் இழக்கப்படாது;
  • தரவு புதிய மாஸ்டருக்கு எழுதப்பட்டு நகலெடுக்கத் தொடங்கும்;
  • மொத்த மீட்பு நேரம் 30 வினாடிகளுக்கு மேல் இருக்காது.

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

கண்டுபிடிப்புகள்

SRE மற்றும் செயல்பாட்டுக் குழுவின் முக்கிய பணிகளில் முதன்மை சேமிப்பக அமைப்பு முனையின் ஆரோக்கியம் ஒன்றாகும். விஐபி அடிப்படையில் ஆர்கெஸ்ட்ரேட்டர் மற்றும் HA தீர்வை செயல்படுத்துவது பின்வரும் முடிவுகளை அடைய எங்களுக்கு அனுமதித்தது:

  • தரவுத்தள கிளஸ்டரின் இடவியல் தொடர்பான சிக்கல்களை நம்பகமான கண்டறிதல்;
  • மாஸ்டர் தொடர்பான சம்பவங்களுக்கு தானியங்கி மற்றும் விரைவான பதில், கணினி செயலிழப்பைக் குறைக்கிறது.

இருப்பினும், தீர்வு அதன் வரம்புகள் மற்றும் தீமைகள் உள்ளன:

  • HA திட்டத்தை பல தரவு மையங்களுக்கு அளவிடுவதற்கு அவற்றுக்கிடையே ஒரு L2 நெட்வொர்க் தேவைப்படும்;
  • புதிய மாஸ்டருக்கு விஐபியை ஒதுக்கும் முன், பழைய மாஸ்டரில் அதை வெளியிட வேண்டும். செயல்முறை தொடர்ச்சியானது, இது மீட்பு நேரத்தை அதிகரிக்கிறது;
  • விஐபியை வெளியிட, சேவையகத்திற்கான SSH அணுகல் அல்லது தொலைநிலை நடைமுறைகளை அழைப்பதற்கான வேறு எந்த முறையும் தேவை. சேவையகம் அல்லது தரவுத்தளம் மீட்பு செயல்முறையை ஏற்படுத்திய சிக்கல்களைச் சந்திப்பதால், விஐபி அகற்றுதல் வெற்றிகரமாக முடிவடையும் என்று எங்களால் உறுதியாகச் சொல்ல முடியாது. இது ஒரே மெய்நிகர் ஐபி முகவரியுடன் இரண்டு சேவையகங்கள் தோன்றுவதற்கும் ஒரு சிக்கலுக்கும் வழிவகுக்கும் split brain.

தவிர்க்க split brain, நீங்கள் முறையைப் பயன்படுத்தலாம் ஸ்டோனித் ("ஷூட் தி அதர் நோட் இன் தி ஹெட்"), இது சிக்கல் முனையை முற்றிலும் தனிமைப்படுத்துகிறது அல்லது முடக்குகிறது. கிளஸ்டர் உயர் கிடைக்கும் தன்மையை செயல்படுத்த மற்ற வழிகள் உள்ளன: விஐபி மற்றும் டிஎன்எஸ், சேவை கண்டுபிடிப்பு மற்றும் ப்ராக்ஸி சேவைகள், ஒத்திசைவான நகலெடுப்பு மற்றும் அவற்றின் சொந்த தீமைகள் மற்றும் நன்மைகளைக் கொண்ட பிற முறைகளின் கலவையாகும்.

MySQL ஃபெயில்ஓவர் கிளஸ்டரை உருவாக்குவதற்கான எங்கள் அணுகுமுறையைப் பற்றி நான் பேசினேன். இது செயல்படுத்த எளிதானது மற்றும் தற்போதைய நிலைமைகளின் கீழ் ஏற்றுக்கொள்ளக்கூடிய நம்பகத்தன்மையை வழங்குகிறது. பொதுவாக முழு அமைப்பும், குறிப்பாக உள்கட்டமைப்பும் வளரும்போது, ​​இந்த அணுகுமுறை சந்தேகத்திற்கு இடமின்றி உருவாகும்.

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

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