Статьи

Juju: мгновенное развертывание, интеграция и масштабирование сервисов на нескольких облаках

Раньше было сложно развернуть оборудование в центре обработки данных. Облако изменило все это. Вы буквально в нескольких минутах от загрузки 100 экземпляров. Это однако принесло другие проблемы. Приложения, кластеры, программные стеки и т. Д. Должны иметь возможность работать во многих экземплярах, которые динамически масштабируются вверх и вниз. Все они должны быть интегрированы, даже если IP-адреса постоянно меняются.

Первое поколение решений было сосредоточено на автоматизации предоставления серверов. Вы написали квитанцию ​​о том, как нужно подготовить веб-сервер. Затем вы назначаете роль каждому экземпляру, и она будет автоматически настроена.

Проблема заключается в том, что подготовка сервера является лишь частью управления полным стеком услуг. Различные службы должны иметь возможность общаться друг с другом. Службы необходимо отслеживать, создавать резервные копии, управлять активами, «систематизировать», анализировать производительность и т. Д. Каждый новый элемент в вашем стеке должен иметь единый вход и быть интегрированным с вашими Nagios, Ganglia, Logstash и т. Д. Каждый сервис масштабируется по-разному. Некоторым нужна общая файловая система. Другим нужен высокодоступный прокси или база данных. Третьи полагаются на P2P-вещание, которое не работает в облаке.

В настоящее время существует решение второго поколения, которое обещает мгновенно развернуть, интегрировать и масштабировать во всех основных публичных облаках, а также в частном облаке. Вместо того, чтобы фокусироваться на серверах, он фокусируется на сервисах, которые работают поверх этих серверов. Его зовут Джуджу, что означает волшебство. Магия Джуджу называется Очарование. Очарование заключает в себе услугу. Charm предоставляет стандартизированные интерфейсы для встроенного сервиса, что позволяет легко интегрировать другие Charms. Charm также прозрачно масштабирует встроенный сервис.

Чтобы понять разницу между управлением сервисами и предоставлением серверов, давайте рассмотрим некоторые прелести. В то время как инструменты предоставления услуг будут просто устанавливать WordPress на виртуальный сервер, Juju также выполняет интеграцию. Поэтому, когда WordPress Charm интегрируется с MySQL, автоматически все таблицы и данные создаются в базе данных. Charm также знает о безопасности, поэтому, когда вы представляете WordPress миру, автоматически открываются нужные порты. При масштабировании MySQL Charm Charm знает концепцию Multi-Master Cluster и Read Slaves, поэтому вы можете мгновенно развернуть очень сложный кластер MySQL.

Основы Джуджу

Используя Juju очень легко. Есть только несколько команд, которые вы активно используете: развертывание, добавление, добавление, выставление.

# Bootstrap the Juju environment according to your preferred configuration, e.g. AWS,
# HP Cloud, Open Stack, Local, etc.
juju bootstrap
# Deploy mysql and wordpress
juju deploy mysql
juju deploy wordpress
# Create a relationship between wordpress and mysql and
# assures the wordpress schema is installed inside Mysql
juju add-relation wordpress mysql
# Open ports hence wordpress is publicly accessible
juju expose wordpress

Продвинутый Juju
Теперь давайте перейдем на следующий уровень. Мы хотим перейти к производству с хорошо масштабируемым и высокодоступным Java-приложением, которое полностью кэшируется и отслеживается. Мы также хотим смешать публичные и неофициальные / частные прелести, чтобы показать вам, как это делается.

# Create 10 instances of tomcat and link it to mysql. This is an example of using an unofficial/private charm
# Also note that we only create a relation once per service, not per node.
juju deploy -n 10 cs:~robert-ayres/precise/tomcat-3 tomcat
juju add-relation tomcat mysql
# Create a high-available database with three masters in a cluster (by adding two more units to the existing one)
juju add-unit -n 2 mysql
#  and add 5 read slaves called slavedb
juju deploy -n 5 mysql slavedb
# create a master-slave relation between the 3 masters and 5 slaves
juju add-relation mysql:master slavedb:slave
# give tomcat access to the read instances
juju add-relation tomcat slavedb
# now let’s add memcached to do some caching
juju deploy memcached
juju add-relation memcached tomcat
# Add HA proxy. On Amazon we could use ELB as well.
juju deploy haproxy
juju add-relation haproxy tomcat
juju expose haproxy
# Now include monitoring, so let’s get Nagios deployed and connected to all services
juju deploy nagios
juju add-relation nagios tomcat
juju add-relation nagios memcached
juju add-relation nagios haproxy
juju add-relation nagios mysql
juju add-relation nagios slavedb
juju expose nagios
# And do some deep logging with a “subordinate” Charm that gets installed on each machine
# Subordinate Charms do not run on a separate machine. NRPE allows to get statistics of
# each machine by running locally, unlike the Nagios Charm that can only test if an interface is up.
juju deploy nrpe
juju add-relation nrpe nagios
juju add-relation nrpe tomcat
juju add-relation nrpe memcached
juju add-relation nrpe haproxy
juju add-relation nrpe mysql
juju add-relation nrpe slavedb
# Want to see the nagios monitoring. Let’s log into the first Nagios machine and
# get the admin password
juju ssh nagios/0 sudo cat /var/lib/juju/nagios.passwd
# Want to know which server nagios runs on. Check all the servers and services:
juju status
# Now you can log into Nagios with http://<IP>/nagios3, user: nagiosadmin and password
# Note how all services are being deployed and monitored in Nagios.

# What if I don’t like command lines
juju deploy juju-gui
juju expose juju-gui

Так что, если я уже использую инструменты первого поколения?

Джуджу бесплатный и обеспечивает синергизм. Брелок может быть написан на любом языке. Вы можете вызывать модули Puppet или рецепты шеф-повара изнутри Charm. Следовательно, если у вас их много, вы можете использовать их повторно. Вы даже можете использовать Puppet или Chef как Charm.

Так что еще можно сделать?

Есть много прелестей. Подвески для разработки программного обеспечения, например Tomcat, Rails / Rack, Node.js, Lamp, Python / Django и т. Д. Для управления данными, например Hadoop, Hbase, Hive, Cassandra, Mysql, Postgres, Mongo, CouchDB, CouchBase, MemBase, ElasticSearch , Zookeeper, Drupal, WordPress, DokuWiki, Git и т. Д. Для кэширования / прокси / балансировки нагрузки, например, Redis, Memcached, Varnish, Solr, Terracotta, NgInx, HAProxy, Squid, NFS и т. Д. Для мониторинга и ведения журнала, например Nagios , Logstash, Ganglia, RSyslog, Munin, Kibana, NewRelic, OpenTSDB и т. Д. И многие другие, например, Puppet, Chef, развертывание OpenStack, RabbitMQ, CloudFoundry, Jenkins, OpenERP и т. Д. Ищите официальные Charms в  Charm Store . Но есть и неофициальные прелести, например для  Amazon ELB, RDS, Route53. Вы даже можете использовать Charms из частного локального хранилища.

Но самое главное, что вы можете легко  написать свои чары  и внести их в сообщество. Если вы хотите узнать, как работает Charms,  смотрите этот пост в блоге .

Следующие шаги?

Джуджу постоянно расширяется. Приближаются новые прелести, улучшения в графическом интерфейсе, а также новые основные функции. Вскоре будет выпущена функция Charm Bundle, которая позволит вам объединить несколько заклинаний в одно. Поэтому, если у вас сложная среда Hadoop с Hive и HBase, Ganglia и т. Д., Вы упаковываете ее в Bundle. Затем вы также можете экспортировать и импортировать пакеты из разных сред.

Обязательно ознакомьтесь с  Charm Championship,  потому что вы можете заработать $ 10.000 за создание лучших наборов Charm.

Вы можете получить больше информации об установке Juju и любых других аспектах на домашней странице Juju: juju.ubuntu.com .