Halo semua! Sebagai bagian dari tugas kuliah saya, saya meneliti kemampuan platform cloud domestik seperti
Apa yang ingin Anda terima?
Setelah meluncurkan mesin virtual dengan server web, Anda dapat membuka hostnya dan mendapatkan UI yang indah, menentukan database sebagai sumber untuk pekerjaan lebih lanjut, membuat dasbor dan grafik.
Versi dasar memiliki satu kelemahan signifikan - versi ini tidak toleran terhadap kesalahan sama sekali. Artinya, seluruh fungsionalitas aplikasi bergantung pada kelangsungan satu mesin virtual. Jika menolak atau 10 orang membuka UI secara bersamaan, maka akan timbul masalah.
Masalah tersebut dapat diselesaikan secara sederhana: Anda hanya perlu... menggunakan banyak mesin virtual yang identik dengan server web dan menempatkannya di bawah penyeimbang L3. Tapi tidak semuanya begitu jelas di sini. Grafana menyimpan pengaturan pengguna (jalur ke database, dasbor, grafik, dll.) langsung di disk mesin virtualnya. Jadi, jika kami mengubah beberapa pengaturan di UI, perubahan ini hanya akan terlihat di mesin virtual yang dikirimkan penyeimbang kepada kami. Hal ini akan menyebabkan pengaturan aplikasi kita tidak konsisten, menyebabkan masalah saat peluncuran dan penggunaan.
Di sini database lain akan membantu, misalnya MySQL atau yang setara. Kami memberi tahu Grafana bahwa dia harus menyimpan pengaturan pengguna di database “cadangan” ini. Setelah itu, cukup menentukan jalur ke database ini satu kali pada setiap mesin, dan mengedit semua pengaturan pengguna lainnya pada mesin virtual mana pun; pengaturan tersebut akan diperluas ke mesin virtual lainnya.
Berikut adalah diagram infrastruktur aplikasi akhir:
Mari belajar mengangkat dengan tangan kita
MySQL dan ClickHouse
Sebelum menerapkan aplikasi semacam itu hanya dengan mengklik sebuah tombol, penting untuk mempelajari cara menangani setiap komponennya dan mengintegrasikannya satu sama lain.
Di sini Yandex.Cloud akan membantu kami, yang menyediakan penyeimbang L3, ClickHouse dan MySQL sebagai layanan terkelola. Pengguna hanya perlu menentukan parameter dan menunggu hingga platform membuat semuanya berfungsi dengan baik.
Saya mendaftar, membuat cloud dan akun pembayaran. Setelah itu, saya pergi ke cloud dan mengatur cluster MySQL dan ClickHouse dengan pengaturan minimal. Saya menunggu sampai mereka menjadi aktif.
Anda juga harus ingat untuk membuat database di setiap cluster dan mengkonfigurasi akses ke sana menggunakan login dan kata sandi. Saya tidak akan menjelaskan secara detail di sini - semuanya cukup jelas di antarmuka.
Detail yang tidak jelas adalah bahwa database ini memiliki banyak host, yang memastikan toleransi kesalahannya. Namun, Grafana memerlukan satu host untuk setiap database yang digunakannya. Membaca panjang c-<cluster_id>.rw.mdb.yandexcloud.net
dipetakan ke host master cluster yang aktif saat ini dengan ID yang sesuai. Hal inilah yang akan kami berikan kepada Grafana.
server web
Sekarang terserah server web. Mari kita tingkatkan mesin virtual biasa dengan Linux dan konfigurasikan Grafana secara manual di dalamnya.
Mari terhubung melalui ssh dan instal paket yang diperlukan.
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
Setelah itu, jalankan Grafana di bawah systemctl dan instal plugin untuk bekerja dengan ClickHouse (ya, itu tidak disertakan dalam paket dasar).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
Itu saja, setelah itu dengan perintah sederhana
sudo service grafana-server start
kita akan memulai server web. Sekarang Anda dapat memasukkan alamat IP eksternal mesin virtual di browser, menentukan port 3000 dan melihat Grafana UI yang indah.
Namun jangan terburu-buru, sebelum mengatur Grafana, Anda harus ingat untuk memberitahukan jalur ke MySQL untuk menyimpan pengaturan di sana.
Seluruh konfigurasi web server Grafana ada di dalam file /etc/grafana/grafana.ini
. Baris yang diperlukan terlihat seperti ini:
;url =
Kami mengatur host ke cluster MySQL. File yang sama berisi login dan password untuk mengakses Grafana pada gambar di atas, yang secara default keduanya sama admin
.
Anda dapat menggunakan perintah 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
Saatnya me-restart server web!
sudo service grafana-server restart
Sekarang di Grafana UI kita akan menentukan ClickHouse sebagai DataSource.
Saya dapat mencapai konfigurasi yang berfungsi dengan pengaturan berikut:
Saya tentukan sebagai URL https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
Semua! Kami memiliki satu mesin virtual yang berfungsi dengan server web yang terhubung ke CH dan MySQL. Anda sudah dapat mengunggah kumpulan data ke ClickHouse dan membuat dasbor. Namun, kami belum mencapai tujuan kami dan belum mengerahkan infrastruktur yang lengkap.
Packer
Yandex.Cloud memungkinkan Anda membuat image disk dari mesin virtual yang ada, dan berdasarkan itu - sejumlah mesin yang identik satu sama lain. Inilah yang akan kami gunakan. Untuk merakit gambar dengan mudah, ambil alatnya
File json kami akan terdiri dari dua blok: pembangun dan penyedia. Blok pertama menjelaskan parameter gambar itu sendiri sebagai suatu entitas, dan blok kedua menjelaskan instruksi untuk mengisinya dengan konten yang diperlukan.
Pembangun
{
"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"
}
],
...
}
Dalam templat ini, Anda perlu mengatur pengidentifikasi bagian di cloud tempat Anda ingin membuat gambar, serta jalur ke file dengan kunci dari akun layanan yang sebelumnya dibuat di bagian ini. Anda dapat membaca lebih lanjut tentang membuat akun layanan dan kunci dalam bentuk file di bagian terkait
Konfigurasi ini menyatakan bahwa image disk akan dibuat berdasarkan platform ubuntu-1804-lts
, ditempatkan di bagian pengguna yang sesuai dalam keluarga gambar GRAFANA
atas nama grafana-{{timestamp}}
.
Penyedia
Sekarang sampai pada bagian konfigurasi yang lebih menarik. Ini akan menjelaskan urutan tindakan yang perlu dilakukan pada mesin virtual sebelum membekukan statusnya menjadi image 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"
]
}
]
}
Disini semua tindakan dibagi menjadi 3 tahap. Pada tahap pertama, skrip sederhana dijalankan yang membuat direktori tambahan.
persiapkan-ctg.sh:
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
Pada tahap selanjutnya, kami menempatkan skrip di direktori ini, yang harus diluncurkan segera setelah memulai mesin virtual. Skrip ini akan memasukkan variabel pengguna yang perlu didaftarkan ke konfigurasi Grafana dan memulai ulang server web.
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
Setelah ini ada 3 hal yang harus dilakukan:
1) instal paket
2) jalankan Grafana di bawah systemctl dan instal plugin ClickHouse
3) letakkan skrip setup.sh di antrian peluncuran segera setelah menyalakan mesin virtual.
instal-paket.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
jalankan-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;
Sekarang yang tersisa hanyalah menjalankan Packer dan menempatkan gambar keluaran di bagian yang ditentukan. Saat membuat mesin virtual, Anda dapat memilihnya sebagai disk boot dan setelah peluncuran Anda akan menerima server web Grafana yang sudah jadi.
Grup instance dan penyeimbang
Setelah kita memiliki image disk yang memungkinkan kita membuat banyak server web Grafana yang identik, kita dapat membuat grup instance. Pada platform Yandex.Cloud, istilah ini mengacu pada gabungan mesin virtual yang memiliki karakteristik yang sama. Saat membuat grup instance, prototipe semua mesin dalam grup ini dikonfigurasi, dan kemudian karakteristik grup itu sendiri (misalnya, jumlah minimum dan maksimum mesin aktif). Jika nomor saat ini tidak memenuhi kriteria ini, maka grup instance akan menghapus mesin yang tidak diperlukan atau membuat mesin baru sesuai gambarnya sendiri.
Sebagai bagian dari tugas kita, kita akan membuat grup instance server web yang akan dihasilkan dari image disk yang dibuat sebelumnya.
Apa yang benar-benar luar biasa adalah pengaturan grup terakhir. Grup target yang terintegrasi dengan Load Balancer akan membantu Anda mengonfigurasi penyeimbang L3 di atas mesin virtual grup ini dengan mengklik beberapa tombol.
Saat menyiapkan penyeimbang, saya menerapkan dua poin penting:
- Saya membuat penyeimbang menerima lalu lintas pengguna pada port 80 dan mengarahkannya ke port 3000 mesin virtual, tepatnya tempat tinggal Grafana.
- Saya mengatur pemeriksaan kelayakan mesin dengan melakukan ping ke port 3000.
Ringkasan kecil
Terakhir, kami dapat menerapkan infrastruktur aplikasi yang diinginkan secara manual, dan kini kami memiliki layanan Grafana yang sangat tangguh. Anda hanya perlu mengetahui alamat IP penyeimbang sebagai titik masuk ke aplikasi dan host cluster ClickHouse untuk memuat dataset ke dalamnya.
Tampaknya seperti sebuah kemenangan? Ya, kemenangan. Tapi ada sesuatu yang masih membuatku bingung. Keseluruhan proses di atas memerlukan banyak langkah manual dan tidak dapat diskalakan sama sekali; Saya ingin mengotomatiskannya jika memungkinkan. Bagian selanjutnya akan membahas hal ini.
Integrasi terraform
Kami akan kembali menggunakan alat dari HashiCorp yang disebut
Semua pekerjaan dengan Terraform dimulai dengan menulis file konfigurasi (*.tf
) dan penciptaan infrastruktur berdasarkan itu.
Variabel
Di awal file, kami akan menyertakan variabel yang menentukan di mana dan bagaimana infrastruktur masa depan akan diterapkan.
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>"
}
Seluruh proses penerapan aplikasi akan mengarah pada pembuatan image disk dan pengaturan variabel-variabel ini. Izinkan saya menjelaskan apa tanggung jawab mereka:
oauth_token — token untuk mengakses cloud. Dapat diperoleh dengan
cloud_id — pengidentifikasi cloud tempat kami akan menyebarkan aplikasi
folder_id — pengidentifikasi bagian tempat kami akan menyebarkan aplikasi
id_akun_layanan — pengidentifikasi akun layanan di bagian cloud yang sesuai.
gambar_id — pengidentifikasi gambar disk yang diperoleh menggunakan Packer
nama pengguna и kata sandi — nama pengguna dan kata sandi untuk mengakses database dan server web Grafana
nama db — nama database di dalam cluster CH dan MySQL
jalur_kunci_publik — jalur ke file dengan kunci ssh publik Anda, yang dapat Anda gunakan untuk terhubung dengan nama tersebut ubuntu
ke mesin virtual dengan server web
Pengaturan penyedia
Sekarang Anda perlu mengonfigurasi penyedia Terraform - dalam kasus kami, Yandex:
provider "yandex" {
token = var.oauth_token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-a"
}
Anda akan melihat bahwa di sini kita menggunakan variabel yang ditentukan di atas.
Jaringan dan cluster
Sekarang kita akan membuat jaringan di mana elemen infrastruktur kita akan berkomunikasi, tiga subnet (satu di setiap wilayah) dan meningkatkan cluster CH dan 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
}
}
Seperti yang Anda lihat, masing-masing dari dua cluster dibuat cukup toleran terhadap kesalahan dengan ditempatkan di tiga zona ketersediaan.
Server web
Tampaknya kami dapat melanjutkan dengan semangat yang sama, tetapi saya menemui kesulitan. Sebelum ini, saya pertama kali membangun cluster MySQL dan hanya setelah itu, mengetahui ID-nya, saya mengumpulkan image disk dengan konfigurasi yang diperlukan, di mana saya menentukan host untuk cluster tersebut. Namun sekarang kami tidak mengetahui ID cluster sebelum meluncurkan Terraform, termasuk pada saat pembuatan image. Oleh karena itu, saya harus melakukan hal berikut
Dengan menggunakan layanan metadata Amazon, kami akan meneruskan beberapa parameter ke mesin virtual, yang akan diterima dan diproses. Kami memerlukan mesin untuk membuka metadata di belakang host cluster MySQL dan nama pengguna-kata sandi, yang ditentukan pengguna dalam file Terraform, setelah memulai. Mari kita ubah sedikit isi filenya setup.sh
, yang berjalan saat mesin virtual dihidupkan.
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 dan Penyeimbang
Setelah membuat ulang image disk baru, kami akhirnya dapat menambahkan file untuk Terraform.
Mari kita tunjukkan bahwa kita ingin menggunakan image disk yang ada:
data "yandex_compute_image" "grafana_image" {
image_id = var.image_id
}
Sekarang mari kita buat grup instance:
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"
}
}
Sebaiknya perhatikan cara kami meneruskannya ke metadata cluster_uri
, username
и password
. Ini adalah mesin virtual yang akan dikeluarkan saat startup dan dimasukkan ke dalam konfigurasi Grafana.
Terserah penyeimbang.
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
}
}
}
}
Sedikit gula
Hanya tersisa sedikit. Setelah infrastruktur diterapkan, Anda harus membuka Grafana UI dan secara manual menambahkan cluster CH (yang ID-nya masih perlu diperoleh) sebagai Sumber Data. Tapi Terraform mengetahui ID cluster. Mari kita percayakan padanya untuk menyelesaikan masalah ini.
Mari tambahkan penyedia baru - Grafana, dan berikan alamat IP penyeimbang sebagai host. Semua perubahan yang dilakukan Terraform pada mesin yang ditentukan oleh penyeimbangnya akan berkembang di MySQL, dan juga di semua mesin lainnya.
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"
}
Ayo sisir rambut kita
Mari kita tampilkan alamat IP penyeimbang dan host cluster 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"
}
Dapat berlari
Semua! File konfigurasi kita sudah siap dan kita dapat, dengan mengatur variabel, memberitahu Terraform untuk memunculkan semua yang kita jelaskan di atas. Seluruh proses memakan waktu sekitar 15 menit.
Pada akhirnya Anda dapat melihat pesan yang indah:
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
Dan di cloud, elemen infrastruktur yang ditingkatkan akan terlihat:
Menyimpulkan
Sekarang, dengan menggunakan Grafana sebagai contoh, Anda masing-masing dapat menerapkan aplikasi dengan arsitektur cloud yang luas di platform Yandex.Cloud. Alat bermanfaat dari HashiCorp seperti Packer dan Terraform dapat membantu Anda dalam hal ini. Saya harap seseorang menemukan artikel ini bermanfaat :)
PS Di bawah ini saya akan melampirkan tautan ke repositori tempat Anda dapat menemukan resep siap pakai untuk Packer dan Terraform, potongannya saya sediakan di artikel ini.
Sumber: www.habr.com