Авторегистрация всех портов ( port map from docker container ) всех контейнеров докер в пределах хоста

Posted in Новости on 18 апреля, 2016 by admin

1. Итак, на сервере уже имеем контейнер с consul на стандартных портах.
2. Собираем и запускаем контейнер registrator :

docker run -d \
--name=registrator \
--net=host \
--volume=/var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:latest \
consul://localhost:8500

3. После успешного пуска смотрим в логах контейнера на добавление в консул новых сервисов :

docker logs registrator

Данный подход удобен для централизованного мониторинга даже в пределах нескольких нод ( https://tresnet.ru/archives/1352 )

Tags: , , , ,

Быстрый сетап elasticsearch cluster на docker

Posted in Новости on 14 апреля, 2016 by admin

node1 — master — 1.1.1.1
node2 — slave — 2.2.2.2
node3 — slave — 3.3.3.3

Одна нода :

docker run -d --name es-master -p 9200:9200 es
docker run -d --name es-slave1 --link es-master -e UNICAST_HOSTS=es-master es
docker run -d --name es-slave2 --link es-master -e UNICAST_HOSTS=es-master es

Между разными docker нодами.
node1 :

docker run --net=host -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e CLUSTER=Prod itzg/elasticsearch

node2,node3 :

docker run --net=host -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e UNICAST_HOSTS=1.1.1.1 -e CLUSTER=Prod itzg/elasticsearch

Tags: , , , ,

Запускаем docker consul кластер между физическими серверами

Posted in Новости on 14 апреля, 2016 by admin

Серверы :

node1 - master - external ip : 1.1.1.1
node2 - slave - external ip : 2.2.2.2
node3 - slave - external ip : 3.3.3.3

Стартуем master :

docker run -d -v /mnt:/data \
--name consul \
-p 8300:8300 \
-p 8301:8301 \
-p 8301:8301/udp \
-p 8302:8302 \
-p 8302:8302/udp \
-p 8400:8400 \
-p 8500:8500 \
-p 53:53/udp \
progrium/consul -server -advertise=1.1.1.1 -bootstrap-expect 3

Стартуем первый slave :

docker run -d -v /mnt:/data \
--name consul \
-p 8300:8300 \
-p 8301:8301 \
-p 8301:8301/udp \
-p 8302:8302 \
-p 8302:8302/udp \
-p 8400:8400 \
-p 8500:8500 \
progrium/consul -server -advertise=2.2.2.2 -join 1.1.1.1

Стартуем второй slave :

docker run -d -v /mnt:/data \
--name consul \
-p 8300:8300 \
-p 8301:8301 \
-p 8301:8301/udp \
-p 8302:8302 \
-p 8302:8302/udp \
-p 8400:8400 \
-p 8500:8500 \
progrium/consul -server -advertise=3.3.3.3 -join 1.1.1.1

Tags: , , , ,

Отладка при запуске контейнера docker

Posted in Новости on 13 апреля, 2016 by admin


docker start -a < container_name >

Tags: , ,

Поднимаем mongodb кластер на docker.

Posted in Новости on 13 апреля, 2016 by admin

Условные обозначения :

node1 - mongo-master.server.com - first_ip
node2 - mongo-slave1.server.com - second_ip
node3 - mongo-slave2.server.com - third_ip

1. Создаем на сервере окружение :

mkdir -p /opt/mongo
cd /opt/mongo
openssl rand -base64 741 > mongodb-keyfile
chmod 600 mongodb-keyfile
chown 999 mongodb-keyfile

2. Собираем и стартуем контейнер на node1 :

docker run --name mongo -v /opt/mongo/mongo-files/data:/data/db -v /opt/mongo/mongo-files:/opt/keyfile --hostname="mongo-master.server.com" -p 27017:27017 -d mongo:2.6.5 --smallfiles

3. Заходим в контейнер

docker exec -it mongo /bin/bash

4. Конфигурируем mongo-master :

mongo

use admin

db.createUser( {
user: "siteUserAdmin",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
});

db.createUser( {
user: "siteRootAdmin",
pwd: "password",
roles: [ { role: "root", db: "admin" } ]
});

exit

5. Выходим из контейнера :

exit
docker stop mongo

6. Удаляем текущий контейнер и запускаем новый с ключом :

docker run --name mongo -v /opt/mongo/mongo-files/data:/data/db -v /opt/mongo/mongo-files:/opt/keyfile --hostname="mongo-master.server.com" --add-host mongo-master.server.com: --add-host mongo-slave1.server.com: --add-host mongo-slave2.server.com: -p 27017:27017 -d mongo:2.6.5 --smallfiles --keyFile /opt/keyfile/mongodb-keyfile --replSet "rs0"

7. Заходим на node1 в контейнер и включаем репликацию :

docker exec -it mongo /bin/bash

mongo

use admin

db.auth("siteRootAdmin", "password");


rs.initiate()


{
"info2" : "no configuration explicitly specified -- making one",
"me" : "node1.example.com:27017",
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}


rs.conf()


{
"_id" : "rs0",
"version" : 1,r
"members" : [
{
"_id" : 0,
"host" : "node1.example.com:27017"
}
]
}

8. Стартуем node2 , node3 mongo docker

docker run --name mongo -v /opt/mongo/mongo-files/data:/data/db -v /opt/mongo/mongo-files:/opt/keyfile --hostname="mongo-slave1.server.com" --add-host mongo-master.server.com: --add-host mongo-slave1.server.com: --add-host mongo-slave2.server.com: -p 27017:27017 -d mongo:2.6.5 --smallfiles --keyFile /opt/keyfile/mongodb-keyfile --replSet "rs0"

9. После успешного старта node2, node3 заходим в mongo на мастере и подключаем слейвы :

rs.add("mongo-slave1.server.com")
rs.add("mongo-slave2.server.com")

и проверяем статус :

rs.status()

Tags: , , ,