Upload
it-people
View
152
Download
0
Embed Size (px)
Citation preview
Экономичное масштабирование в облаках
- Бизнес маленький - Неопределенные требования - Крым не наш -
Дано
-Легкость роста - Простота обслуживания -Образы - Snapshots - …
Возможности
1. Масштабирование приложения
Amazon Auto Scaling
- Load balancer - Launch configuration - Auto scaling group - Scale Up и Scale Down policies
План действий
- Метрика: CPU - Не паниковать - Не тормозить - Таймаут на действие - Выбор порога
Scaling policy
* Thinking Clearly about Performance by Cary Millsap http://queue.acm.org/detail.cfm?id=1854041
* Thinking Clearly about Performance by Cary Millsap http://queue.acm.org/detail.cfm?id=1854041
- Приложение использует не только CPU - Низкий порог срабатывания для
большого числа машин
Проблема
- Приложение использует не только CPU - Низкий порог срабатывания для
большого числа машин
- Привязка к числу свободных workers
Проблема
Решение
- Число машин варьируется от 2 до 15 - Мы не паримся за нагрузку - Ценник снизился в 4 раза - …
Итог
- Система аукциона - Без гарантий - Дешевле на 50-93%
Spot instances
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
Для сравнения
SpotOn demand
Scale Up: 1) Spot, если возможно 2) On demand, если нет Spot
Scale Down: 1) On demand, если есть лишние 2) Spot, если нельзя выключить On
demand
Правила запуска/выключения
- Ценник упал еще в 4 раза - Жаба довольна
Итог
или нет…
2. Ресайз картинок
- Неравномерная нагрузка по времени
- Свадьба
Две проблемы
- Scale up, если текущее число машин меньше
(q_size + q_avg * MAX_PROCESS_TIME) // (RESIZER_SPEED * MAX_PROCEED_TIME) + 1
- Scale down, если за последнее время не требовалось столько машин
- Используем машины по полной, если последний запуск был менее 55 минут назад
Правила запуска/выключения
- Образ не меняется - Нужно обновлять код при запуске
машины - Долгая установка requirements.txt - Усугубляется со временем
Проблема
- Образ не меняется - Нужно обновлять код при запуске
машины - Долгая установка requirements.txt - Усугубляется со временем
Проблема
- docker pull вместо git pull
Решение
- Оперативно ресайзим картинки - Ценник снова упал в 4 раза
Итог
3. Задачи на подумать
Масштабируем
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
- 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"
Здесь должна быть мораль, но ее нет
- Email: [email protected] - Skype: altimit66 - Telegram: @Altimit
Спамить сюда