Kaixo guztioi! Nire ikastaroko lanaren baitan, hodei-plataforma domestiko baten gaitasunak ikertu nituen
Zer jaso nahi duzu?
Web zerbitzari batekin makina birtual bat abiarazi ondoren, bere ostalarira joan eta UI eder bat lor dezakezu, datu-baseak lan gehiago egiteko iturri gisa zehaztu, aginte-panelak eta grafikoak sortu.
Oinarrizko bertsioak eragozpen esanguratsu bat du - ez da batere akatsekiko tolerantzia. Hau da, aplikazioaren funtzionaltasun osoa makina birtual baten bideragarritasunaren araberakoa da. Uko egiten badu edo 10 pertsonek aldi berean UI irekitzen badute, arazoak sortuko dira.
Besterik gabe konpondu daitezke: besterik ez duzu... makina birtual berdin-berdinak zabaldu web zerbitzari batekin eta L3 balantzaile baten azpian jarri. Baina hemen dena ez dago hain argi. Grafanak erabiltzaileen ezarpenak (datu-baseetarako bideak, aginte-panelak, grafikoak, etab.) gordetzen ditu zuzenean bere makina birtualeko diskoan. Horrela, UI-an ezarpen batzuk aldatzen baditugu, aldaketa horiek balantzaileak bidali digun makina birtualean soilik islatuko dira. Honek gure aplikazioaren ezarpen koherenteak ekarriko ditu, abiarazteko eta erabiltzeko arazoak sortuz.
Hemen beste datu-base bat etorriko da erreskatatzera, adibidez, MySQL edo bere baliokidea. Grafanari esaten diogu erabiltzaileen ezarpenak "ordezko" datu-base honetan gorde behar dituela. Ondoren, nahikoa izango da datu-base honetarako bidea makina bakoitzean behin zehaztea eta beste erabiltzaile-ezarpen guztiak editatzea makina birtualetan; besteetara zabalduko dira.
Hona hemen azken aplikazioaren azpiegituraren diagrama:
Ikas dezagun gure eskuekin altxatzen
MySQL eta ClickHouse
Horrelako aplikazio bat botoi baten klik eginez zabaldu aurretik, beharrezkoa zen bere osagai bakoitza nola kudeatzen eta elkarren artean integratzen ikasi.
Hemen Yandex.Cloud-ek lagunduko digu, L3 orekatzaileak, ClickHouse eta MySQL kudeatutako zerbitzu gisa eskaintzen dituena. Erabiltzaileak parametroak zehaztu eta plataformak guztia funtzionatzen duen arte itxaron behar du.
Erregistratu, hodeia eta ordainketa kontu bat sortu ditut. Horren ostean, hodera joan nintzen eta MySQL eta ClickHouse klusterrak konfiguratu nituen ezarpen minimoekin. Aktibo bihurtu arte itxaron nuen.
Era berean, gogoratu behar duzu kluster bakoitzean datu-base bat sortzea eta horretarako sarbidea konfiguratzea saio-hasiera eta pasahitza erabiliz. Ez naiz xehetasunetan sartuko hemen - interfazean dena agerikoa da.
Agerikoa ez den xehetasuna datu-base hauek ostalari asko dituztela izan zen, akatsen tolerantzia ziurtatzen dutenak. Hala ere, Grafanak ostalari bat behar du lan egiten duen datu-base bakoitzeko. Irakurketa luzea c-<cluster_id>.rw.mdb.yandexcloud.net
klusterraren egungo ostalari nagusi aktiboarekin mapatuta dago dagokion IDarekin. Hauxe da Grafanari emango dioguna.
Web zerbitzaria
Orain web zerbitzariari dagokio. Goazen Linux-ekin makina birtual arrunt bat eta eskuz konfigura dezagun Grafana bertan.
Konektatu ssh bidez eta instala ditzagun beharrezko paketeak.
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
Horren ondoren, exekutatu Grafana systemctl-en eta instalatu dezagun ClickHouse-rekin lan egiteko plugina (bai, ez dago oinarrizko paketean ematen).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
Hori da, ondoren komando soil batekin
sudo service grafana-server start
web zerbitzaria martxan jarriko dugu. Orain arakatzailean makina birtualaren kanpoko IP helbidea sar dezakezu, 3000 ataka zehaztu eta Grafana UI ederra ikusi.
Baina ez presarik izan, Grafana konfiguratu aurretik, MySQL-rako bidea kontatu behar duzu ezarpenak bertan gordetzeko.
Grafana web zerbitzariaren konfigurazio osoa fitxategian dago /etc/grafana/grafana.ini
. Beharrezko lerroa honelakoa da:
;url =
Ostalaria MySQL klusterean ezarri dugu. Fitxategi berak goiko irudian Grafana atzitzeko saioa eta pasahitza ditu, lehenespenez biak berdinak admin
.
Sed komandoak erabil ditzakezu:
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
Web zerbitzaria berrabiarazteko garaia da!
sudo service grafana-server restart
Orain Grafana UI-n ClickHouse zehaztuko dugu Datu-iturburu gisa.
Ezarpen hauekin laneko konfigurazioa lortu ahal izan nuen:
URL gisa zehaztu dut https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
Denak! Makina birtual bat dugu funtzionatzen duen web zerbitzari batekin CH eta MySQL-rekin konektatuta. Dagoeneko datu-multzoa ClickHousera karga dezakezu eta aginte-panelak eraiki ditzakezu. Hala ere, oraindik ez dugu gure helburua lortu eta ez dugu erabateko azpiegiturarik zabaldu.
Packer
Yandex.Cloud-ek lehendik dagoen makina birtual baten disko-irudia sortzeko aukera ematen du, eta bere oinarrian - bata bestearen berdin-berdina den edozein makina. Hauxe da erabiliko duguna. Irudia eroso muntatzeko, hartu tresna
Gure json fitxategiak bi bloke izango ditu: eraikitzaileak eta hornitzaileak. Lehenengo blokeak irudiaren beraren parametroak deskribatzen ditu entitate gisa, eta bigarren blokeak beharrezko edukiz betetzeko argibideak deskribatzen ditu.
Builders
{
"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"
}
],
...
}
Txantiloi honetan, irudia sortu nahi duzun hodeian atalaren identifikatzailea ezarri behar duzu, baita atal honetan aldez aurretik sortutako zerbitzu-kontuko gakoekin fitxategirako bidea ere. Zerbitzu-kontuak eta gakoak sortzeari buruzko informazio gehiago irakur dezakezu fitxategi moduan dagokion atalean
Konfigurazio honek dio diskoaren irudia plataforman oinarrituta eraikiko dela ubuntu-1804-lts
, irudi-familiako erabiltzaile-atale egokian kokatuta GRAFANA
izenpean grafana-{{timestamp}}
.
Hornitzaileak
Orain konfigurazioaren zati interesgarriena dator. Makina birtualean bere egoera disko-irudi batean izoztu aurretik egin beharko diren ekintzen sekuentzia deskribatuko du.
{
...,
"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"
]
}
]
}
Hemen ekintza guztiak 3 fasetan banatzen dira. Lehenengo fasean, direktorio laguntzaile bat sortzen duen script soil bat exekutatzen da.
prestatu-ctg.sh:
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
Hurrengo fasean, direktorio honetan script bat jartzen dugu, makina birtuala abiarazi eta berehala abiarazi beharko duena. Script honek Grafana konfigurazioan erregistratu behar diren erabiltzailearen aldagaiak jarriko ditu eta web zerbitzaria berrabiaraziko du.
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
Honen ostean 3 gauza geratzen dira egiteko:
1) paketeak instalatu
2) exekutatu Grafana systemctl-en eta instalatu ClickHouse plugina
3) jarri setup.sh script-a abiarazteko ilaran makina birtuala piztu eta berehala.
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;
Orain Packer exekutatu eta irteerako irudia zehaztutako atalean jartzea da geratzen dena. Makina birtual bat sortzean, abioko disko gisa hauta dezakezu eta abiarazi ondoren prest egindako Grafana web zerbitzari bat jasoko duzu.
Instantzia-taldea eta orekatzailea
Grafana web zerbitzari berdin asko sortzeko aukera ematen digun disko-irudia dugunean, instantzia-talde bat sor dezakegu. Yandex.Cloud plataforman, termino honek ezaugarri berdinak dituzten makina birtualen batasunari egiten dio erreferentzia. Instantzia-talde bat sortzean, talde honetako makina guztien prototipoa konfiguratzen da, eta ondoren taldearen beraren ezaugarriak (adibidez, makina aktiboen gutxieneko eta gehienezko kopurua). Uneko zenbakiak irizpide hauek betetzen ez baditu, instantzia-taldeak berak kenduko ditu beharrezkoak ez diren makinak edo berriak sortuko ditu bere irudian.
Gure zereginaren barruan, aurretik sortutako diskoaren iruditik sortuko den web zerbitzarien instantzia-talde bat sortuko dugu.
Benetan aipagarria dena azken instantziako taldearen konfigurazioa da. Load Balancer-ekin integratzen den xede-taldeak talde honetako makina birtualen gainean L3 orekatzailea konfiguratzen lagunduko dizu botoi pare bat klik eginez.
Balantzailea konfiguratzerakoan, bi puntu garrantzitsu ezarri ditut:
- Balantzaileari 80 atakan erabiltzaileen trafikoa onartu eta makina birtualen 3000 atakara birbideratu nuen, Grafana bizi den tokira hain zuzen.
- Makinen bideragarritasuna egiaztatzea konfiguratu nuen 3000 atakan ping eginez.
Mini laburpena
Azkenik, nahi dugun aplikazio-azpiegitura eskuz zabaldu ahal izan dugu, eta gaur egun, sendotasun handiko Grafana zerbitzu bat dugu. Balantzatzailearen IP helbidea soilik ezagutu behar duzu aplikaziorako sarrera-puntu gisa eta ClickHouse klusterraren ostalari gisa datu-multzoa bertan kargatzeko.
Garaipen bat dirudi? Bai, garaipena. Baina oraindik zerbait nahastu egiten nau. Goiko prozesu osoak eskuzko urrats asko behar ditu eta ez da batere eskalagarria; ahal izanez gero automatizatu nahiko nuke. Horri eskainiko zaio hurrengo atala.
Terraform integrazioa
HashiCorp izeneko tresna bat erabiliko dugu berriro
Terraform-ekin lan guztia konfigurazio fitxategi bat idaztera dator (*.tf
) eta horretan oinarritutako azpiegiturak sortzea.
aldagai
Fitxategiaren hasieran, etorkizuneko azpiegitura non eta nola zabalduko den zehazten duten aldagaiak sartuko ditugu.
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>"
}
Aplikazioa zabaltzeko prozesu osoa diskoaren irudi bat eraikitzera eta aldagai hauek ezartzera iritsiko da. Azal dezadan zertaz arduratzen diren:
oauth_token β hodeira sartzeko token bat. Honen bidez lor daiteke
hodei_id β aplikazioa zabalduko dugun hodeiko identifikatzailea
karpeta_id β aplikazioa zabalduko dugun atalaren identifikatzailea
zerbitzu_kontuaren_id β zerbitzu-kontuaren identifikatzailea hodeiari dagokion atalean.
irudi_id β Packer erabiliz lortutako disko-irudiaren identifikatzailea
erabiltzailea ΠΈ pasahitza β erabiltzaile-izena eta pasahitza bi datu-baseetara eta Grafana web zerbitzarira sartzeko
dbname - CH eta MySQL klusterren barruan datu-basearen izena
gako_publikoa β zure ssh gako publikoarekin fitxategirako bidea, izenarekin konektatzeko erabil dezakezuna ubuntu
web zerbitzariak dituzten makina birtualetara
Hornitzailearen konfigurazioa
Orain Terraform hornitzailea konfiguratu behar duzu - gure kasuan, Yandex:
provider "yandex" {
token = var.oauth_token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-a"
}
Konturatuko zara hemen goian zehaztutako aldagaiak erabiltzen ari garela.
Sarea eta klusterrak
Orain gure azpiegiturako elementuak komunikatuko diren sare bat sortuko dugu, hiru azpisare (eskualde bakoitzean bat) eta CH eta MySQL klusterrak sortuko dira.
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
}
}
Ikus dezakezunez, bi kluster bakoitza nahiko akatsekiko tolerantzia sortzen da, hiru erabilgarritasun gunetan jarrita.
Web zerbitzariak
Espiritu berean jarraitu genezakeela ematen zuen, baina zailtasunak izan nituen. Honen aurretik, MySQL kluster bat sortu nuen lehenik eta horren ondoren, bere IDa ezagututa, disko-irudi bat bildu nuen beharrezko konfigurazioarekin, non klusterraren ostalaria zehaztu nuen. Baina orain ez dakigu kluster IDa Terraform abiarazi aurretik, irudia eraikitzeko momentuan barne. Horregatik, hurrengora jo behar izan nuen
Amazonen metadatuen zerbitzua erabiliz, parametro batzuk pasatuko dizkiogu makina birtualeri, eta hark onartu eta prozesatu egingo ditu. Makina hasi eta gero erabiltzaileak Terraform fitxategian zehaztutako MySQL cluster ostalari eta erabiltzaile-izen-pasahitza atzean dauden metadatuetara joan behar dugu. Aldatu dezagun fitxategiaren edukia apur bat setup.sh
, makina birtuala pizten denean exekutatzen dena.
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
Intance taldea eta orekatzailea
Diskoaren irudi berri bat berreraiki ondoren, azkenean gure fitxategia gehi dezakegu Terraform-erako.
Adierazi dezagun lehendik dagoen diskoaren irudi bat erabili nahi dugula:
data "yandex_compute_image" "grafana_image" {
image_id = var.image_id
}
Sortu dezagun instantzia talde bat:
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"
}
}
Merezi du erreparatzea metadatuetara nola pasatu dugun cluster_uri
, username
ΠΈ password
. Hauek dira makina birtualak abiaraztean atera eta Grafana konfigurazioan jarriko dituena.
Balantzaileari dagokio.
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
}
}
}
}
Azukre pixka bat
Apur bat besterik ez da geratzen. Azpiegitura zabaldu ondoren, Grafana UI-ra joan beharko duzu eta eskuz gehitu CH klusterra (horren IDa oraindik lortu behar da) Datu-iturburu gisa. Baina Terraformek badaki cluster IDa. Konfiantza diezaiogun gaia aurrera eramatea.
Gehitu dezagun hornitzaile berri bat - Grafana, eta eman diezaiogun orekatzailearen IP helbidea ostalari gisa. Terraformek bere orekatzaileak zehazten duen makinan egiten dituen aldaketa guztiak MySQL-en haziko dira, eta, beraz, gainerako makina guztietan.
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"
}
Orraz ditzagun ilea
Bistaratu ditzagun orekatzailearen IP helbidea eta ClickHouse klusterraren ostalaria
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"
}
Korrika egin dezake
Denak! Gure konfigurazio fitxategia prest dago eta aldagaiak ezarriz Terraform-i esan dezakegu goian deskribatu dugun guztia igotzeko. Prozesu osoak 15 minutu inguru behar izan nituen.
Amaieran mezu eder bat ikus dezakezue:
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
Eta hodeian, altxatutako azpiegituraren elementuak ikusgai egongo dira:
Batuketari sortu
Orain, Grafana adibide gisa erabiliz, zuetako bakoitzak hodei arkitektura zabala duten aplikazioak heda ditzake Yandex.Cloud plataforman. Packer eta Terraform bezalako HashiCorp-en tresna lagungarriak lagun zaitzakete horretan. Espero dut norbaitek artikulu hau erabilgarria izatea :)
PS Jarraian esteka bat erantsiko dizuet biltegirako, non Packer eta Terraform-entzako prest dauden errezetak aurki ditzakezun, artikulu honetan eman ditudan zatiak.
Iturria: www.habr.com