10 serveurs airtime sur 1 serveur 64 bits ?

L’installation , comme tu me l’as dit.

Donc, j’y ai installé airtime et ses dépendances : apache2, icecast2, postgresql, timidity, rabbitmq-server.
Après l’installation dans ce chroot, les services tournent bien sur.
( j’aimerais automatiser tout cela. )

Sur la machine principale, rien ne tourne, le minimum donc. ( Il n’y a pas ces serveurs apache, icecast … )

et je fais la config de chaque chroot en faisant chroot /radio1
( en ayant monté avec aufs, et les /bind /dev … comme tu me l’as dit. )

Comment icecast utilise apache2? Et décrit comment sont ces 10 serveurs (ports, url, etc).

Comment icecast utilise apache2?

Icecast se serre de la couche apache2.
Difficile de t’en dire plus.
Icecast est le serveur de son.
Airtime va écrire dans Icecast les point de montage, ceux qui seront utiliser pour diffuser la radio.

dans /base, j’ai donc installer icecast2 + airtime + apache. C’est le socle.
Icecast se gère localhost:8000.
airtime sur localhost:80.

Airtime s’appuie sur apache. Il y a une redirection.
Et là, je m’y perds dans la gestion des ports / virtualhost d’apache.
La doc de airtime précise où changer le port dans airtime et dans apache, mais que dalle, ça ne marche pas ! :108
https://wiki.sourcefabric.org/display/CC/FAQ+and+Support#FAQandSupport-HowdoIchangethebaseURLorportforthewebinterface?

Mes 10 serveurs, j’aimerais que la page de airtime pour la 1ere radio soit sur le port 8100,
Sans toucher à la config de BASE pour Icecast (localhost:8000), et les autres serveurs comme rabbitmq, liquisoap …

Même chose pour la deuxième radio, airtime sur localhost:8200, et ainsi de suite…

Merci
Guillaume

ps : localhost = L’ip fixe du serveur.

C’est plus airtime qui utilise apache2.

( Icecast s’installe sans papache )

Je commence à voir où se trouve les soucis …

Et finalement, quoi mettre dans /BASE ?
Qui faire tourner dans /BASE ?

Parce que la machine a quelques serveurs/ports en exécution !
Et il y a des doublons, voire plus.

Dois je mettre postgresql et icecast2 dans /BASE, ou seulement dans les autres chroot ?

En gros dans BASE tu ne fais rien tourner, BASE n’est que la partie commune à chacun des chroots. De ce que je comprends de ton système:

Sur la machine tu fais tourner apache2 avec autant de virtualhosts que de airtime.

Dans BASE tu mets ce qui est nécessaire à chaque radio_${i}
Dans chaque radio_${i}, tu précises la configuration pour le icecast/airtime correspondant.

Mais peux tu me dire comment fonctionne airtime et ce qui t’a fait dire qu’il fallait un chroot par airtime?

edit: je m’explique, si airtime n’est qu’un script php qui ne fait qu’envoyer un mp3, il n’y a pas besoin de chroot, d’où ma question

ok pour /base, je ne fais rien tourner.

“edit : sur la machine, tu fais tourner apache avec auttant de virtualhost que de airtime”

=> tu parles de quelle machine, la physique ? les radio_${i} ?
tu veux dire radio_${i}.

Et postgresql ? je le lance où ? et combien de fois ?
Si je le lance dans radio_${1},
est ce que radio_${2}, radio_${3} … pourront le voir et s’en servir ?
Même chose pour les serveurs rabbitmq-server, liquisoap … :slightly_smiling:

Pour apache avec airtime, quand je vais sur le port 80, j’arrive sur la page d’admin de airtime.

Voici quelque fichiers de conf.
/etc/apache2/ports.conf

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

cat /etc/apache2/sites-available/airtime-vhost

[code]<VirtualHost *:80>
ServerName localhost
#ServerAlias www.example.com

  ServerAdmin root@localhost

  DocumentRoot /usr/share/airtime/public
  DirectoryIndex index.php

  SetEnv APPLICATION_ENV "production"

  <Directory /usr/share/airtime/public>
          Options -Indexes FollowSymLinks MultiViews
          AllowOverride All
          Order allow,deny
          Allow from all
  </Directory>
[/code]

la conf de airtime
cat /etc/airtime/airtime.conf

[code][database]
host = localhost
dbname = airtime
dbuser = airtime
dbpass = airtime

[rabbitmq]
host = 127.0.0.1
port = 5672
user = airtime
password = K8NFR457X6FUK4650N6Q
vhost = /airtime

[general]
api_key = RDWDTUOH0FF7VAHYDULV
web_server_user = www-data
airtime_dir = /usr/share/airtime
base_url = localhost
base_port = 80
base_dir = /
cache_ahead_hours = 1

[monit]
monit_user = guest
monit_password = airtime

[soundcloud]
connection_retries = 3
time_between_retries = 60
[/code]

et cat /etc/airtime/api_client.cfg

bin_dir = /usr/lib/airtime/api_clients api_key = 'RDWDTUOH0FF7VAHYDULV' api_base = api host = localhost base_port = 80 base_dir = /

Airtime doit aussi je pense, écrire dans postgresql.
Et si je le lance sur chaque radio_${i}, au 2ieme coup, il me dit qu’il tourne déjà sur la machine.
Normal … :12

########################################################################################################

Ce matin, j’ai essayé ceci :
J’ai démarré tout sur /base sauf apache et airtime.

Puis dans chaque radio, j’ai changé le port dans apache et airtime.
quand je me connecte sur localhost:8100 et 8200, au lieu de tomber sur 2 radios diff,
je tombe sur la même page de airtime.

Et rien ne s’écrit dans Icecast, qui est lancé dans /base :
normal, puisque /BASE est en ro … :013
Même chose pour postgresql, dans /base en ro …

########################################################################################################

d’après mes test, Airtime s’appuie sur Apache, et inscrit ses données sur Icecast,

avec l’aide de postgresql, rabiitmq-server et liquisoap.

Si, dans ma 2ieme radio, je change les ports d’apache et de Airtime, je me retrouve avec 2 fois
la même page d’admin de airtime, sur 2 ports différents.

En conclusion : je crois que je dois faire tourner tous les serveurs, dans chaque radio_{i}, en évitant
que tout ce monde écoute sur les même ports …

Donc, à ma connaissance, pas de solution immédiate et “facile” …

Peut être pas de solution, aussi.

fran.b, t’en penses quoi ?

Guillaume

Tu as deux solutions:

A) Tu t’arranges pour qu’il n’y ait aucun ports communs que ce soit pour

  1. Apache (donc ecoute sur 80 81 82 83 … 89 par exemple mais cela peut poser souci.
  2. les rabbitmq(port 5672)
  3. postgresql

C’est relativement pénible mais ça peut se faire, tu auras beaucoup de processus qui tournent, tous dans les chroot. Dans un tel cas, il te faut faire tourner tous les processus dans /radio_1 par exemple puis quand ça marche, recopier /parametres/radio_1 sur /parametres/radio_${i} pour les autres $i et adapter les configs.

C’est un peu lourd.

B) Tu te dis que fondamentalement

  1. tu as un seul serveur apache (qui tournera donc sur la machine elle même (pas /BASE, ni /radio_${i}), qui à 10 Vrtualhosts, chacun dans un répertoire
    /usr/share/airtime/public_${i}

Chacun de ces répertoires sont des bind des répertoires /radio_${i}//usr/share/airtime/public

  1. Tu individualises chacun des airtime dans les chroot mais pour cela il faut voir comment se configure airtime. Je vais voir ça si j’ai un peu de temps…

Merci fran.b.

Difficile, tes 2 solutions.

pour la 2 ieme, tu penses à quoi ?
Récupérer les sources, et recompiler ??

Et virtualbox, t’en penses quoi ?

Guillaume

Je pense que la deuxième solution est la plus simple, mais il faudrait savoir comment airtime utilise postgresql (il serait mieux qu’il y ait un seul gestionnaire de données). Tout cela est simple mais il faut se pencher sur le code notamment de rabiitmq et icecast. En fait je ne vois pas pourquoi des chroot seraient forcément nécessaires pour le peu que j’ai lu de la doc. Il faudrait passer une heure dessus mais pour le moment j’ai (déjà) un lot de copies à corriger :frowning:

Ok fran.b,

Je vais réfléchir à tout ça.
Je regarde la doc, mais je la trouve un peu “light”

Guillaume :wink:
Bon courage pour les copies !

Bonsoir fran.b

Voici un lsof -i, avec airtime qui tourne.

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dhclient 2258 root 6u IPv4 5675 0t0 UDP *:bootpc dhclient 2258 root 20u IPv4 6770 0t0 UDP *:25210 dhclient 2258 root 21u IPv6 6771 0t0 UDP *:19810 sshd 2299 root 3u IPv4 5875 0t0 TCP *:ssh (LISTEN) sshd 2299 root 4u IPv6 5877 0t0 TCP *:ssh (LISTEN) postgres 6938 postgres 3u IPv6 1604059 0t0 TCP localhost:postgresql (LISTEN) postgres 6938 postgres 6u IPv4 1604060 0t0 TCP localhost:postgresql (LISTEN) postgres 6938 postgres 8u IPv6 1604065 0t0 UDP localhost:38749->localhost:38749 postgres 6940 postgres 8u IPv6 1604065 0t0 UDP localhost:38749->localhost:38749 postgres 6941 postgres 8u IPv6 1604065 0t0 UDP localhost:38749->localhost:38749 postgres 6942 postgres 8u IPv6 1604065 0t0 UDP localhost:38749->localhost:38749 postgres 6943 postgres 8u IPv6 1604065 0t0 UDP localhost:38749->localhost:38749 apache2 8119 www-data 5u IPv6 481204 0t0 TCP *:http (LISTEN) apache2 8120 www-data 5u IPv6 481204 0t0 TCP *:http (LISTEN) airtime-l 8254 pypo 4u IPv6 1581257 0t0 TCP localhost:59402->localhost:http (CLOSE_WAIT) airtime-l 8254 pypo 7u IPv6 1592695 0t0 TCP localhost:59557->localhost:http (CLOSE_WAIT) airtime-l 8254 pypo 8u IPv4 492203 0t0 TCP localhost:58803->localhost:amqp (ESTABLISHED) airtime-l 8254 pypo 14u IPv4 1634110 0t0 TCP localhost:1234 (LISTEN) airtime-l 8254 pypo 33u IPv4 1638033 0t0 TCP localhost:41540->localhost:8000 (ESTABLISHED) icecast2 8424 icecast2 0u IPv4 1638646 0t0 TCP localhost:8000->localhost:41540 (ESTABLISHED) icecast2 8424 icecast2 5u IPv4 1638603 0t0 TCP *:8000 (LISTEN) epmd 10611 rabbitmq 3u IPv4 477193 0t0 TCP *:epmd (LISTEN) epmd 10611 rabbitmq 4u IPv4 477493 0t0 TCP localhost:epmd->localhost:54964 (ESTABLISHED) beam.smp 10644 rabbitmq 8u IPv4 477490 0t0 TCP *:47892 (LISTEN) beam.smp 10644 rabbitmq 9u IPv4 477492 0t0 TCP localhost:54964->localhost:epmd (ESTABLISHED) beam.smp 10644 rabbitmq 12u IPv6 491733 0t0 TCP localhost:amqp->localhost:58765 (ESTABLISHED) beam.smp 10644 rabbitmq 16u IPv6 477753 0t0 TCP *:amqp (LISTEN) beam.smp 10644 rabbitmq 18u IPv6 492204 0t0 TCP localhost:amqp->localhost:58803 (ESTABLISHED) apache2 11375 root 5u IPv6 481204 0t0 TCP *:http (LISTEN) apache2 11398 www-data 5u IPv6 481204 0t0 TCP *:http (LISTEN) apache2 11400 www-data 5u IPv6 481204 0t0 TCP *:http (LISTEN) apache2 11401 www-data 5u IPv6 481204 0t0 TCP *:http (LISTEN) apache2 11403 www-data 5u IPv6 481204 0t0 TCP *:http (LISTEN) apache2 11405 www-data 5u IPv6 481204 0t0 TCP *:http (LISTEN) python 12868 root 5u IPv4 492555 0t0 TCP localhost:58765->localhost:amqp (ESTABLISHED) apache2 12992 www-data 5u IPv6 481204 0t0 TCP *:http (LISTEN) python 13041 root 4u IPv6 1581257 0t0 TCP localhost:59402->localhost:http (CLOSE_WAIT) python 13041 root 7u IPv6 1592695 0t0 TCP localhost:59557->localhost:http (CLOSE_WAIT) python 13041 root 8u IPv4 492203 0t0 TCP localhost:58803->localhost:amqp (ESTABLISHED) monit 13117 root 5u IPv4 492944 0t0 TCP *:2812 (LISTEN) apache2 13159 www-data 5u IPv6 481204 0t0 TCP *:http (LISTEN) apache2 16658 www-data 5u IPv6 481204 0t0 TCP *:http (LISTEN)

Merci
Guillaume

Bon,
airtime se connecte à Apache, à rabbitmq et est connecté à icecast
Il y a deux processus beam et epmd. C’est le bazar.

À la louche je pense que faire des chroots complique plus les choses que les simplifient. Il faudrait avoir une idée précise du rôle de chacun. Le souci est que je sais pas exactement le role de chaque processus, mais je soupconne icecast de diffuser une radio qu’airtime récupère et renvoit par le apache2, c’est à peu près ça?

oui !! :slightly_smiling:

C’est aussi ce que je vois.

Je vais me diriger vers virtualbox.
À moins que tu aies une idée…

( Je cherche, mais je vois pas, pour le moment )

Il faut que je fasse une installation pour voir précisement. La solution virtualbox me parait vraiment démesurée. Au pire du chroot, au mieux dix instances cohabitant, mais il faut que je vois precisemment le bazar. Pas sûr que j’ai bcp le temps…

C’est vrai que c’est démesuré ( virtualbox) pour faire tourner une appli × 10, je suis d’accord.

J’attends, je vais chercher.
Si tu peux me sortir de cette impasse, ce serait royal … :023

Merci d’avance.
Guillaume

Fran.b

Tu as trouvé, eu le temps de faire quelque chose ? :wink:

Guillaume

je comprends pas. :12 :119
J’ai reçu les identifiants de mon serveur.

Je crée le dossier /home/BASE
je fais
debootstrap --arch amd64 wheezy /home/BASE/ ftp.fr.debian.org/debian/

et ça merdoie !
L’installation ne va pas jusqu’au bout …
j’ai le message d’erreur :

I: Extracting zlib1g... W: Failure trying to run: chroot /home/BASE mount -t proc proc /proc W: See /home/BASE/debootstrap/debootstrap.log for details

et dans debootstrap.log

gpgv: WARNING: multiple signatures detected. Only the first will be checked. gpgv: Signature made Sat Jun 15 12:55:56 2013 CEST using RSA key ID 473041FA gpgv: Good signature from "Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>" mount: permission denied

Pourquoi il me parle de squeeze ??

Je délire ou quoi ??? :angry:

Bonjour à tous,

je ferme le sujet, je me suis
rabattu sur lxc, avec ici :

guiguishow.info/2012/10/30/u … n-kimsufi/

Merci beaucoup fran.b pour ton aide.

J’ai appris à me servir du FS AUFS !

Bonne soirée
Guillaume