سلام و ټولو ته! زما د کورس کار د یوې برخې په توګه، زه د داسې کورني بادل پلیټ فارم امکانات څیړم
تاسو څه ترلاسه کول غواړئ؟
د ویب سرور سره د مجازی ماشین پیل کولو وروسته، تاسو کولی شئ د هغې کوربه ته لاړ شئ او یو ښکلی UI ترلاسه کړئ، ډیټابیس د نورو کار لپاره د سرچینو په توګه مشخص کړئ، ډشبورډونه او ګرافونه جوړ کړئ.
اصلي نسخه یو مهم نیمګړتیا لري - دا په هیڅ ډول د غلطۍ زغم نه دی. دا دی، د غوښتنلیک ټول فعالیت د یو مجازی ماشین په وړتیا پورې اړه لري. که هغه انکار وکړي یا که 10 کسان په ورته وخت کې UI خلاص کړي ، نو ستونزې به رامینځته شي.
دوی په ساده ډول حل شوي: تاسو اړتیا لرئ ډیری ورته مجازی ماشینونه د ویب سرور سره ځای په ځای کړئ او د L3 بیلانس لاندې یې ځای په ځای کړئ. مګر دلته هرڅه دومره روښانه ندي. ګرافانا د کارونکي تنظیمات (د ډیټابیسونو ، ډشبورډونو ، ګرافیکونو او نورو ته لارې) په مستقیم ډول د خپل مجازی ماشین ډیسک کې ذخیره کوي. پدې توګه ، که تاسو په UI کې ځینې تنظیمات بدل کړئ ، نو دا بدلونونه به یوازې په مجازی ماشین کې ښکاره شي چیرې چې بیلانسر موږ ته لیږلی. دا به زموږ د غوښتنلیک لپاره متضاد تنظیمات رامینځته کړي ، د لانچ او کارولو ستونزې.
دلته یو بل ډیټابیس به د ژغورنې لپاره راشي، د بیلګې په توګه، MySQL یا د هغې مساوي. موږ ګرافانا ته وایو چې هغه باید په دې "اضافي" ډیټابیس کې د کارونکي تنظیمات ذخیره کړي. له هغې وروسته، دا به کافي وي چې دې ډیټابیس ته لاره په هر ماشین کې یو ځل مشخص کړئ، او په هر یو مجازی ماشین کې د کاروونکي نور ټول ترتیبات ایډیټ کړئ، دوی به په پاتې برخه کې وده وکړي.
دلته د وروستي غوښتنلیک زیربنا یو ډیاګرام دی:
د خپلو لاسونو پورته کول زده کړئ
MySQL او ClickHouse
مخکې له دې چې د تڼۍ په کلیک کولو سره دا ډول اپلیکیشن نصب کړئ، دا اړینه وه چې زده کړئ چې څنګه د هغې هرې برخې د لاسونو سره پورته کړئ او یو بل سره یوځای کړئ.
Yandex.Cloud به موږ سره دلته مرسته وکړي، کوم چې د L3 بیلانس، ClickHouse او MySQL د مدیریت خدماتو په توګه چمتو کوي. کارونکي یوازې اړتیا لري چې پیرامیټونه مشخص کړي او تر هغه پورې انتظار وکړئ چې پلیټ فارم هرڅه په کاري حالت کې راوړي.
ما راجستر کړ، د ځان لپاره بادل او د بلینګ حساب جوړ کړم. له هغې وروسته، زه بادل ته لاړم او د MySQL او ClickHouse کلسترونه یې د لږترلږه ترتیباتو سره پورته کړل. انتظار وکړئ تر هغه چې دوی فعال شي.
تاسو باید په یاد ولرئ چې په هر کلستر کې ډیټابیس رامینځته کړئ او د ننوتلو او پټنوم له لارې ورته لاسرسی تنظیم کړئ. زه به دلته توضیحاتو ته لاړ نه شم - هرڅه په انٹرفیس کې خورا څرګند دي.
غیر څرګند توضیحات دا وو چې دا ډیټابیسونه ډیری کوربه لري چې د دوی غلط زغم چمتو کوي. په هرصورت ، ګرافانا د هر ډیټابیس لپاره دقیقا یو کوربه ته اړتیا لري چې ورسره کار کوي. اوږده لوستل c-<cluster_id>.rw.mdb.yandexcloud.net
د اړونده ID سره اوسني فعال کلستر ماسټر کوربه ته نقشه. دا هغه څه دي چې موږ به ګرافانا ته ورکړو.
ویب سرور
اوس دا د ویب سرور پورې اړه لري. راځئ چې د لینکس سره یو منظم مجازی ماشین پورته کړو او په خپلو لاسونو یې ګرافانا تنظیم کړو.
راځئ چې د ssh له لارې وصل شو او اړین کڅوړې نصب کړو.
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
له هغې وروسته، موږ به Grafana د Systemctl لاندې پیل کړو او د ClickHouse سره د کار کولو لپاره پلگ ان نصب کړو (هو، دا په بنسټیز کڅوړه کې ندي چمتو شوي).
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo grafana-cli plugins install vertamedia-clickhouse-datasource
له هغې وروسته هرڅه د ساده قوماندې سره
sudo service grafana-server start
موږ به ویب سرور پیل کړو. اوس به دا ممکنه وي چې په براوزر کې د مجازی ماشین بهرني IP پتې کې موټر چل کړئ ، پورټ 3000 مشخص کړئ او ښکلی UI ګرافانا وګورئ.
مګر بیړه مه کوئ ، د ګرافانا تنظیم کولو دمخه ، تاسو باید هیر نکړئ چې مای ایس کیو ایل ته لاره مشخص کړئ ترڅو هلته تنظیمات ذخیره کړئ.
د ګرافانا ویب سرور ټول ترتیب په فایل کې دی /etc/grafana/grafana.ini
. اړین کرښه داسې ښکاري:
;url =
موږ کوربه د MySQL کلستر ته ښکاره کوو. ورته فایل په پورتني عکس کې ګرافانا ته د لاسرسي لپاره ننوت او پټنوم لري چې دواړه په ډیفالټ سره مساوي دي admin
.
تاسو کولی شئ د 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
دا د ویب سرور بیا پیلولو وخت دی!
sudo service grafana-server restart
اوس په Grafana UI کې، موږ به ClickHouse د ډاټا سرچینې په توګه مشخص کړو.
ما د لاندې ترتیباتو سره د کاري ترتیب ترلاسه کولو اداره وکړه:
ما د URL په توګه ورکړ https://c-<cluster_id>.rw.mdb.yandexcloud.net:8443
ټول! موږ یو کاري مجازی ماشین لرو چې د ویب سرور سره CH او MySQL سره وصل دی. تاسو کولی شئ دمخه ډیټاسیټ کلیک هاؤس ته اپلوډ کړئ او ډشبورډونه جوړ کړئ. په هرصورت، موږ لاهم خپل هدف ته نه یو رسیدلي او یو بشپړ زیربنا مو نه ده ځای پرځای کړې.
بسته
Yandex.Cloud تاسو ته اجازه درکوي د موجوده مجازی ماشین ډیسک عکس رامینځته کړئ ، او د دې پراساس تاسو کولی شئ څومره ورته ورته ماشینونه رامینځته کړئ څومره چې تاسو غواړئ. دا دقیقا هغه څه دي چې موږ به یې وکاروو. د انځور راټولولو لپاره، وسیله واخلئ
زموږ د json فایل به دوه بلاکونه ولري: جوړونکي او چمتو کونکي. لومړی بلاک د عکس پیرامیټونه پخپله د یوې ادارې په توګه بیانوي، او دویم یې د اړین مینځپانګې ډکولو لپاره لارښوونې بیانوي.
سازنده
{
"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"
}
],
...
}
پدې ټیمپلیټ کې ، تاسو اړتیا لرئ په بادل کې د برخې پیژندونکی تنظیم کړئ چیرې چې تاسو غواړئ عکس رامینځته کړئ ، او همدارنګه د دې برخې کې دمخه رامینځته شوي د خدماتو حساب څخه د کیلي سره فایل ته لاره. تاسو کولی شئ په اړونده برخه کې د فایل په بڼه د خدماتو حسابونو او کیلي جوړولو په اړه نور ولولئ.
دا ترتیب وايي چې د ډیسک عکس به د پلیټ فارم پراساس جوړ شي ubuntu-1804-lts
، د عکس په کورنۍ کې د مناسب کارونکي برخې کې ځای په ځای شوی GRAFANA
تر نامه لاندې grafana-{{timestamp}}
.
روزونکي
اوس د ترتیب د لا په زړه پورې برخې لپاره. دا به د عملونو ترتیب تشریح کړي چې د ډیسک عکس ته د دې حالت منجمد کولو دمخه په مجازی ماشین کې ترسره کولو ته اړتیا لري.
{
...,
"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"
]
}
]
}
دلته، ټولې کړنې په 3 مرحلو ویشل شوي دي. په لومړي مرحله کې، یو ساده سکریپټ اجرا کیږي چې یو مرستندویه لارښود جوړوي.
تیاری-ctg.sh:
#!/bin/bash
sudo mkdir -p /opt/grafana
sudo chown -R ubuntu:ubuntu /opt/grafana
په بل پړاو کې، موږ په دې لارښود کې یو سکریپټ ځای په ځای کوو، کوم چې د مجازی ماشین پیل کولو وروسته سمدستي چلولو ته اړتیا لري. دا سکریپټ به د کاروونکي متغیرات د ګرافانا په ترتیب کې تنظیم کړي او ویب سرور بیا پیل کړي.
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
له هغې وروسته، درې شیان باید ترسره شي:
1) کڅوړې نصب کړئ
2) Grafana د systemctl لاندې پیل کړئ او د ClickHouse پلگ ان نصب کړئ
3) د Setup.sh سکریپټ په کتار کې واچوئ ترڅو د مجازی ماشین له فعالولو وروسته سمدلاسه چل شي.
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;
اوس دا پاتې ده چې پیکر چل کړئ او د محصول عکس ترلاسه کړئ چې په ټاکل شوي برخه کې ځای په ځای شوي. کله چې یو مجازی ماشین رامینځته کړئ ، تاسو کولی شئ دا د بوټ ډیسک په توګه وټاکئ او د پیل کولو وروسته ، چمتو شوی ګرافانا ویب سرور ترلاسه کړئ.
د مثال ګروپ او توازن کونکی
یوځل چې د ډیسک عکس شتون ولري چې تاسو ته اجازه درکوي ډیری ورته ګرافانا ویب سرورونه رامینځته کړئ ، موږ کولی شو د مثال ګروپ رامینځته کړو. په Yandex.Cloud پلیټ فارم کې، دا اصطلاح د مجازی ماشینونو اتحادیې ته اشاره کوي چې ورته ځانګړتیاوې لري. کله چې د مثال ګروپ رامینځته کړئ ، پدې ګروپ کې د ټولو ماشینونو پروټوټایپ ترتیب شوی ، او بیا پخپله د ډلې ځانګړتیاوې (د مثال په توګه ، د فعال ماشینونو لږترلږه او اعظمي شمیر). که اوسنی شمیر دا معیار پوره نکړي، نو د مثال ګروپ به پخپله غیر ضروري ماشینونه لیرې کړي یا په عکس او ورته والی کې نوي رامینځته کړي.
زموږ د دندې د یوې برخې په توګه، موږ به د ویب سرورونو یوه بیلګه ډله جوړه کړو چې د مخکې جوړ شوي ډیسک عکس څخه به تولید شي.
د وروستي مثال ګروپ ترتیب واقعیا د پام وړ دی. د لوډ بیلانسر سره په ادغام کې د هدف ګروپ به تاسو سره د یو څو تڼیو په فشارولو سره د دې ډلې مجازی ماشینونو په سر کې د L3 بیلانس تنظیم کولو کې مرسته وکړي.
کله چې د توازن تنظیم کول، ما دوه مهم ټکي پلي کړل:
- ما دا رامینځته کړی ترڅو توازن کونکي د 80 په پورټ کې د کارونکي ترافیک ومني ، او دا یې د مجازی ماشینونو 3000 پورټ ته لیږلی ، یوازې چیرې چې ګرافانا ژوند کوي.
- په پورټ 3000 کې د پینګ کولو له لارې د ماشین روغتیا چیکونه تنظیم کړئ.
کوچنی مجموعه
په نهایت کې ، موږ وکولی شو په لاسي ډول د مطلوب غوښتنلیک زیربنا ځای په ځای کړو ، او اوس موږ د ګرافانا خورا انعطاف وړ خدمت لرو. دا یوازې اړینه ده چې د بیلانسر IP پته د غوښتنلیک ته د ننوتلو نقطه او د کلیک هاوس کلستر کوربه په توګه وپیژنئ ترڅو ډیټاسیټ پکې بار کړئ.
دا به بریا ښکاري؟ هو، بریا. مګر یو څه لاهم ما ځوروي. پورته ټوله پروسه ډیری لاسي کړنو ته اړتیا لري او په هیڅ ډول اندازه نه کوي، زه غواړم چې دا د امکان په صورت کې اتومات کړم. دا به د راتلونکې برخې تمرکز وي.
د Terraform سره یوځای کول
موږ به بیا د HashiCorp په نوم یوه وسیله وکاروو
د Terraform سره ټول کار د ترتیب کولو فایل لیکلو ته راځي (*.tf
) او د هغې پر بنسټ د زیربناوو جوړول.
تغیرات
د فایل په پیل کې، موږ به هغه متغیرونه واخلو چې دا معلومه کړي چې راتلونکی زیربنا به چیرته او څنګه ځای پرځای شي.
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>"
}
د غوښتنلیک پلي کولو ټوله پروسه به د ډیسک عکس رامینځته کولو او د دې متغیرونو تنظیم کولو ته راشي. اجازه راکړئ تشریح کړم چې دوی د څه لپاره مسؤل دي:
oauth_token - بادل ته د لاسرسي لپاره نښه. لخوا ترلاسه کیدی شي
cloud_id - د بادل پیژندونکی چیرې چې موږ به غوښتنلیک ځای په ځای کړو
فولډر_id - د برخې پیژندونکی چیرې چې موږ به غوښتنلیک ځای په ځای کړو
service_account_id - د کلاوډ په اړونده برخه کې د خدماتو حساب پیژندونکی.
image_id - د پیکر په کارولو سره ترلاسه شوي ډیسک عکس پیژندونکی
کارن نوم и رمز - دواړه ډیټابیسونو او د ګرافانا ویب سرور ته لاسرسي لپاره کارن نوم او پټنوم
dbname - د CH او MySQL کلسترونو دننه د ډیټابیس نوم
عامه_کی_پاته - ستاسو د عامه ssh کیلي سره فایل ته لاره ، کوم چې د نوم لاندې وصل کولو لپاره کارول کیدی شي ubuntu
د ویب سرورونو سره مجازی ماشینونو ته
د برابرونکي ترتیب
اوس تاسو اړتیا لرئ د Terraform چمتو کونکي تنظیم کړئ - زموږ په قضیه کې ، Yandex:
provider "yandex" {
token = var.oauth_token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-a"
}
تاسو لیدلی شئ چې دلته موږ پورته تعریف شوي متغیرونه کاروو.
شبکه او کلسترونه
اوس راځئ چې یوه شبکه جوړه کړو په کوم کې چې زموږ د زیربنا عناصر به اړیکه ونیسي، درې فرعي شبکې (یو په هره سیمه کې) او د CH او 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
}
}
لکه څنګه چې تاسو لیدلی شئ، د دوو کلسترونو څخه هر یو د دریو شتون زونونو کې د ځای په ځای کولو سره د عادلانه غلطی زغملو لپاره جوړ شوی.
ویب سرورونه
داسې بریښي چې تاسو کولی شئ په ورته روح کې دوام ورکړئ ، مګر زه له ستونزو سره مخ شوم. مخکې له دې، ما لومړی د MySQL کلستر پورته کړ او یوازې له هغې وروسته، د دې ID په پوهیدو سره، ما د مطلوب ترتیب سره د ډیسک انځور راټول کړ، چیرته چې ما کلستر ته کوربه مشخص کړ. مګر اوس موږ د ټیرفارم لانچ کولو دمخه د کلستر ID نه پوهیږو ، پشمول د عکس جوړولو په وخت کې. نو ما باید لاندې ته لاره هواره کړه
د ایمیزون څخه د میټاډاټا خدمت کارولو سره، موږ به ځینې پیرامیټونه مجازی ماشین ته انتقال کړو، کوم چې دا به یې ومني او پروسس کړي. موږ ماشین ته اړتیا لرو چې د کلستر د MySQL کوربه او د کارن-نوم پاسورډ لپاره میټاډاټا ته لاړ شو چې کارونکي د پیل کولو وروسته د Terraform فایل کې مشخص کړی. د فایل مینځپانګې لږ څه بدل کړئ setup.sh
، کوم چې چلیږي کله چې مجازی ماشین چالان شي.
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
د انټانس ګروپ او بیلانسر
د نوي ډیسک عکس له جوړولو وروسته، موږ کولی شو په پای کې د Terraform لپاره زموږ فایل اضافه کړو.
موږ اشاره کوو چې موږ غواړو د موجوده ډیسک عکس وکاروو:
data "yandex_compute_image" "grafana_image" {
image_id = var.image_id
}
اوس راځئ چې د مثال ګروپ جوړ کړو:
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"
}
}
دا د پام وړ ارزښت لري چې څنګه موږ میټاډاټا ته تیر شو cluster_uri
, username
и password
. دا د دوی مجازی ماشین دی چې دا به په پیل کې ترلاسه کړي او د ګرافانا ترتیب کې یې واچوي.
دا د بیلانس په اړه دی.
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
}
}
}
}
لږ شکر
ډیر لږ پاتې وو. وروسته له دې چې زیربنا له مینځه وړل کیږي، تاسو باید د ګرافانا UI ته لاړ شئ او په لاسي ډول د CH کلستر اضافه کړئ (د کوم ID چې تاسو لاهم اړتیا لرئ ترلاسه کړئ) د ډیټا سرچینې په توګه. مګر Terraform د کلستر ID پیژني. راځئ چې هغه د کار پای ته ورسوي.
راځئ چې یو نوی چمتو کونکی اضافه کړو - ګرافانا، او د کوربه په توګه د بیلانس IP ټوټه ټوټه کړئ. ټول بدلونونه چې Terraform په ماشین کې رامینځته کوي چیرې چې د دې بیلانس ټاکي په MySQL کې وده کوي ، او له همدې امله په نورو ټولو ماشینونو کې.
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"
}
راځئ کنگھه وکړو
د بیلانس IP او د کلیک هاوس کلستر کوربه ښکاره کړئ
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"
}
چلولی شي
ټول! زموږ د تشکیلاتو فایل چمتو دی او موږ کولی شو د متغیرونو په ترتیب کولو سره Terraform ته ووایو چې هرڅه پورته کړي چې موږ پورته بیان کړل. ټوله پروسه ما شاوخوا 15 دقیقې ونیولې.
په پای کې، تاسو کولی شئ یو ښکلی پیغام وګورئ:
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
او په بادل کې، د پورته شوي زیربنا عناصر به لیدل کیږي:
راځئ چې پایلې راټیټ کړو
اوس ، د ګرافانا مثال په کارولو سره ، تاسو هر یو کولی شئ د Yandex.Cloud پلیټ فارم کې د پراخه کلاوډ جوړښت سره غوښتنلیکونه ځای په ځای کړئ. د HashiCorp څخه ګټور وسیلې لکه پیکر او ټیرفارم کولی شي پدې کې ستاسو سره مرسته وکړي. زه امید لرم چې دا مقاله به د یو چا لپاره ګټوره وي 🙂
PS لاندې به زه د ذخیره کولو لینک سره ضمیمه کړم ، چیرې چې تاسو کولی شئ د پیکر او ټیرفارم لپاره چمتو شوي ترکیبونه ومومئ ، هغه ټوټې چې ما پدې مقاله کې حواله کړې.
سرچینه: www.habr.com