Статьи

Формирование облака с открытым исходным кодом с Minotaur для Mesos, Kafka и Hadoop

Сегодня я рад объявить « Minotaur », которая является нашей открытой инфраструктурой на основе AWS для управления большими проектами с открытыми исходными данными, включая (но не ограничиваясь): Apache Kafka , Apache Mesos и Cloudera Distribution of Hadoop. Minotaur основан на AWS Cloud Formation .

В настоящее время поддерживаются следующие лаборатории:

Руководитель

Supervisor — это образ на основе Docker, который содержит все необходимое программное обеспечение для управления узлами / ресурсами в AWS.

Настройка супервизора

  • клонировать этот репо в repo_dir
  • перейдите в папку repo_dir / supervisor

Прежде чем пытаться создать образ Docker, вы должны поместить некоторые файлы конфигурации в директорию config :

  1. aws_config
  2. Этот файл представляет собой обычную конфигурацию 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

    Не добавляйте и не удаляйте лишние пробелы (особенно до и после знака «=» в ключах).

  3. private.key
  4. Это ваш личный SSH-ключ, публичная часть которого зарегистрирована на хосте Bastion.

  5. environment.key
  6. Это общий ключ для всех узлов в среде, которой должен управлять Supervisor.

  7. ssh_config

Это обычный файл конфигурации 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.