Запускаем 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: , , ,

Один из способов решения проблемы с разрастающимися процессами apache

Posted in Новости on 12 марта, 2016 by admin

Итак, на сервере ни с того ни с сего начались проблемы — апач валился по MaxClients. Никаких манипуляций не производилось. Ищем виновника. Смотрим, что делают только что созданные процессы через strace :

root@xxx # strace -p 6806
Process 6806 attached - interrupt to quit
flock(226, LOCK_EXl^C
Process 6806 detached

Видим, что процесс ждет блокировки файлового дескриптора 226.
Далее, смотрим, что это за файл :

root@xxx # ls -la /proc/6806/fd/226
lrwx------ 1 root root 64 Mar 12 18:04 /proc/6806/fd/226 -> /var/www/xxx/data/mod-tmp/sess_udo951qv42mqk3s0l2ggmiqq66

Далее выведем все процессы, которые используют файл :

lsof /var/www/xxx/data/mod-tmp/sess_udo951qv42mqk3s0l2ggmiqq66

Видим, что их много.
Смотрим в один из процессов через lsof -p pid и смотрим, из какого каталога работает процесс.

Tags: , ,

nginx и бесплатные сертификаты от let's encrypt

Posted in Новости on 29 января, 2016 by admin

1. Ставим само ПО letsencrypt :

cd /usr/src
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto

В процессе установки попросят ввести ящик. Он потребуется для продления сертификата или при утере данных
2. Генерируем сертификаты для работы :

cd /usr/src
service nginx stop
./letsencrypt-auto certonly --standalone
service nginx start

В процессе генерации ключей нас попросят ввести список доменов, если нам нужно разместить более одного домена второго уровня, тогда нужно будет запустить еще раз утилиту, так как для всего списка создается один сертификат. Перед генерацией сертификата нужно останавливать вебсервер.
3. Создаем минимальный конфиг nginx для ssl :

server {
listen my.ip.ad.dre.ss:443 ssl;
server_name example.com www.example.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
set $root /var/www/example.com/;
ssl on;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
root $root;
}
}

сертификат fullchain.pem уже включает и сертификат домена и цепочку сертификатов.

Tags: , , , ,