GlusterFS Docker: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
Строка 25: | Строка 25: | ||
</PRE> |
</PRE> |
||
==GlusterFS в докере== |
==GlusterFS в докере== |
||
+ | Существует пре-собранный образ (а точнее 2 образа) которые содержат все что нужно для GlusterFS. |
||
+ | <BR>Однако к минусам этих образов я отнесу то, что на хост-системе Centos 6.5 (в том числе и со свежим ядром из elrepo) эти образа не работают. Проблема в том что для systemd который работает внутри нужны "капабилитез" (https://www.opennet.ru/man.shtml?topic=capabilities) котоые внутрь контейнера не пробрасываются. Беглый просмотр образов наводит на мысль что исправить это можно, нагородив костылей вместо использования родного для Centos 7 systemd однако практического смысла в этом нет, а на хост-стстеме с Centos 7 проблема не воспроизводится. |
||
+ | ===Установка=== |
||
+ | Установка предельно проста (потому мы и используме докер!) |
||
+ | * Скачать образ |
||
+ | <PRE> |
||
+ | # docker pull gluster/gluster-centos |
||
+ | </PRE> |
||
+ | * Запустить контейнер |
||
+ | <PRE> |
||
+ | #!/bin/bash |
||
+ | |||
+ | docker run \ |
||
+ | --privileged \ |
||
+ | -d \ |
||
+ | -p 10022:22 \ |
||
+ | -p 111:111 \ |
||
+ | -p 24007:24007 \ |
||
+ | -p 24008:24008 \ |
||
+ | -p 24009:24009 \ |
||
+ | -p 24010:24010 \ |
||
+ | -p 24011:24011 \ |
||
+ | -p 24012:24012 \ |
||
+ | -p 24013:24013 \ |
||
+ | -p 24014:24014 \ |
||
+ | -p 24015:24015 \ |
||
+ | -p 24016:24016 \ |
||
+ | -p 24017:24017 \ |
||
+ | -p 24018:24018 \ |
||
+ | -p 24019:24019 \ |
||
+ | -p 24020:24020 \ |
||
+ | -p 24021:24021 \ |
||
+ | -p 24022:24022 \ |
||
+ | -p 24023:24023 \ |
||
+ | -p 24024:24024 \ |
||
+ | -p 24025:24025 \ |
||
+ | -p 24026:24026 \ |
||
+ | -p 24027:24027 \ |
||
+ | -p 24028:24028 \ |
||
+ | -p 24029:24029 \ |
||
+ | -p 24030:24030 \ |
||
+ | -p 24031:24031 \ |
||
+ | -p 24032:24032 \ |
||
+ | -p 24033:24033 \ |
||
+ | -p 24034:24034 \ |
||
+ | -p 24035:24035 \ |
||
+ | -p 24036:24036 \ |
||
+ | -p 24037:24037 \ |
||
+ | -p 24038:24038 \ |
||
+ | -p 24039:24039 \ |
||
+ | -p 24040:24040 \ |
||
+ | -p 24041:24041 \ |
||
+ | -p 24042:24042 \ |
||
+ | -p 24043:24043 \ |
||
+ | -p 24044:24044 \ |
||
+ | -p 24045:24045 \ |
||
+ | -p 24046:24046 \ |
||
+ | -p 24047:24047 \ |
||
+ | -p 24048:24048 \ |
||
+ | -p 24049:24049 \ |
||
+ | -p 24050:24050 \ |
||
+ | -p 49152:49152 \ |
||
+ | -p 49153:49153 \ |
||
+ | -p 49154:49154 \ |
||
+ | -p 49155:49155 \ |
||
+ | -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ |
||
+ | -v /gluster_file:/var/lib/glusterd \ |
||
+ | -v /gluster_storage:/gluster_storage \ |
||
+ | -v /etc/hosts:/etc/hosts \ |
||
+ | </PRE> |
||
+ | На параметрах запуска остановлюсь подробнее: |
||
+ | * --privileged : For systemd to run without crashing it is necessary to run the container in the privileged mode since systemd requires CAP_SYS_ADMIN capability. |
||
+ | *-v /sys/fs/cgroup:/sys/fs/cgroup:ro \ - проброс sysfs |
||
+ | *-v /gluster_file:/var/lib/glusterd - вся конфигурация GlusterFS будет храниться на хост системе (gluster_file), для того что бы контейнер можно было смело пересоздавать или обновлять. По-хорошему никакие данные не следует хранить внутри контейнера. |
||
+ | * -v /gluster_storage:/gluster_storage: Мортируем внутрь контейнера папку которая будет использоваться для данных |
||
+ | *-v /etc/hosts:/etc/hosts - для простоты работы вся информация вноситься в хосты что бы упростить конфигурацию |
||
+ | На этом моменте нужно остановиться подробнее - тут существует тонкость. <BR> |
||
+ | Напомню, в нашей схеме учавствуют три хоста (host-4, host-5 и host-6). |
||
+ | На каждом из них создаем нужные записи, причем информация о самом хосте указывает на localhost. |
||
+ | Например, для host-6 |
||
+ | <PRE> |
||
+ | |||
+ | 192.168.56.101 node-4 |
||
+ | 127.0.0.1 node-6 |
||
+ | 192.168.56.102 node-5 |
||
+ | </PRE> |
||
+ | * |
||
==Ссылки== |
==Ссылки== |
Версия 19:22, 8 марта 2016
GlusterFS и Docker
Тут краткое описание о "докеризации" GlusterFS
Постановка Задачи
Есть 3 хардварных ноды, на каждой из которых будет запущено приложение. Для организации общего хранилища требуется настроить GlusterFS. Требования от заказчика - все процессы запускать в докер-еонтейнерах
- Базовая система - CentOS 7
- Docker 1.10
- ??
Устновка Docker
Установка докера хорошо описана в документации: https://docs.docker.com/engine/installation/linux/centos/
# rpm -qa | grep docker docker-engine-selinux-1.10.2-1.el7.centos.noarch docker-engine-1.10.2-1.el7.centos.x86_64
Включить в автозагрузку
# systemctl enable docker
Запустить:
# service docker start
GlusterFS в докере
Существует пре-собранный образ (а точнее 2 образа) которые содержат все что нужно для GlusterFS.
Однако к минусам этих образов я отнесу то, что на хост-системе Centos 6.5 (в том числе и со свежим ядром из elrepo) эти образа не работают. Проблема в том что для systemd который работает внутри нужны "капабилитез" (https://www.opennet.ru/man.shtml?topic=capabilities) котоые внутрь контейнера не пробрасываются. Беглый просмотр образов наводит на мысль что исправить это можно, нагородив костылей вместо использования родного для Centos 7 systemd однако практического смысла в этом нет, а на хост-стстеме с Centos 7 проблема не воспроизводится.
Установка
Установка предельно проста (потому мы и используме докер!)
- Скачать образ
# docker pull gluster/gluster-centos
- Запустить контейнер
#!/bin/bash docker run \ --privileged \ -d \ -p 10022:22 \ -p 111:111 \ -p 24007:24007 \ -p 24008:24008 \ -p 24009:24009 \ -p 24010:24010 \ -p 24011:24011 \ -p 24012:24012 \ -p 24013:24013 \ -p 24014:24014 \ -p 24015:24015 \ -p 24016:24016 \ -p 24017:24017 \ -p 24018:24018 \ -p 24019:24019 \ -p 24020:24020 \ -p 24021:24021 \ -p 24022:24022 \ -p 24023:24023 \ -p 24024:24024 \ -p 24025:24025 \ -p 24026:24026 \ -p 24027:24027 \ -p 24028:24028 \ -p 24029:24029 \ -p 24030:24030 \ -p 24031:24031 \ -p 24032:24032 \ -p 24033:24033 \ -p 24034:24034 \ -p 24035:24035 \ -p 24036:24036 \ -p 24037:24037 \ -p 24038:24038 \ -p 24039:24039 \ -p 24040:24040 \ -p 24041:24041 \ -p 24042:24042 \ -p 24043:24043 \ -p 24044:24044 \ -p 24045:24045 \ -p 24046:24046 \ -p 24047:24047 \ -p 24048:24048 \ -p 24049:24049 \ -p 24050:24050 \ -p 49152:49152 \ -p 49153:49153 \ -p 49154:49154 \ -p 49155:49155 \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -v /gluster_file:/var/lib/glusterd \ -v /gluster_storage:/gluster_storage \ -v /etc/hosts:/etc/hosts \
На параметрах запуска остановлюсь подробнее:
- --privileged : For systemd to run without crashing it is necessary to run the container in the privileged mode since systemd requires CAP_SYS_ADMIN capability.
- -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ - проброс sysfs
- -v /gluster_file:/var/lib/glusterd - вся конфигурация GlusterFS будет храниться на хост системе (gluster_file), для того что бы контейнер можно было смело пересоздавать или обновлять. По-хорошему никакие данные не следует хранить внутри контейнера.
- -v /gluster_storage:/gluster_storage: Мортируем внутрь контейнера папку которая будет использоваться для данных
- -v /etc/hosts:/etc/hosts - для простоты работы вся информация вноситься в хосты что бы упростить конфигурацию
На этом моменте нужно остановиться подробнее - тут существует тонкость.
Напомню, в нашей схеме учавствуют три хоста (host-4, host-5 и host-6).
На каждом из них создаем нужные записи, причем информация о самом хосте указывает на localhost.
Например, для host-6
192.168.56.101 node-4 127.0.0.1 node-6 192.168.56.102 node-5