Установка 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;


Выходим из контейнера
  • 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





Комментарии

Популярные сообщения из этого блога

Accel-ppp команды

mikbill расшифровка завершений сессий

Zabbix agent установка и настройка