Kumusta tanan! Isip kabahin sa akong kurso nga trabaho, nagsiksik ko sa mga kapabilidad sa maong domestic cloud platform sama sa
Unsay gusto nimo madawat?
Pagkahuman sa paglansad sa usa ka virtual nga makina nga adunay usa ka web server, mahimo ka moadto sa host niini ug makakuha usa ka matahum nga UI, ipiho ang mga database ingon mga gigikanan alang sa dugang nga trabaho, paghimo mga dashboard ug mga graph.
Ang sukaranan nga bersyon adunay usa ka hinungdanon nga disbentaha - dili kini matugoton sa sayup. Sa ato pa, ang tibuuk nga pag-andar sa aplikasyon nagdepende sa pagkaayo sa usa ka virtual machine. Kung kini magdumili o 10 ka tawo ang magbukas sa UI sa parehas nga oras, unya ang mga problema motungha.
Mahimo kini nga masulbad sa yano: kinahanglan nimo nga ... mag-deploy og daghang parehas nga virtual machine nga adunay usa ka web server ug ibutang kini sa ilawom sa usa ka L3 balancer. Apan dili ang tanan klaro kaayo dinhi. Gitipigan sa Grafana ang mga setting sa gumagamit (mga agianan padulong sa mga database, dashboard, graph, ug uban pa) direkta sa disk sa virtual nga makina niini. Busa, kung usbon namo ang pipila ka mga setting sa UI, kini nga mga pagbag-o makita lamang sa virtual machine diin gipadala kami sa balancer. Motultol kini sa dili managsama nga mga setting alang sa among aplikasyon, hinungdan sa mga problema sa paglansad ug paggamit.
Dinhi ang laing database moabut aron sa pagluwas, pananglitan, ang MySQL o ang katumbas niini. Gisultihan namon si Grafana nga kinahanglan niyang tipigan ang mga setting sa gumagamit sa kini nga "luwas" nga database. Pagkahuman, igo na nga ipiho ang agianan sa kini nga database kausa sa matag makina, ug i-edit ang tanan nga uban pang mga setting sa gumagamit sa bisan unsang virtual nga makina; ipadayon kini sa uban.
Ania ang usa ka diagram sa katapusang imprastraktura sa aplikasyon:
Magkat-on ta sa pagbayaw gamit ang atong mga kamot
MySQL ug ClickHouse
Sa wala pa i-deploy ang ingon nga aplikasyon sa pag-klik sa usa ka buton, kinahanglan nga mahibal-an kung giunsa pagdumala ang matag usa sa mga sangkap niini ug i-integrate kini sa usag usa.
Dinhi makatabang kanamo ang Yandex.Cloud, nga naghatag mga L3 balancers, ClickHouse ug MySQL isip mga pagdumala nga serbisyo. Ang user kinahanglan lamang nga ipiho ang mga parameter ug maghulat hangtud nga ang plataporma magdala sa tanan ngadto sa working order.
Nagparehistro ko, naghimo ug cloud ug account sa pagbayad. Pagkahuman niana, miadto ko sa panganod ug nag-set up sa MySQL ug ClickHouse clusters nga adunay gamay nga setting. Naghulat ko hangtod nga nahimo silang aktibo.
Kinahanglan usab nimong hinumdoman nga maghimo usa ka database sa matag cluster ug i-configure ang pag-access niini gamit ang usa ka login ug password. Dili ko maghisgot sa mga detalye dinhi - ang tanan klaro kaayo sa interface.
Ang dili klaro nga detalye mao nga kini nga mga database adunay daghang mga host, nga nagsiguro sa ilang pagtugot sa sayup. Bisan pa, ang Grafana nanginahanglan eksakto usa ka host alang sa matag database nga gigamit niini. Taas nga pagbasa c-<cluster_id>.rw.mdb.yandexcloud.net
gimapa sa kasamtangan nga aktibong master host sa cluster nga adunay katugbang nga ID. Kini ang among ihatag kang Grafana.
web server
Karon naa na sa web server. Atong ipataas ang usa ka regular nga virtual machine nga adunay Linux ug mano-mano nga i-configure ang Grafana niini.
Magkonektar kita pinaagi sa ssh ug i-install ang gikinahanglan nga mga pakete.
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
Pagkahuman niana, padaganon nato ang Grafana sa ilawom sa systemctl ug i-install ang plugin alang sa pagtrabaho kauban ang ClickHouse (oo, wala kini gihatag sa sukaranan nga pakete).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
Mao na, pagkahuman sa usa ka yano nga mando
sudo service grafana-server start
atong sugdan ang web server. Karon mahimo nimong isulod ang eksternal nga IP address sa virtual machine sa browser, ipiho ang port 3000 ug tan-awa ang matahum nga UI sa graphic.
Apan ayaw pagdali, sa wala pa i-set up ang Grafana, kinahanglan nimong hinumdoman nga isulti kini sa agianan sa MySQL aron matipigan ang mga setting didto.
Ang tibuok nga configuration sa Grafana web server anaa sa file /etc/grafana/grafana.ini
. Ang gikinahanglan nga linya ingon niini:
;url =
Gibutang namo ang host sa MySQL cluster. Ang parehas nga file naglangkob sa login ug password alang sa pag-access sa Grafana sa litrato sa ibabaw, nga sa default parehas nga parehas admin
.
Mahimo nimong gamiton ang sed nga mga sugo:
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
Panahon na aron i-restart ang web server!
sudo service grafana-server restart
Karon sa Grafana UI atong itakda ang ClickHouse isip DataSource.
Nakab-ot nako ang usa ka pag-configure sa pagtrabaho nga adunay mga mosunud nga setting:
Gipiho nako ang URL https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
Tanan! Kami adunay usa nga nagtrabaho nga virtual machine nga adunay usa ka web server nga konektado sa CH ug MySQL. Mahimo nimong i-upload ang dataset sa ClickHouse ug magtukod og mga dashboard. Bisan pa, wala pa namon makab-ot ang among katuyoan ug wala pa ma-deploy ang usa ka hingpit nga imprastraktura.
Packer
Gitugotan ka sa Yandex.Cloud nga maghimo usa ka imahe sa disk sa usa ka naglungtad nga virtual nga makina, ug sa sukaranan niini - bisan unsang gidaghanon sa mga makina nga managsama sa usag usa. Mao gyud ni ang atong gamiton. Aron dali nga ma-assemble ang imahe, kuhaa ang himan
Ang among json file maglangkob sa duha ka mga bloke: mga tigtukod ug tighatag. Ang una nga block naghulagway sa mga parameter sa imahe mismo isip usa ka entidad, ug ang ikaduha nga block naghulagway sa mga instruksyon sa pagpuno niini sa gikinahanglan nga sulod.
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"
}
],
...
}
Sa kini nga template, kinahanglan nimo nga itakda ang identifier sa seksyon sa panganod diin gusto nimo nga himuon ang imahe, ingon man ang agianan sa file nga adunay mga yawe gikan sa account sa serbisyo nga gihimo kaniadto sa kini nga seksyon. Makabasa ka og dugang mahitungod sa paghimo og mga account sa serbisyo ug mga yawe sa porma sa usa ka file sa katugbang nga seksyon
Kini nga pagsumpo nag-ingon nga ang imahe sa disk pagatukuron base sa plataporma ubuntu-1804-lts
, gibutang sa angay nga seksyon sa tiggamit sa pamilya sa imahe GRAFANA
sa ilalum sa ngalan grafana-{{timestamp}}
.
Mga tigtagana
Karon moabut ang labi ka makapaikag nga bahin sa pag-configure. Ihulagway niini ang han-ay sa mga aksyon nga kinahanglang ipahigayon sa virtual machine sa dili pa i-freeze ang estado niini ngadto sa disk image.
{
...,
"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"
]
}
]
}
Dinhi ang tanan nga mga aksyon gibahin sa 3 nga mga yugto. Sa una nga yugto, usa ka yano nga script ang gipatuman nga nagmugna usa ka auxiliary nga direktoryo.
prepare-ctg.sh:
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
Sa sunod nga yugto, nagbutang kami usa ka script sa kini nga direktoryo, nga kinahanglan nga ilunsad dayon pagkahuman sa pagsugod sa virtual machine. Kini nga script magbutang sa user variables nga kinahanglang irehistro sa Grafana config ug i-restart ang web server.
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
Pagkahuman niini adunay 3 ka butang nga nahabilin nga buhaton:
1) i-install ang mga pakete
2) padagana ang Grafana ubos sa systemctl ug i-install ang ClickHouse plugin
3) ibutang ang setup.sh script sa launch queue diha-diha dayon human ma-on ang virtual machine.
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;
Karon ang nahabilin mao ang pagpadagan sa Packer ug ibutang ang imahe sa output sa gitakda nga seksyon. Kung maghimo usa ka virtual nga makina, mahimo nimo kini pilion ingon usa ka boot disk ug pagkahuman sa paglansad makadawat ka usa ka andam nga gihimo nga web server sa Grafana.
Instance group ug balancer
Sa higayon nga kita adunay usa ka disk image nga nagtugot kanato sa paghimo sa daghan nga managsama nga Grafana web server, makahimo kita og usa ka grupo sa pananglitan. Sa Yandex.Cloud nga plataporma, kini nga termino nagtumong sa panaghiusa sa mga virtual machine nga adunay parehas nga mga kinaiya. Kung maghimo usa ka grupo sa pananglitan, ang prototype sa tanan nga mga makina sa kini nga grupo gi-configure, ug dayon ang mga kinaiya sa grupo mismo (pananglitan, ang minimum ug labing kadaghan nga mga aktibo nga makina). Kung ang karon nga numero wala makatagbo sa kini nga mga pamatasan, nan ang grupo sa pananglitan mismo magtangtang sa wala kinahanglana nga mga makina o maghimo mga bag-o sa kaugalingon nga imahe.
Isip kabahin sa among buluhaton, maghimo kami og usa ka grupo sa mga web server nga mamugna gikan sa nabuhat kaniadto nga disk image.
Ang tinuud nga talagsaon mao ang katapusan nga pag-setup sa grupo. Ang target nga grupo sa integrasyon sa Load Balancer makatabang kanimo sa pag-configure sa usa ka L3 balancer sa ibabaw sa mga virtual machine niini nga grupo pinaagi sa pag-klik sa pipila ka mga buton.
Sa pag-set up sa balancer, gipatuman nako ang duha ka importanteng punto:
- Akong gihimo ang balancer nga modawat sa trapiko sa user sa port 80 ug i-redirect kini ngadto sa port 3000 sa mga virtual machine, diin mismo si Grafana nagpuyo.
- Gipahimutang nako ang pagsusi sa posibilidad sa mga makina pinaagi sa pag-ping niini sa port 3000.
Mini nga summary
Sa katapusan, nakahimo kami sa mano-mano nga pag-deploy sa gitinguha nga imprastraktura sa aplikasyon, ug karon kami adunay usa ka labi ka lig-on nga serbisyo sa Grafana. Kinahanglan lang nimo mahibal-an ang IP address sa balancer isip entry point sa aplikasyon ug ang host sa ClickHouse cluster aron ma-load ang dataset ngadto niini.
Morag kadaugan? Oo, kadaugan. Pero naay naglibog nako. Ang tibuuk nga proseso sa ibabaw nanginahanglan daghang manwal nga mga lakang ug dili mabag-o; Gusto nako nga i-automate kini kung mahimo. Mao kini ang igahin sa sunod nga seksyon.
Paghiusa sa Terraform
Maggamit na usab kami usa ka himan gikan sa HashiCorp nga gitawag
Ang tanan nga trabaho sa Terraform moabut sa pagsulat sa usa ka configuration file (*.tf
) ug ang paghimo sa imprastraktura nga gibase niini.
Mga variable
Sa sinugdanan pa lang sa file, iapil namo ang mga variables nga magdeterminar kung asa ug unsaon pag-deploy ang umaabot nga imprastraktura.
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>"
}
Ang tibuuk nga proseso sa pag-deploy sa aplikasyon moabut sa paghimo sa usa ka imahe sa disk ug pag-set niini nga mga variable. Pasabta ko kung unsa ang ilang responsibilidad:
oauth_token β usa ka timaan sa pag-access sa panganod. Mahimong makuha sa
cloud_id β cloud identifier diin among i-deploy ang aplikasyon
folder_id - identifier sa seksyon diin among i-deploy ang aplikasyon
service_account_id β service account identifier sa katugbang nga seksyon sa panganod.
image_id - identifier sa disk image nga nakuha gamit ang Packer
username ΠΈ password β username ug password aron ma-access ang duha ka database ug ang Grafana web server
dbname - ngalan sa database sulod sa CH ug MySQL clusters
public_key_path - dalan sa file gamit ang imong public ssh key, nga imong magamit aron makonektar ubos sa ngalan ubuntu
sa mga virtual machine nga adunay mga web server
Setup sa provider
Karon kinahanglan nimo nga i-configure ang Terraform provider - sa among kaso, Yandex:
provider "yandex" {
token = var.oauth_token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-a"
}
Mamatikdan nimo nga dinhi gigamit namon ang mga variable nga gipasabut sa ibabaw.
Network ug mga cluster
Karon maghimo kami usa ka network diin ang mga elemento sa among imprastraktura makigsulti, tulo nga mga subnet (usa sa matag rehiyon) ug ipataas ang mga cluster sa CH ug 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
}
}
Sama sa imong nakita, ang matag usa sa duha nga mga pungpong gihimo nga dili matugoton sa sayup pinaagi sa pagbutang sa tulo nga mga lugar nga magamit.
Mga web server
Morag makapadayon mi sa samang espiritu, apan naglisod ko. Sa wala pa kini, una nakong gipataas ang usa ka MySQL cluster ug pagkahuman lamang niana, nahibal-an ang ID niini, nakolekta nako ang usa ka imahe sa disk nga adunay gikinahanglan nga pagsumpo, diin akong gipiho ang host sa cluster. Apan karon wala kami nahibal-an ang cluster ID sa wala pa ilunsad ang Terraform, lakip ang panahon sa pagtukod sa imahe. Busa, kinahanglan kong modangop sa mosunod
Gamit ang serbisyo sa metadata sa Amazon, ipasa namo ang pipila ka mga parameter sa virtual machine, nga dawaton ug iproseso niini. Kinahanglan namon ang makina nga moadto sa metadata sa luyo sa MySQL cluster host ug username-password, nga gipiho sa user sa Terraform file, pagkahuman nagsugod. Usbon nato gamay ang sulod sa file setup.sh
, nga modagan kon ang virtual nga makina gi-on.
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 group ug balancer
Sa pagkatukod pag-usab og bag-ong disk image, mahimo namong idugang ang among file para sa Terraform.
Atong ipakita nga gusto namong gamiton ang kasamtangan nga disk image:
data "yandex_compute_image" "grafana_image" {
image_id = var.image_id
}
Karon maghimo kita usa ka grupo sa pananglitan:
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"
}
}
Angayan nga hatagan pagtagad kung giunsa namon kini gipasa sa metadata cluster_uri
, username
ΠΈ password
. Kini ang makuha sa virtual machine sa pagsugod ug ibutang sa Grafana config.
Bahala na sa 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
}
}
}
}
Usa ka gamay nga asukal
Gamay na lang ang nahabilin. Human ma-deploy ang imprastraktura, kinahanglan ka nga moadto sa Grafana UI ug mano-mano nga idugang ang CH cluster (ang ID nga kinahanglan pa makuha) isip Tinubdan sa Data. Apan nahibal-an ni Terraform ang cluster ID. Ato siyang itugyan sa pagpalampos sa maong butang.
Magdugang ta og bag-ong provider - Grafana, ug ihatag kaniya ang IP address sa balancer isip host. Ang tanan nga mga pagbag-o nga gihimo sa Terraform sa makina diin gitino sa balancer niini nga motubo sa MySQL, ug busa sa tanan nga ubang mga makina.
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"
}
Magsuklay ta sa atong buhok
Atong ipakita ang balancer IP address ug ang host sa ClickHouse cluster
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"
}
Makadagan ka
Tanan! Andam na ang among configuration file ug mahimo namo, pinaagi sa pag-set sa mga variable, sultihan ang Terraform nga ipataas ang tanan nga among gihulagway sa ibabaw. Ang tibuok proseso mikuha kanako ug mga 15 minutos.
Sa katapusan imong makita ang usa ka matahum nga mensahe:
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
Ug sa panganod, ang mga elemento sa gipataas nga imprastraktura makita:
Himoon naton ang mga resulta
Karon, gamit ang Grafana isip usa ka pananglitan, ang matag usa kaninyo maka-deploy og mga aplikasyon nga adunay lapad nga arkitektura sa panganod sa Yandex.Cloud nga plataporma. Makatabang nga mga himan gikan sa HashiCorp sama sa Packer ug Terraform makatabang kanimo niini. Nanghinaut ko nga adunay nakakaplag niini nga artikulo nga mapuslanon :)
PS Sa ubos akong i-attach ang usa ka link sa repository diin makit-an nimo ang andam nga mga resipe alang sa Packer ug Terraform, mga tipik nga akong gihatag niini nga artikulo.
Source: www.habr.com