க்ளோஸ்டர் → எளிய OTP கிளஸ்டர் மேலாண்மை

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

க்ளோஸ்டர் → எளிய OTP கிளஸ்டர் மேலாண்மை

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

வெவ்வேறு முனைகளில் உள்ள செயல்முறைகளுக்கு இடையேயும், இணைப்புகள் மற்றும் மானிட்டர்களுக்கு இடையேயும் அனுப்பப்படும் செய்தி வெளிப்படையானது […]

நடைமுறையில், எல்லாம் இன்னும் கொஞ்சம் சிக்கலானது. விநியோகிக்கப்பட்டது எர்லாங் "கன்டெய்னர்" என்பது கப்பல் போக்குவரத்திற்கான ஒரு பெரிய இரும்புப் பெட்டியைக் குறிக்கும் போது உருவாக்கப்பட்டது, மேலும் "டாக்கர்" என்பது லாங்ஷோர்மேன் என்பதன் ஒரு பொருளாகும். IN IP4 பல ஆக்கிரமிக்கப்படாத முகவரிகள் இருந்தன, பொதுவாக எலிகள் கேபிள் மூலம் மெல்லுவதால் நெட்வொர்க் முறிவுகள் ஏற்படுகின்றன, மேலும் உற்பத்தி முறையின் சராசரி இயக்க நேரம் பல தசாப்தங்களில் அளவிடப்பட்டது.

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

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

தேவைகள்

எனக்கு தனிப்பட்ட முறையில் தேவைப்பட்டது, கிளஸ்டரின் நிர்வாகத்தை எடுத்துக் கொள்ளும் ஒரு நூலகம் மற்றும் பின்வரும் பண்புகளைக் கொண்டிருக்கும்:

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

பிந்தையது என்னவென்றால், நான் பயன்பாட்டை உள்நாட்டில் சோதித்த பிறகு :nonode@nohost, அல்லது செயற்கையாக விநியோகிக்கப்பட்ட சூழலில் பயன்படுத்தி test_cluster_task, நான் ஓட வேண்டும் docker-compose up --scale my_app=3 எந்த குறியீடு மாற்றமும் இல்லாமல் டோக்கரில் மூன்று நிகழ்வுகளை எப்படிச் செயல்படுத்துகிறது என்பதைப் பார்க்கவும். போன்ற சார்பு பயன்பாடுகளும் எனக்கு வேண்டும் mnesia - இடவியல் மாறும்போது, ​​பயன்பாட்டிலிருந்து கூடுதல் கிக் எதுவும் இல்லாமல் திரைக்குப் பின்னால் கிளஸ்டரை மீண்டும் உருவாக்குகிறார்கள்.

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

தேர்ந்தெடுக்கப்பட்ட அணுகுமுறை

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

ஒரு பயன்பாடாக இயங்கும் போது, ​​நூலகம் சார்ந்துள்ளது config, இது பின்வரும் அடிப்படை மதிப்புகளைப் படிக்கிறது:

config :cloister,
  otp_app: :my_app,
  sentry: :"cloister.local", # or ~w|n1@foo n2@bar|a
  consensus: 3,              # number of nodes to consider
                             #    the cluster is up
  listener: MyApp.Listener   # listener to be called when
                             #    the ring has changed

மேலே உள்ள அளவுருக்கள் உண்மையில் பின்வருவனவற்றைக் குறிக்கின்றன: க்ளோஸ்டர் OTP பயன்பாட்டிற்கு பயன்படுத்தப்படுகிறது :my_app, பயன்கள் எர்லாங் சேவை கண்டுபிடிப்பு கணுக்களை இணைக்க, குறைந்தது மூன்று, மற்றும் MyApp.Listener தொகுதி (செயல்படுத்துதல் @behaviour Cloister.Listener) இடவியல் மாற்றங்கள் பற்றிய அறிவிப்புகளைப் பெற கட்டமைக்கப்பட்டுள்ளது. முழுமையான கட்டமைப்பின் விரிவான விளக்கத்தைக் காணலாம் ஆவணங்கள்.

இந்த உள்ளமைவுடன், பயன்பாடு க்ளோஸ்டர் இருக்கும் நிலைகளில் துவக்கவும், ஒருமித்த கருத்தை அடையும் வரை பிரதான பயன்பாட்டைத் தொடங்கும் செயல்முறையை தாமதப்படுத்துதல் (மேலே உள்ள எடுத்துக்காட்டில் உள்ளதைப் போல மூன்று முனைகள் இணைக்கப்பட்டு இணைக்கப்பட்டுள்ளன.) இது தொடங்கும் போது, ​​கிளஸ்டர் ஏற்கனவே உள்ளது என்று கருதுவதற்கான வாய்ப்பை இது வழங்குகிறது. இடவியல் மாறும்போதெல்லாம் (அவற்றில் பல இருக்கும், ஏனெனில் முனைகள் முழுமையாக ஒத்திசைவாகத் தொடங்கவில்லை), கையாளுபவர் அழைக்கப்படுவார் MyApp.Listener.on_state_change/2. நிலைச் செய்தியைப் பெறும்போது பெரும்பாலும் ஒரு செயலைச் செய்கிறோம் %Cloister.Monitor{status: :up}, அதாவது: "ஹலோ, கிளஸ்டர் கூடியது."

பெரும்பாலான சந்தர்ப்பங்களில், நிறுவல் consensus: 3 உகந்ததாக உள்ளது, ஏனெனில் அதிக முனைகள் இணைக்கப்பட வேண்டும் என்று நாம் எதிர்பார்த்தாலும், திரும்ப அழைக்கப்படும் status: :rehashingstatus: :up புதிதாக சேர்க்கப்பட்ட அல்லது அகற்றப்பட்ட எந்த முனையிலும்.

டெவலப்மெண்ட் முறையில் தொடங்கும் போது, ​​நீங்கள் அமைக்க வேண்டும் consensus: 1 и க்ளோஸ்டர் பார்க்கும்போது கிளஸ்டர் அசெம்பிளிக்காக காத்திருப்பதை மகிழ்ச்சியுடன் தவிர்த்துவிடுவார் :nonode@nohostஅல்லது :node@hostஅல்லது :[email protected] - முனை எவ்வாறு கட்டமைக்கப்பட்டது என்பதைப் பொறுத்து (:none | :shortnames | :longnames).

விநியோகிக்கப்பட்ட பயன்பாட்டு மேலாண்மை

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

பயன்படுத்துவதன் முக்கிய நன்மை க்ளோஸ்டர் இடவியல் மாற்றத்திற்குப் பிறகு கிளஸ்டரை மீண்டும் உருவாக்க தேவையான அனைத்து செயல்பாடுகளையும் இது செய்கிறது பேட்டை கீழ். IP முகவரிகள் மற்றும் கணுப் பெயர்கள் நமக்கு முன்கூட்டியே தெரியுமா அல்லது அவை மாறும் வகையில் ஒதுக்கப்பட்டதா/மாற்றப்பட்டதா என்பதைப் பொருட்படுத்தாமல், ஏற்கனவே தயாரிக்கப்பட்ட விநியோகிக்கப்பட்ட சூழலில், அனைத்து முனைகளும் இணைக்கப்பட்ட நிலையில், பயன்பாடு எளிமையாக இயங்குகிறது. இதற்கு சிறப்பு டோக்கர் உள்ளமைவு அமைப்புகள் தேவையில்லை மற்றும் பயன்பாட்டு டெவலப்பரின் பார்வையில், விநியோகிக்கப்பட்ட சூழலில் இயங்குவதற்கும் அல்லது உள்ளூர் ஒன்றில் இயங்குவதற்கும் எந்த வித்தியாசமும் இல்லை. :nonode@nohost. இதைப் பற்றி நீங்கள் மேலும் படிக்கலாம் ஆவணங்கள்.

டோபாலஜி மாற்றங்களின் சிக்கலான கையாளுதல் தனிப்பயன் செயல்படுத்தல் மூலம் சாத்தியம் என்றாலும் MyApp.Listener, இந்த நூலக வரம்புகள் மற்றும் உள்ளமைவு சார்புகள் செயல்படுத்துவதற்கான அடிப்படைக் கற்கள் என நிரூபிக்கும் விளிம்பு நிலைகள் எப்போதும் இருக்கலாம். பரவாயில்லை, மேலே உள்ளதை எடுத்துக் கொள்ளுங்கள் libcluster, இது மிகவும் பொதுவான நோக்கம், அல்லது குறைந்த அளவிலான கிளஸ்டரை நீங்களே கையாளவும். இந்த குறியீடு நூலகத்தின் குறிக்கோள், சாத்தியமான ஒவ்வொரு காட்சியையும் உள்ளடக்குவது அல்ல, ஆனால் தேவையற்ற வலி மற்றும் சிக்கலான நகல்-பேஸ்ட் இல்லாமல் மிகவும் பொதுவான காட்சியைப் பயன்படுத்துவதாகும்.

குறிப்பு: அசலில் இந்த கட்டத்தில் “ஹேப்பி க்ளஸ்டரிங்!” என்ற சொற்றொடர் இருந்தது, மேலும் நான் மொழிபெயர்க்கும் யாண்டெக்ஸ் (நானே அகராதிகளைப் பார்க்க வேண்டியதில்லை) எனக்கு “மகிழ்ச்சியான கிளஸ்டரிங்!” என்ற விருப்பத்தை வழங்கியது. குறிப்பாக தற்போதைய புவிசார் அரசியல் சூழ்நிலையின் வெளிச்சத்தில் சிறந்த மொழிபெயர்ப்பை கற்பனை செய்வது சாத்தியமில்லை.

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

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