Hei kaikki! Osana kurssityötäni tutkin sellaisen kotimaisen pilvialustan mahdollisuuksia kuin
Mitä haluat vastaanottaa?
Kun olet käynnistänyt verkkopalvelimella varustetun virtuaalikoneen, voit siirtyä sen isäntään ja hankkia kauniin käyttöliittymän, määrittää tietokannat lähteiksi jatkotyötä varten, luoda kojelaudat ja kaaviot.
Perusversiolla on yksi merkittävä haittapuoli - se ei ole ollenkaan vikasietoinen. Toisin sanoen sovelluksen koko toiminnallisuus riippuu yhden virtuaalikoneen toimivuudesta. Jos se kieltäytyy tai 10 ihmistä avaa käyttöliittymän samanaikaisesti, syntyy ongelmia.
Ne voidaan ratkaista yksinkertaisesti: sinun tarvitsee vain... ottaa käyttöön useita identtisiä virtuaalikoneita verkkopalvelimen kanssa ja sijoittaa ne L3-tasapainottimen alle. Mutta kaikki ei ole täällä niin selvää. Grafana tallentaa käyttäjäasetukset (polut tietokantoihin, kojelaudat, kaaviot jne.) suoraan virtuaalikoneensa levylle. Näin ollen, jos muutamme joitain käyttöliittymän asetuksia, nämä muutokset näkyvät vain siinä virtuaalikoneessa, johon balansoija lähetti meidät. Tämä johtaa epäjohdonmukaisiin asetuksiin sovelluksessamme, mikä aiheuttaa ongelmia käynnistyksessä ja käytössä.
Täällä tulee apuun toinen tietokanta, esimerkiksi MySQL tai vastaava. Kerromme Grafanalle, että hänen pitäisi tallentaa käyttäjäasetukset tähän "varatietokantaan". Myöhemmin riittää, että määrität polku tähän tietokantaan kerran jokaisessa koneessa ja muokkaat kaikkia muita käyttäjän asetuksia missä tahansa virtuaalikoneessa; ne ulottuvat muihinkin.
Tässä on kaavio lopullisesta sovellusinfrastruktuurista:
Opitaan nostelemaan käsin
MySQL ja ClickHouse
Ennen sellaisen sovelluksen käyttöönottoa napin painalluksella, oli tarpeen oppia käsittelemään sen kutakin komponenttia ja integroimaan ne keskenään.
Tässä auttaa meitä Yandex.Cloud, joka tarjoaa L3-tasapainottajia, ClickHouse- ja MySQL-hallintapalveluita. Käyttäjän tarvitsee vain määrittää parametrit ja odottaa, kunnes alusta saa kaiken toimintakuntoon.
Rekisteröidyin, loin pilven ja maksutilin. Sen jälkeen menin pilveen ja määritin MySQL- ja ClickHouse-klusterit minimaalisilla asetuksilla. Odotin, että ne aktivoituivat.
Sinun on myös muistettava luoda tietokanta jokaiseen klusteriin ja määrittää pääsy siihen kirjautumistunnuksella ja salasanalla. En mene yksityiskohtiin tässä - käyttöliittymässä kaikki on aivan ilmeistä.
Ei-ilmeinen yksityiskohta oli, että näillä tietokannoilla on monia isäntiä, jotka varmistavat niiden vikasietoisuuden. Grafana vaatii kuitenkin täsmälleen yhden isännän jokaista tietokantaa kohden, jonka kanssa se toimii. Pitkä lukeminen c-<cluster_id>.rw.mdb.yandexcloud.net
kartoitetaan klusterin nykyiseen aktiiviseen pääisäntään vastaavalla tunnuksella. Tämän me annamme Grafanalle.
verkkopalvelin
Nyt se on verkkopalvelimen tehtävä. Nostetaan tavallinen virtuaalikone Linuxilla ja määritetään siihen manuaalisesti Grafana.
Otetaan yhteys ssh:n kautta ja asennetaan tarvittavat paketit.
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
Sen jälkeen ajetaan Grafana systemctl:llä ja asennetaan ClickHousen kanssa työskentelyyn tarkoitettu laajennus (kyllä, se ei sisälly peruspakettiin).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
Siinä se, sen jälkeen yksinkertaisella komennolla
sudo service grafana-server start
käynnistämme verkkopalvelimen. Nyt voit kirjoittaa virtuaalikoneen ulkoisen IP-osoitteen selaimeen, määrittää portin 3000 ja nähdä kauniin Grafana-käyttöliittymän.
Mutta älä kiirehdi, ennen kuin asennat Grafanan, muista kertoa sille polku MySQL:ään, jotta asetukset voidaan tallentaa sinne.
Grafana-verkkopalvelimen koko kokoonpano on tiedostossa /etc/grafana/grafana.ini
. Vaadittu rivi näyttää tältä:
;url =
Asetamme isännän MySQL-klusteriin. Sama tiedosto sisältää yllä olevan kuvan Grafanaan pääsyn kirjautumistunnuksen ja salasanan, jotka ovat oletusarvoisesti samat admin
.
Voit käyttää sed-komentoja:
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
On aika käynnistää verkkopalvelin uudelleen!
sudo service grafana-server restart
Nyt Grafana-käyttöliittymässä määritämme ClickHouse-tietolähteeksi.
Sain toimivan kokoonpanon seuraavilla asetuksilla:
Määritin URL-osoitteeksi https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
Kaikki! Meillä on yksi toimiva virtuaalikone, jossa on verkkopalvelin yhdistettynä CH:hen ja MySQL:ään. Voit jo ladata tietojoukon ClickHouseen ja rakentaa hallintapaneeleja. Emme kuitenkaan ole vielä saavuttaneet tavoitettamme, emmekä ole ottaneet käyttöön täysimittaista infrastruktuuria.
Pakkaaja
Yandex.Cloud antaa sinun luoda levykuvan olemassa olevasta virtuaalikoneesta ja sen perusteella - minkä tahansa määrän keskenään identtisiä koneita. Juuri tätä tulemme käyttämään. Voit koota kuvan kätevästi ottamalla työkalun
Json-tiedostomme koostuu kahdesta lohkosta: rakentajista ja palveluntarjoajista. Ensimmäinen lohko kuvaa itse kuvan parametreja kokonaisuutena ja toisessa lohkossa ohjeita sen täyttämiseksi tarvittavalla sisällöllä.
Rakennusliitto
{
"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"
}
],
...
}
Tässä mallissa sinun on asetettava sen pilven osion tunniste, johon haluat luoda kuvan, sekä polku tiedostoon tässä osiossa aiemmin luodun palvelutilin avaimilla. Voit lukea lisää palvelutilien ja avainten luomisesta tiedoston muodossa vastaavasta osiosta
Tämä kokoonpano sanoo, että levykuva rakennetaan alustan perusteella ubuntu-1804-lts
, sijoitetaan kuvaperheen oikeaan käyttäjäosioon GRAFANA
nimellä grafana-{{timestamp}}
.
Palveluntarjoajat
Nyt tulee kokoonpanon mielenkiintoisempi osa. Se kuvaa toimintosarjan, joka on suoritettava virtuaalikoneessa ennen kuin sen tila jäädytetään levykuvaksi.
{
...,
"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"
]
}
]
}
Tässä kaikki toiminnot on jaettu 3 vaiheeseen. Ensimmäisessä vaiheessa suoritetaan yksinkertainen komentosarja, joka luo apuhakemiston.
ready-ctg.sh:
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
Seuraavassa vaiheessa asetamme tähän hakemistoon komentosarjan, joka on käynnistettävä välittömästi virtuaalikoneen käynnistämisen jälkeen. Tämä komentosarja asettaa käyttäjämuuttujat, jotka on rekisteröitävä Grafana-kokoonpanoon ja käynnistää verkkopalvelimen uudelleen.
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
Tämän jälkeen on jäljellä 3 asiaa:
1) asenna paketit
2) Suorita Grafana systemctl:n alla ja asenna ClickHouse-laajennus
3) laita setup.sh-skripti käynnistysjonoon heti virtuaalikoneen käynnistämisen jälkeen.
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;
Nyt jäljellä on vain ajaa Packer ja saada tulostekuva määritettyyn osioon. Kun luot virtuaalikoneen, voit valita sen käynnistyslevykkeeksi ja käynnistämisen jälkeen saat valmiin Grafana-verkkopalvelimen.
Instanssiryhmä ja tasapainottaja
Kun meillä on levykuva, jonka avulla voimme luoda useita identtisiä Grafana-verkkopalvelimia, voimme luoda ilmentymäryhmän. Yandex.Cloud-alustalla tämä termi viittaa virtuaalikoneiden liittoon, joilla on samat ominaisuudet. Instanssiryhmää luotaessa konfiguroidaan kaikkien tähän ryhmään kuuluvien koneiden prototyyppi ja sitten itse ryhmän ominaisuudet (esimerkiksi aktiivisten koneiden vähimmäis- ja enimmäismäärä). Jos nykyinen numero ei täytä näitä ehtoja, ilmentymäryhmä itse poistaa tarpeettomat koneet tai luo uusia omaan kuvaansa.
Osana tehtäväämme luomme web-palvelimien esiintymäryhmän, joka luodaan aiemmin luodusta levyvedosta.
Mikä on todella merkittävää, on viimeisen instanssin ryhmän määritys. Load Balancerin kanssa integroitu kohderyhmä auttaa sinua konfiguroimaan L3-tasapainottimen tämän ryhmän virtuaalikoneiden päälle napsauttamalla muutamaa painiketta.
Tasapainotinta asettaessani toteutin kaksi tärkeää asiaa:
- Tein tasapainottimen hyväksymään käyttäjäliikenteen portissa 80 ja ohjaamaan sen virtuaalikoneiden porttiin 3000, tarkalleen missä Grafana asuu.
- Asetin tarkistamaan koneiden toimivuuden pingillä ne porttiin 3000.
Mini yhteenveto
Lopulta pystyimme ottamaan halutun sovellusinfrastruktuurin käyttöön manuaalisesti, ja nyt meillä on erittäin joustava Grafana-palvelu. Sinun tarvitsee vain tietää tasapainottimen IP-osoite sovelluksen sisääntulopisteenä ja ClickHouse-klusterin isäntä, jotta voit ladata tietojoukon siihen.
Näyttäisikö se voitolta? Kyllä, voitto. Mutta jokin hämmentää minua silti. Koko yllä oleva prosessi vaatii paljon manuaalisia vaiheita, eikä se ole ollenkaan skaalautuva; haluaisin automatisoida sen, jos mahdollista. Tälle seuraava jakso on omistettu.
Terraformin integrointi
Käytämme jälleen HashiCorpin työkalua nimeltä
Kaikki työ Terraformin kanssa rajoittuu asetustiedoston kirjoittamiseen (*.tf
) ja siihen perustuvan infrastruktuurin luomiseen.
muuttujat
Aivan tiedoston alussa sisällytämme muuttujat, jotka määrittävät, missä ja miten tulevaa infrastruktuuria otetaan käyttöön.
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>"
}
Koko sovelluksen käyttöönottoprosessi tiivistyy levykuvan luomiseen ja näiden muuttujien asettamiseen. Selitän, mistä he ovat vastuussa:
oauth_token - tunnus pilveen pääsyä varten. Voidaan hankkia
cloud_id — pilvitunniste, jossa otamme sovelluksen käyttöön
kansiotunnus — osion tunniste, jossa otamme sovelluksen käyttöön
service_account_id — palvelutilin tunniste pilven vastaavassa osiossa.
kuvan_tunnus — Packerin avulla saadun levykuvan tunniste
käyttäjätunnus и salasana — käyttäjätunnus ja salasana sekä tietokantoihin että Grafana-verkkopalvelimeen pääsyä varten
dbname — tietokannan nimi CH- ja MySQL-klustereissa
julkinen_avain_polku - polku tiedostoon julkisella ssh-avaimella, jota voit käyttää yhteyden muodostamiseen nimellä ubuntu
virtuaalikoneisiin web-palvelimilla
Palveluntarjoajan asetukset
Nyt sinun on määritettävä Terraform-palveluntarjoaja - meidän tapauksessamme Yandex:
provider "yandex" {
token = var.oauth_token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-a"
}
Huomaat, että tässä käytetään edellä määriteltyjä muuttujia.
Verkko ja klusterit
Nyt luomme verkon, jossa infrastruktuurimme elementit kommunikoivat, kolme aliverkkoa (yksi jokaisella alueella) ja nostamme CH- ja MySQL-klustereita.
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
}
}
Kuten näet, kumpikin kahdesta klusterista on luotu melko vikasietoiseksi sijoittamalla ne kolmelle käytettävyysalueelle.
Web-palvelimet
Vaikuttaa siltä, että voisimme jatkaa samassa hengessä, mutta törmäsin vaikeuksiin. Ennen tätä nostin ensin MySQL-klusterin ja vasta sen jälkeen, tietäen sen tunnuksen, keräsin levykuvan vaaditulla konfiguraatiolla, jossa määritin klusterin isännän. Mutta nyt emme tiedä klusterin tunnusta ennen Terraformin käynnistämistä, mukaan lukien kuvan rakentamisen aikana. Siksi jouduin turvautumaan seuraavaan
Amazonin metatietopalvelun avulla välitämme joitain parametreja virtuaalikoneen, jotka se hyväksyy ja käsittelee. Tarvitsemme koneen siirtyvän MySQL-klusterin isäntäkoneen ja käyttäjätunnus-salasanan takana oleviin metatietoihin, jotka käyttäjä määritti Terraform-tiedostossa käynnistyksen jälkeen. Muutetaan hieman tiedoston sisältöä setup.sh
, joka toimii, kun virtuaalikone käynnistetään.
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-ryhmä ja tasapainottaja
Kun uusi levykuva on rakennettu uudelleen, voimme vihdoin lisätä tiedostomme Terraformille.
Osoitetaan, että haluamme käyttää olemassa olevaa levykuvaa:
data "yandex_compute_image" "grafana_image" {
image_id = var.image_id
}
Luodaan nyt ilmentymäryhmä:
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"
}
}
On syytä kiinnittää huomiota siihen, kuinka siirsimme sen metatietoihin cluster_uri
, username
и password
. Juuri nämä virtuaalikone poistaa käynnistyksen yhteydessä ja asettaa Grafana-asetukset.
Se on tasapainottajasta kiinni.
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
}
}
}
}
Vähän sokeria
On vain vähän jäljellä. Kun infrastruktuuri on otettu käyttöön, sinun on siirryttävä Grafana-käyttöliittymään ja lisättävä manuaalisesti CH-klusteri (jonka tunnus on vielä hankittava) tietolähteeksi. Mutta Terraform tietää klusterin tunnuksen. Annetaan hänen hoitaa asia.
Lisätään uusi palveluntarjoaja - Grafana, ja annetaan hänelle tasapainottimen IP-osoite isäntänä. Kaikki muutokset, jotka Terraform tekee koneeseen, jonka tasapainottaja määrittää, kasvavat MySQL:ssä ja siten kaikissa muissa koneissa.
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"
}
Kammataan hiuksiamme
Näytetään tasapainottimen IP-osoite ja ClickHouse-klusterin isäntä
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"
}
Osaa juosta
Kaikki! Asetustiedostomme on valmis ja voimme asettamalla muuttujat käskeä Terraformia nostamaan kaiken edellä kuvatun. Koko prosessi kesti noin 15 minuuttia.
Lopussa näet kauniin viestin:
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
Ja pilvessä korotetun infrastruktuurin elementit näkyvät:
Yhteenvetona
Nyt käyttämällä Grafanaa esimerkkinä, jokainen teistä voi ottaa käyttöön sovelluksia, joissa on laaja pilviarkkitehtuuri Yandex.Cloud-alustalla. HashiCorpin hyödylliset työkalut, kuten Packer ja Terraform, voivat auttaa sinua tässä. Toivottavasti tästä artikkelista on jollekin hyötyä :)
PS Alla liitän linkin arkistoon, josta löydät valmiita reseptejä Packerille ja Terraformille, joista esitin tässä artikkelissa katkelmia.
Lähde: will.com