Molweni nonke! Njengenxalenye yomsebenzi wam wekhosi, ndiphanda ubunakho beqonga lelifu lasekhaya njenge
Ufuna ukufumana ntoni?
Emva kokusungula umatshini obonakalayo kunye nomncedisi wewebhu, ungaya kumamkeli wayo kwaye ufumane i-UI enhle, ucacise i-database njengemithombo yomsebenzi oqhubekayo, yenza iideshibhodi kunye neegrafu.
Uguqulelo olusisiseko lune-drawback enye ebalulekileyo - ayinyamezeli impazamo kwaphela. Oko kukuthi, ukusebenza ngokupheleleyo kwesicelo kuxhomekeke ekusebenzeni komatshini omnye wenyani. Ukuba iyala okanye abantu abali-10 bavula i-UI ngaxeshanye, kuya kuvela iingxaki.
Zingasonjululwa ngokulula: kufuneka nje... unike oomatshini abaninzi abafanayo kunye nomncedisi wewebhu kwaye ubabeke phantsi kwe-balancer ye-L3. Kodwa asiyiyo yonke into ecacileyo apha. I-Grafana igcina izicwangciso zabasebenzisi (iindlela eziya koovimba beenkcukacha, iideshibhodi, iigrafu, njl.njl.) ngqo kwidiski yomatshini wayo wenyani. Ke, ukuba sitshintsha ezinye iisetingi kwi-UI, olu tshintsho luya kubonakaliswa kuphela kumatshini wenyani apho umlinganisi usithumele khona. Oku kuya kukhokelela kwiisetingi ezingahambelaniyo kwisicelo sethu, kubangele iingxaki ngokuqaliswa kunye nokusetyenziswa.
Apha enye i-database iza kuhlangula, umzekelo, i-MySQL okanye ilingana nayo. Sixelela uGrafana ukuba kufuneka agcine useto lwabasebenzisi kolu lwazi βlwespareβ database. Emva koko, kuya kwanela ukucacisa indlela eya kwesi siseko sedatha kanye kumatshini ngamnye, kwaye uhlele zonke ezinye izicwangciso zabasebenzisi kuwo nawuphi na umatshini wenyani; baya kunabela kwabanye.
Nanku umzobo wesiseko sesicelo sokugqibela:
Masifunde ukuphakamisa ngezandla zethu
MySQL kunye neClickHouse
Ngaphambi kokuthumela isicelo esinjalo ngokucofa iqhosha, kwakuyimfuneko ukufunda indlela yokuphatha icandelo ngalinye kwaye udibanise omnye nomnye.
Apha i-Yandex.Cloud iya kusinceda, ebonelela nge-balancers ye-L3, i-ClickHouse kunye ne-MySQL njengeenkonzo ezilawulwayo. Umsebenzisi ufuna kuphela ukucacisa iiparameters kwaye ulinde de kube iqonga lizisa yonke into ekusebenzeni.
Ndabhalisa, ndadala ifu kunye ne-akhawunti yokuhlawula. Emva koko, ndaya efini kwaye ndiseta i-MySQL kunye neClickHouse amaqela aneseto ezincinci. Ndalinda bade basebenza.
Kufuneka kwakhona ukhumbule ukwenza isiseko sedatha kwiqela ngalinye kwaye uqwalasele ukufikelela kulo usebenzisa igama lokungena kunye negama lokugqitha. Andizukungena kwiinkcukacha apha - yonke into ibonakala ngokucacileyo kwi-interface.
Iinkcukacha ezingacacanga yayikukuba ezi nkcukacha zogcino-lwazi zineenginginya ezininzi, eziqinisekisa ukunyamezela kwazo iimpazamo. Nangona kunjalo, iGrafana ifuna umphathi omnye ngokuthe ngqo kwisiseko sedatha nganye esebenza nayo. Ukufunda ixesha elide c-<cluster_id>.rw.mdb.yandexcloud.net
imephu esebenzayo yangoku yenginginya yeqela kunye ne-ID ehambelanayo. Yile nto siza kuyinika iGrafana.
umncedisi wewebhu
Ngoku ixhomekeke kumncedisi wewebhu. Masiphakamise umatshini oqhelekileyo oqhelekileyo kunye neLinux kwaye siqwalasele ngesandla iGrafana kuyo.
Masiqhagamshele nge-ssh kwaye sifake iipakethe eziyimfuneko.
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
Emva koko, masiqhube iGrafana phantsi kwe-systemctl kwaye sifake iplagin yokusebenza ngeClickHouse (ewe, ayinikezelwanga kwiphakheji esisiseko).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
Yiyo loo nto, emva koko ngomyalelo olula
sudo service grafana-server start
siya kuqalisa iseva yewebhu. Ngoku ungangenisa idilesi ye-IP yangaphandle yomatshini wenyani kwisikhangeli, khankanya izibuko 3000 kwaye ubone iGrafana UI entle.
Kodwa ungangxami, ngaphambi kokuseta iGrafana, kufuneka ukhumbule ukuyixelela indlela eya kwi-MySQL ukuze ugcine useto apho.
Lonke ubumbeko lomncedisi we web we Grafana ukwifayile /etc/grafana/grafana.ini
. Umgca ofunekayo ujongeka ngolu hlobo:
;url =
Siseta umamkeli kwiqela le-MySQL. Ifayile enye iqulathe igama lokungena kunye negama lokugqitha lonikezelo lwe Grafana kumfanekiso ongentla, apho ngokungagqibekanga zilingana zombini admin
.
Unokusebenzisa imiyalelo ye-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
Lixesha lokuba uqale ngokutsha iseva yewebhu!
sudo service grafana-server restart
Ngoku kwi-UI yaseGrafana siya kubonisa iClickHouse njengeDathaSource.
Ndikwazile ukufezekisa ulungelelwaniso lokusebenza ngezisetingi zilandelayo:
Ndiyichazile njenge URL https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
Konke! Sinomatshini omnye osebenzayo oneseva yewebhu eqhagamshelwe kwi-CH kunye ne-MySQL. Unakho ukulayisha i-dataset kwi-ClickHouse kwaye wakhe iidashboards. Nangona kunjalo, asikayiphumezi injongo yethu kwaye asikazisebenzisi iziseko ezingundoqo ezipheleleyo.
Ipakethi
I-Yandex.Cloud ikuvumela ukuba wenze umfanekiso wedisk womatshini okhoyo okhoyo, kwaye ngesiseko sawo - naliphi na inani loomatshini abafanayo omnye komnye. Yile nto kanye esiza kuyisebenzisa. Ukudibanisa ngokufanelekileyo umfanekiso, thatha isixhobo
Ifayile yethu ye-json iya kuba neebhloko ezimbini: abakhi kunye nababoneleli. Ibhloko yokuqala ichaza iiparamitha zomfanekiso ngokwawo njengeziko, kwaye ibhloko yesibini ichaza imiyalelo yokuyizalisa ngomxholo oyimfuneko.
Abakhi
{
"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"
}
],
...
}
Kule template, kufuneka ubeke isazisi secandelo efini apho ufuna ukwenza umfanekiso, kunye nendlela eya kwifayile enezitshixo ezivela kwi-akhawunti yenkonzo eyenziwe ngaphambili kweli candelo. Unokufunda ngakumbi malunga nokudala ii-akhawunti zenkonzo kunye nezitshixo ngendlela yefayile kwicandelo elihambelanayo
Olu qwalaselo luthi umfanekiso wedisk uyakwakhiwa ngokusekwe kwiqonga ubuntu-1804-lts
, ibekwe kwicandelo elifanelekileyo lomsebenzisi kwintsapho yomfanekiso GRAFANA
phantsi kwegama grafana-{{timestamp}}
.
Ababoneleli
Ngoku kuza inxalenye enomdla ngakumbi yoqwalaselo. Iza kuchaza ulandelelwano lwezenzo eziya kufuneka zenziwe kumatshini wenyani phambi kokukhenkceza imeko yawo kumfanekiso wedisk.
{
...,
"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"
]
}
]
}
Apha zonke izenzo zohlulwe zibe zizigaba ezi-3. Kwinqanaba lokuqala, iskripthi esilula siyenziwa esenza isalathiso esincedisayo.
prepare-ctg.sh:
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
Kwinqanaba elilandelayo, sibeka iskripthi kolu lawulo, oluya kufuna ukuba luqaliswe ngokukhawuleza emva kokuqala umatshini wenyani. Le script iya kubeka izinto eziguquguqukayo zomsebenzisi ezifuna ukubhaliswa kuqwalaselo lweGrafana kwaye luqalise kwakhona umncedisi wewebhu.
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
Emva koku, kukho izinto ezi-3 eziseleyo ekufuneka zenziwe:
1) faka iipakethi
2) sebenzisa iGrafana phantsi kwe-systemctl kwaye ufake i-plugin ye-ClickHouse
3) beka iskripthi se-setup.sh kumgca wokuqaliswa ngokukhawuleza emva kokuvula umatshini wenyani.
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;
Ngoku konke okuseleyo kukuqhuba iPacker kwaye ufumane umfanekiso wemveliso obekwe kwicandelo elichaziweyo. Xa usenza umatshini wenyani, ungawukhetha njenge diski yokuqala kwaye emva kokusungulwa uya kufumana umncedisi wewebhu we Grafana osele elungile.
Iqela lomzekelo kunye ne-balancer
Nje ukuba sinomfanekiso wedisk osivumela ukuba senze iiseva ezininzi zewebhu ze-Grafana ezifanayo, singenza iqela lomzekelo. Kwi-platform ye-Yandex.Cloud, eli gama libhekisela kumanyano lomatshini obonakalayo oneempawu ezifanayo. Xa usenza iqela lomzekelo, iprototype yabo bonke oomatshini abakweli qela iqwalaselwe, kwaye ke iimpawu zeqela ngokwalo (umzekelo, ubuncinci kunye nenani eliphezulu loomatshini abasebenzayo). Ukuba inani langoku alihambelani nale migaqo, ngoko ke iqela lomzekelo ngokwalo liza kususa oomatshini abangeyomfuneko okanye lenze abatsha kumfanekiso walo.
Njengenxalenye yomsebenzi wethu, siya kudala iqela lomzekelo weeseva zewebhu eziya kuveliswa kumfanekiso wedisk owenziwe ngaphambili.
Okuphawuleka ngokwenene kumzekelo wokugqibela wokuseta iqela. Iqela ekujoliswe kulo ekudityanisweni kunye Lomthwalo Balancer uya kukunceda ukuba uqwalasele i L3 balancer phezu koomatshini benyani beli qela ngokucofa amaqhosha ambalwa.
Xa ndiseta i-balancer, ndiphumeze amanqaku amabini abalulekileyo:
- Ndenze ibhalansi yamkele i-traffic yomsebenzisi kwi-port 80 kwaye ndiyiqondise kwakhona kwi-port 3000 yoomatshini benyani, kanye apho kuhlala khona i-Grafana.
- Ndimise ukujonga ukusebenza koomatshini ngokubafaka kwi-port 3000.
Isishwankathelo esincinci
Ekugqibeleni, siye sakwazi ukuhambisa iziseko zoncedo ezifunwayo, kwaye ngoku sinenkonzo yaseGrafana eyomelela kakhulu. Udinga kuphela ukwazi idilesi ye-IP ye-balancer njengendawo yokungena kwisicelo kunye nenginginya yeClickHouse cluster ukuze ulayishe idatha yedatha kuyo.
Kuya kubonakala ngathi luloyiso? Ewe, uloyiso. Kodwa kukho into endibhidayo. Yonke le nkqubo ingentla ifuna amanyathelo amaninzi kwaye ayinakwenzeka konke konke; Ndingathanda ukuyitshintsha ukuba kuyenzeka. Le yile nto icandelo elilandelayo liza kunikezelwa kuyo.
Ukudityaniswa kweTerraform
Siza kusebenzisa kwakhona isixhobo esivela ku-HashiCorp esibizwa ngokuba
Wonke umsebenzi ngeTerraform wehla ukuze ubhale ifayile yoqwalaselo (*.tf
) kunye nokudalwa kweziseko ezingundoqo ezisekelwe kuyo.
Izinto eziguquguqukayo
Ekuqaleni kwefayile, siya kubandakanya izinto eziguquguqukayo ezimisela ukuba iziseko zophuhliso zexesha elizayo ziya kusetyenziswa phi kwaye njani.
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>"
}
Yonke inkqubo yokuthunyelwa kwesicelo iya kuhla ekwakheni umfanekiso wedisk kunye nokuseta ezi ziguquguqukayo. Makhe ndichaze ukuba banoxanduva ngantoni:
outh_token - uphawu lokufikelela kwilifu. Inokufunyanwa ngu
cloud_id -Isichongi selifu apho siya kuthumela isicelo
i-id_yencwadi β isichongi secandelo apho siya kuthumela isicelo
service_account_id β isibonisi seakhawunti yenkonzo kwicandelo elihambelanayo lelifu.
umfanekiso_id β isazisi somfanekiso wedisk ofunyenwe kusetyenziswa iPacker
lomsebenzisi ΠΈ inombolo yokuvula β igama lomsebenzisi kunye negama lokugqitha ukufikelela kuzo zombini iidathabheyisi kunye neseva yewebhu yeGrafana
dbname -Igama ledatha yedatha ngaphakathi kwe-CH kunye neqela le-MySQL
Indlela_yesitshixo_kawonke-wonke β indlela eya kwifayile ngesitshixo sikawonke-wonke se-ssh, onokusisebenzisa ukudibanisa phantsi kwegama ubuntu
koomatshini benyani abaneeseva zewebhu
Ukuseta umnikezeli
Ngoku kufuneka uqwalasele umnikezeli weTerraform - kwimeko yethu, Yandex:
provider "yandex" {
token = var.oauth_token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-a"
}
Uya kuqaphela ukuba apha sisebenzisa iinguqu ezichazwe ngasentla.
Inethiwekhi kunye namaqela
Ngoku siza kudala inethiwekhi apho iziseko zeziseko zethu ziya kunxibelelana, ii-subnets ezintathu (enye kwindawo nganye) kwaye ziphakamise i-CH kunye ne-MySQL yamaqela.
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
}
}
Njengoko ubona, iqela ngalinye kula mabini enziwe anyamezela iimpazamo ngokubekwa kwiindawo ezintathu zokufumaneka.
Iiseva zewebhu
Ingathi singaqhubeka ngomoya omnye, kodwa ndangena ebunzimeni. Ngaphambi koku, ndaqala ndaphakamisa iqoqo le-MySQL kwaye kuphela emva koko, ndisazi i-ID yayo, ndaqokelela umfanekiso wedisk kunye noqwalaselo olufunekayo, apho ndachaza umkhosi kwiqela. Kodwa ngoku asazi i-ID yeqela ngaphambi kokusungula iTerraform, kubandakanywa nexesha lokwakha umfanekiso. Ngoko ke, kwafuneka ndibhenele koku kulandelayo
Ukusebenzisa inkonzo yemethadatha ye-Amazon, siya kudlula ezinye iiparameters kumatshini obonakalayo, oya kwamkela kwaye usebenze. Sidinga umatshini ukuya kwimethadatha emva komnini weqela le-MySQL kunye negama lomsebenzisi-password, elichazwe ngumsebenzisi kwifayile yeTerraform, emva kokuqala. Masitshintshe imixholo yefayile kancinci setup.sh
, esebenza xa umatshini wenyani uvuliwe.
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
Iqela le-Intance kunye ne-balancer
Emva kokuba siphinde sakha umfanekiso omtsha wedisk, ekugqibeleni sinokongeza ifayile yethu yeTerraform.
Masibonise ukuba sifuna ukusebenzisa umfanekiso okhoyo wedisk:
data "yandex_compute_image" "grafana_image" {
image_id = var.image_id
}
Ngoku makhe iqela lomzekelo:
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"
}
}
Kufanelekile ukunikela ingqalelo kwindlela esiyidlulise ngayo kwimethadatha cluster_uri
, username
ΠΈ password
. Zezi ukuba umatshini wenyani uya kuzithatha ekuqaleni kwaye ubeke kuqwalaselo lweGrafana.
Kuxhomekeke kwi-balancer.
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
}
}
}
}
Iswekile encinci
Kushiyeke kancinane. Emva kokuba iziseko zophuhliso zisetyenzisiwe, kuya kufuneka uye kwiGrafana UI kwaye wongeze ngesandla i-CH cluster (ekusafuneka i-ID yayo ifumaneke) njengoMthombo weDatha. Kodwa iTerraform iyayazi i-ID yeqela. Masimthembe ukuba awufezekise lo mbandela.
Masifake umboneleli omtsha - uGrafana, kwaye simnike idilesi ye-IP yomlinganisi njengomamkeli. Lonke utshintsho olwenziwa yiTerraform kumatshini apho ibhalansi yayo imisela iya kukhula kwiMySQL, kwaye ke kubo bonke abanye oomatshini.
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"
}
Masikama iinwele zethu
Masibonise idilesi ye-IP yebhalansi kunye nenginginya yeClickHouse cluster
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"
}
Ungabaleka
Konke! Ifayile yethu yoqwalaselo ilungile kwaye sinakho, ngokuseta izinto eziguquguqukayo, sixelele iTerraform ukuba iphakamise yonke into esiyichazile ngasentla. Yonke le nkqubo yandithatha malunga nemizuzu eyi-15.
Ekugqibeleni unokubona umyalezo omhle:
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
Kwaye kwilifu, izinto zesiseko esiphakanyisiweyo ziya kubonakala:
Masibhale iziphumo
Ngoku, usebenzisa iGrafana njengomzekelo, ngamnye wenu unokusebenzisa usetyenziso kunye nolwakhiwo lwamafu olunabileyo kwiqonga leYandex.Cloud. Izixhobo eziluncedo ezivela kwiHashiCorp njengePacker kunye neTerraform zinokukunceda ngale nto. Ndiyathemba ukuba umntu uya kufumana eli nqaku liluncedo :)
P.S. Ngezantsi ndiza kuqhoboshela ikhonkco kwindawo yokugcina apho unokufumana khona iiresiphi esele zenziwe ngePacker kunye neTerraform, iziqwenga endizinikezeleyo kweli nqaku.
umthombo: www.habr.com