De WSO2 Micro Integrator is de nieuwste telg in de familie van de beroemde Enterprise Integrator serie. Hoewel we het als afzonderlijk product beschouwen, maakt het wel gebruik van de bekende Synapse / Axis2 omgevingen. En die gebruiken we al vanaf de eerste WSO2 Enterprise Integrator of WSO2 Enterprise Service Bus die meer dan 10 jaar geleden uitgebracht werden.
Waarom zien we het dan als nieuw product? Vooral omdat het afgestemd is op de trend richting microservices, containerisatie en omgevingen zoals Docker en Kubernetes. In andere woorden: de deployments wijken af van de monoliete deployments van de WSO2 Enterprise Integrator 6.x.0 (en eerdere versies).
In deze blog gaan we naar de volgende aspecten kijken:
- Het opzetten van de WSO2 Micro Integrator inclusief Analytics
- Deployment van twee hele simple proxy’s en een API naar deze omgeving
- Het aanroepen van de proxy’s en de API
- Vergelijking met de reguliere deployment (zoals je dat zou doen met de WSO2 Enterprise Integrator).
We voeren de deployment uit met een gewone virtuele machine omgeving, maar ook met de ingebouwde WSO2 Micro Integrator die onderdeel is van de de Integration Studio. In een toekomstige blog laten we zien hoe je het naar een Docker omgeving en naar een MiniKube kunt uitrollen.
Installatie
We gebruiken een separate download voor de WSO2 Micro Integrator in plaats van de WSO2 Enterprise Integrator (EI) 7.0.0. Dit doen we omdat we de Streaming Integrator die in de bundel van de WSO2 EI 7.0.0 zit niet nodig hebben. Bovendien vermijden we ook de installer, omdat deze het product niet op de gewenste plek installeert. We downloaden simpelweg de binary (zip-bestand) en gebruiken dat. Daarnaast downloaden we het zip-bestand met de (analytics for) WSO2 Enterprise Integrator, de WSO2 Micro Integrator command line tool, de WSO2 Integration Studio 7.0.0 en de WSO2 Micro Integrator dashboard. Dit is een serieuze download, met een totaal van ruim 1,4 gigabyte aan data. De reden dat dit zo groot is, is omdat we ook de WSO2 Enterprise Integrator (523 mb) downloaden. Hier zit namelijk het analytics deel in dat niet als losse download beschikbaar is. De WSO2 Integration Studio is daarnaast ook nog eens 772 megabytes. Tot slot is de WSO2 Micro Integrator zelf, met daarbij het dashboard en de command line tool maar 200 megabyte.
Ik heb alles op mijn computer gezet en de bestanden uitgepakt. Deze zie ik in een aantal mappen.
Map | Doel |
Integration Studio | Development environment |
wso2mi-1.1.0 | WSO2 Micro Integrator |
wso2mi-cli-1.1.0 | Command line interface |
wso2mi-monitoring-dashboard-1.1.0 | Dashboard |
wso2ei-6.6.0 | Analytics |
Configuratie
Om de WSO2 Micro Integrator te configureren zullen we een aantal wijzigingen in het deployment.toml bestand moeten doorvoeren. Deze veranderingen hebben te maken met:
- de verbinding met de analytics server;
- de uitwisseling van certificaten tussen de Micro integrator en Analytics.
De WSO2 Micro Integrator gebruikt het deployment.toml bestand als centraal configuratiebestand bovenop de reguliere config-bestanden die in de conf-map staan. Dit mechanisme is ook terug te vinden in de recentste versies van de WSO2 API Manager en de WSO2 Identity Server, maar niet in de WSO2 Enterprise Integrator 6.6.0. Het deployment.toml bestand zal de veranderingen in de configuratie registreren en de juiste waarden bij het opstarten wegschrijven naar de desbetreffende configuratiebestanden zoals carbon.xml en axis2.xml.
Open het deployment.toml bestand in [MI-HOME]/conf en voeg de volgende regels toe om de analytics van de WSO2 Micro Integrator aan te zetten.
Het opstarten van de WSO2-producten
Om dit uit te proberen, zullen we de Analytics Server op moeten starten voordat we de WSO2 Micro Integrator starten. We kiezen voor deze volgorde omdat we door het inschakelen van de Analytics een afhankelijkheid creëren op de Analytics Server. Zo gauw je de Micro Integrator start zal het dan verbinding proberen te maken met de Analytics Server om de gegevensoverdracht voor te bereiden.
We starten nu de Analytics Server met het ‘worker.sh’ commando dat in de [EI-HOME]/wso2/analytics/bin map gevonden kan worden. Daarnaast starten we ook het dashboard van de Analytics Server. Ook dat doen we in de [EI-HOME]/wso2/analytics/bin map met behulp van het commando: ‘sh dashboard.sh’. Je kunt de URL van het dashboard dan terugvinden in de terminal. Klik met de rechtermuisknop om de link te openen. Log in met ‘admin’ als gebruikersnaam en ‘admin’ als wachtwoord.
Het commando om de WSO2 Micro Integrator te starten is: sh micro-integrator.sh. Je zult er echter mee moeten wachten totdat we het car-bestand hebben, want dat hebben we nodig voor de deployment.
Proxy’s aanmaken
We gaan nu twee proxy’s maken en één API. Omdat we geen backend server hebben voor de echo service (die is wel beschikbaar in de WSO2 Enterprise Integrator 6.6.0), zullen we een simpele proxy maken die het systeem een datum en tijd geeft en dat teruggeeft aan de client. Voor de API roepen we een online API service aan. Op de details van het instellen van de proxy en API gaan we niet dieper in.
De TellMe proxy haalt simpelweg de datum en de tijd van het systeem binnen en creëert een SOAP-bericht dat teruggegeven wordt aan de client.
<?xml version="1.0" encoding="UTF-8"?> <proxy name="TellMe" startOnLoad="true" transports="http https" xmlns="http://ws.apache.org/ns/synapse"> <target> <inSequence> <property expression="get-property("SYSTEM_DATE", "yyyy-MM-dd' Time 'HH:mm:ss.SSSXXX")" name="SYSTEM_DATE" scope="default" type="STRING"/> <log/> <payloadFactory media-type="xml"> <format> <time xmlns="">$1</time> </format> <args> <arg evaluator="xml" expression="$ctx:SYSTEM_DATE"/> </args> </payloadFactory> <respond/> </inSequence> <outSequence/> <faultSequence/> </target> </proxy>
For the API I am using the debounce.io API that is able to check if an email address seems legitimate. You need to sign in for this service and generate an API key to access it. The API itself is quite straightforward:
The API in the screenshot above is the key that you generate for use with debounce. The email address is the address you want to check.
https://api.debounce.io/v1/?api=XXXXXXXXXXXXX&email=jexip69755@p5mail.com. The XXX is a place holder for the API Key.
The response is something like this.
{
"debounce": {
"email": "jexip69755@p5mail.com",
"code": "3",
"role": "false",
"free_email": "false",
"result": "Invalid",
"reason": "Disposable",
"send_transactional": "0",
"did_you_mean": "jexip69755@gmail.com"
},
"success": "1",
"balance": "99"
}
Ook de API is eenvoudig:
<?xml version="1.0" encoding="UTF-8"?>
<api context="/check" name="CheckEmail" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="GET" uri-template="/{apikey}/{email}">
<inSequence>
<log level="full"/>
<send>
<endpoint>
<http method="get" statistics="enable" uri-template="https://api.debounce.io/v1/?api={uri.var.apikey}&email={uri.var.email}">
<suspendOnFailure>
<initialDuration>-1</initialDuration> <progressionFactor>-1</progressionFactor>
<maximumDuration>0</maximumDuration>
</suspendOnFailure>
<markForSuspension> <retriesBeforeSuspension>0</retriesBeforeSuspension>
</markForSuspension>
</http>
</endpoint>
</send>
</inSequence>
<outSequence>
<send/>
</outSequence>
<faultSequence/>
</resource>
</api>
In deze API nemen we de parameters van de API (API-key en e-mail) en zetten die in de call naar het debounce endpoint. We zullen moeten onthouden dat een @ in een url niet werkt, dus vervangen we die met %40. In SoapUI ziet de call er dan zo uit:
We zetten de proxy en de API in een Composite Application (C-App) en creëren een car-bestand voor deployment naar de Micro Integrator.
We gebruiken de opzichzelfstaande WSO2 Micro Integrator. Deployment van de car-bestanden werkt niet terwijl de WSO2 Micro Integrator draait, dus we zullen het product opnieuw moeten starten nadat we het car-bestand in de deployment map (MI_HOME/repository/deployment/server/carbonapps) gezet hebben. Als we dat doen, dan zien we dat de car-bestanden bij het opstarten opgepikt worden. Start de MI nu op met het eerder genoemde commando.
Bij het gebruik van het WSO2 Micro Integrator dashboard zien we als de deployment geslaagd is de proxy en de API verschijnen. De dashboard vereist dat je een beveiligingsuitzondering maakt in je browser, omdat het een zelfgetekend certificaat heeft. Dit doe je bijvoorbeeld door in je browser naar https://localhost:9164/management te gaan en die website als vertrouwd aan te geven. Zonder deze stap zul je niet in kunnen loggen.
Als we op TellMe klikken, dan zien we de broncode, eindpunten en proxygegevens.
Nu zullen we de Proxy en API een aantal keer aan moeten roepen om de Analytics aan het werk te kunnen zien. We tonen alleen het aanroepen van de proxy.
Exporteer eerst de certificaten van de KeyStore naar de andere client-truststore, anders kan er geen dataoverdracht plaatsvinden tussen de WSO2 Micro Integrator en Analytics. De onderstaande commando’s regelen dit voor je. Let op dat dit, wat betreft de installatie van de WSO2-producten, geschreven is voor onze specifieke trainingsomgeving.
# Exporting Analytics certificate
keytool - exportcert -alias wso2carbon -file /opt/wso2/Desktop/wso2analyticscert -keystore /opt/wso2/Desktop/wso2ei-6.6.0/wso2/analytics/resources/security/wso2carbon.jks -storepass wso2carbon
# Exporting MI certificate
keytool -exportcert -alias wso2carbon -file /opt/wso2/Desktop/wso2micert -keystore /opt/wso2/Desktop/wso2mi-1.1.0/repository/resources/security/wso2carbon.jks -storepass wso2carbon
# Import MI certificate into Analytics truststore
keytool -importcert -alias wso2analytics -file /opt/wso2/Desktop/wso2micert -keystore /opt/wso2/Desktop/wso2ei-6.6.0/wso2/analytics/resources/client-truststore.jks -trustcacerts -storepass wso2carbon -noprompt
# Import Analytics certificate into MI truststore
keytool -importcert -alias wso2mi -file /opt/wso2/Desktop/wso2analyticscert -keystore /opt/wso2/Desktop/wso2mi-1.1.0/repository/resources/security/client-truststore.jks -trustcacerts -storepass wso2carbon -noprompt
Roep de proxy een aantal keer aan.
Als we vervolgens inloggen op het dashboard van de Analytics Server kunnen we de aanroepen zien.
Conclusie
Zoals je ziet is de deployment van artifacts naar de WSO2 Micro Integrator heel vergelijkbaar met een gewone WSO2 Enterprise Integrator en zijn er slechts enkele kleine verschillen. In een toekomstige blog zullen we een deployment van dezelfde artifacts bespreken naar een Docker-omgeving, omdat dit ook door de Integration Studio ondersteund wordt.