Weitere ähnliche Inhalte Ähnlich wie PaaS, выделенные сервера, облако и снова PaaS (20) PaaS, выделенные сервера, облако и снова PaaS3. Учи.ру
• Учи.ру: 15% учеников начальной
школы России
• Олимпиада «Плюс»
• Олимпиада «Русский с Пушкиным»
• Олимпиада «Юный
предприниматель»
• Олимпиада «Дино»
4. 2014 → 2017
1 продакшен → 15
продакшенов
5 серверов → 130 серверов
15 сотрудников → 150
сотрудников
1к пользователей → 1М
пользователей
10 reqs/sec → 500-800
reqs/sec
10. Структура проекта
VPN eth1: VPN
eth0: *
eth1: 80/443
eth0: *
eth1: 80/443
eth0: *
eth1: 80/443
eth0: *
DB-Master DB-Slave
App02App01 App03
Elastic, etc
…
Monitoring
13. Терраформ
resource "openstack_blockstorage_volume_v1" "disk" {
name = "disk"
region = "ru-1"
size = 10
}
resource "openstack_compute_instance_v2" "server" {
name = "server"
flavor_name = "flavor-1024-1"
region = "ru-1"
block_device {
uuid = "${openstack_blockstorage_volume_v1.disk.id}"
}
}
https://www.terraform.io
https://blog.selectel.ru/gostevoj-post-upravlyaem
17. Новый стек
• Consul
• Node Exporter + Other Exporters
• Prometheus + Grafana
• Grafana-rb
• Orchestration (???)
18. Мониторинг
- Consul Server
- Node Exporter
- Prometheus
- Grafana
- Consul Client
- Node Exporter
- Mtail
- …
- Consul Client
- Node Exporter
- Mtail
- …
…
- name: consul client
docker_container:
name: consul
image: consul
command: agent -client -bind=….
restart_policy: 'unless-stopped’
- name: node_exporter service
….
- name: node_exporter consul service
consul:
host: {{ansible_eth0.ipv4.address}}
service_name: node_exporter
service_port: 9100
19. Prometheus Consul SD
global:
scrape_interval: 10s
evaluation_interval: 10s
# A list of scrape configurations.
scrape_configs:
- job_name: hosts
consul_sd_configs:
- server: '{{ansible_eth0.ipv4.address}}:8500'
services: [node_exporter]
relabel_configs:
- source_labels: ['__meta_consul_node']
target_label: 'instance'
20. Grafana.rb
- type: custom
title: "requests per second (uchi.ru)"
format: "ops"
fill: 8
stack: true
expr: 'sum(rate(http_requests_total{job="nginx",vhost="uchi.ru"}[1m]))'
- type: custom
title: "requests (uchi.ru)"
format: "ops"
expr: 'sum(rate(http_requests_total{job="nginx",vhost="uchi.ru"}[1m])) by (instance)'
- type: alert
title: "Availability”
max: 2
expr: 'up < 0.5'
https://github.com/uchiru/grafana-rb
22. MTail
- name: nginx_prometheus_exporter
docker_container:
name: nginx-prometheus-exporter
image: ndiazg/nginx-prometheus-exporter
command: /var/log/nginx/access.log
volumes:
- /var/log/nginx:/var/log/nginx:ro
ports:
- 3093:3093 https://github.com/google/mtail
https://github.com/ndiazg/nginx-prometheus-exporter
24. Итоги
• NoOps, NoDev
• Cloud With Private Network
• Docker (???)
• Terraform
• Prometheus + Grafana + Grafana.rb
25. Next Action
• http://vakhov.me - Блог, милый блог.
Новая история каждый будний день.
• vakhov@gmail.com
• Облако!
• Изолированные проекты!!
• Терраформ!!!
• Прометей!!!!
• Grafana-rb!!!!!
PaaS, выделенные сервера, облако и снова PaaS
Алексей Вахов, Учи.ру