Hoi allegearre! As ûnderdiel fan myn kursus wurk, Ik ûndersocht de mooglikheden fan sa'n ynlânske wolk platfoarm as
Wat wolle jo ûntfange?
Nei it lansearjen fan in firtuele masine mei in webserver, kinne jo nei har host gean en in prachtige UI krije, databases as boarnen foar fierdere wurk opjaan, dashboards en grafiken oanmeitsje.
De basisferzje hat ien signifikant nadeel - it is hielendal net tolerant. Dat is, de folsleine funksjonaliteit fan 'e applikaasje hinget ôf fan' e leefberens fan ien firtuele masine. As it wegeret of 10 minsken iepenje de UI tagelyk, dan sille problemen ûntstean.
Se kinne gewoan oplost wurde: jo moatte gewoan ... in protte identike firtuele masines ynsette mei in webserver en pleatse se ûnder in L3-balancer. Mar net alles is hjir sa dúdlik. Grafana bewarret brûkersynstellingen (paden nei databases, dashboards, grafiken, ensfh.) direkt op 'e skiif fan har firtuele masine. Sa, as wy feroarje guon ynstellings yn de UI, dizze feroarings sille wurde wjerspegele allinnich op de firtuele masine dêr't de balancer stjoerde ús. Dit sil liede ta inkonsistente ynstellingen foar ús applikaasje, wêrtroch problemen mei lansearring en gebrûk feroarsaakje.
Hjir sil in oare databank ta de rêding komme, bygelyks MySQL of syn lykweardich. Wy fertelle Grafana dat se brûkersynstellingen yn dizze "spare" databank opslaan moat. Neitiid sil it genôch wêze om it paad nei dizze databank ien kear op elke masine op te jaan, en alle oare brûkersynstellingen op ien fan 'e firtuele masines te bewurkjen; se sille útwreidzje nei de oaren.
Hjir is in diagram fan 'e definitive applikaasje-ynfrastruktuer:
Litte wy leare om mei ús hannen op te heffen
MySQL en ClickHouse
Foardat jo sa'n applikaasje mei de klik op in knop ynsette, wie it nedich om te learen hoe't jo elk fan syn komponinten behannelje en se mei elkoar yntegrearje.
Hjir sil Yandex.Cloud ús helpe, dy't L3 balancers, ClickHouse en MySQL as managed tsjinsten leveret. De brûker moat allinich de parameters opjaan en wachtsje oant it platfoarm alles yn wurking bringt.
Ik registrearre, makke in wolk en in betelling account. Dêrnei gie ik nei de wolk en sette MySQL- en ClickHouse-klusters op mei minimale ynstellingen. Ik wachte oant se aktyf waarden.
Jo moatte ek ûnthâlde om in databank yn elke kluster te meitsjen en tagong ta it te konfigurearjen mei in oanmelding en wachtwurd. Ik sil hjir net yn details gean - alles is frij dúdlik yn 'e ynterface.
It net foar de hân lizzende detail wie dat dizze databases in protte hosts hawwe, dy't har skuldtolerânsje garandearje. Grafana fereasket lykwols krekt ien host foar elke databank wêrmei't it wurket. Lang lêzen c-<cluster_id>.rw.mdb.yandexcloud.net
yn kaart brocht oan de hjoeddeiske aktive master host fan it kluster mei de oerienkommende ID. Dit is wat wy sille jaan oan Grafana.
Webtsjinner
No is it oan de webserver. Litte wy in gewoane firtuele masine mei Linux ferheegje en Grafana der manuell konfigurearje.
Litte wy ferbine fia ssh en ynstallearje de nedige pakketten.
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
Litte wy dêrnei Grafana ûnder systemctl útfiere en de plugin ynstallearje foar wurkjen mei ClickHouse (ja, it wurdt net levere yn it basispakket).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
Dat is it, dêrnei mei in ienfâldich kommando
sudo service grafana-server start
wy sille begjinne de web tsjinner. No kinne jo it eksterne IP-adres fan 'e firtuele masine yn' e browser ynfiere, poarte 3000 opjaan en de prachtige Grafana UI sjen.
Mar haast net, foardat jo Grafana ynstelle, moatte jo ûnthâlde om it it paad nei MySQL te fertellen om de ynstellingen dêr op te slaan.
De folsleine konfiguraasje fan 'e Grafana-webserver is yn it bestân /etc/grafana/grafana.ini
. De fereaske line sjocht der sa út:
;url =
Wy sette de host yn op it MySQL-kluster. Itselde bestân befettet de oanmelding en wachtwurd foar tagong ta Grafana yn 'e foto hjirboppe, dy't standert beide gelyk binne admin
.
Jo kinne sed-kommando's brûke:
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
It is tiid om de webserver opnij te starten!
sudo service grafana-server restart
No yn 'e Grafana UI sille wy ClickHouse spesifisearje as in DataSource.
Ik koe in wurkjende konfiguraasje berikke mei de folgjende ynstellings:
Ik spesifisearre as de URL https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
Alle! Wy hawwe ien wurkjende firtuele masine mei in webserver ferbûn mei CH en MySQL. Jo kinne de dataset al uploade nei ClickHouse en dashboards bouwe. Wy hawwe ús doel lykwols noch net berikt en hawwe gjin folweardige ynfrastruktuer ynset.
packer
Yandex.Cloud kinne jo meitsje in skiif ôfbylding fan in besteande firtuele masine, en op syn basis - elk oantal masines identyk oan elkoar. Dit is krekt wat wy sille brûke. Om it byld maklik te sammeljen, nim it ark
Us json-bestân sil bestean út twa blokken: bouwers en foarsjenningen. It earste blok beskriuwt de parameters fan 'e ôfbylding sels as in entiteit, en it twadde blok beskriuwt ynstruksjes foar it ynfoljen fan it mei de nedige ynhâld.
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"
}
],
...
}
Yn dit sjabloan moatte jo de identifier ynstelle fan 'e seksje yn' e wolk wêr't jo de ôfbylding wolle oanmeitsje, lykas it paad nei it bestân mei de kaaien fan it tsjinstkonto dat earder yn dizze seksje makke is. Jo kinne mear lêze oer it meitsjen fan tsjinstakkounts en kaaien yn 'e foarm fan in bestân yn' e oerienkommende seksje
Dizze konfiguraasje seit dat it skiifôfbylding sil wurde boud op basis fan it platfoarm ubuntu-1804-lts
, pleatst yn 'e passende brûkersseksje yn' e ôfbyldingsfamylje GRAFANA
ûnder de namme grafana-{{timestamp}}
.
Provisioners
No komt it nijsgjirriger diel fan 'e konfiguraasje. It sil de folchoarder fan aksjes beskriuwe dy't op 'e firtuele masine moatte wurde útfierd foardat de steat yn in skiifôfbylding befriest.
{
...,
"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"
]
}
]
}
Hjir binne alle aksjes ferdield yn 3 stadia. Op it earste stadium wurdt in ienfâldich skript útfierd dat in helpmap makket.
prepare-ctg.sh:
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
Op it folgjende poadium pleatse wy in skript yn dizze map, dat sil moatte wurde lansearre fuortendaliks nei it starten fan de firtuele masine. Dit skript sil de brûkersfariabelen pleatse dy't moatte wurde registrearre yn 'e Grafana-konfiguraasje en de webserver opnij starte.
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
Hjirnei binne der noch 3 dingen te dwaan:
1) ynstallearje pakketten
2) Run Grafana ûnder systemctl en ynstallearje de ClickHouse-plugin
3) set it setup.sh-skript yn 'e startwachtrige direkt nei it ynskeakeljen fan' e firtuele masine.
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;
No is alles wat oerbliuwt om Packer út te fieren en de útfierôfbylding te pleatsen yn 'e opjûne seksje. By it meitsjen fan in firtuele masine kinne jo it selektearje as in bootdisk en nei it lansearjen krije jo in klearmakke Grafana-webserver.
Ynstânsje groep en balancer
As wy ienris in skiifôfbylding hawwe wêrmei wy in protte identike Grafana-webservers kinne meitsje, kinne wy in eksimplaargroep oanmeitsje. Op it Yandex.Cloud-platfoarm ferwiist dizze term nei de uny fan firtuele masines dy't deselde skaaimerken hawwe. By it meitsjen fan in eksimplaargroep wurdt it prototype fan alle masines yn dizze groep konfigureare, en dan de skaaimerken fan 'e groep sels (bygelyks it minimum en maksimum oantal aktive masines). As it hjoeddeiske nûmer net oan dizze kritearia foldocht, dan sil de eksimplaargroep sels ûnnedige masines fuortsmite of nije yn syn eigen byld meitsje.
As ûnderdiel fan ús taak sille wy in eksimplaargroep fan webservers oanmeitsje dy't sil wurde generearre út it earder oanmakke skiifôfbylding.
Wat wirklik opmerklik is, is de opset fan de lêste eksimplaar. De doelgroep yn yntegraasje mei Load Balancer sil jo helpe om in L3 balancer te konfigurearjen boppe op 'e firtuele masines fan dizze groep troch te klikken op in pear knoppen.
By it ynstellen fan de balancer haw ik twa wichtige punten ymplementearre:
- Ik makke de balancer akseptearje brûkersferkear op poarte 80 en omliede it nei poarte 3000 fan 'e firtuele masines, krekt wêr't Grafana libbet.
- Ik haw ynsteld om de leefberens fan masines te kontrolearjen troch se te pingjen nei poarte 3000.
Mini gearfetting
Uteinlik koenen wy de winske applikaasje-ynfrastruktuer manuell ynsette, en no hawwe wy in heul duorsume Grafana-tsjinst. Jo hoege allinich it IP-adres fan 'e balancer te witten as it yngongspunt foar de applikaasje en de host fan it ClickHouse-kluster om de dataset deryn te laden.
It soe lykje as in oerwinning? Ja, oerwinning. Mar noch wat ferwar my. It heule proses hjirboppe fereasket in protte hânmjittige stappen en is hielendal net skalberber; Ik soe it as mooglik automatisearje wolle. Dit is wêr't de folgjende paragraaf oan wijd wurdt.
Terraform yntegraasje
Wy sille wer brûke in ark út HashiCorp neamd
Alle wurk mei Terraform komt del op it skriuwen fan in konfiguraasjetriem (*.tf
) en it skeppen fan ynfrastruktuer op basis dêrfan.
Fariabelen
Oan it begjin fan it bestân sille wy fariabelen opnimme dy't bepale wêr't en hoe't de takomstige ynfrastruktuer ynset wurde sil.
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>"
}
It hiele proses fan applikaasje-ynset sil delkomme op it bouwen fan in skiifôfbylding en it ynstellen fan dizze fariabelen. Lit my útlizze wêrfoar se ferantwurdlik binne:
oauth_token - in token foar tagong ta de wolk. Kin krigen wurde troch
wolk_id - wolkidentifikaasje wêr't wy de applikaasje sille ynsette
folder_id - seksje-identifikaasje wêr't wy de applikaasje sille ynsette
service_account_id - tsjinst account identifier yn 'e oerienkommende seksje fan' e wolk.
image_id - identifier fan it skiifôfbylding krigen mei Packer
brûkersnamme и wachtwurd - brûkersnamme en wachtwurd om tagong te krijen ta beide databases en de Grafana-webserver
dbnamme - databasenamme binnen CH- en MySQL-klusters
iepenbiere_kaaipaad - paad nei it bestân mei jo iepenbiere ssh-kaai, dy't jo kinne brûke om te ferbinen ûnder de namme ubuntu
oan firtuele masines mei webservers
Oanbieder opset
No moatte jo de Terraform-provider konfigurearje - yn ús gefal, Yandex:
provider "yandex" {
token = var.oauth_token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-a"
}
Jo sille merke dat wy hjir de hjirboppe definieare fariabelen brûke.
Netwurk en klusters
No sille wy in netwurk meitsje wêryn eleminten fan ús ynfrastruktuer sille kommunisearje, trije subnets (ien yn elke regio) en CH- en MySQL-klusters ferheegje.
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
}
}
Sa't jo sjen kinne, is elk fan 'e twa klusters frij fouttolerant makke troch te lizzen yn trije beskikberensônes.
Web tsjinners
It soe lykje dat wy yn deselde geast trochgean koene, mar ik kaam yn swierrichheden. Dêrfoar haw ik earst in MySQL-kluster opbrocht en pas dêrnei, wittende syn ID, sammele ik in skiifôfbylding mei de fereaske konfiguraasje, wêr't ik de host oan it kluster spesifisearre. Mar no witte wy de kluster-ID net foardat Terraform lansearre, ynklusyf op it momint fan it bouwen fan de ôfbylding. Dêrom moast ik ta it folgjende tawize
Mei help fan Amazon's metadata-tsjinst sille wy guon parameters trochjaan oan 'e firtuele masine, dy't it sil akseptearje en ferwurkje. Wy hawwe de masine nedich om te gean nei de metadata efter de MySQL-klusterhost en brûkersnamme-wachtwurd, dy't de brûker spesifisearre yn it Terraform-bestân, nei it starten. Litte wy de ynhâld fan it bestân in bytsje feroarje setup.sh
, dy't rint as de firtuele masine ynskeakele is.
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 groep en balancer
Nei't wy in nije skiifôfbylding hawwe opboud, kinne wy einlings ús bestân tafoegje foar Terraform.
Litte wy oanjaan dat wy in besteande skiifôfbylding wolle brûke:
data "yandex_compute_image" "grafana_image" {
image_id = var.image_id
}
Litte wy no in eksimplaargroep oanmeitsje:
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"
}
}
It is it wurdich omtinken te jaan oan hoe't wy it yn 'e metadata trochjûn hawwe cluster_uri
, username
и password
. It binne dizze dy't de firtuele masine sil útnimme by it opstarten en yn 'e Grafana-konfiguraasje sette.
It is oan de 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
}
}
}
}
In bytsje sûker
Der is mar in bytsje oer. Nei't de ynfrastruktuer is ynset, moatte jo nei de Grafana UI gean en it CH-kluster manuell tafoegje (de ID wêrfan noch moat wurde krigen) as gegevensboarne. Mar Terraform wit de kluster-ID. Lit ús him tafertrouwe om de saak ta bloei te bringen.
Lit ús in nije provider tafoegje - Grafana, en jou har it IP-adres fan 'e balancer as host. Alle feroarings dy't Terraform makket op 'e masine dêr't syn balancer bepaalt sil groeie yn MySQL, en dus op alle oare masines.
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"
}
Litte wy ús hier kammen
Litte wy it balancer IP-adres en de host fan it ClickHouse-kluster werjaan
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"
}
Kin drave
Alle! Us konfiguraasjetriem is klear en wy kinne, troch de fariabelen yn te stellen, Terraform fertelle om alles op te heljen dat wy hjirboppe beskreaun hawwe. It hiele proses naam my sawat 15 minuten.
Oan 'e ein kinne jo in prachtich berjocht sjen:
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
En yn 'e wolk sille eleminten fan' e ferhege ynfrastruktuer sichtber wêze:
Lit de resultaten opkomme
No, mei Grafana as foarbyld, kin elk fan jo applikaasjes ynsette mei in útwreide wolkarsjitektuer op it Yandex.Cloud-platfoarm. Nuttige ark fan HashiCorp lykas Packer en Terraform kinne jo hjirmei helpe. Ik hoopje dat immen dit artikel nuttich fynt :)
PS Hjirûnder sil ik in keppeling taheakje nei it repository wêr't jo klearmakke resepten kinne fine foar Packer en Terraform, fragminten wêrfan ik yn dit artikel levere.
Boarne: www.habr.com