25
PaaS, выделенные сервера, облако и снова PaaS Алексей Вахов, Учи.ру

алексей вахов, Paa s, выделенные сервера, облако и снова paas

Embed Size (px)

Citation preview

PaaS,выделенныесервера,облакоисноваPaaS

АлексейВахов,Учи.ру

План

Terraform+Ansible +Prometheus+Grafana +OpenStackPublicCloud=

Учи.ру

• Учи.ру:15%учениковначальнойшколыРоссии

• Олимпиада«Плюс»• Олимпиада«РусскийсПушкиным»• Олимпиада«Юныйпредприниматель»• Олимпиада«Дино»

2014→2017

1продакшен → 15продакшенов5серверов→ 130серверов15сотрудников→ 150сотрудников1кпользователей→ 1Мпользователей10reqs/sec → 500-800reqs/sec

PreDevOps

• NoOps!• Heroku• Github• CircleCI• 20+SaaS’s

Тестовыеокружения

Delivery

gitpush

Олимпиада«Плюс»

• 12кusersonline (500 RPS)• Выделенныесервера• Chef• Zabbix• 10Arecords¯\_(ツ)_/¯

OpenStack-Облако

SelectelVPC

Структурапроекта

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

МногоVPN

uchi.ru plus.olimpiada.ru …

ПроблемаUI

• 50+серверов• 3activeUIusers

Терраформ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.iohttps://blog.selectel.ru/gostevoj-post-upravlyaem

Схема

Реальнаяинфраструктура Описание*.tf

Файлсостояния

Целостность

*.tf

файлсостояния2

Магическийскрипт

*.tf

файлсостояния1

Реальнаяинфраструктура

Проблема130серверов

• Ruby• Postgres• Crons• Tokens• Logs• Etc…

Новыйстек

• Consul• NodeExporter+OtherExporters• Prometheus+Grafana• Grafana-rb• Orchestration(???)

Мониторинг

- ConsulServer- NodeExporter- Prometheus- Grafana

- ConsulClient- NodeExporter- Mtail- …

- ConsulClient- NodeExporter- Mtail- …

- name:consulclientdocker_container:name:consulimage:consulcommand:agent-client-bind=….restart_policy:'unless-stopped’

- name:node_exporter service….

- name:node_exporter consulserviceconsul:

host:{{ansible_eth0.ipv4.address}}service_name:node_exporterservice_port:9100

PrometheusConsulSD

global:scrape_interval: 10sevaluation_interval:10s

#Alistofscrapeconfigurations.scrape_configs:- job_name:hostsconsul_sd_configs:- server:'{{ansible_eth0.ipv4.address}}:8500'services:[node_exporter]

relabel_configs:- source_labels:['__meta_consul_node']target_label: 'instance'

Grafana.rb

- type:customtitle:"requestspersecond(uchi.ru)"format:"ops"fill:8stack:trueexpr:'sum(rate(http_requests_total{job="nginx",vhost="uchi.ru"}[1m]))'

- type:customtitle:"requests(uchi.ru)"format:"ops"expr:'sum(rate(http_requests_total{job="nginx",vhost="uchi.ru"}[1m]))by(instance)'

- type:alerttitle:"Availability”max:2expr:'up<0.5'

https://github.com/uchiru/grafana-rb

Алерты вслек

MTail

- name:nginx_prometheus_exporterdocker_container:name:nginx-prometheus-exporterimage:ndiazg/nginx-prometheus-exportercommand:/var/log/nginx/access.logvolumes:- /var/log/nginx:/var/log/nginx:ro

ports:- 3093:3093 https://github.com/google/mtail

https://github.com/ndiazg/nginx-prometheus-exporter

Orchestration

Итоги

• NoOps,NoDev• Cloud WithPrivateNetwork• Docker(???)• Terraform• Prometheus+Grafana+Grafana.rb

NextAction

• http://vakhov.me - Блог,милыйблог.Новаяисториякаждыйбуднийдень.

[email protected]• Облако!• Изолированныепроекты!!• Терраформ!!!• Прометей!!!!• Grafana-rb!!!!!

PaaS,выделенныесервера,облакоисноваPaaSАлексей Вахов,Учи.ру