Написанный Ником Мэннингом, соучредителем Swig, сообщества любителей алкоголя, основанного на Neo4j, первоначально размещенного в его блоге .
Я хотел бы поделиться со всеми, как круто CoreOS для использования Docker. Мы используем эту настройку для нашего поискового прокси здесь, на Swig . (сообщество энтузиастов напитков для iOS и Android )
Neo4j используется в качестве нашей базы данных и, как говорилось в моем предыдущем посте в блоге , он прекрасно работает как удобная для запуска (читай: гибкая) база данных.
(Что такое поисковый прокси? Это наш термин для службы, которая работает вместе с нашим основным API, который отслеживает поиск напитков в фоновом режиме и удаляет все виды метаданных о напитках, которых у нас еще нет в нашей базе данных.)
В этом примере у меня будет экземпляр базы данных Neo4j, работающий в контейнере Docker. Теперь я использовал Ubuntu для запуска наших контейнеров Docker, но вскоре понял, что CoreOS все упростил. CoreOS — это скудный и подлый вариант linux, который особенно удобен для пользователей Docker, предлагая легкую масштабируемость. Это быстро, и их сайт имеет отличную документацию.
1. Капелька, кто-нибудь?
Я собираюсь использовать
каплю Digitial Ocean за $ 5 для этого примера. Зарегистрируйтесь на их сайте и создайте каплю (экземпляр) с CoreOS в качестве операционной системы (скриншот ниже). Я рекомендую заранее настроить ключ SSH, чтобы использовать его для входа.
2. Мне нравится CoreOS
Войдите в свой аккаунт с помощью
ssh core@<IP of your droplet>
(обратите внимание, что я заранее зарегистрировал свой SSH-ключ для своей цифровой учетной записи в океане, поэтому пароль отсутствует).
Помимо встроенного Docker и простых функций кластеризации, CoreOS предлагает то, что называется
systemd, что значительно упрощает работу с Docker. Подробнее об этом позже.
3. Установка Neo4j 70 секунд с докером
Поскольку Docker уже предустановлен с CoreOS, теперь мы будем загружать образ Neo4j Docker, который я создал сам.
docker pull seenickcode/neo4j-community
Это «вытягивает» готовый образ полностью независимо работающего виртуального экземпляра Linux с Java и последней установленной Neo4j Community Edition. Если вам интересно, мой рецепт Docker
здесь .
Пока он загружается ..
Хотите узнать больше о Docker? Вот краткий обзор
здесь . Или же, если вы просто хотите следовать этому уроку, не стесняйтесь читать следующие основные функции Docker, такие как: «images», «ps», «build» и «run»
здесь . Также Джеймс Тернбулл написал действительно
солидную книгу о Докере.
Честно говоря, мне потребовалось некоторое время, чтобы разобраться с Докером. Даже после его изучения требуется время, чтобы привыкнуть использовать его в реалистичной среде. Тем не менее, я считаю, что отдача от простоты, масштабируемости и надежности стоит вложений.
4. «Твоя собственная, сырная пицца», например, Neo4j Instance
Теперь беги ..
docker run -d --name neo4j --privileged -p 7474:7474 -p 1337:1337 -v /home/core:/var/lib/neo4j/data seenickcode/neo4j-community
Это позволяет запустить
seenickcode/neo4j-community
загруженный образ, присвоить ему случайное имя
neo4j
(
--name
), открыть некоторые порты для внешнего мира (
-p
) и, наконец, сопоставить (
-p
) каталог данных Neo4j с вашим домашним путем CoreOS (
/home/core
), чтобы вы могли создать его резервную копию. самостоятельно или загрузите свой
graph.db
каталог.
Теперь, когда мы представили порт 7474 Neo4j, мы должны теперь иметь возможность использовать браузер данных Neo4j по адресу
<yourIP>:7474
.
Создайте один или два узла с помощью Neo4j:
CREATE (n:Thing)
теперь, поскольку мы сопоставили том Docker
/home/core/
, теперь мы должны увидеть
graph.db
каталог там, круто.
5. Systemd делает Docker намного проще в использовании
CoreOS игровой
Systemd позволяет нам контролировать , какой Docker контейнеры запуск, в каком порядке, а также любые других командах , которые мы хотим до и после хуга. Кроме того, если контейнер завершается с ошибкой, он может автоматически перезапустить этот контейнер.
В этом примере мы укажем наш собственный сервис systemd для имеющегося у нас контейнера Neo4j. Вот как это выглядит:
[Unit] Description=Neo4j Community //After=example-other-service-of-mine.service Requires=docker.service [Service] TimeoutStartSec=0 ExecStartPre=-/usr/bin/docker kill neo4j ExecStartPre=-/usr/bin/docker rm neo4j ExecStart=/usr/bin/docker run -d --name neo4j --privileged -p 7474:7474 -p 1337:1337 -v /home/core:/var/lib/neo4j/data seenickcode/neo4j-community [Install] WantedBy=multi-user.target
Это определяет вызываемую службу,
neo4j.service
и после ее запуска мы убьём наш работающий Docker-контейнер neo4j, удалим его и запустим снова.
Вы можете создать это так, как
/etc/systemd/system/neo4j.service
вам нужно будет включить, используя
systemctl
через
sudo systemctl enable neo4j.service
Теперь убедитесь, что Neo4j остановлен (обратите внимание, что
rm
само изображение не удаляется, только недавно запущенный контейнер) через:
docker kill neo4j docker rm neo4j
Затем, чтобы запустить наш сервис systemd.
sudo systemctl start neo4j.service
Просто чтобы быть уверенным, запустите,
docker ps
чтобы убедиться, что Neo4j действительно запущен.
Мы можем подключить наш сервис через
journalctl -f -u neo4j.service
6. Заключительные замечания
Обязательно ознакомьтесь с технологиями, предлагаемыми Docker и CoreOS. Я думаю, что они представляют собой сложный, дальновидный подход к управлению сервером / кластером, и имеет смысл потратить время на ознакомление с ними.
Если вы не очень много знаете о Neo4j, вы наверняка захотите познакомиться с ним в следующем году или около того. Это гибкая, сложная база данных NOSQL, которая действительно отлично справляется с сохранением и запросом современных данных. Он становится все менее и менее нишевой «базой данных только для графических данных» и становится более надежным выбором для любых нужд NOSQL.
Вопросов? Комментарии? Свяжитесь со мной в Twitter через
@seenickcode.
Посетите наше новое приложение
Swig для iOS и Android. Это сообщество любителей напитков, которое работает на Neo4j!