AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Несколько Астерисков на одном хосте

Asterisk IP PBX 23 сообщений -
#1

Добрый день!
Хотелось бы запустить 2 Астериска на одном хосте . Для сетевухи прописаны 2 IP адреса . Для каждой копии сделал свои папки в /etc , /var , /usr/lib/ .
То есть /etc/asterisk/inst_01 и /etc/asterisk/inst_02 . В каждом из файлов asterisk.conf соответственно прописаны пути .
При запуске первой копии в консоли Астериска выдаётся , что не найден файл modules.conf . Запускаю так : asterisk -C /etc/asterisk/inst_01/asterisk.conf

Мыслится ,что Астериск ищет все конфиги в путях по умолчанию , так как если конфиги закинуть просто в /etc и запускать опять-таки asterisk -C /etc/asterisk/inst_01/asterisk.conf , то всё прекрасно стартуется . Если после этого запустить вторую копию , то пишет , что файл asterisk.pid уже есть в каталоге
/var/run/asterisk , хотя в asterisk.conf параметр astrun указан отличным от /var/run.

Что можете посоветовать ?

Спасибо
#2

artsenin писал(а):

Что можете посоветовать ?


показать вышеприведнный (/etc/asterisk/inst_01/asterisk.conf) конфиг. и сказать версию астерисканапример...
#3

Версия Астериска - 1.8.2.4

/etc/asterisk/ast1/asterisk.conf :


[directories](!)
astetcdir => /etc/asterisk/ast1
astmoddir => /usr/lib/asterisk/ast1/modules
astvarlibdir => /var/lib/asterisk/ast1
astdbdir => /var/lib/asterisk/ast1
astkeydir => /var/lib/asterisk/ast1
astdatadir => /var/lib/asterisk/ast1
astagidir => /var/lib/asterisk/ast1/agi-bin
astspooldir => /var/spool/asterisk/ast1
astrundir => /var/run/asterisk/ast1
astlogdir => /var/log/asterisk/ast1

[options]
;verbose = 3
;debug = 3
;alwaysfork = yes ; Same as -F at startup.
;nofork = yes ; Same as -f at startup.
;quiet = yes ; Same as -q at startup.
;timestamp = yes ; Same as -T at startup.
;execincludes = yes ; Support #exec in config files.
;console = yes ; Run as console (same as -c at startup).
;highpriority = yes ; Run realtime priority (same as -p at
; startup).
;initcrypto = yes ; Initialize crypto keys (same as -i at
; startup).
;nocolor = yes ; Disable console colors.
;dontwarn = yes ; Disable some warnings.
;dumpcore = yes ; Dump core on crash (same as -g at startup).
;languageprefix = yes ; Use the new sound prefix path syntax.
;internal_timing = yes
;systemname = my_system_name ; Prefix uniqueid with a system name for
; Global uniqueness issues.
;autosystemname = yes ; Automatically set systemname to hostname,
; uses 'localhost' on failure, or systemname if
; set.
;maxcalls = 10 ; Maximum amount of calls allowed.
;maxload = 0.9 ; Asterisk stops accepting new calls if the
; load average exceed this limit.
;maxfiles = 1000 ; Maximum amount of openfiles.
;minmemfree = 1 ; In MBs, Asterisk stops accepting new calls if
; the amount of free memory falls below this
; watermark.
;cache_record_files = yes ; Cache recorded sound files to another
; directory during recording.
;record_cache_dir = /tmp ; Specify cache directory (used in conjunction
; with cache_record_files).
;transmit_silence = yes ; Transmit silence while a channel is in a
; waiting state, a recording only state, or
; when DTMF is being generated. Note that the
; silence internally is generated in raw signed
; linear format. This means that it must be
; transcoded into the native format of the
; channel before it can be sent to the device.
; It is for this reason that this is optional,
; as it may result in requiring a temporary
; codec translation path for a channel that may
; not otherwise require one.
;transcode_via_sln = yes ; Build transcode paths via SLINEAR, instead of
; directly.
;runuser = asterisk ; The user to run as.
;rungroup = asterisk ; The group to run as.
;lightbackground = yes ; If your terminal is set for a light-colored
; background.
documentation_language = en_US ; Set the language you want documentation
; displayed in. Value is in the same format as
; locale names.
;hideconnect = yes ; Hide messages displayed when a remote console
; connects and disconnects.
;lockconfdir = no ; Protect the directory containing the
; configuration files (/etc/asterisk) with a
; lock.

; Changing the following lines may compromise your security.
;[files]
;astctlpermissions = 0660
;astctlowner = root
;astctlgroup = apache
;astctl = /var/run/asterisk/ast1/asterisk.ctl

[compat]
pbx_realtime=1.6
res_agi=1.6
app_set=1.6
#4

а если так ?

Код:

[directories]
astetcdir => /etc/asterisk/ast1
....
#5

Сработало ! Спасибо , Игорь!
#6

А я ушел от этого кривого решения на нескольких Астерисках. Freeswitch справляется с данной задачей нативно.
#7

Я с FreeSwitch тоже баловался . Настраивал связку c GnuGk .Заметил странный глюк (хотя может это особенность такая) . К Gk была подключена Ата-186 , с Freeswith соответственно сиповский аппарат . Если с Аташки набрать номер , который в данный момент не зарегистрирован в системе , то Freeswitch падал . Также заметил , что когда после разговора одновременно бросить трубки аташки и сип фона , то Freeswitch падал . Возможно реализация H.323 кривоватая .
#8

нигде в топике не было упомянуто, что вам нужен H323
в таком случае, фрисвитч ничуть не лучше
#9

latv писал(а):
А я ушел от этого кривого решения на нескольких Астерисках. Freeswitch справляется с данной задачей нативно.


с какой задачей ? и чем 2 фрисвича прямее двух астерисков ?
#10

Насчет задачи спросите автора топика, боюсь соврать, но я понял так, что нужно работь с разных ip адресов.
Насчет двух фрисвичей это ваша фантазия, сами на нее и отвечайте. Я имел в виду один.
#11

у меня вопрос из зала- а зачем так извращаться то? Openvz то зачем изобретали?
#12

С freeswitch не нужен никакой OVZ, он сам умеет несколько SIP профилей с разными ip.
А в случае астерисков OVZ не сильно удобнее, чем разбить по каталогам. Более того, как быть с железом (если есть телефонные платы E1 или т.п.). Вам удавалось запустить их в VZ контейнере? Я не говорю, что это невозможно, но вроде бы с этим есть трудности.
#13

system писал(а):
у меня вопрос из зала- а зачем так извращаться то? Openvz то зачем изобретали?
Не поделитесь опытом? Меня интересует HN на 33.4 либо 37.4 ядре, и аналогичные хосты.(А ещё лучше два bash скрипта которые делают компиляцию Хост и Гость ядер по имеющимся исходникам)
_________________
Slackware 13.37 - Asterisk 1.8
#14

latv писал(а):
С freeswitch не нужен никакой OVZ, он сам умеет несколько SIP профилей с разными ip.
А в случае астерисков OVZ не сильно удобнее, чем разбить по каталогам. Более того, как быть с железом (если есть телефонные платы E1 или т.п.). Вам удавалось запустить их в VZ контейнере? Я не говорю, что это невозможно, но вроде бы с этим есть трудности.


првет, насчет второй части: имея свой сервер, например на proxmox.com, скомпилировав dahdi на сервере, можно контейнерам с астерисками дать доступ. мне нужен был лишь таймер, потому сильно не заморачивался, работы на 10 минут.

насчет фрисвитча вопрос. он будет биндится к разным айпи и отсылать звонки с этих айпи на основе роутинга системы? в астериске с этим плохо...
#15

Цитата:
првет, насчет второй части: имея свой сервер, например на proxmox.com, скомпилировав dahdi на сервере, можно контейнерам с астерисками дать доступ. мне нужен был лишь таймер, потому сильно не заморачивался, работы на 10 минут.


если расскажешь поподробнее как пробросить /dev/dahdi/ в контейнер, и чтобы ничего не глючило, буду премного благодарен Exclamation

Цитата:
насчет фрисвитча вопрос. он будет биндится к разным айпи и отсылать звонки с этих айпи на основе роутинга системы? в астериске с этим плохо...

да будет!
#16

latv писал(а):
если расскажешь поподробнее как пробросить /dev/dahdi/ в контейнер, и чтобы ничего не глючило, буду премного благодарен Exclamation


OpenVZ containers rely upon a shared kernel, the one that actually boots the Proxmox server. KVM containers created from ISO images are self-contained with their own complete operating system and kernel. With Asterisk, zaptel and dahdi cannot be loaded directly from an OpenVZ container because they are tied directly to the Linux kernel. Instead one must rely upon a shared version of zaptel or dahdi loaded on the Proxmox server itself. If you need conferencing or otherwise need a timing source for your Asterisk deployment, you will not want to use the OpenVZ approach at least for now. On the other hand, if you have more traditional VoIP requirements for your PBX, then the ease of installation and use of the OpenVZ image makes perfect sense. So let's start there assuming you understand the limitations

Таймер я кидал и делал это по инструкции с этого сайта (ищи со слов Installing DAHDI on the Proxmox Server)
#17

спасибо, кое-какую полезную инфу почерпнуть можно, но кажется там все инструкции даны с привязкой к их системе
#18

качаешь скрипт, распаковываешь и смотришь.
у меня хосты были на дебиане, арче и центосе, конференции работали, openvpn тоже
#19

Аналогичная ситуация, как у топикстартера.

Asterisk 1.8.12.2 установлен на Debian 6. Хотелось бы запустить два на сервере.

1 попытка.
Перенес (именно перенес, а не скопировал) основные файлы из папки /etc/asterisk в папку /etc/asterisk/ast1, asterisk.conf переписал на:
Код:
[directories]
astetcdir => /etc/asterisk/ast1
astmoddir => /usr/lib/asterisk/ast1/modules
astvarlibdir => /var/lib/asterisk/ast1
astdbdir => /var/lib/asterisk/ast1
astkeydir => /var/lib/asterisk/ast1
astdatadir => /var/lib/asterisk/ast1
astagidir => /var/lib/asterisk/ast1/agi-bin
astspooldir => /var/spool/asterisk/ast1
astrundir => /var/run/ast1
astlogdir => /var/log/asterisk/ast1

Все остальные папки и файлы перенесены в соответствии с путями в asterisk.conf.

Asteriks выгружаем из памяти service asterisk stop, запускаем новый asterisk -C /etc/asterisk/ast1/asterisk.conf.

По команде asterisk -rvvvv видим:
Код:
Asterisk 1.8.12.2, Copyright (C) 1999 - 2012 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 1.8.12.2 currently running on Proba1 (pid = 5759)
Verbosity was 0 and is now 4
Proba1*CLI>


То есть отсутствуют строки вида:
Код:
== Parsing '/etc/asterisk/ast1/asterisk.conf': == Found
== Parsing '/etc/asterisk/ast1/extconfig.conf': == Found

и команды, например sip show peers не выполняются, говорит об отсутствии модуля.

2 попытка.
Скопировал основные файлы из папки /etc/asterisk в папку /etc/asterisk/ast1 (то есть файлы остались и в сарой директории и появились в новой), asterisk.conf (и в старой и новой папке) переписал на:
Код:
[directories]
astetcdir => /etc/asterisk/ast1
astmoddir => /usr/lib/asterisk/ast1/modules
astvarlibdir => /var/lib/asterisk/ast1
astdbdir => /var/lib/asterisk/ast1
astkeydir => /var/lib/asterisk/ast1
astdatadir => /var/lib/asterisk/ast1
astagidir => /var/lib/asterisk/ast1/agi-bin
astspooldir => /var/spool/asterisk/ast1
astrundir => /var/run/ast1
astlogdir => /var/log/asterisk/ast1


Asteriks выгружаем из памяти service asterisk stop, запускаем новый asterisk -C /etc/asterisk/ast1/asterisk.conf.

По команде asterisk -rvvvv видим:
Код:
Asterisk 1.8.12.2, Copyright (C) 1999 - 2012 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
== Parsing '/etc/asterisk/asterisk.conf': == Found
== Parsing '/etc/asterisk/ast1/extconfig.conf': == Found
Connected to Asterisk 1.8.12.2 currently running on Proba1 (pid = 5759)
Verbosity was 0 and is now 4
Proba1*CLI>


Я так понял asterisk загрузился из файла /etc/asterisk/asterisk.conf а конфиги берет из новых папок ast1.
#20

Не уверен, возможно так же нужно поправить
/etc/init.d/asterisk
/etc/sysconfig/asterisk
#21

К сожалению не помогает.

Added after 5 minutes:

История полностью, не пойму в чем промашка вышла.

Хотелось бы запустить 2 Астериска на одном VDS. VDS имеет 2 статичных IP- по одному на каждый asterisk.

Голый Asterisk 1.8.12.2 установлен на Debian 6.

Начал с попытки запустить хотя бы один asterisk из другой папки.

Для этого asterisk.conf из /etc/asterisk переместил (не скопировал) в /etc/asterisk/ast1.

В asterisk.conf прописал новые директории для конфигов, папок и т.д:

Код:
[directories]
astetcdir => /etc/asterisk/ast1
astmoddir => /usr/lib/asterisk/ast1/modules
astvarlibdir => /var/lib/asterisk/ast1
astdbdir => /var/lib/asterisk/ast1
astkeydir => /var/lib/asterisk/ast1
astdatadir => /var/lib/asterisk/ast1
astagidir => /var/lib/asterisk/ast1/agi-bin
astspooldir => /var/spool/asterisk/ast1
astrundir => /var/run/ast1
astlogdir => /var/log/asterisk/ast1
Ну и дальше все за экранировано, как в стандартном.


Именно не [directories](!), а [directories].

Соответственно структуру папок привет в соответствие с прописанными. Файлы именно перемещал, а не копировал.

Далее выгрузил запущенный asterisk из стандартных папок командой:
Код:
service asterisk stop


Пробую запустить с помощью ключа нестандартной директории:
Код:
asterisk -C /etc/asterisk/ast1/asterisk.conf


Результат asterisk –rvvvv:

Код:
Asterisk 1.8.12.2, Copyright (C) 1999 - 2012 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)
root@Proba1:~#



Как видим, asterisk не запустился. Строк подключения конфигов нет, таких как указаны ниже:
Код:

== Parsing '/etc/asterisk/asterisk.conf': == Found
== Parsing '/etc/asterisk/extconfig.conf': == Found


Конец.


Ради эксперимента попробовал второй вариант, чтобы понять к файлам из какой директории обращается asterisk при запуске и работе.

Для этого все файлы старого (установленного по умолчанию asteriska) оставляем на месте и копируем их в новые папки вида ast1.
Исходный файл asterisk.conf не меняем (только убираем (!) в строке [directories])и оставляем в папке/etc/asterisk/. Файл asterisk.conf скопированный в /etc/asterisk/ast1 имеет вид:

Код:
[directories]
astetcdir => /etc/asterisk/ast1
astmoddir => /usr/lib/asterisk/ast1/modules
astvarlibdir => /var/lib/asterisk/ast1
astdbdir => /var/lib/asterisk/ast1
astkeydir => /var/lib/asterisk/ast1
astdatadir => /var/lib/asterisk/ast1
astagidir => /var/lib/asterisk/ast1/agi-bin
astspooldir => /var/spool/asterisk/ast1
astrundir => /var/run/ast1
astlogdir => /var/log/asterisk/ast1
Ну и дальше все за экранировано, как в стандартном.



Именно не [directories](!), а [directories].

Соответственно структуру папок привел в соответствие с прописанными. Файлы исходные оставлял на месте, в папки «ast1» копировал в соответствии с /etc/asterisk/ast1/asterisk.conf.

Далее выгрузил запущенный asterisk из стандартных папок командой:
Код:
service asterisk stop


Пробую запустить с помощью ключа нестандартной директории:
Код:
asterisk -C /etc/asterisk/ast1/asterisk.conf


Результат asterisk –rvvvv:

Код:
Asterisk 1.8.12.2, Copyright (C) 1999 - 2012 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
== Parsing '/etc/asterisk/asterisk.conf': == Found
== Parsing '/etc/asterisk/extconfig.conf': == Found
Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)
root@Proba1:~#


Как видим, asterisk не запустился, следующие строки выглядят очень интересно на фоне команды запуска asterisk -C /etc/asterisk/ast1/asterisk.conf:

Код:
== Parsing '/etc/asterisk/asterisk.conf': == Found
== Parsing '/etc/asterisk/extconfig.conf': == Found


Логика не понятна, смотрим следующий вариант.



Попробовал третий вариант. По сравнению со вторым изменил только файл /etc/asterisk/asterisk.conf из исходного asteriska.

Файлы asterisk.conf в /etc/asterisk/ast1 и в /etc/asterisk/ делаем одинаковыми, имеет вид:
Код:
[directories]
astetcdir => /etc/asterisk/ast1
astmoddir => /usr/lib/asterisk/ast1/modules
astvarlibdir => /var/lib/asterisk/ast1
astdbdir => /var/lib/asterisk/ast1
astkeydir => /var/lib/asterisk/ast1
astdatadir => /var/lib/asterisk/ast1
astagidir => /var/lib/asterisk/ast1/agi-bin
astspooldir => /var/spool/asterisk/ast1
astrundir => /var/run/ast1
astlogdir => /var/log/asterisk/ast1
Ну и дальше все за экранировано, как в стандартном.



Именно не [directories] (!), а [directories].


Далее выгрузил запущенный asterisk из стандартных папок командой:
Код:
service asterisk stop


Пробую запустить с помощью ключа нестандартной директории:
Код:
asterisk -C /etc/asterisk/ast1/asterisk.conf


Результат asterisk –rvvvv:

Код:
Asterisk 1.8.12.2, Copyright (C) 1999 - 2012 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
== Parsing '/etc/asterisk/asterisk.conf': == Found
== Parsing '/etc/asterisk/ast1/extconfig.conf': == Found
Connected to Asterisk 1.8.12.2 currently running on Proba1 (pid = 7156)
Verbosity was 0 and is now 4
Proba1*CLI>



Как видим, asterisk запустился. Файлы, например sip.conf, используются из новой папки /etc/asterisk/ast1/, но нижеследующая строка опять не соответствует команде включения:

Код:
== Parsing '/etc/asterisk/asterisk.conf': == Found


Вторая соответствует:
Код:
== Parsing '/etc/asterisk/ast1/extconfig.conf': == Found



Прошу совета.

Заранее спасибо.
#22

Вы очень странный человек.
Демон запускаете с указанием где брать конфиги:

Цитата:
Пробую запустить с помощью ключа нестандартной директории:
Код:
asterisk -C /etc/asterisk/ast1/asterisk.conf


А в консоль ломитесь без указания, где брать конфиги:
Цитата:
Результат asterisk –rvvvv:


Таким образом, вы считаете, что консоль сама должна догадаться где ей конфиги брать?
Заходите в консоль также с указанием пути к конфигурации:
Код:
asterisk -C /etc/asterisk/ast1/asterisk.conf -rvvv
#23

Спасибо большое, лохонулся я по полной.

Все работает!