Code source wiki de Utilisation Apache en reverse proxy et cluster
Modifié par Christian SENET le 2016/06/17 06:09
Afficher les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
| 1 | **Prérequis : **Apache > version 2.4.10 sur plateforme unix, linux et windows implémente un mode reverse proxy pour les [[(% style="line-height: 1.4285715;" %)websockets>>url:http://apache%20module%20mod_proxy_wstunnel/]]. | ||
| 2 | |||
| 3 | |||
| 4 | configuration dans //httpd.conf// d'un serveur apache **(% style="color: rgb(42,0,255);" %)[[www.domain.com>>url:http://www.domain.com]](%%)** (en écoute sur le port 80) en frontal de deux tomcats **remotehost1** et **remotehost2** (en écoute sur le port 88) pour les requêtes en reverse proxy | ||
| 5 | |||
| 6 | Le loadbalancer est configuré pour l'application **myapp** | ||
| 7 | |||
| 8 | Les deux noeuds du cluster seront différenciés par leur nom **node1** et **node2**. Ces noms utilisés dans le fichier// httpd.conf// doivent être respectivement configurés lors du lancement de la jvm sur **remotehost1** et **remotehost2** | ||
| 9 | |||
| 10 | |||
| 11 | {{code language="none"}} | ||
| 12 | LoadModule headers_module modules/mod_headers.so | ||
| 13 | LoadModule proxy_module modules/mod_proxy.so | ||
| 14 | LoadModule proxy_http_module modules/mod_proxy_http.so | ||
| 15 | LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so | ||
| 16 | |||
| 17 | LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so | ||
| 18 | LoadModule proxy_balancer_module modules/mod_proxy_balancer.so | ||
| 19 | LoadModule slotmem_shm_module modules/mod_slotmem_shm.so | ||
| 20 | ... | ||
| 21 | |||
| 22 | ProxyRequests Off | ||
| 23 | ServerName www.domain.comr:80 | ||
| 24 | DocumentRoot "d:/Apache24/htdocs" | ||
| 25 | |||
| 26 | |||
| 27 | BalancerInherit Off | ||
| 28 | <Proxy balancer://wscluster> | ||
| 29 | BalancerMember ws://remotehost1.domain.com:88 route=node1 retry=1 keepalive=On ttl=120 | ||
| 30 | BalancerMember ws://remotehost2.domain.com:88 route=node2 retry=1 keepalive=On ttl=120 | ||
| 31 | ProxySet nofailover=Off | ||
| 32 | </Proxy> | ||
| 33 | <Proxy balancer://httpcluster> | ||
| 34 | BalancerMember http://remotehost2.domain.com:88 route=node1 retry=1 keepalive=On | ||
| 35 | BalancerMember http://remotehost2.domain.com:88 route=node2 retry=1 keepalive=On | ||
| 36 | ProxySet nofailover=Off | ||
| 37 | </Proxy> | ||
| 38 | ProxyPass /myapp/WagonWS balancer://wscluster/myapp/WagonWS stickysession=WagonNodeId stickysessionsep=Off | ||
| 39 | ProxyPassReverse /myapp/WagonWS balancer://wscluster/myapp/WagonWS | ||
| 40 | ProxyPass /myapp/ balancer://httpcluster/myapp/ stickysession=WagonNodeId stickysessionsep=Off | ||
| 41 | ProxyPassReverse /myapp/ balancer://httpcluster/myapp/ | ||
| 42 | {{/code}} | ||
| 43 | |||
| 44 | |||
| 45 | Remarque : dans la déclaration de la règle en reverse proxy sur la websocket WagonWS, l'url ne doit être se terminer par /WagonWS, en aucun cas il ne faut rajouter de / à la fin de l'URL. | ||
| 46 | |||
| 47 | configuration du listener tomcat en mode reverse proxy | ||
| 48 | |||
| 49 | |||
| 50 | {{code language="xml" language="xml"}} | ||
| 51 | <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" port="88" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true" scheme="http" proxyName="www.domain.com" proxyPort="80"/> | ||
| 52 | {{/code}} | ||
| 53 | |||
| 54 | |||
| 55 | configuration de tomcat en spécifiant le nom de cookie de session WagonNodeId à node1 sur **remotehost1** et node2 **remotehost2** au lancement de à l'aide de jvm à l'aide de la directive -DWagonNodeId~=**nodexxx** | ||
| 56 | |||
| 57 | En linux ajouter (ou créer la variable JAVA_OPTS) dans setclasspath.sh | ||
| 58 | {{{export JAVA_OPTS~=-DWagonNodeId~=node1 }}} | ||
| 59 | |||
| 60 | En windows ajouter (ou créer la variable JAVA_OPTS) dans setclasspath.bat ou ajoutez la directivement dans le service tomcat | ||
| 61 | {{{set JAVA_OPTS~=-DWagonNodeId~=node1}}} | ||
| 62 |