Introduction
ArcESB est une application web qui fournit une suite de connecteurs pour la création, l'exécution et le suivi de flux d'intégration de données personnalisés. Le concepteur de flux visuel d'Arc simplifie le processus d'intégration du Managed File Transfer (MFT), de la messagerie EDI, de la gestion des API, de la manipulation des données et de l'intégration back-end.
Les flux de travail d'Arc sont modulaires, ce qui signifie qu'ils sont capables de gérer des intégrations complètes de bout en bout ou d'exécuter des fonctions de gestion de données spécifiques dans le cadre d'un écosystème de données plus vaste.
Caractéristiques principales
- Transfert de fichiers géré : Capacités de messagerie sécurisée, notamment AS2, AS4, SFTP, FTPS, FTP, OFTP, RNIF, SOAP, etc.
- Cartographie des données : Mappage et traduction entre les données et les formats de fichiers, y compris EDI, EDIFACT, X12, IDoc (SAP), CSV, JSON, XML, etc.
- API basées sur REST : Gestion accessible grâce à des interfaces simples basées sur des normes comme SOAP, REST, HTML, RSS, ATOM, JSON, XLS et CSV.
- Options de déploiement flexibles : Application web moderne pouvant être déployée n'importe où - sur site (Windows, Linux/Unix, macOS) ou dans le nuage.
- Moteur de flux de travail : Permet de créer et d'automatiser facilement des flux de travail entre des applications telles que Salesforce, MailChimp, Shopify, Google Apps, Dropbox, Microsoft Dynamics, NetSuite, etc.
Installation ArcESB
Installation Tomcat
L'installation de ArcESB se fera sur le middleware Tomcat.
[root@serv ] # yum install tomcat
Déployer le fichier WAR
Il suffira simplement de déployer la solution en copiant le fichier WAR dans le dossier webapps.
[root@serv ] # cp arcesb.war /usr/share/tomcat/webapps/
Autoriser les users de Tomcat sur ArcESB
Attribuez le rôle “arcesb_admin” à l'utilisateur que vous souhaitez comme administrateur de l'application. Si vous utilisez le domaine d'utilisateur par défaut pour Tomcat, vous pouvez ajouter ces rôles en éditant le fichier tomcat-users.xml situé dans CATALINA_BASE/conf/tomcat-users.xml.
Dans l'exemple suivant, l'utilisateur admin s'est vu attribuer les rôles nécessaires pour l'accès administratif à l'application :
<user name="admin" password="admin" roles="arcesb_admin,admin-gui,manager-gui,manager-status,manager-script,manager-jmx" />
On relance le middleware Tomcat
[root@serv ] # systemctl restart tomcat
Configurer les autorisations du répertoire de données
Autoriser l'utilisateur du processus qui exécute le conteneur de servlets Java à accéder en lecture/écriture au répertoire de données :
- Unix ou Mac OS X : ~/arcesb/
Redémarrez votre serveur Tomcat pour que les changements prennent effet. Vous pouvez maintenant vous connecter à l'application.
[root@serv ] # systemctl restart tomcat
Accès plateforme
Une fois l'installation de Tomcat réalisée et le fichier WAR déposé dans le dossier WEBAPPS de tomcat, nous allons pouvoir accéder à la solution en nous rendant à l'adresse du server : "http://<ip_du_server>:8080/arcesb"
Clustering ArcESB
Les petites entreprises qui viennent d'entrer dans le monde de l'EDI ont besoin d'une solution légère et facilement configurable pour s'intégrer avec leurs partenaires du commerce de détail et du secteur de la santé, avec un minimum de tracas. De l'autre côté de cet échange, les utilisateurs en entreprise recherchent une solution EDI qui n'échoue jamais, capable de traiter des centaines de milliers de transactions EDI quotidiennes. ArcESB est une solution EDI hautement évolutive qui peut être configurée pour prendre en charge une grande variété de demandes émanant de petites entreprises, d'utilisateurs en entreprise et de tous ceux qui se trouvent entre les deux.
Bien qu'une seule instance d'ArcESB puisse facilement répondre aux besoins de la plupart des utilisateurs, les utilisateurs à grand volume seront heureux de constater qu'ArcESB peut être incorporé dans des systèmes plus complexes pour répondre à des exigences commerciales plus strictes en matière de volume de transfert et de fiabilité du système.
ArcESB peut être distribué dans une configuration à charge équilibrée ou à haute disponibilité de plusieurs manières différentes, mais il y a deux objectifs principaux à atteindre lors de la création de l'une ou l'autre configuration :
- Vous devrez mettre en place une ferme de serveurs web et un équilibreur de charge pour répartir le trafic entrant sur plusieurs installations de l'ArcESB
- Vous devrez synchroniser chaque installation d'ArcESB dans la ferme de serveurs afin que chaque application travaille avec les mêmes données et tienne les mêmes journaux
Prérequis
Pour déployer un cluster ArcESB, ils nous faudra les éléments suivants :
- Minimum 2 servers ArcESB
- 1 serveur NFS (Montage entre les deux ArcESB)
- 1 serveur de Base de données
Architecture
Configuration
MariaDB
On crée la base de données qui contiendra les tables partagé entre les instances ArcESB
MariaDB [(none)]> CREATE DATABASE ArcESBCluster CHARACTER SET utf8 COLLATE utf8_bin; Query OK, 1 row affected (0.002 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON ArcESBCluster.* TO 'ArcESBUser'@'%' IDENTIFIED BY 'your_password'; Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]>
Serveur NFS
Installer la panoplie d’outils NFS et leurs dépendances.
yum install nfs-utils
Nous allons définir ces partages dans le fichier /etc/exports.
/data 192.168.1.0/24(rw,async,no_root_squash,no_subtree_check)
Note:
- L’option rw monte le répertoire distant en lecture/écriture.
- L’option async permet des écriture asynchrones, c’est-à-dire que le serveur n’attend pas l’écriture d’une requête précédente avant de répondre.
- Sans trop rentrer dans les détails, l’option no_subtree_check neutralise la vérification des sous-répertoires, ce qui a de subtiles implications au niveau de la sécurité, mais peut améliorer la fiabilité dans certains cas.
- Attention à ne pas mettre d’espace entre la définition du réseau 192.168.2.0/24 et les options (rw,async).
Activer et démarrer les services RPC et NFS.
systemctl enable rpcbind systemctl enable nfs-server systemctl start rpcbind systemctl start nfs-server
Client NFS - ArcESB Server
Sur les deux serveurs qui hébergeront la solution ArcESB, nous allons réaliser le montage NFS.
Installer la panoplie d’outils NFS et leurs dépendances.
yum install nfs-utils
Activer et démarrer le service RPC.
systemctl enable rpcbind
systemctl start rpcbind
Montage persistant des partages NFS
Vérifier le contenu de /data. Une fois que tout semble correct, on peut rendre le partage persistant en l’inscrivant dans /etc/fstab comme ceci.
nfs1.oowy.lan:/data /data nfs defaults,_netdev 0 0
Note:
L’option _netdev indique au système qu’il s’agit d’un disque réseau et qu’il doit au moins attendre d’être connecté pour le monter.
Tomcat - ArcESB Server
On récupère le bon jar par rapport à notre tomcat (7.0.76)
wget -O /usr/share/tomcat/lib/tomcat-dbcp-7.0.76.jar https://repo1.maven.org/maven2/org/apache/tomcat/tomcat-dbcp/7.0.76/tomcat-dbcp-7.0.76.jar
On récupère le MySQL JAR/install/copie lib dans tomcat
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.19-1.el7.noarch.rpm rpm -ivh mysql-connector-java-8.0.19-1.el7.noarch.rpm cp /usr/share/java/mysql-connector-java.jar /usr/share/tomcat/lib/
On configure l'application pour utiliser le NFS et la database MariaDB.
Dans la section <host> on ajoute le context pour arcesb
nano /usr/share/tomcat/conf/server.xml ... <host> ... <Context path="/arcesb"> <Resource name="jdbc/APP_DB" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="ArcESBUser" password="your_password" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://mariadb.oowy.lan:3306/ArcESBCluster"/> <Parameter name="APP_DIRECTORY" value="/data/ArcESB" override="false"/> </Context>
Ensuite on vient reconfigurer le “web.xml” de l'application
nano /usr/share/tomcat/webapps/arcesb/WEB-INF/web.xml
On reconfigure la resource correctement
<resource-ref> <description>App Security Datasource</description> <res-ref-name>jdbc/APP_DB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth>
En redémarrant le tomcat, celui-ci ira créer dans la base de donnée les tables nécessaires.
On vérifie !
MariaDB [ArcESBCluster]> show tables; +-------------------------+ | Tables_in_ArcESBCluster | +-------------------------+ | app_logs | | app_messageheaders | | app_requests | | app_transactions | +-------------------------+ 4 rows in set (0.001 sec)
C'est configuration seront à porter sur tous les noeuds du cluster.
Locking and Concurrency
ArcESB utilise des verrous pour s'assurer que plusieurs instances n'interfèrent pas entre elles ou ne traitent pas le même fichier deux fois. Dans un environnement en cluster, un verrouillage efficace est essentiel pour maintenir le débit et éviter les collisions.
Verrouillage de la base de données
Lorsque la base de données de l'application est définie sur une base de données MySQL ou SQL Server, ArcESB peut utiliser cette base de données pour effectuer le verrouillage. Lorsqu'elle est activée, une table spéciale contient des enregistrements qui agissent comme des 'flags' pour chaque fichier dont le traitement est prévu par l'application.
L'approche de verrouillage centrée sur la base de données remplace le verrouillage par défaut basé sur les fichiers. Le verrouillage centré sur la base de données est très performant et évite tout problème potentiel lié à la latence du système de fichiers. Il est donc fortement recommandé d'utiliser une base de données MySQL ou SQL Server lors du clustering d'ArcESB pour profiter de la fonctionnalité de verrouillage de la base de données.
Activation du verrouillage de la base de données
Pour activer le verrouillage de la base de données, la base de données de l'application doit être définie sur une base de données MySQL ou SQL Server. En outre, le paramètre du profil UseDatabaseLock doit être défini à true.
Les paramètres du profil sont configurés dans le fichier “profile.cfg” situé dans le répertoire des données de l'application.
Java : ~/arcesb/data
Dans le fichier “profile.cfg”, ajouter/modifier la ligne suivante sous la rubrique [Application] :
UseDatabaseLock = true