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

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

Mar 20, 2017

Download

Automotive

MeYouSlide
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: алексей вахов, Paa s, выделенные сервера, облако и снова paas

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

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

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

План

Terraform+Ansible +Prometheus+Grafana +OpenStackPublicCloud=

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

Учи.ру

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

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

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

2014→2017

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

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

PreDevOps

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

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

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

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

Delivery

gitpush

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

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

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

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

OpenStack-Облако

SelectelVPC

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

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

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

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

МногоVPN

uchi.ru plus.olimpiada.ru …

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

ПроблемаUI

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

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

Терраформ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

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

Схема

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

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

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

Целостность

*.tf

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

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

*.tf

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

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

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

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

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

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

Новыйстек

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

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

Мониторинг

- 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

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

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'

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

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

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

Алерты вслек

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

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

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

Orchestration

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

Итоги

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

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

NextAction

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

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

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