Установка 10-ти Mikbill на одном сервере
Установка и запуск 10-ти систем Mikbill на одном сервере в контейнерах docker. Тест
В результате получим 10 систем с доступом к нужным для работы портам (с пробросом, так как IP один) и запущенными сервисами. База, логи, каталог mikbill, конфиги - будут примонтированы отдельными томами.
Для теста установки использую Centos 7 установленную в виртуалке. Учитывается, что система пустая, на ней ничего лишнего не стоит.
Установка с нуля
Ставим docker
- curl -sSL https://get.docker.com/ | sh
Запускаем docker
- systemctl start docker.service
Качаем скрипт установки
- wget https://github.com/mikbill/design/raw/master/install_one_container/manyVersions.sh
Даем права на запуск
- chmod +x manyVersions.sh
Запускаем установку
- ./manyVersions.sh
Подключиться к контейнеру можно так
- docker exec -ti mikbill_0 /bin/bash
Пробросы портов можно увидеть в скрипте (443 порт в штатной версии заменен на 444)
Учетные данные всех систем:
Админка - admin / 2bHzwJg6JYEJ
Mysql - root / pass , mikbill / pass
Описание томов
base - база sql /var/lib/mysql
configs - конфиги /etc
logs - логи /var/log
www - mikbill /var/www/mikbill
Проброшенные порты:
80 - Личный кабинетЛогика проброса портов очень простая. К портам каждого нового номера контейнера
81 - Заглушка
444 - Админка
3306 - MySQL
1812/1813 - Radius
67/68 - DHCP
добавляется его номер. То есть для контейнера № 3 порты такие
803 - Личный кабинет
813 - Заглушка
4443 - Админка
33063 - MySQL
18123/18133 - Radius
673/683 - DHCP
Видео установки
Сборка образа (если нужно)
Выше использовался готовый образ системы. Опишу как я его собирал.Качаем и запускаем образ Centos 6.9
- docker run --name mikbill_one_battle -ti centos:6.9
Войти в новый контейнер должно автоматически.
После входа вводим такую команду:
yum install -y wget && \
wget -q -O mikbill_install.sh http://nekkoy.ga/wiki/lib/exe/fetch.php?media=install_centos6.tar && \
chmod +x mikbill_install.sh && \
./mikbill_install.sh && \
rm -f mikbill_install.sh && \
wget https://github.com/mikbill/design/raw/master/install_one_container/daemon && \
chmod +x daemon && \
yum clean all
Единственное изменение, которое сделал в оригинальной установке, - заменил порт админки с 443 на 444 чтобы работал проброс, заменил IP на IPSERVER и отключил ssl
Меняем админку
- nano /etc/nginx/conf.d/admin_vhost.conf
server {
listen *:444;
server_name admin.ispnet.demo IPSERVER;
ssl off;
listen *:444;
server_name admin.ispnet.demo IPSERVER;
ssl off;
Выходим из контейнера
- exit
Сохраняем образ в DockerHub (при желании)
- docker login
- docker commit mikbill_one_battle mikbill/mikbill_one_battle
- docker push mikbill/mikbill_one_battle
Или можно просто сделать локальный образ
- docker commit mikbill_one_battle mikbill/mikbill_one_battle
Скрипт установщика систем
#!/bin/bash | |
num=10 | |
for(( i=0;i<num;i++ )) | |
do | |
docker run --entrypoint "/daemon" \ | |
-p 80$i:80 -p 81$i:81 -p 444$i:444 -p 3306$i:3306 \ | |
-p 1812$i:1812 -p 1813$i:1813 -p 67$i:67 -p 68$i:68 \ | |
-v www_$i:/var/www/mikbill \ | |
-v configs_$i:/etc/ \ | |
-v logs_$i:/var/log/ \ | |
-v base_$i:/var/lib/mysql/ \ | |
--name mikbill_$i \ | |
-d mikbill/mikbill_one_battle | |
done |
Скрипт демона (заглушка)
#!/bin/bash | |
service nginx start | |
service php-fpm start | |
service mysqld start | |
service crond start | |
service mikbill restart | |
service radiusd restart | |
while true | |
do | |
sleep 100000 | |
done |
Тест № 2. Цель - запуск 100 систем. Оптимизация.
Более тонкая настройка образа
- docker run --name mikbill_cen -ti centos:6.9
yum install -y wget && \
wget -q -O mikbill_install.sh http://nekkoy.ga/wiki/lib/exe/fetch.php?media=install_centos6.tar && \
chmod +x mikbill_install.sh
Удалить с установщика установку следующих пакетов
- vi mikbill_install.sh
nano mc screen iptraf tcpdump links samba gccИскать в этой строке
install_base_package() {
yum install -y chkconfig net-snmp-utils ntp bash gcc lm_sensors pciutils sudo \
lynx mrtg perl-IO-Socket-INET6 vixie-cron crontabs system-config-date nginx php-pear logrotate sysstat >> $INSTALL_PACKAGE_LOG
}
Продолжаем установку
./mikbill_install.sh && \
rm -f mikbill_install.sh && \
rm -Rf /var/mikbill/custom_scripts/goto_innodb && \
rm -Rf /var/mikbill/install && \
rm -Rf /var/mikbill/install.log && \
rm -Rf /var/mikbill/mikbill.info && \
rm -Rf /var/www/mikbill/stat/res/distr && \
rm -Rf /var/www/mikbill/stat/res/player && \
rm -Rf /var/www/mikbill/stat/res/sounds && \
rm -Rf /var/lib/mysql/ib_logfile1 && \
rm -Rf /var/lib/mysql/ib_logfile0 && \
rm -Rf /var/lib/mysql/ibdata1 && \
rm -Rf /usr/lib/locale/locale-archive && \
find / -name .htaccess -delete && \
yum remove -y gcc dialog && \
wget https://github.com/mikbill/design/raw/master/install_one_container/daemon && \
chmod +x daemon && \
yum clean all
Как и ранее меняем настройки админки
- vi /etc/nginx/conf.d/admin_vhost.conf
Сохраняем образ
- docker commit mikbill_cen mikbill/mikbill_cen
Смотрим размер (700+ mb)
- docker images
Сохраняем в DockerHub
- docker push mikbill/mikbill_cen
Очистка всего для тестов
- docker rm -f $(docker ps -a -q) && docker rmi $(docker images -q) && docker volume prune -f
Комментарии
Отправить комментарий