Сегодня я рад объявить « Minotaur », которая является нашей открытой инфраструктурой на основе AWS для управления большими проектами с открытыми исходными данными, включая (но не ограничиваясь): Apache Kafka , Apache Mesos и Cloudera Distribution of Hadoop. Minotaur основан на AWS Cloud Formation .
В настоящее время поддерживаются следующие лаборатории:
- Apache Mesos
- Апач Кафка
- Apache Zookeeper
- Cloudera Hadoop
- Голанг Кафка Потребитель
- Голанг Кафка Продюсер
Руководитель
Supervisor — это образ на основе Docker, который содержит все необходимое программное обеспечение для управления узлами / ресурсами в AWS.
Настройка супервизора
- клонировать этот репо в repo_dir
- перейдите в папку repo_dir / supervisor
Прежде чем пытаться создать образ Docker, вы должны поместить некоторые файлы конфигурации в директорию config :
- aws_config
- private.key
- environment.key
- ssh_config
Этот файл представляет собой обычную конфигурацию aws-cli, в которую необходимо вставить свой секретный ключ и ключ доступа, предоставленные Amazon:
1
2
3
4
5
|
[ default ] output = json region = us-east- 1 aws_access_key_id = SECRET_KEY aws_secret_access_key = ACCESS_KEY |
Не добавляйте и не удаляйте лишние пробелы (особенно до и после знака «=» в ключах).
Это ваш личный SSH-ключ, публичная часть которого зарегистрирована на хосте Bastion.
Это общий ключ для всех узлов в среде, которой должен управлять Supervisor.
Это обычный файл конфигурации SSH, вам нужно изменить только ваше_пользовательское имя (это то, что зарегистрировано на Bastion).
BASTION_IP обрабатывается динамически при сборке контейнера.
1
2
3
4
5
6
7
8
9
|
# BDOSS environment Host 10.0 . 2 .* IdentityFile ~/.ssh/environment.key User ubuntu ProxyCommand ssh -i ~/.ssh/ private .key your_username @BASTION_IP nc %h %p Host 10.0 .*.* IdentityFile ~/.ssh/environment.key User ubuntu ProxyCommand ssh -i ~/.ssh/ private .key your_username @BASTION_IP nc %h %p |
- exec up.sh :
Если вы запускаете супервизор впервые — сборка займет некоторое время.
Последующее повышение займет секунды.
Использование супервизора
Теперь вы можете перейти в / deploy / labs / и развернуть все, что захотите.
Пример:
1
2
3
|
minotaur lab deploy mesosmaster -e bdoss-dev -d test -r us-east- 1 -z us-east-1a Creating new stack 'mesos-master-test-bdoss-dev-us-east-1-us-east-1a' ... Stack deployed. |
это раскрутит мастер-узел мезо при «тестировании» развертывания.
awsinfo
Supervisor имеет встроенную команду «awsinfo», которая опирается на AWS API и предоставляет краткую информацию о работающих машинах. Он также способен искать эту информацию.
Пример использования
awsinfo
— отобразит краткую информацию обо всех узлах, работающих в AWS:
1
2
3
4
5
6
7
8
|
root @supervisor :/deploy# awsinfo Cloud: bdoss/us-east- 1 Name Instance ID Instance Type Instance State Private IP Public IP ---- ----------- ------------- -------------- ---------- --------- nat.bdoss-dev i-c46a0b2a m1.small running 10.0 . 2.94 54.86 . 153.142 bastion.bdoss-dev i-3faa69de m1.small running 10.0 . 0.207 None mesos-master.test.bdoss-dev i-e80ddc09 m1.small terminated None None mesos-slave.test.bdoss-dev i-e00ddc01 m1.small terminated None None |
awsinfo mesos-master
— отобразит информацию обо всех узлах mesos-master, работающих в AWS:
1
2
3
4
5
|
root @supervisor :/deploy/labs# awsinfo mesos-master Cloud: bdoss/us-east- 1 Name Instance ID Instance Type Instance State Private IP Public IP ---- ----------- ------------- -------------- ---------- --------- mesos-master.test.bdoss-dev i-e80ddc09 m1.small terminated None None |
awsinfo 10.0.2
— соответствует частной / публичной подсети:
1
2
3
4
5
6
|
root @supervisor :/deploy/labs# awsinfo 10.0 . 2 Cloud: bdoss/us-east- 1 Name Instance ID Instance Type Instance State Private IP Public IP ---- ----------- ------------- -------------- ---------- --------- nat.bdoss-dev i-c46a0b2a m1.small running 10.0 . 2.94 54.86 . 153.142 mesos-master.test.bdoss-dev i-e96ebd08 m1.small running 10.0 . 2.170 54.172 . 160.254 |
бродяга
Если по какой-то причине вы не можете использовать Docker напрямую, для этого есть виртуальная машина Vagrant.
Прежде чем делать что-либо с Vagrant, выполните описанные выше шаги для Docker, но не выполняйте скрипт up.sh
Просто перейдите в каталог vagrant и выполните exec vagrant up
, затем vagrant ssh
(здесь пока ничего особенного).
Когда вы выполните vagrant ssh
, процесс сборки контейнера Docker сразу же появится, так что подождите немного и дайте ему завершиться.
Теперь вы находитесь внутри контейнера Docker, вложенного в Vagrant VM, и можете приступить к развертыванию так же, как это описано для Docker.
Все последующие vagrant ssh
‘s порождают контейнер Docker практически сразу.
Когда вы окажетесь внутри образа супервизора, сценарий minotaur.py
может использоваться для предоставления среды и лабораторных работ. В остальной части этого файла readme предполагается, что скрипт выполняется из контейнера супервизора.
Минотавр Команды
Перечислите компоненты инфраструктуры
1
2
|
root @supervisor :/deploy# ./minotaur.py infrastructure list Available deployments are: [ 'bastion' , 'iampolicies' , 'iamusertogroupadditions' , 'nat' , 'sns' , 'subnet' , 'vpc' ] |
Использование компонентов инфраструктуры печати
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
root @supervisor :/deploy# ./minotaur.py infrastructure deploy bastion -h usage: minotaur.py infrastructure deploy bastion [-h] -e ENVIRONMENT -r REGION -z AVAILABILITY_ZONE [-i INSTANCE_TYPE] optional arguments: -h, --help show this help message and exit -e ENVIRONMENT, --environment ENVIRONMENT CloudFormation environment to deploy to -r REGION, --region REGION Geographic area to deploy to -z AVAILABILITY_ZONE, --availability-zone AVAILABILITY_ZONE Isolated location to deploy to -i INSTANCE_TYPE, --instance-type INSTANCE_TYPE AWS EC2 instance type to deploy |
Развернуть компонент инфраструктуры
В этом примере бастион bdoss-dev
уже существует, поэтому стек CloudFormation был обновлен с использованием текущего шаблона.
1
2
3
4
|
root @supervisor :/deploy# ./minotaur.py infrastructure deploy bastion -e bdoss-dev -r us-east- 1 -z -us-east-1a Template successfully validated. Updating existing 'bastion-bdoss-dev-us-east-1-us-east-1a' stack... Stack updated. |
Список лабораторий
Список всех поддерживаемых лабораторий.
1
2
|
root @supervisor :/deploy# ./minotaur.py lab list Available deployments are: [ 'clouderahadoop' , 'gokafkaconsumer' , 'gokafkaproducer' , 'kafka' , 'mesosmaster' , 'mesosslave' , 'zookeeper' ] |
Использование Лаборатории Печати
Распечатайте использование лаборатории kafka.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
root @supervisor :/deploy# ./minotaur.py lab deploy kafka -h usage: minotaur.py lab deploy kafka [-h] -e ENVIRONMENT -d DEPLOYMENT -r REGION -z AVAILABILITY_ZONE [-n NUM_NODES] [-i INSTANCE_TYPE] [-v ZK_VERSION] [-k KAFKA_URL] optional arguments: -h, --help show this help message and exit -e ENVIRONMENT, --environment ENVIRONMENT CloudFormation environment to deploy to -d DEPLOYMENT, --deployment DEPLOYMENT Unique name for the deployment -r REGION, --region REGION Geographic area to deploy to -z AVAILABILITY_ZONE, --availability-zone AVAILABILITY_ZONE Isolated location to deploy to -n NUM_NODES, --num-nodes NUM_NODES Number of instances to deploy -i INSTANCE_TYPE, --instance-type INSTANCE_TYPE AWS EC2 instance type to deploy -v ZK_VERSION, --zk-version ZK_VERSION The Zookeeper version to deploy -k KAFKA_URL, --kafka-url KAFKA_URL The Kafka URL |
Deploy Lab
Разверните 3-брокерский кластер Kafka.
1
2
3
4
|
root @supervisor :/deploy# ./minotaur.py lab deploy kafka -e bdoss-dev -d kafka-example -r us-east- 1 -z us-east-1a -n 3 -i m1.small Template successfully validated. Creating new 'kafka-bdoss-dev-kafka-example-us-east-1-us-east-1a' stack... Stack deployed. |
Ссылка: | Создание открытого облака с Minotaur для Mesos, Kafka и Hadoop от нашего партнера JCG Джо Стейна в блоге All Things Hadoop . |