Les meilleures pratiques des instances redmine multiples

J’étudie le meilleur moyen d’avoir plusieurs instances de redmine sur le même serveur (en gros, j’ai besoin d’une firebase database pour chaque groupe redmine).

Jusqu’à présent, j’ai 2 options:

  1. Déployer une instance redmine pour chaque groupe
  2. Déployer une instance redmine avec plusieurs bases de données

Je ne sais vraiment pas quelle est la meilleure pratique dans cette situation, j’ai vu certaines personnes le faire dans les deux sens.

J’ai testé le déploiement de plusieurs Redmines (3 instances) avec Nginx et passagers. Cela a bien fonctionné, mais je pense qu’avec beaucoup d’exemples, ce n’est pas faisable. Chaque application nécessite environ 100 Mo de RAM, et avec l’augmentation des demandes, elle a tendance à allouer plus de processus à l’application. Ce scénario semble mauvais si nous avions beaucoup d’instances.

L’option 2 semble raisonnable, je pense que je peux implémenter cela avec les environnements de rails. Mais je pense qu’il y a des problèmes de sécurité liés aux sessions (je pense qu’un utilisateur du site A est autorisé à effectuer des actions sur le site B après une authentification en A).

Il y a des bonnes pratiques pour cette situation? Quelle est la meilleure pratique à adopter dans cette situation?

Autre exigence liée à ceci: nous devons pouvoir créer ou arrêter une instance redmine sans interrompre les autres (par exemple, nous devrions éviter les redémarrages du serveur ..).

Merci pour tout conseil et désolé pour mon anglais!

Modifier:

Ma solution: j’ai utilisé une instance de redmine pour chaque groupe. J’ai utilisé nginx + unicorn pour gérer chaque instance indépendamment (parce que le passager ne me permettait pas de gérer chaque instance indépendamment).

Les deux options ne sont pas si différentes après tout. La seule différence est que dans l’option 2, vous n’avez qu’une seule copie du code sur votre disque.

Dans tous les cas, vous devez toujours exécuter des processus de travail différents pour chaque instance, car Redmine (et généralement la plupart des applications Rails) ne prend pas en charge le changement de firebase database pour chaque requête et certaines données concernant un environnement donné sont mises en cache.

Compte tenu de cela, il n’y a pas vraiment d’incitation à partager même le code car cela nécessiterait certains correctifs de singe et symlink-magic pour permettre une initialisation correcte des différences de configuration intentionnelles (configuration de la firebase database et du courrier électronique, chemins vers les fichiers téléchargés, …) . Le paquet Debian le fait, mais il est (à mes yeux) plutôt fragile et conduit à un système plutôt non standard.

Mais pour souligner encore une fois: même si vous partagez le même code sur le disque entre les instances, vous ne pouvez pas partager les processus de travail en cours d’exécution.

L’exécution de plusieurs instances à partir du même code n’est pas officiellement prise en charge par Redmine. Cependant, les paquets Debian / Ubuntu semblent supporter une telle approche … Voir:

  • Plusieurs instances de redmine sur Debian squeeze

Donc, généralement:

  • Si vous utilisez Debian / Ubuntu, choisissez l’option # 2
  • Sinon allez avec # 1

En quelques années, vous pouvez envisager une troisième possibilité d’utiliser des conteneurs Docker pour chacune de vos instances Redmine.

J’ai utilisé https://github.com/sameersbn/docker-redmine.git , et j’en ai été très satisfait, sauf qu’il ne prend pas encore en charge la gestion du courrier entrant pour créer et commenter des tickets.