forum.bitel.ru
http://forum.bitel.ru/

Глюк ActiveMQ в ubuntu 15.10 ?
http://forum.bitel.ru/viewtopic.php?f=22&t=11107
Страница 1 из 1

Автор:  Угрюмов Роман [ 18 ноя 2015, 19:04 ]
Заголовок сообщения:  Глюк ActiveMQ в ubuntu 15.10 ?

1) Разворачиваю резервный сервер биллинга под ubuntu 15.10
Следую строго инструкции http://bgbilling.ru/v6.0/doc/ch01s04s01 ... in_service
команда
Код:
/etc/init.d/activemq start
успешно запускает ActiveMQ
Но!!! ActiveMQ не стартует при перезагрузке ubuntu!!!
Код:
/opt/mq/data
- пустая
причем остальные скрипты: bgbilling, bginet_access, bginet_accounting, ngdataloader стартуют при перезагрузке.

2) Для проверки делаю те же шаги в ubuntu 12 - все работает идеально!
При перезагрузке автостартует все

3)Под ubuntu 15.10 скрипт запуска
Код:
/etc/init.d/activemq start
помещаю в файл
Код:
/etc/rc.local
и перегружаюсь
ActiveMQ успешно стартует!

Ну не забавно ли господа!

Автор:  zavndw [ 18 ноя 2015, 19:08 ]
Заголовок сообщения:  Re: Глюк ActiveMQ в ubuntu 15.10 ?

это же ubuntu через пару лет будет как windows :)

Автор:  stark [ 18 ноя 2015, 19:16 ]
Заголовок сообщения:  Re: Глюк ActiveMQ в ubuntu 15.10 ?

а не systemd ли там случайно ?

Автор:  Угрюмов Роман [ 18 ноя 2015, 19:22 ]
Заголовок сообщения:  Re: Глюк ActiveMQ в ubuntu 15.10 ?

stark писал(а):
а не systemd ли там случайно ?

Я не знаю, предлагаю вам попробовать и включить в документацию, у меня сил больше нет бодаться с ubuntu, работает и славно!

Автор:  zavndw [ 18 ноя 2015, 19:41 ]
Заголовок сообщения:  Re: Глюк ActiveMQ в ubuntu 15.10 ?

stark писал(а):
а не systemd ли там случайно ?

Описание релиза
Цитата:
Продолжен перевод системы инициализации на компоненты systemd

Видимо да уже systemd

Автор:  Amir [ 18 ноя 2015, 20:04 ]
Заголовок сообщения:  Re: Глюк ActiveMQ в ubuntu 15.10 ?

В наших виртуалках CentOS и Debian с systemd тоже вроде отказывался запускаться через init.d - потому создали /usr/lib/systemd/system/activemq.service
Цитата:
[Unit]
Description=Apache ActiveMQ Daemon
After=network.target
Requires=

[Service]
Type=forking
ExecStart=/opt/activemq/apache-activemq-5.9.1/bin/linux-x86-64/activemq start
ExecStop=/opt/activemq/apache-activemq-5.9.1/bin/linux-x86-64/activemq stop

[Install]
WantedBy=multi-user.target
Потом systemctl enable activemq.service.

Биллинг bgbilling.service:
Цитата:
[Unit]
Description=BGBilling Server Daemon
After=network.target,mysql.service,activemq.service
Requires=mysql.service,activemq.service

[Service]
Type=forking
ExecStartPre=/opt/bgbilling/BGBillingServer/script/bgcommonrc checkmysql
ExecStart=/opt/bgbilling/BGBillingServer/script/bgbilling start
ExecStop=/opt/bgbilling/BGBillingServer/script/bgbilling stop

[Install]
WantedBy=multi-user.target
InetAccess:
Цитата:
[Unit]
Description=inet-access Daemon
After=network.target,mysql.service,activemq.service
Requires=mysql.service,activemq.service

[Service]
Type=forking
ExecStartPre=/opt/bgbilling/BGBillingServer/script/bgcommonrc checkmysql
ExecStart=/opt/bgbilling/inet/BGInetAccess/access.sh start
ExecStop=/opt/bgbilling/inet/BGInetAccess/access.sh stop

[Install]
WantedBy=multi-user.target
/opt/bgbilling/BGBillingServer/script/bgcommonrc checkmysql просто висит 30 секунд пока не получит соединение к БД (MariaDB вроде всё также запускается через init.d, потому при запуске виртуалки часто процесс биллинга начинал обращаться к БД до того как она запустилась).


Можно (нужно) еще и PIDFile указывать (nginx.service из пакета nginx):
Цитата:
[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
Например,
Цитата:
...
[Service]
Type=forking
PIDFile=/opt/bgbilling/inet/BGInetAccess/.run/access.pid
...
Тогда при перезапуске через systemctl он будет нормально ждать ожидания остановки, иначе может быть ошибка "UDP порт уже занят", т.к. предыдущий процесс не успел полностью остановиться.

Автор:  ok-2004 [ 18 ноя 2015, 20:11 ]
Заголовок сообщения:  Re: Глюк ActiveMQ в ubuntu 15.10 ?

аллилуя!!!
Цитата:
....bgcommonrc checkmysql просто висит 30 секунд пока не получит соединение к БД (MariaDB вроде всё также запускается через init.d, потому при запуске виртуалки часто процесс биллинга начинал обращаться к БД до того как она запустилась

Вот именно это сломало полгода назад все мои представления о добре и зле.
Прежде чем я понял, что когда среди последовательности процессов , стартующих через unit sysstemd затесался один процесс стартующий через /init.d -
получается "балет в присядку".
Походу разрабы mysql-форков тоже пришли к 'той мысле и стали патчить свои софтины механизмом notify через dbus.
Во всяком случае оракл-овцы уже реализовали, перкона и маша пока чешут репу...

Автор:  Amir [ 18 ноя 2015, 20:15 ]
Заголовок сообщения:  Re: Глюк ActiveMQ в ubuntu 15.10 ?

В конце bgcommonrc добавлено (раньше не было)
Код:
case "$1" in
        checkmysql)
                checkmysql
        ;;

        checkmysqlsocket)
                checkmysqlsocket
        ;;
esac

Автор:  zavndw [ 18 ноя 2015, 20:21 ]
Заголовок сообщения:  Re: Глюк ActiveMQ в ubuntu 15.10 ?

Цитата:
....bgcommonrc checkmysql просто висит 30 секунд пока не получит соединение к БД (MariaDB вроде всё также запускается через init.d, потому при запуске виртуалки часто процесс биллинга начинал обращаться к БД до того как она запустилась

Даже если бд не локально расположена?

Автор:  Amir [ 18 ноя 2015, 20:24 ]
Заголовок сообщения:  Re: Глюк ActiveMQ в ubuntu 15.10 ?

Тогда менять скрипт (или вынести в отдельный файлик):
Код:
checkmysql() {
ret=0
STARTTIMEOUT=30
while [ $STARTTIMEOUT -gt 0 ]; do
    RESPONSE=`/usr/bin/mysqladmin -uUNKNOWN_MYSQL_USER ping 2>&1` && break
    echo "$RESPONSE" | grep -q "Error checking mysql: access denied for user" && break
    sleep 1
    let STARTTIMEOUT=${STARTTIMEOUT}-1
done

if [ $STARTTIMEOUT -eq 0 ]; then
    ret=1
    echo "Error checking mysql: timeout error occurred."
fi

return $ret;
}
А так вроде должно работать и не с локальной БД.

А в Debian MariaDB(возможно и MySQL) в скрипте в init.d останавливается командой mysqladmin stop и для этого при установке MariaDB(MySQL) создается отдельный пользователь, логин/пароль которого указан в /etc/mysql/debian.cfg. И если пользователя удалить - БД не будет останавливаться через службу, а при обновлении пакетов будет висеть, особо не сообщая причину.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/