Halo sadayana! Salaku bagian tina karya kursus kuring, kuring nalungtik kamampuan platform awan domestik sapertos
Naon anu anjeun hoyong nampi?
Saatos ngaluncurkeun mesin virtual sareng pangladén wéb, anjeun tiasa angkat ka host na sareng kéngingkeun UI anu saé, nangtukeun pangkalan data salaku sumber pikeun padamelan salajengna, nyiptakeun dasbor sareng grafik.
Versi dasarna ngagaduhan hiji kalemahan anu signifikan - éta henteu toleran kana kasalahan. Hartina, sakabéh pungsionalitas aplikasi gumantung kana viability hiji mesin virtual. Upami nampik atanapi 10 urang muka UI dina waktos anu sami, maka masalah bakal timbul.
Éta bisa direngsekeun saukur: Anjeun ngan perlu ... nyebarkeun loba mesin virtual idéntik jeung web server na nempatkeun aranjeunna dina hiji balancer L3. Tapi henteu sadayana jelas di dieu. Grafana nyimpen setélan pamaké (jalur ka database, dashboards, grafik, jsb) langsung dina disk tina mesin virtual na. Ku kituna, lamun urang ngarobah sababaraha setelan dina UI, parobahan ieu bakal reflected ngan dina mesin virtual dimana balancer dikirim kami. Ieu bakal ngakibatkeun setelan inconsistent pikeun aplikasi urang, ngabalukarkeun masalah sareng peluncuran sarta pamakéan.
Di dieu database sejen bakal datang ka nyalametkeun teh, contona, MySQL atawa sarimbag na. Kami nyarioskeun ka Grafana yén anjeunna kedah nyimpen setélan pangguna dina database "cadangan" ieu. Saatos éta, éta bakal cekap pikeun netepkeun jalur ka pangkalan data ieu sakali dina unggal mesin, sareng ngédit sadaya setélan pangguna anu sanés dina mesin virtual mana waé; aranjeunna bakal manjangkeun ka anu sanés.
Ieu diagram tina infrastruktur aplikasi ahir:
Hayu urang diajar angkat ku leungeun
MySQL sareng ClickHouse
Sateuacan nyebarkeun aplikasi sapertos kitu ku ngaklik tombol, anjeun kedah diajar kumaha nanganan masing-masing komponénna sareng ngahijikeunana.
Di dieu Yandex.Cloud bakal ngabantosan kami, anu nyayogikeun kasaimbangan L3, ClickHouse sareng MySQL salaku jasa anu diurus. Pangguna ngan ukur kedah netepkeun parameter sareng antosan dugi ka platformna nyayogikeun sadayana kana urutan kerja.
Kuring ngadaptar, nyiptakeun awan sareng akun pamayaran. Saatos éta, kuring angkat ka méga sareng nyetél klaster MySQL sareng ClickHouse kalayan setélan minimal. Kuring antosan dugi aranjeunna janten aktip.
Anjeun ogé kedah émut pikeun nyiptakeun pangkalan data dina unggal klaster sareng ngonpigurasikeun aksés ka éta nganggo login sareng kecap akses. Kuring moal asup kana detil di dieu - sagalana geus cukup atra dina panganteur.
Detil anu teu jelas nyaéta yén pangkalan data ieu ngagaduhan seueur host, anu mastikeun kasabaran kasalahanana. Nanging, Grafana meryogikeun hiji host pikeun unggal pangkalan data anu dianggo. Bacaan panjang c-<cluster_id>.rw.mdb.yandexcloud.net
dipetakeun ka master host aktif ayeuna tina kluster jeung ID pakait. Ieu naon urang bakal masihan ka Grafana.
pangladén wéb
Ayeuna terserah kana pangladén wéb. Hayu urang ngangkat mesin virtual biasa sareng Linux sareng ngonpigurasikeun Grafana sacara manual.
Hayu urang sambungkeun via ssh sareng pasang bungkusan anu diperyogikeun.
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
Saatos éta, hayu urang ngajalankeun Grafana handapeun systemctl sareng pasang plugin pikeun damel sareng ClickHouse (enya, éta henteu disayogikeun dina pakét dasar).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
Éta éta, saatos éta kalayan paréntah anu sederhana
sudo service grafana-server start
urang bakal ngamimitian web server. Ayeuna anjeun tiasa ngalebetkeun alamat IP éksternal tina mesin virtual dina browser, tangtukeun port 3000 sareng ningali UI Grafana anu éndah.
Tapi entong rurusuhan, sateuacan nyetél Grafana, anjeun kedah émut nyarioskeun éta jalur ka MySQL pikeun nyimpen setélan di dinya.
Sakabéh konfigurasi pangladén wéb Grafana aya dina file /etc/grafana/grafana.ini
. Garis anu diperyogikeun sapertos kieu:
;url =
Kami nyetél host kana klaster MySQL. Berkas anu sami ngandung login sareng kecap akses pikeun ngakses Grafana dina gambar di luhur, anu sacara standar duanana sami admin
.
Anjeun tiasa nganggo paréntah 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
Waktosna pikeun ngamimitian deui pangladén wéb!
sudo service grafana-server restart
Ayeuna di Grafana UI urang bakal nangtukeun ClickHouse salaku DataSource.
Kuring tiasa ngahontal konfigurasi anu tiasa dianggo sareng setélan ieu:
Kuring dieusian salaku URL https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
Sadayana! Kami ngagaduhan hiji mesin virtual anu tiasa dianggo sareng pangladén wéb anu nyambung ka CH sareng MySQL. Anjeun parantos tiasa unggah set data ka ClickHouse sareng ngawangun dasbor. Nanging, kami henteu acan ngahontal tujuan kami sareng henteu nyebarkeun infrastruktur anu lengkep.
Packer
Yandex.Cloud ngamungkinkeun anjeun nyiptakeun gambar disk tina mesin virtual anu tos aya, sareng dina dasarna - sajumlah mesin anu sami sareng anu sanés. Ieu persis naon urang bakal ngagunakeun. Pikeun merenah ngumpul gambar, nyandak alat
File json kami bakal diwangun ku dua blok: pembina sareng provisioner. Blok kahiji ngajelaskeun parameter gambar sorangan salaku éntitas, jeung blok kadua ngajelaskeun parentah pikeun ngeusian eta kalawan eusi diperlukeun.
tukang
{
"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"
}
],
...
}
Dina témplat ieu, anjeun kedah nyetél identifier tina bagian dina awan dimana anjeun badé nyiptakeun gambar, ogé jalur ka file kalayan konci tina akun jasa anu sateuacana didamel dina bagian ieu. Anjeun tiasa maca langkung seueur ngeunaan nyiptakeun akun jasa sareng konci dina bentuk file dina bagian anu aya
Konfigurasi ieu nyebutkeun yén gambar disk bakal diwangun dumasar kana platform nu ubuntu-1804-lts
, disimpen dina bagian pamaké luyu dina kulawarga gambar GRAFANA
handapeun nami grafana-{{timestamp}}
.
Provisioners
Ayeuna sumping bagian anu langkung narik tina konfigurasi. Bakal ngajelaskeun runtuyan lampah nu bakal perlu dipigawé dina mesin virtual saméméh katirisan kaayaan na kana gambar disk.
{
...,
"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"
]
}
]
}
Di dieu sagala lampah dibagi kana 3 tahap. Dina tahap kahiji, skrip basajan dieksekusi anu nyiptakeun diréktori bantu.
prepare-ctg.sh:
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
Dina tahap salajengna, urang nempatkeun skrip dina diréktori ieu, anu kedah diluncurkeun langsung saatos ngamimitian mesin virtual. Skrip ieu bakal nempatkeun variabel pangguna anu kedah didaptarkeun dina konfigurasi Grafana sareng balikan deui pangladén wéb.
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
Saatos ieu, aya 3 hal anu kedah dilakukeun:
1) masang pakét
2) ngajalankeun Grafana handapeun systemctl tur masang plugin ClickHouse
3) nempatkeun skrip setup.sh dina antrian peluncuran langsung saatos ngaktipkeun mesin virtual.
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;
Ayeuna sadayana anu tetep nyaéta ngajalankeun Packer sareng kéngingkeun gambar kaluaran dina bagian anu ditangtukeun. Nalika nyieun mesin virtual, anjeun tiasa milih salaku boot disk sareng saatos peluncuran anjeun bakal nampi server wéb Grafana anu siap-siap.
Grup conto sareng pangimbang
Sakali kami ngagaduhan gambar disk anu ngamungkinkeun urang nyiptakeun seueur server wéb Grafana anu sami, urang tiasa nyiptakeun grup conto. Dina platform Yandex.Cloud, istilah ieu nujul kana union mesin virtual anu gaduh ciri anu sami. Nalika nyieun grup conto, prototipe sadaya mesin di grup ieu ngonpigurasi, lajeng ciri grup sorangan (contona, jumlah minimum jeung maksimum mesin aktip). Upami jumlah ayeuna henteu nyumponan kritéria ieu, grup instance nyalira bakal ngahapus mesin anu teu perlu atanapi nyiptakeun anu énggal dina gambarna nyalira.
Salaku bagian tina tugas urang, urang bakal nyieun grup conto tina web server anu bakal dihasilkeun tina gambar disk dijieun saméméhna.
Anu paling luar biasa nyaéta pangaturan grup conto terakhir. Grup target dina integrasi sareng Load Balancer bakal ngabantosan anjeun ngonpigurasikeun kasaimbangan L3 di luhur mesin virtual grup ieu ku ngaklik sababaraha tombol.
Nalika nyetél kasaimbangan, kuring ngalaksanakeun dua poin penting:
- Kuring nyieun balancer nu narima lalulintas pamaké on port 80 sarta alihan ka port 3000 tina mesin virtual, persis dimana Grafana hirup.
- Kuring nyetél mariksa viability mesin ku ping aranjeunna ka port 3000.
Ringkesan mini
Tungtungna, kami tiasa sacara manual nyebarkeun infrastruktur aplikasi anu dipikahoyong, sareng ayeuna kami ngagaduhan jasa Grafana anu tahan banting. Anjeun ngan ukur kedah terang alamat IP tina balancer salaku titik éntri kana aplikasi sareng host klaster ClickHouse pikeun ngamuat set data kana éta.
Ieu bakal sigana kawas meunangna? Enya, meunangna. Tapi masih aya anu ngabingungkeun kuring. Sakabéh prosés di luhur merlukeun loba léngkah manual tur teu scalable pisan; Abdi hoyong ngajadikeun otomatis eta lamun mungkin. Ieu naon bagian salajengna bakal devoted ka.
Integrasi Terraform
Urang deui bakal ngagunakeun alat ti HashiCorp disebut
Sadaya karya sareng Terraform asalna pikeun nyerat file konfigurasi (*.tf
) jeung kreasi infrastruktur dumasar kana eta.
Variabel
Di awal file, urang bakal ngalebetkeun variabel anu nangtukeun dimana sareng kumaha infrastruktur masa depan bakal disebarkeun.
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>"
}
Sakabéh prosés panyebaran aplikasi bakal turun pikeun ngawangun gambar disk sareng netepkeun variabel ieu. Hayu atuh ngajelaskeun naon tanggung jawab aranjeunna:
oauth_token - token pikeun ngakses awan. Bisa diala ku
cloud_id - identifier awan dimana urang bakal nyebarkeun aplikasi
folder_id - identifier bagian dimana urang bakal nyebarkeun aplikasi
service_account_id - identifier akun jasa dina bagian pakait tina awan.
id_gambar - identifier tina gambar disk diala maké Packer
ngaran pamaké и password — ngaran pamaké sarta sandi pikeun ngakses duanana database jeung server wéb Grafana
dbname - ngaran database jero CH na MySQL klaster
public_key_path - jalur kana file nganggo konci ssh umum anjeun, anu anjeun tiasa dianggo pikeun nyambungkeun nami ubuntu
ka mesin virtual sareng server wéb
Setélan panyadia
Ayeuna anjeun kedah ngonpigurasikeun panyadia Terraform - dina kasus kami, Yandex:
provider "yandex" {
token = var.oauth_token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-a"
}
Anjeun bakal aya bewara yén di dieu kami nganggo variabel anu didefinisikeun di luhur.
Jaringan sareng klaster
Ayeuna urang bakal nyiptakeun jaringan dimana unsur-unsur infrastruktur urang bakal komunikasi, tilu subnet (hiji di unggal daérah) sareng ningkatkeun klaster CH sareng 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
}
}
Sakumaha anjeun tiasa tingali, unggal dua klaster dijieun rada lepat-toleran ku ayana dina tilu zona kasadiaan.
Pangladén wéb
Ieu bakal sigana nu urang bisa neruskeun dina sumanget sarua, tapi kuring lumpat kana kasusah. Sateuacan ieu, kuring mimiti ngangkat klaster MySQL sareng ngan saatos éta, terang ID na, kuring ngumpulkeun gambar disk sareng konfigurasi anu diperyogikeun, dimana kuring netepkeun host kana kluster. Tapi ayeuna urang henteu terang ID klaster sateuacan ngaluncurkeun Terraform, kalebet dina waktos ngawangun gambar. Ku alatan éta, kuring kungsi Resort ka handap
Ngagunakeun jasa metadata Amazon urang, urang bakal lulus sababaraha parameter ka mesin virtual, nu eta bakal nampa tur prosés. Urang peryogi mesin pikeun muka metadata tukangeun host kluster MySQL sareng sandi-sandi, anu ditunjuk ku pangguna dina file Terraform, saatos ngamimitian. Hayu urang ngarobah eusi file rada setup.sh
, anu dijalankeun nalika mesin virtual dihurungkeun.
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
Grup Intance na balancer
Sanggeus ngawangun deui gambar disk anyar, tungtungna urang tiasa nambihan file kami pikeun Terraform.
Hayu urang nunjukkeun yén urang hoyong nganggo gambar disk anu tos aya:
data "yandex_compute_image" "grafana_image" {
image_id = var.image_id
}
Ayeuna hayu urang ngadamel grup conto:
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"
}
}
Éta patut nengetan kumaha urang ngalebetkeun kana metadata cluster_uri
, username
и password
. Ieu mangrupikeun mesin virtual anu bakal kaluar nalika ngamimitian sareng nempatkeun dina konfigurasi Grafana.
Terserah panimbang.
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
}
}
}
}
Gula saeutik
Tinggal saeutik. Saatos prasarana disebarkeun, anjeun kedah angkat ka UI Grafana sareng nambihan klaster CH sacara manual (ID anu masih kedah dicandak) salaku Sumber Data. Tapi Terraform terang ID klaster. Hayu urang mercayakeun anjeunna mawa masalah ka fruition.
Hayu urang tambahkeun panyadia anyar - Grafana, sareng masihan alamat IP pangimbangna salaku host. Sadaya parobihan anu dilakukeun ku Terraform dina mesin dimana pangimbangna ditangtukeun bakal tumbuh dina MySQL, sareng ku kituna dina sadaya mesin anu sanés.
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"
}
Hayu urang nyisiran rambut urang
Hayu urang mintonkeun alamat IP balancer jeung host tina klaster ClickHouse
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"
}
Bisa lumpat
Sadayana! Berkas konfigurasi kami parantos siap sareng urang tiasa, ku netepkeun variabel, nyarioskeun Terraform pikeun ngangkat sadayana anu dijelaskeun di luhur. Sakabeh proses nyandak kuring ngeunaan 15 menit.
Dina tungtungna anjeun tiasa ningali pesen anu saé:
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
Sareng dina awan, unsur-unsur infrastruktur anu diangkat bakal katingali:
pikeun nyimpulkeun
Ayeuna, nganggo Grafana sabagé conto, masing-masing anjeun tiasa nyebarkeun aplikasi sareng arsitéktur awan anu lega dina platform Yandex.Cloud. Alat anu mantuan ti HashiCorp sapertos Packer sareng Terraform tiasa ngabantosan anjeun dina ieu. Abdi ngarepkeun aya anu mendakan tulisan ieu mangpaat :)
PS Di handap ieu kuring bakal ngagantelkeun tautan kana gudang dimana anjeun tiasa mendakan resep anu siap-siap pikeun Packer sareng Terraform, fragmen anu kuring nyayogikeun dina tulisan ieu.
sumber: www.habr.com