ஒரு "தொடக்க" முதல் ஒரு டஜன் தரவு மையங்களில் ஆயிரக்கணக்கான சர்வர்கள் வரை. லினக்ஸ் உள்கட்டமைப்பின் வளர்ச்சியை நாங்கள் எவ்வாறு துரத்தினோம்

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

ஒரு "தொடக்க" முதல் ஒரு டஜன் தரவு மையங்களில் ஆயிரக்கணக்கான சர்வர்கள் வரை. லினக்ஸ் உள்கட்டமைப்பின் வளர்ச்சியை நாங்கள் எவ்வாறு துரத்தினோம்

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

பொதுவாக, எங்கள் குழு நிறுவனத்திற்கு 2 தயாரிப்புகளை வழங்குகிறது என்று சொல்லலாம். முதலாவது உள்கட்டமைப்பு. அஞ்சல் வேலை செய்ய வேண்டும், DNS வேலை செய்ய வேண்டும், மேலும் டொமைன் கன்ட்ரோலர்கள் செயலிழக்காத சேவையகங்களில் உங்களை அனுமதிக்க வேண்டும். நிறுவனத்தின் ஐடி நிலப்பரப்பு மிகப்பெரியது! இவை பிசினஸ்&மிஷன் முக்கியமான அமைப்புகள், சிலவற்றின் கிடைக்கும் தேவைகள் 99,999. இரண்டாவது தயாரிப்பு சேவையகங்கள், உடல் மற்றும் மெய்நிகர். ஏற்கனவே உள்ளவை கண்காணிக்கப்பட வேண்டும், மேலும் பல துறைகளைச் சேர்ந்த வாடிக்கையாளர்களுக்கு புதியவை தொடர்ந்து வழங்கப்பட வேண்டும். இந்தக் கட்டுரையில், சர்வர் வாழ்க்கைச் சுழற்சிக்குக் காரணமான உள்கட்டமைப்பை நாங்கள் எவ்வாறு உருவாக்கினோம் என்பதில் கவனம் செலுத்த விரும்புகிறேன்.

பயணத்தின் தொடக்கம்

எங்கள் பயணத்தின் தொடக்கத்தில், எங்கள் தொழில்நுட்ப அடுக்கு இப்படி இருந்தது:
OS CentOS 7
FreeIPA டொமைன் கன்ட்ரோலர்கள்
ஆட்டோமேஷன் - அன்சிபிள்(+டவர்), கோப்லர்

இவை அனைத்தும் 3 களங்களில் அமைந்துள்ளன, பல தரவு மையங்களில் பரவியது. ஒரு தரவு மையத்தில் அலுவலக அமைப்புகள் மற்றும் சோதனை தளங்கள் உள்ளன, மற்றவற்றில் PROD உள்ளது.

ஒரு கட்டத்தில் சேவையகங்களை உருவாக்குவது இப்படி இருந்தது:

ஒரு "தொடக்க" முதல் ஒரு டஜன் தரவு மையங்களில் ஆயிரக்கணக்கான சர்வர்கள் வரை. லினக்ஸ் உள்கட்டமைப்பின் வளர்ச்சியை நாங்கள் எவ்வாறு துரத்தினோம்

VM டெம்ப்ளேட்டில், CentOS குறைவாக உள்ளது மற்றும் தேவையான குறைந்தபட்சம் சரியான /etc/resolv.conf போன்றது, மீதமுள்ளவை Ansible மூலம் வரும்.

CMDB - எக்செல்.

சேவையகம் இயற்பியல் என்றால், மெய்நிகர் இயந்திரத்தை நகலெடுப்பதற்குப் பதிலாக, கோப்லரைப் பயன்படுத்தி OS நிறுவப்பட்டது - இலக்கு சேவையகத்தின் MAC முகவரிகள் Cobbler கட்டமைப்பில் சேர்க்கப்படுகின்றன, சேவையகம் DHCP வழியாக ஐபி முகவரியைப் பெறுகிறது, பின்னர் OS சேர்க்கப்படுகிறது.

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

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

எடுத்துக்காட்டாக, அனைத்து சேவையகங்களிலும் சில கட்டமைப்புகளை மாற்ற விரும்புகிறோம்:

  1. தருக்கப் பிரிவு/தரவு மையத்தில் இருக்கும் சேவையகங்களில் உள்ளமைவை மாற்றுகிறோம். சில நேரங்களில் ஒரே நாளில் அல்ல - அணுகல் தேவைகள் மற்றும் பெரிய எண்களின் சட்டம் அனைத்து மாற்றங்களையும் ஒரே நேரத்தில் பயன்படுத்த அனுமதிக்காது. மேலும் சில மாற்றங்கள் அழிவுகரமானவை மற்றும் ஏதாவது ஒன்றை மறுதொடக்கம் செய்ய வேண்டும் - சேவைகள் முதல் OS வரை.
  2. அன்சிபில் அதை சரிசெய்தல்
  3. நாங்கள் அதை Cobbler இல் சரிசெய்கிறோம்
  4. ஒவ்வொரு தருக்க பிரிவு/தரவு மையத்திற்கும் N முறைகளை மீண்டும் செய்யவும்

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

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

உள்கட்டமைப்பு வளர்ச்சி மற்றும் பயணத்தின் ஆரம்பம்

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

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

இரண்டு கருவிகளைச் சேர்க்க இது உள்ளது.

GitLab CE ஐ எங்களின் குறியீடு களஞ்சியமாகத் தேர்ந்தெடுத்தோம், அதன் உள்ளமைக்கப்பட்ட CI/CD தொகுதிகள் அல்ல.

ரகசியங்களின் பெட்டகம் - ஹாஷிகார்ப் வால்ட், உட்பட. சிறந்த API க்கு.

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

எங்கள் விருப்பம்:

மூலக்கூறு + டெஸ்டின்ஃப்ரா
அன்சிபிள் + டவர் + AWX
சேவையகங்களின் உலகம் + DITNET (சொந்த மேம்பாடு)
கபிலர்
Gitlab + GitLab ரன்னர்
ஹாஷிகார்ப் வால்ட்

ஒரு "தொடக்க" முதல் ஒரு டஜன் தரவு மையங்களில் ஆயிரக்கணக்கான சர்வர்கள் வரை. லினக்ஸ் உள்கட்டமைப்பின் வளர்ச்சியை நாங்கள் எவ்வாறு துரத்தினோம்

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

  • "கோல்டன் இமேஜ்" இலிருந்து சேவையகங்களை நகலெடுப்பது தீமை!முக்கிய குறைபாடு என்னவென்றால், படங்கள் இப்போது எந்த நிலையில் உள்ளன என்பது உங்களுக்குத் தெரியாது, மேலும் அனைத்து மெய்நிகராக்கப் பண்ணைகளிலும் உள்ள அனைத்துப் படங்களிலும் அனைத்து மாற்றங்களும் வரும்.
  • இயல்புநிலை உள்ளமைவு கோப்புகளை குறைந்தபட்சம் பயன்படுத்தவும் மற்றும் முக்கிய கணினி கோப்புகளுக்கு நீங்கள் பொறுப்பு என்று மற்ற துறைகளுடன் உடன்படவும்எடுத்துக்காட்டாக:
    1. /etc/sysctl.conf ஐ காலியாக விடவும், அமைப்புகள் /etc/sysctl.d/ இல் மட்டுமே இருக்க வேண்டும். ஒரு கோப்பில் உங்கள் இயல்புநிலை, மற்றொரு கோப்பில் பயன்பாட்டிற்கான தனிப்பயன்.
    2. systemd அலகுகளைத் திருத்த மேலெழுதக் கோப்புகளைப் பயன்படுத்தவும்.
  • அனைத்து கட்டமைப்புகளையும் டெம்ப்ளேட் செய்து அவற்றை முழுமையாகச் சேர்க்கவும்; முடிந்தால், பிளேபுக்குகளில் செட் அல்லது அதன் ஒப்புமைகள் இல்லை
  • கட்டமைப்பு மேலாண்மை அமைப்பு குறியீட்டை மறுசீரமைத்தல்:
    1. பணிகளை தர்க்கரீதியான நிறுவனங்களாகப் பிரித்து மோனோலித்தை பாத்திரங்களாக மீண்டும் எழுதவும்
    2. லிண்டர்களைப் பயன்படுத்துங்கள்! Ansible-lint, yaml-lint, முதலியன
    3. உங்கள் அணுகுமுறையை மாற்றுங்கள்! பாஷ்சிபிள் இல்லை. அமைப்பின் நிலையை விவரிக்க வேண்டியது அவசியம்
  • அனைத்து அன்சிபிள் பாத்திரங்களுக்கும் நீங்கள் மூலக்கூறில் சோதனைகளை எழுத வேண்டும் மற்றும் ஒரு நாளைக்கு ஒரு முறை அறிக்கைகளை உருவாக்க வேண்டும்.
  • எங்கள் விஷயத்தில், சோதனைகளைத் தயாரித்த பிறகு (அதில் 100 க்கும் மேற்பட்டவை உள்ளன), சுமார் 70000 பிழைகள் கண்டறியப்பட்டன. அதை சரிசெய்ய பல மாதங்கள் ஆனது.ஒரு "தொடக்க" முதல் ஒரு டஜன் தரவு மையங்களில் ஆயிரக்கணக்கான சர்வர்கள் வரை. லினக்ஸ் உள்கட்டமைப்பின் வளர்ச்சியை நாங்கள் எவ்வாறு துரத்தினோம்

எங்கள் செயல்படுத்தல்

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

ஒரு "தொடக்க" முதல் ஒரு டஜன் தரவு மையங்களில் ஆயிரக்கணக்கான சர்வர்கள் வரை. லினக்ஸ் உள்கட்டமைப்பின் வளர்ச்சியை நாங்கள் எவ்வாறு துரத்தினோம்

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

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

- name: create1.yml - Create a VM from a template
  vmware_guest:
    hostname: "{{datacenter}}".domain.ru
    username: "{{ username_vc }}"
    password: "{{ password_vc }}"
    validate_certs: no
    cluster: "{{cluster}}"
    datacenter: "{{datacenter}}"
    name: "{{ name }}"
    state: poweredon
    folder: "/{{folder}}"
    template: "{{template}}"
    customization:
      hostname: "{{ name }}"
      domain: domain.ru
      dns_servers:
        - "{{ ipa1_dns }}"
        - "{{ ipa2_dns }}"
    networks:
      - name: "{{ network }}"
        type: static
        ip: "{{ip}}"
        netmask: "{{netmask}}"
        gateway: "{{gateway}}"
        wake_on_lan: True
        start_connected: True
        allow_guest_control: True
    wait_for_ip_address: yes
    disk:
      - size_gb: 1
        type: thin
        datastore: "{{datastore}}"
      - size_gb: 20
        type: thin
        datastore: "{{datastore}}"

இதைத்தான் நாங்கள் வந்துள்ளோம், அமைப்பு தொடர்ந்து வாழ்கிறது மற்றும் வளர்கிறது.

  • சேவையகத்தை அமைப்பதற்கான 17 முக்கிய பாத்திரங்கள். ஒவ்வொரு பாத்திரங்களும் தனித்தனி தர்க்கரீதியான பணியைத் தீர்க்க வடிவமைக்கப்பட்டுள்ளன (பதிவு செய்தல், தணிக்கை செய்தல், பயனர் அங்கீகாரம், கண்காணிப்பு போன்றவை).
  • பங்கு சோதனை. மூலக்கூறு + டெஸ்ட்இன்ஃப்ரா.
  • சொந்த வளர்ச்சி: CMDB + ஆர்கெஸ்ட்ரேட்டர்.
  • சேவையகத்தை உருவாக்கும் நேரம் ~30 நிமிடங்கள், தானியங்கு மற்றும் பணி வரிசையில் இருந்து நடைமுறையில் சுயாதீனமானது.
  • அனைத்துப் பிரிவுகளிலும் உள்கட்டமைப்பின் ஒரே நிலை/பெயரிடுதல் - பிளேபுக்குகள், களஞ்சியங்கள், மெய்நிகராக்க கூறுகள்.
  • தரநிலையுடன் முரண்பாடுகள் பற்றிய அறிக்கைகளை உருவாக்குவதன் மூலம் சேவையக நிலையை தினசரி சரிபார்க்கவும்.

பயணத்தின் தொடக்கத்தில் இருப்பவர்களுக்கு எனது கதை பயனுள்ளதாக இருக்கும் என்று நம்புகிறேன். நீங்கள் என்ன ஆட்டோமேஷன் ஸ்டாக் பயன்படுத்துகிறீர்கள்?

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