Qrator வடிகட்டி நெட்வொர்க் கட்டமைப்பு மேலாண்மை அமைப்பு

Qrator வடிகட்டி நெட்வொர்க் கட்டமைப்பு மேலாண்மை அமைப்பு

டிஎல்; DR: எங்கள் உள் நெட்வொர்க் கட்டமைப்பு மேலாண்மை அமைப்பின் கிளையன்ட்-சர்வர் கட்டமைப்பின் விளக்கம், QControl. இது இரண்டு-அடுக்கு போக்குவரத்து நெறிமுறையை அடிப்படையாகக் கொண்டது, இது இறுதிப்புள்ளிகளுக்கு இடையில் டிகம்ப்ரஷன் இல்லாமல் ஜிஜிப்-பேக் செய்யப்பட்ட செய்திகளுடன் செயல்படுகிறது. விநியோகிக்கப்பட்ட திசைவிகள் மற்றும் இறுதிப்புள்ளிகள் உள்ளமைவு புதுப்பிப்புகளைப் பெறுகின்றன, மேலும் நெறிமுறையே உள்ளூர்மயமாக்கப்பட்ட இடைநிலை ரிலேக்களை நிறுவ அனுமதிக்கிறது. அமைப்பு கொள்கையின் அடிப்படையில் கட்டமைக்கப்பட்டுள்ளது வேறுபட்ட காப்புப்பிரதி ("சமீபத்திய-நிலையானது", கீழே விளக்கப்பட்டுள்ளது) மற்றும் உள்ளமைவு கோப்புகளை வழங்க JMESpath வினவல் மொழியை ஜின்ஜா டெம்ப்ளேட்டிங் இயந்திரத்துடன் பயன்படுத்துகிறது.

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

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

தொடக்கத்தில் வார்த்தை இருந்தது. இது விரைவில் புதுப்பிப்பு தேவைப்படும் தகவல் தொடர்பு நெறிமுறையாக மாறியது.


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

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

இணைய இணைப்பு தரம் இன்னும் உலகம் முழுவதும் பரவலாக மாறுபடுகிறது - இதை விளக்குவதற்கு, ப்ராக், செக் குடியரசு முதல் சிங்கப்பூர் மற்றும் ஹாங்காங் வரையிலான எளிய MTR ஐப் பார்ப்போம்.

Qrator வடிகட்டி நெட்வொர்க் கட்டமைப்பு மேலாண்மை அமைப்பு
ப்ராக் முதல் சிங்கப்பூர் வரை எம்.டி.ஆர்

Qrator வடிகட்டி நெட்வொர்க் கட்டமைப்பு மேலாண்மை அமைப்பு
ஹாங்காங்கிற்கும் அதே விஷயம்

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

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

சமீபத்திய நிலையான வடிவமைப்பு

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

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

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

இரண்டு நிலை போக்குவரத்தின் கட்டிடக்கலை

எங்கள் போக்குவரத்தை ஏன் இரண்டு நிலைகளில் கட்டினோம்? பதில் மிகவும் எளிமையானது - OSI மாடலில் இருந்து அதன் போக்குவரத்து மற்றும் பயன்பாட்டு அடுக்குகளுடன் உத்வேகம் பெற்று, உயர்-நிலை தர்க்கத்திலிருந்து ரூட்டிங் பிரிக்க விரும்பினோம். போக்குவரத்து நெறிமுறையின் பங்கிற்கு சிக்கனத்தையும், கட்டுப்பாட்டு செய்திகளின் உயர்நிலை வடிவமைப்பிற்கு msgpack வரிசைப்படுத்தல் வடிவமைப்பையும் பயன்படுத்தினோம். இதனால்தான் ரூட்டர் (மல்டிகாஸ்ட்/பிராட்காஸ்ட்/ரிலேவைச் செய்கிறது) msgpack-ன் உள்ளே பார்க்காது, உள்ளடக்கங்களைத் திறக்கவோ அல்லது பேக் செய்யவோ இல்லை, மேலும் தரவை மட்டுமே முன்னோக்கி அனுப்புகிறது.

சிக்கனம் (ஆங்கிலத்திலிருந்து - “சிக்கனம்”, உச்சரிக்கப்படுகிறது [θrift]) என்பது பல்வேறு நிரலாக்க மொழிகளுக்கான சேவைகளை வரையறுக்கவும் உருவாக்கவும் பயன்படும் ஒரு இடைமுக விளக்க மொழியாகும். இது தொலை நடைமுறை அழைப்புகளுக்கான (RPC) கட்டமைப்பாகும். மொழிகளுக்கு இடையே அதிகமாகவோ அல்லது குறைவாகவோ திறமையாகவும் எளிதாகவும் செயல்படும் சேவைகளை உருவாக்க, குறியீடு உருவாக்க இயந்திரத்துடன் மென்பொருள் பைப்லைனை ஒருங்கிணைக்கிறது.

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

Qrator வடிகட்டி நெட்வொர்க் கட்டமைப்பு மேலாண்மை அமைப்புபுரோட்டோபஃப் / ஜிஆர்பிசி போன்ற பிற விருப்பங்கள் உள்ளன, இருப்பினும், நாங்கள் எங்கள் திட்டத்தைத் தொடங்கியபோது, ​​ஜிஆர்பிசி மிகவும் புதியது மற்றும் அதை போர்டில் எடுக்க நாங்கள் துணியவில்லை.

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

Msgpack JSON போன்றது, ஆனால் வேகமானது மற்றும் சிறியது. இது ஒரு பைனரி தரவு வரிசைப்படுத்தல் வடிவமாகும், இது பல மொழிகளுக்கு இடையில் தரவு பரிமாற்றத்தை அனுமதிக்கிறது.

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

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

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

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

ஒரு உள்ளமைவு கோப்பை உருவாக்க, நமக்கு JMESPath கோரிக்கை, FS இல் உள்ள கோப்பு இருப்பிடத்திற்கான டெம்ப்ளேட் மற்றும் கட்டமைப்பிற்கான டெம்ப்ளேட் தேவை. இந்த கட்டத்தில் கோப்பு அனுமதிகளை தெளிவுபடுத்துவது நல்லது. இவை அனைத்தும் ஒரு கோப்பில் வெற்றிகரமாக இணைக்கப்பட்டன - உள்ளமைவு வார்ப்புரு தொடங்குவதற்கு முன், மீதமுள்ளவற்றை விவரிக்கும் YAML வடிவத்தில் ஒரு தலைப்பை வைத்தோம்.

உதாரணமாக:

---
selector: "[@][[email protected]._meta.version == `42`] | items([0].fft_config || `{}`)"
destination_filename: "fft/{{ match[0] }}.json"
file_mode: 0644
reload_daemons: [fft] ...
{{ dict(match[1]) | json(indent=2, sort_keys=True) }}

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

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

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

பொருள் எழுத உங்கள் உதவிக்கு நன்றி. வோலன் டாம்ரோட், செரன்ஹீட், இல்லை.

ஆங்கில பிரதி அஞ்சல்.

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

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