49
Экономичное масштабирование в облаках

Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

Embed Size (px)

Citation preview

Page 1: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

Экономичное масштабирование в облаках

Page 2: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 3: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 4: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 5: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 6: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

- Бизнес маленький - Неопределенные требования - Крым не наш -

Дано

Page 7: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 8: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

-Легкость роста - Простота обслуживания -Образы - Snapshots - …

Возможности

Page 9: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 10: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 11: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 12: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

1. Масштабирование приложения

Page 13: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

Amazon Auto Scaling

Page 14: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

- Load balancer - Launch configuration - Auto scaling group - Scale Up и Scale Down policies

План действий

Page 15: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

- Метрика: CPU - Не паниковать - Не тормозить - Таймаут на действие - Выбор порога

Scaling policy

Page 16: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

* Thinking Clearly about Performance by Cary Millsap http://queue.acm.org/detail.cfm?id=1854041

Page 17: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

* Thinking Clearly about Performance by Cary Millsap http://queue.acm.org/detail.cfm?id=1854041

Page 18: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 19: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

- Приложение использует не только CPU - Низкий порог срабатывания для

большого числа машин

Проблема

Page 20: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

- Приложение использует не только CPU - Низкий порог срабатывания для

большого числа машин

- Привязка к числу свободных workers

Проблема

Решение

Page 21: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 22: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

- Число машин варьируется от 2 до 15 - Мы не паримся за нагрузку - Ценник снизился в 4 раза - …

Итог

Page 23: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 24: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

- Система аукциона - Без гарантий - Дешевле на 50-93%

Spot instances

Page 25: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 26: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

M3.large (CPUx2, RAM 7.5 G): - 0.146$ - on demand instance - 0.021$ - spot instance

С3.2xlarge (CPUx8, RAM 15 G): - 0.478$ - on demand instance - 0.0828$ - spot instance

Для сравнения

Page 27: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

SpotOn demand

Page 28: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

Scale Up: 1) Spot, если возможно 2) On demand, если нет Spot

Scale Down: 1) On demand, если есть лишние 2) Spot, если нельзя выключить On

demand

Правила запуска/выключения

Page 29: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

- Ценник упал еще в 4 раза - Жаба довольна

Итог

Page 30: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

или нет…

Page 31: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

2. Ресайз картинок

Page 32: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 33: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

- Неравномерная нагрузка по времени

- Свадьба

Две проблемы

Page 34: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 35: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 36: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

- Scale up, если текущее число машин меньше

(q_size + q_avg * MAX_PROCESS_TIME) // (RESIZER_SPEED * MAX_PROCEED_TIME) + 1

- Scale down, если за последнее время не требовалось столько машин

- Используем машины по полной, если последний запуск был менее 55 минут назад

Правила запуска/выключения

Page 37: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 38: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

- Образ не меняется - Нужно обновлять код при запуске

машины - Долгая установка requirements.txt - Усугубляется со временем

Проблема

Page 39: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

- Образ не меняется - Нужно обновлять код при запуске

машины - Долгая установка requirements.txt - Усугубляется со временем

Проблема

- docker pull вместо git pull

Решение

Page 40: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

- Оперативно ресайзим картинки - Ценник снова упал в 4 раза

Итог

Page 41: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

3. Задачи на подумать

Page 42: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 43: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

Масштабируем

Page 44: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 45: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

tasks: - name: Provision a set of instances ec2: group: sg-xxxxxxxx instance_type: m3.large image: ami-13377331 region: eu-west-1 zone: eu-west-1a aws_access_key: 'IDONTTELLYOU' aws_secret_key: 'vErYsecreTAwskEY' spot_price: 0.10 wait: true exact_count: 1 count_tag: Taks: very_cool_tag instance_tags: Name: very_cool_name Task: very_cool_tag register: ec2

- name: Add new instance to host group add_host: hostname={{ item.public_ip }} groupname=launched with_items: ec2.instances when: instance_count > 0   - name: Wait for SSH to come up wait_for: host={{ item.public_dns_name }} port=22 delay=10 timeout=320 state=started with_items: ec2.instances when: instance_count > 0

Page 46: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

- name: Run task on instances hosts: launched sudo: True gather_facts: False   vars: - command: /usr/bin/python /foo/bar/do_some_stuff.py   roles: - { role: deploy }   tasks: - name: Do some very important things do: some very important things   - name: Execute command in the screen shell: /opt/scripts/run_task_in_screen.sh "{{ command }} --number {{ play_hosts.index(inventory_hostname) }} --total {{ play_hosts|count }} --shutdown"

Page 47: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

Здесь должна быть мораль, но ее нет

Page 48: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects
Page 49: Экономное масштабирование в облаке, Иван Кокорин, Vostok Projects

- Email: [email protected] - Skype: altimit66 - Telegram: @Altimit

Спамить сюда