அனைவருக்கும் வணக்கம்! எனது பாடப் பணியின் ஒரு பகுதியாக, உள்நாட்டு கிளவுட் இயங்குதளத்தின் சாத்தியக்கூறுகளை ஆராய்ந்து கொண்டிருந்தேன்
நீங்கள் எதைப் பெற விரும்புகிறீர்கள்?
வலை சேவையகத்துடன் ஒரு மெய்நிகர் இயந்திரத்தைத் தொடங்கிய பிறகு, நீங்கள் அதன் ஹோஸ்டுக்குச் சென்று அழகான UI ஐப் பெறலாம், மேலும் வேலைக்கான ஆதாரங்களாக தரவுத்தளங்களைக் குறிப்பிடலாம், டாஷ்போர்டுகள் மற்றும் வரைபடங்களை உருவாக்கலாம்.
அடிப்படை பதிப்பில் ஒரு குறிப்பிடத்தக்க குறைபாடு உள்ளது - இது அனைத்து தவறுகளையும் பொறுத்துக்கொள்ளாது. அதாவது, பயன்பாட்டின் முழு செயல்திறன் ஒரு மெய்நிகர் இயந்திரத்தின் நம்பகத்தன்மையைப் பொறுத்தது. அவள் மறுத்துவிட்டாலோ அல்லது 10 பேர் ஒரே நேரத்தில் UI ஐத் திறந்தாலோ, சிக்கல்கள் எழும்.
அவை எளிமையாக தீர்க்கப்படுகின்றன: இணைய சேவையகத்துடன் ஒரே மாதிரியான பல மெய்நிகர் இயந்திரங்களை வரிசைப்படுத்தி அவற்றை L3 பேலன்சரின் கீழ் வைக்க வேண்டும். ஆனால் இங்கே எல்லாம் அவ்வளவு தெளிவாக இல்லை. கிராஃபானா பயனர் அமைப்புகளை (தரவுத்தளங்களுக்கான பாதைகள், டாஷ்போர்டுகள், கிராபிக்ஸ் போன்றவை) நேரடியாக அதன் மெய்நிகர் இயந்திரத்தின் வட்டில் சேமிக்கிறது. எனவே, நீங்கள் UI இல் சில அமைப்புகளை மாற்றினால், இந்த மாற்றங்கள் பேலன்சர் எங்களுக்கு அனுப்பிய மெய்நிகர் கணினியில் மட்டுமே காட்டப்படும். இது எங்கள் பயன்பாட்டிற்கான சீரற்ற அமைப்புகள், துவக்கம் மற்றும் பயன்பாட்டில் உள்ள சிக்கல்களுக்கு வழிவகுக்கும்.
இங்கே மற்றொரு தரவுத்தளம் மீட்புக்கு வரும், எடுத்துக்காட்டாக, MySQL அல்லது அதற்கு சமமானவை. இந்த "உதிரி" தரவுத்தளத்தில் பயனர் அமைப்புகளைச் சேமிக்க வேண்டும் என்று கிராஃபானாவிடம் கூறுகிறோம். அதன் பிறகு, ஒவ்வொரு கணினியிலும் இந்த தரவுத்தளத்திற்கான பாதையை ஒரு முறை குறிப்பிட்டால் போதும், மற்ற எல்லா பயனர் அமைப்புகளையும் எந்த மெய்நிகர் கணினிகளிலும் திருத்தினால், அவை மீதமுள்ளவற்றில் வளரும்.
இறுதி பயன்பாட்டு உள்கட்டமைப்பின் வரைபடம் இங்கே:
உங்கள் கைகளால் உயர்த்த கற்றுக்கொள்ளுங்கள்
MySQL மற்றும் ClickHouse
ஒரு பொத்தானைக் கிளிக் செய்வதன் மூலம் அத்தகைய பயன்பாட்டைப் பயன்படுத்துவதற்கு முன், அதன் ஒவ்வொரு கூறுகளையும் கைப்பிடிகள் மூலம் எவ்வாறு உயர்த்துவது மற்றும் அவற்றை ஒருவருக்கொருவர் எவ்வாறு ஒருங்கிணைப்பது என்பதைக் கற்றுக்கொள்வது அவசியம்.
Yandex.Cloud இங்கே எங்களுக்கு உதவும், இது L3 பேலன்சர்கள், ClickHouse மற்றும் MySQL ஆகியவற்றை நிர்வகிக்கப்படும் சேவைகளாக வழங்குகிறது. பயனர் அளவுருக்களைக் குறிப்பிட வேண்டும் மற்றும் இயங்குதளம் எல்லாவற்றையும் செயல்படும் நிலைக்குக் கொண்டுவரும் வரை காத்திருக்க வேண்டும்.
நான் பதிவுசெய்து, எனக்காக ஒரு கிளவுட் மற்றும் பில்லிங் கணக்கை உருவாக்கினேன். அதன் பிறகு, நான் கிளவுட் சென்று MySQL மற்றும் ClickHouse கிளஸ்டர்களை குறைந்தபட்ச அமைப்புகளுடன் உயர்த்தினேன். அவர்கள் செயலில் இருக்கும் வரை காத்திருங்கள்.
ஒவ்வொரு கிளஸ்டரிலும் ஒரு தரவுத்தளத்தை உருவாக்கவும், உள்நுழைவு மற்றும் கடவுச்சொல் மூலம் அதற்கான அணுகலை உள்ளமைக்கவும் நீங்கள் நினைவில் கொள்ள வேண்டும். நான் இங்கே விவரங்களுக்கு செல்ல மாட்டேன் - இடைமுகத்தில் எல்லாம் மிகவும் தெளிவாக உள்ளது.
இந்த தரவுத்தளங்களில் பல ஹோஸ்ட்கள் உள்ளன, அவை அவற்றின் தவறு சகிப்புத்தன்மையை வழங்குகின்றன என்பது வெளிப்படையான விவரம் அல்ல. இருப்பினும், கிராஃபானா வேலை செய்யும் ஒவ்வொரு தரவுத்தளத்திற்கும் சரியாக ஒரு ஹோஸ்ட் தேவைப்படுகிறது. நீண்ட வாசிப்பு c-<cluster_id>.rw.mdb.yandexcloud.net
தொடர்புடைய ஐடியுடன் தற்போதைய செயலில் உள்ள கிளஸ்டர் மாஸ்டர் ஹோஸ்டுக்கான வரைபடங்கள். அதைத்தான் கிராஃபனாவுக்குக் கொடுப்போம்.
இணைய சேவையகம்
இப்போது அது இணைய சேவையகத்தைப் பொறுத்தது. லினக்ஸுடன் வழக்கமான மெய்நிகர் இயந்திரத்தை உயர்த்தி, அதில் கிராஃபானாவை நம் கைகளால் அமைப்போம்.
ssh வழியாக இணைத்து தேவையான தொகுப்புகளை நிறுவுவோம்.
sudo apt-get install -y apt-transport-https software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo add-apt-repository "deb https://packages.grafana.com/enterprise/deb stable main"
sudo apt-get update
sudo apt-get install -y grafana-enterprise
அதன் பிறகு, நாங்கள் systemctl இன் கீழ் கிராஃபானாவைத் தொடங்குவோம் மற்றும் கிளிக்ஹவுஸுடன் பணிபுரிய செருகுநிரலை நிறுவுவோம் (ஆம், இது அடிப்படை தொகுப்பில் வழங்கப்படவில்லை).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
அதன் பிறகு எல்லாம் ஒரு எளிய கட்டளையுடன்
sudo service grafana-server start
நாங்கள் இணைய சேவையகத்தைத் தொடங்குவோம். இப்போது உலாவியில் மெய்நிகர் இயந்திரத்தின் வெளிப்புற ஐபி முகவரியில் ஓட்ட முடியும், போர்ட் 3000 ஐக் குறிப்பிடவும் மற்றும் அழகான UI கிராஃபனாவைப் பார்க்கவும்.
ஆனால் அவசரப்பட வேண்டாம், கிராஃபனாவை அமைப்பதற்கு முன், அங்குள்ள அமைப்புகளை சேமிக்க MySQL க்கு பாதையை குறிப்பிட மறக்காதீர்கள்.
கிராஃபானா வலை சேவையகத்தின் முழு கட்டமைப்பு கோப்பில் உள்ளது /etc/grafana/grafana.ini
. தேவையான வரி இதுபோல் தெரிகிறது:
;url =
ஹோஸ்டை MySQL கிளஸ்டருக்கு வெளிப்படுத்துகிறோம். அதே கோப்பில் மேலே உள்ள படத்தில் கிராஃபானாவை அணுகுவதற்கான உள்நுழைவு மற்றும் கடவுச்சொல் உள்ளது, இவை இரண்டும் இயல்பாக சமமாக இருக்கும் admin
.
நீங்கள் sed கட்டளைகளைப் பயன்படுத்தலாம்:
sudo sed -i "s#.*;url =.*#url = mysql://${MYSQL_USERNAME}:${MYSQL_PASSWORD}@${MYSQL_CLUSTER_URI}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_user =.*#admin_user = ${GRAFANA_USERNAME}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_password =.*#admin_password = ${GRAFANA_PASSWORD}#" /etc/grafana/grafana.ini
இணைய சேவையகத்தை மறுதொடக்கம் செய்வதற்கான நேரம் இது!
sudo service grafana-server restart
இப்போது Grafana UI இல், நாம் ClickHouse ஐ DataSource எனக் குறிப்பிடுவோம்.
பின்வரும் அமைப்புகளின் மூலம் வேலை செய்யும் கட்டமைப்பை அடைய முடிந்தது:
URL ஆக கொடுத்துள்ளேன் https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
அனைத்து! CH மற்றும் MySQL உடன் இணைக்கப்பட்ட இணைய சேவையகத்துடன் கூடிய ஒரு மெய்நிகர் இயந்திரம் எங்களிடம் உள்ளது. நீங்கள் ஏற்கனவே தரவுத்தொகுப்பை ClickHouse இல் பதிவேற்றலாம் மற்றும் டாஷ்போர்டுகளை உருவாக்கலாம். எவ்வாறாயினும், நாங்கள் இன்னும் எங்கள் இலக்கை அடையவில்லை மற்றும் முழு அளவிலான உள்கட்டமைப்பை வரிசைப்படுத்தவில்லை.
பாக்கர்
ஏற்கனவே உள்ள மெய்நிகர் இயந்திரத்தின் வட்டு படத்தை உருவாக்க Yandex.Cloud உங்களை அனுமதிக்கிறது, அதன் அடிப்படையில், நீங்கள் விரும்பும் பல ஒத்த இயந்திரங்களை உருவாக்கலாம். இதைத்தான் நாம் பயன்படுத்துவோம். படத்தை வசதியாக இணைக்க, கருவியை எடுத்துக் கொள்ளுங்கள்
எங்கள் json கோப்பு இரண்டு தொகுதிகளைக் கொண்டிருக்கும்: பில்டர்கள் மற்றும் வழங்குநர்கள். முதல் தொகுதி படத்தின் அளவுருக்களை ஒரு பொருளாக விவரிக்கிறது, மேலும் இரண்டாவது தேவையான உள்ளடக்கத்துடன் அதை நிரப்புவதற்கான வழிமுறைகளை விவரிக்கிறது.
அடுக்கு மாடி
{
"builders": [
{
"type": "yandex",
"endpoint": "{{user `endpoint`}}",
"folder_id": "<folder_id>",
"subnet_id": "{{user `subnet_id`}}",
"zone": "{{user `zone`}}",
"labels": {},
"use_ipv4_nat": true,
"use_internal_ip": false,
"service_account_key_file": "<service_account_key_file>",
"image_name": "grafana-{{timestamp}}",
"image_family": "grafana",
"image_labels": {},
"image_description": "GRAFANA",
"source_image_family": "ubuntu-1804-lts",
"disk_size_gb": 3,
"disk_type": "network-hdd",
"ssh_username": "ubuntu"
}
],
...
}
இந்த டெம்ப்ளேட்டில், நீங்கள் ஒரு படத்தை உருவாக்க விரும்பும் கிளவுட்டில் பிரிவின் அடையாளங்காட்டியை அமைக்க வேண்டும், அத்துடன் இந்த பிரிவில் முன்பு உருவாக்கப்பட்ட சேவைக் கணக்கிலிருந்து விசைகளுடன் கோப்பிற்கான பாதையையும் அமைக்க வேண்டும். தொடர்புடைய பிரிவில் கோப்பின் வடிவத்தில் சேவை கணக்குகள் மற்றும் விசைகளை உருவாக்குவது பற்றி மேலும் படிக்கலாம்.
பிளாட்ஃபார்ம் அடிப்படையில் வட்டு படம் உருவாக்கப்படும் என்று இந்த கட்டமைப்பு கூறுகிறது ubuntu-1804-lts
, படக் குடும்பத்தில் பொருத்தமான பயனர் பிரிவில் வைக்கப்பட்டுள்ளது GRAFANA
பெயரில் grafana-{{timestamp}}
.
வழங்குபவர்கள்
இப்போது உள்ளமைவின் மிகவும் சுவாரஸ்யமான பகுதிக்கு. ஒரு மெய்நிகர் கணினியில் அதன் நிலையை ஒரு வட்டுப் படமாக உறைய வைப்பதற்கு முன், அதில் செய்ய வேண்டிய செயல்களின் வரிசையை இது விவரிக்கும்.
{
...,
"provisioners": [
{
"type": "shell",
"pause_before": "5s",
"scripts": [
"prepare-ctg.sh"
]
},
{
"type": "file",
"source": "setup.sh",
"destination": "/opt/grafana/setup.sh"
},
{
"type": "shell",
"execute_command": "sudo {{ .Vars }} bash '{{ .Path }}'",
"pause_before": "5s",
"scripts": [
"install-packages.sh",
"grafana-setup.sh",
"run-setup-at-reboot.sh"
]
}
]
}
இங்கே, அனைத்து செயல்களும் 3 நிலைகளாக பிரிக்கப்பட்டுள்ளன. முதல் கட்டத்தில், ஒரு எளிய ஸ்கிரிப்ட் செயல்படுத்தப்படுகிறது, அது ஒரு துணை கோப்பகத்தை உருவாக்குகிறது.
தயார்-ctg.sh:
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
அடுத்த கட்டத்தில், இந்த கோப்பகத்தில் ஒரு ஸ்கிரிப்டை வைக்கிறோம், இது மெய்நிகர் இயந்திரத்தைத் தொடங்கியவுடன் உடனடியாக இயக்கப்பட வேண்டும். இந்த ஸ்கிரிப்ட் பயனர் மாறிகளை கிராஃபனாவின் கட்டமைப்பில் அமைக்கும் மற்றும் இணைய சேவையகத்தை மறுதொடக்கம் செய்யும்.
setup.sh:
#!/bin/bash
CLUSTER_ID="<cluster_id>"
USERNAME="<username>"
PASSWORD="<password>"
sudo sed -i "s#.*;url =.*#url = mysql://${USERNAME}:${PASSWORD}@c-${CLUSTER_ID}.rw.mdb.yandexcloud.net#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_user =.*#admin_user = ${USERNAME}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_password =.*#admin_password = ${PASSWORD}#" /etc/grafana/grafana.ini
sudo service grafana-server restart
அதன் பிறகு, செய்ய வேண்டிய 3 விஷயங்கள் உள்ளன:
1) தொகுப்புகளை நிறுவவும்
2) systemctl இன் கீழ் கிராஃபானாவை தொடங்கி கிளிக்ஹவுஸ் செருகுநிரலை நிறுவவும்
3) மெய்நிகர் இயந்திரத்தை இயக்கியவுடன் உடனடியாக இயங்குவதற்கு setup.sh ஸ்கிரிப்டை வரிசையில் வைக்கவும்.
install-packages.sh:
#!/bin/bash
sudo systemd-run --property='After=apt-daily.service apt-daily-upgrade.service' --wait /bin/true
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo add-apt-repository "deb https://packages.grafana.com/enterprise/deb stable main"
sudo apt-get update
sudo apt-get install -y grafana-enterprise
grafana-setup.sh:
#!/bin/bash
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
run-setup-at-reboot.sh:
#!/bin/bash
chmod +x /opt/grafana/setup.sh
cat > /etc/cron.d/first-boot <<EOF
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
@reboot root /bin/bash /opt/grafana/setup.sh > /var/log/yc-setup.log 2>&1
EOF
chmod +x /etc/cron.d/first-boot;
இப்போது பேக்கரை இயக்கி, குறிப்பிட்ட பகிர்வில் வெளியீட்டுப் படத்தைப் பெற வேண்டும். ஒரு மெய்நிகர் இயந்திரத்தை உருவாக்கும் போது, நீங்கள் அதை ஒரு துவக்க வட்டாகத் தேர்ந்தெடுத்து, தொடங்கிய பிறகு, ஆயத்த கிராஃபானா வலை சேவையகத்தைப் பெறலாம்.
நிகழ்வு குழு மற்றும் சமநிலையாளர்
ஒரே மாதிரியான பல கிராஃபனா இணைய சேவையகங்களை உருவாக்க உங்களை அனுமதிக்கும் வட்டு படம் இருந்தால், நாம் ஒரு நிகழ்வு குழுவை உருவாக்கலாம். Yandex.Cloud இயங்குதளத்தில், இந்த சொல் அதே குணாதிசயங்களைக் கொண்ட மெய்நிகர் இயந்திரங்களின் ஒன்றியத்தைக் குறிக்கிறது. ஒரு நிகழ்வு குழுவை உருவாக்கும் போது, இந்த குழுவில் உள்ள அனைத்து இயந்திரங்களின் முன்மாதிரி கட்டமைக்கப்படுகிறது, பின்னர் குழுவின் பண்புகள் (எடுத்துக்காட்டாக, செயலில் உள்ள இயந்திரங்களின் குறைந்தபட்ச மற்றும் அதிகபட்ச எண்ணிக்கை). தற்போதைய எண் இந்த அளவுகோலைப் பூர்த்தி செய்யவில்லை என்றால், நேர்காணல் குழுவே தேவையற்ற இயந்திரங்களை அகற்றும் அல்லது படம் மற்றும் தோற்றத்தில் புதியவற்றை உருவாக்கும்.
எங்கள் பணியின் ஒரு பகுதியாக, முன்னர் உருவாக்கப்பட்ட வட்டுப் படத்திலிருந்து உருவாக்கப்படும் இணைய சேவையகங்களின் நிகழ்வுக் குழுவை உருவாக்குவோம்.
கடைசி நிகழ்வு குழு அமைப்பு மிகவும் குறிப்பிடத்தக்கது. லோட் பேலன்சருடன் ஒருங்கிணைக்கப்பட்ட இலக்குக் குழு, இரண்டு பொத்தான்களை அழுத்துவதன் மூலம் இந்தக் குழுவின் மெய்நிகர் இயந்திரங்களின் மேல் எல்3 பேலன்சரை அமைக்க உதவும்.
பேலன்சரை அமைக்கும்போது, நான் இரண்டு முக்கியமான விஷயங்களைச் செயல்படுத்தினேன்:
- போர்ட் 80 இல் பேலன்சர் பயனர் போக்குவரத்தை ஏற்று, அதை 3000 விர்ச்சுவல் மெஷின்களுக்கு திருப்பி விட்டேன், கிராஃபானா வசிக்கும் இடத்தில்.
- போர்ட் 3000 இல் பிங் செய்வதன் மூலம் இயந்திர சுகாதார சோதனைகளை அமைக்கவும்.
சிறு-மொத்தம்
இறுதியாக, எங்களால் விரும்பிய பயன்பாட்டு உள்கட்டமைப்பை கைமுறையாக வரிசைப்படுத்த முடிந்தது, இப்போது எங்களிடம் மிகவும் நெகிழ்வான கிராஃபானா சேவை உள்ளது. பயன்பாட்டிற்கான நுழைவு புள்ளியாகவும், கிளிக்ஹவுஸ் கிளஸ்டரின் ஹோஸ்டாகவும் உள்ள பேலன்சரின் ஐபி முகவரியைத் தெரிந்துகொள்வது மட்டுமே அவசியம்.
இது வெற்றியாகத் தோன்றுமா? ஆம், வெற்றி. ஆனால் ஏதோ இன்னும் என்னைத் தொந்தரவு செய்கிறது. மேலே உள்ள முழு செயல்முறைக்கும் நிறைய கையேடு செயல்கள் தேவைப்படுகின்றன மற்றும் அளவிட முடியாது, முடிந்தால் அதை தானியக்கமாக்க விரும்புகிறேன். இது அடுத்த பகுதியின் மையமாக இருக்கும்.
Terraform உடன் ஒருங்கிணைப்பு
HashiCorp என்ற கருவியை மீண்டும் பயன்படுத்துவோம்
Terraform உடனான அனைத்து வேலைகளும் உள்ளமைவு கோப்பை எழுதும் (*.tf
) மற்றும் அதன் அடிப்படையில் உள்கட்டமைப்பு உருவாக்கம்.
மாறிகள்
கோப்பின் ஆரம்பத்திலேயே, எதிர்கால உள்கட்டமைப்பு எங்கு, எப்படிப் பயன்படுத்தப்படும் என்பதைத் தீர்மானிக்கும் மாறிகளை வெளியே எடுப்போம்.
variable "oauth_token" {
type = string
default = "<oauth-token>"
}
variable "cloud_id" {
type = string
default = "<cloud-id>"
}
variable "folder_id" {
type = string
default = "<folder_id>"
}
variable "service_account_id" {
type = string
default = "<service_account_id>"
}
variable "image_id" {
type = string
default = "<image_id>"
}
variable "username" {
type = string
default = "<username>"
}
variable "password" {
type = string
default = "<password>"
}
variable "dbname" {
type = string
default = "<dbname>"
}
variable "public_key_path" {
type = string
default = "<path to ssh public key>"
}
பயன்பாட்டைப் பயன்படுத்துவதற்கான முழு செயல்முறையும் ஒரு வட்டு படத்தை உருவாக்குவதற்கும் இந்த மாறிகளை அமைப்பதற்கும் வரும். அவர்கள் என்ன பொறுப்பு என்பதை விளக்குகிறேன்:
உறுதி_டோக்கன் - மேகத்தை அணுகுவதற்கான ஒரு டோக்கன். மூலம் பெறலாம்
மேகம்_ஐடி - நாங்கள் பயன்பாட்டை வரிசைப்படுத்தும் கிளவுட்டின் அடையாளங்காட்டி
கோப்புறை_ஐடி - நாங்கள் பயன்பாட்டை வரிசைப்படுத்தும் பிரிவின் அடையாளங்காட்டி
சேவை_கணக்கு_ஐடி — கிளவுட்டின் தொடர்புடைய பிரிவில் சேவைக் கணக்கின் அடையாளங்காட்டி.
image_id - பேக்கரைப் பயன்படுத்தி பெறப்பட்ட வட்டு படத்தின் அடையாளங்காட்டி
பயனர்பெயர் и கடவுச்சொல் - தரவுத்தளங்கள் மற்றும் Grafana இணைய சேவையகம் இரண்டையும் அணுக பயனர்பெயர் மற்றும் கடவுச்சொல்
dbname - CH மற்றும் MySQL கிளஸ்டர்களுக்குள் தரவுத்தள பெயர்
பொது_விசை_பாதை - உங்கள் பொது ssh விசையுடன் கோப்பிற்கான பாதை, இதன் மூலம் நீங்கள் பெயரின் கீழ் இணைக்க முடியும் ubuntu
இணைய சேவையகங்களைக் கொண்ட மெய்நிகர் இயந்திரங்களுக்கு
வழங்குநர் அமைப்பு
இப்போது நீங்கள் Terraform வழங்குநரை உள்ளமைக்க வேண்டும் - எங்கள் விஷயத்தில், Yandex:
provider "yandex" {
token = var.oauth_token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-a"
}
இங்கே நாம் மேலே வரையறுக்கப்பட்ட மாறிகளைப் பயன்படுத்துகிறோம் என்பதை நீங்கள் பார்க்கலாம்.
நெட்வொர்க் மற்றும் கிளஸ்டர்கள்
இப்போது ஒரு பிணையத்தை உருவாக்குவோம், அதில் நமது உள்கட்டமைப்பின் கூறுகள், மூன்று சப்நெட்கள் (ஒவ்வொரு பிராந்தியத்திலும் ஒன்று) மற்றும் CH மற்றும் MySQL கிளஸ்டர்களை உயர்த்தும்.
resource "yandex_vpc_network" "grafana_network" {}
resource "yandex_vpc_subnet" "subnet_a" {
zone = "ru-central1-a"
network_id = yandex_vpc_network.grafana_network.id
v4_cidr_blocks = ["10.1.0.0/24"]
}
resource "yandex_vpc_subnet" "subnet_b" {
zone = "ru-central1-b"
network_id = yandex_vpc_network.grafana_network.id
v4_cidr_blocks = ["10.2.0.0/24"]
}
resource "yandex_vpc_subnet" "subnet_c" {
zone = "ru-central1-c"
network_id = yandex_vpc_network.grafana_network.id
v4_cidr_blocks = ["10.3.0.0/24"]
}
resource "yandex_mdb_clickhouse_cluster" "ch_cluster" {
name = "grafana-clickhouse"
environment = "PRODUCTION"
network_id = yandex_vpc_network.grafana_network.id
clickhouse {
resources {
resource_preset_id = "s2.micro"
disk_type_id = "network-ssd"
disk_size = 16
}
}
zookeeper {
resources {
resource_preset_id = "s2.micro"
disk_type_id = "network-ssd"
disk_size = 10
}
}
database {
name = var.dbname
}
user {
name = var.username
password = var.password
permission {
database_name = var.dbname
}
}
host {
type = "CLICKHOUSE"
zone = "ru-central1-a"
subnet_id = yandex_vpc_subnet.subnet_a.id
}
host {
type = "CLICKHOUSE"
zone = "ru-central1-b"
subnet_id = yandex_vpc_subnet.subnet_b.id
}
host {
type = "CLICKHOUSE"
zone = "ru-central1-c"
subnet_id = yandex_vpc_subnet.subnet_c.id
}
host {
type = "ZOOKEEPER"
zone = "ru-central1-a"
subnet_id = yandex_vpc_subnet.subnet_a.id
}
host {
type = "ZOOKEEPER"
zone = "ru-central1-b"
subnet_id = yandex_vpc_subnet.subnet_b.id
}
host {
type = "ZOOKEEPER"
zone = "ru-central1-c"
subnet_id = yandex_vpc_subnet.subnet_c.id
}
}
resource "yandex_mdb_mysql_cluster" "mysql_cluster" {
name = "grafana_mysql"
environment = "PRODUCTION"
network_id = yandex_vpc_network.grafana_network.id
version = "8.0"
resources {
resource_preset_id = "s2.micro"
disk_type_id = "network-ssd"
disk_size = 16
}
database {
name = var.dbname
}
user {
name = var.username
password = var.password
permission {
database_name = var.dbname
roles = ["ALL"]
}
}
host {
zone = "ru-central1-a"
subnet_id = yandex_vpc_subnet.subnet_a.id
}
host {
zone = "ru-central1-b"
subnet_id = yandex_vpc_subnet.subnet_b.id
}
host {
zone = "ru-central1-c"
subnet_id = yandex_vpc_subnet.subnet_c.id
}
}
நீங்கள் பார்க்க முடியும் என, இரண்டு கிளஸ்டர்கள் ஒவ்வொன்றும் மூன்று கிடைக்கும் மண்டலங்களில் வைக்கப்படுவதன் மூலம் மிகவும் தவறு-சகிப்புத்தன்மை கொண்டதாக கட்டப்பட்டுள்ளன.
இணைய சேவையகங்கள்
நீங்கள் அதே மனநிலையில் தொடரலாம் என்று தோன்றுகிறது, ஆனால் நான் சிரமப்பட்டேன். அதற்கு முன், நான் முதலில் MySQL கிளஸ்டரை உயர்த்தினேன், அதன் பிறகு, அதன் ஐடியை அறிந்து, விரும்பிய உள்ளமைவுடன் ஒரு வட்டு படத்தை சேகரித்தேன், அங்கு நான் கிளஸ்டருக்கு ஹோஸ்டைக் குறிப்பிட்டேன். ஆனால் இப்போது டெர்ராஃபார்ம் தொடங்குவதற்கு முன், படத்தை உருவாக்கும் நேரம் உட்பட, கிளஸ்டர் ஐடி எங்களுக்குத் தெரியாது. எனவே நான் பின்வருவனவற்றை நாட வேண்டியிருந்தது
அமேசானில் இருந்து மெட்டாடேட்டா சேவையைப் பயன்படுத்தி, மெய்நிகர் இயந்திரத்திற்கு சில அளவுருக்களை அனுப்புவோம், அதை ஏற்று செயலாக்கும். கிளஸ்டரின் MySQL ஹோஸ்டுக்கான மெட்டாடேட்டாவிற்கும், டெர்ராஃபார்ம் கோப்பில் பயனர் குறிப்பிட்ட பயனர்பெயர்-கடவுச்சொல்லுக்கும் மெஷின் தேவை. கோப்பின் உள்ளடக்கங்களை சிறிது மாற்றவும் setup.sh
, இது மெய்நிகர் இயந்திரம் இயக்கப்படும் போது இயங்கும்.
setup.sh:
#!/bin/bash
CLUSTER_URI="$(curl -H 'Metadata-Flavor:Google' http://169.254.169.254/computeMetadata/v1/instance/attributes/mysql_cluster_uri)"
USERNAME="$(curl -H 'Metadata-Flavor:Google' http://169.254.169.254/computeMetadata/v1/instance/attributes/username)"
PASSWORD="$(curl -H 'Metadata-Flavor:Google' http://169.254.169.254/computeMetadata/v1/instance/attributes/password)"
sudo sed -i "s#.*;url =.*#url = mysql://${USERNAME}:${PASSWORD}@${CLUSTER_URI}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_user =.*#admin_user = ${USERNAME}#" /etc/grafana/grafana.ini
sudo sed -i "s#.*;admin_password =.*#admin_password = ${PASSWORD}#" /etc/grafana/grafana.ini
sudo service grafana-server restart
இன்டன்ஸ் குழு மற்றும் பேலன்சர்
புதிய வட்டு படத்தை மீண்டும் கட்டமைத்த பிறகு, இறுதியாக டெர்ராஃபார்மிற்கான கோப்பை சேர்க்கலாம்.
ஏற்கனவே உள்ள வட்டு படத்தைப் பயன்படுத்த விரும்புகிறோம் என்பதைக் குறிப்பிடுகிறோம்:
data "yandex_compute_image" "grafana_image" {
image_id = var.image_id
}
இப்போது ஒரு நிகழ்வுக் குழுவை உருவாக்குவோம்:
resource "yandex_compute_instance_group" "grafana_group" {
name = "grafana-group"
folder_id = var.folder_id
service_account_id = var.service_account_id
instance_template {
platform_id = "standard-v1"
resources {
memory = 1
cores = 1
}
boot_disk {
mode = "READ_WRITE"
initialize_params {
image_id = data.yandex_compute_image.grafana_image.id
size = 4
}
}
network_interface {
network_id = yandex_vpc_network.grafana_network.id
subnet_ids = [yandex_vpc_subnet.subnet_a.id, yandex_vpc_subnet.subnet_b.id, yandex_vpc_subnet.subnet_c.id]
nat = "true"
}
metadata = {
mysql_cluster_uri = "c-${yandex_mdb_mysql_cluster.mysql_cluster.id}.rw.mdb.yandexcloud.net:3306/${var.dbname}"
username = var.username
password = var.password
ssh-keys = "ubuntu:${file("${var.public_key_path}")}"
}
network_settings {
type = "STANDARD"
}
}
scale_policy {
fixed_scale {
size = 6
}
}
allocation_policy {
zones = ["ru-central1-a", "ru-central1-b", "ru-central1-c"]
}
deploy_policy {
max_unavailable = 2
max_creating = 2
max_expansion = 2
max_deleting = 2
}
load_balancer {
target_group_name = "grafana-target-group"
}
}
மெட்டாடேட்டாவிற்கு நாம் எவ்வாறு சென்றோம் என்பதில் கவனம் செலுத்துவது மதிப்பு cluster_uri
, username
и password
. அவர்களின் மெய்நிகர் இயந்திரம் தான் தொடக்கத்தில் அதைப் பெற்று கிராஃபானா கட்டமைப்பில் வைக்கும்.
இது சமநிலையைப் பற்றியது.
resource "yandex_lb_network_load_balancer" "grafana_balancer" {
name = "grafana-balancer"
listener {
name = "grafana-listener"
port = 80
target_port = 3000
external_address_spec {
ip_version = "ipv4"
}
}
attached_target_group {
target_group_id = yandex_compute_instance_group.grafana_group.load_balancer.0.target_group_id
healthcheck {
name = "healthcheck"
tcp_options {
port = 3000
}
}
}
}
சிறிது சர்க்கரை
மிகக் குறைவாகவே இருந்தது. உள்கட்டமைப்பு பயன்படுத்தப்பட்ட பிறகு, நீங்கள் Grafana UI க்குச் சென்று, CH க்ளஸ்டரை (இன்னும் நீங்கள் பெற வேண்டிய ஐடி) தரவு ஆதாரமாக கைமுறையாகச் சேர்க்க வேண்டும். ஆனால் டெர்ராஃபார்முக்கு கிளஸ்டர் ஐடி தெரியும். அவரை வேலையை முடிக்க வைப்போம்.
புதிய வழங்குநரைச் சேர்ப்போம் - கிராஃபானா, மற்றும் பேலன்சர் ஐபியை ஹோஸ்டாக நழுவ விடவும். டெர்ராஃபார்ம் அதன் பேலன்சர் தீர்மானிக்கும் கணினியில் செய்யும் அனைத்து மாற்றங்களும் MySQL இல் வளரும், எனவே மற்ற எல்லா இயந்திரங்களிலும்.
provider "grafana" {
url = "http://${[for s in yandex_lb_network_load_balancer.grafana_balancer.listener: s.external_address_spec.0.address].0}"
auth = "${var.username}:${var.password}"
}
resource "grafana_data_source" "ch_data_source" {
type = "vertamedia-clickhouse-datasource"
name = "grafana"
url = "https://c-${yandex_mdb_clickhouse_cluster.ch_cluster.id}.rw.mdb.yandexcloud.net:8443"
basic_auth_enabled = "true"
basic_auth_username = var.username
basic_auth_password = var.password
is_default = "true"
access_mode = "proxy"
}
சீப்பு செய்வோம்
டிஸ்ப்ளே பேலன்சர் ஐபி மற்றும் கிளிக்ஹவுஸ் கிளஸ்டர் ஹோஸ்ட்
output "grafana_balancer_ip_address" {
value = [for s in yandex_lb_network_load_balancer.grafana_balancer.listener: s.external_address_spec.0.address].0
}
output "clickhouse_cluster_host" {
value = "https://c-${yandex_mdb_clickhouse_cluster.ch_cluster.id}.rw.mdb.yandexcloud.net:8443"
}
ஓட முடியும்
அனைத்து! எங்கள் உள்ளமைவு கோப்பு தயாராக உள்ளது, மாறிகளை அமைப்பதன் மூலம், மேலே விவரிக்கப்பட்ட அனைத்தையும் டெர்ராஃபார்மை உயர்த்த சொல்லலாம். முழு செயல்முறையும் எனக்கு 15 நிமிடங்கள் எடுத்தது.
முடிவில், நீங்கள் ஒரு அழகான செய்தியைக் காணலாம்:
Apply complete! Resources: 9 added, 0 changed, 0 destroyed.
Outputs:
clickhouse_cluster_host = https://c-c9q14ipa2ngadqsbp2iq.rw.mdb.yandexcloud.net:8443
grafana_balancer_ip_address = 130.193.50.25
மேகத்தில், உயர்த்தப்பட்ட உள்கட்டமைப்பின் கூறுகள் தெரியும்:
முடிவுகளை முடிப்போம்
இப்போது, கிராஃபானாவின் உதாரணத்தைப் பயன்படுத்தி, நீங்கள் ஒவ்வொருவரும் Yandex.Cloud இயங்குதளத்தில் பரந்த கிளவுட் கட்டமைப்பைக் கொண்ட பயன்பாடுகளை வரிசைப்படுத்தலாம். HashiCorp வழங்கும் Packer மற்றும் Terraform போன்ற பயனுள்ள கருவிகள் இதற்கு உங்களுக்கு உதவும். இந்த கட்டுரை ஒருவருக்கு பயனுள்ளதாக இருக்கும் என்று நம்புகிறேன் 🙂
PS கீழே நான் களஞ்சியத்திற்கு ஒரு இணைப்பை இணைக்கிறேன், அங்கு நீங்கள் பேக்கர் மற்றும் டெர்ராஃபார்ம் ஆகியவற்றிற்கான ஆயத்த சமையல் குறிப்புகளைக் காணலாம், இந்த கட்டுரையில் நான் மேற்கோள் காட்டிய துண்டுகள்.
ஆதாரம்: www.habr.com