Traefik : HTTP reverse proxy / Load balancer pour Docker

traefik.logo

Lors de ma formation Docker par @emilevauge, il nous avait rapidement montré son outil de reverse proxy et load balancer écrit en Go pour Docker : Træfɪk

La conf est super simple, il suffit de lui donner accès a l’API Docker (socket / port) ou n’importe quel autre Backend (Kubernetes, Etcd, consul, etc..) et traefik se débrouille tout seul pour automatiquement créer les routes vers les conteneurs !

Du coup, je l’ai utilisé pour mes propres besoin. L’avantage c’est qu’il gère aussi le https et même la génération des certificats avec Let’s Encrypt !

Comme j’utilise principalement docker-compose pour gérer les services, j’ai juste ajouté une entrée dans mon docker-compose.yml :

version: '2'

services:
  traefik:
    image: traefik
    hostname: traefik
    container_name: traefik
    command: --web --docker --docker.domain=aperogeek.fr  --logLevel=DEBUG --acme --acme.email=xxx@domain.com --acme.storagefile=/etc/traefik/acme.json --acme.entrypoint=https --acme.caserver='https://acme-staging.api.letsencrypt.org/directory' --acme.ondemand=true --entryPoints='Name:https Address::443 TLS:/etc/traefik/ssl/aperogeek.fr.pem,/etc/traefik/ssl/aperogeek.fr.key' --entryPoints='Name:http Address::80 Redirect.EntryPoint:https' --defaultentrypoints=http,https
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - "./ssl:/etc/traefik/ssl"
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "/dev/null:/traefik.toml"
      - "/data/traefik/acme.json:/etc/traefik/acme.json"

Et voila !

Un coup de docker-compose up -d et traefik va détecter mes différents conteneurs et créer les routes qui vont bien 🙂

Ensuite, je n’avais plus qu’a créer des alias DNS pour pointer vers les bons sous domaines (foo.aperogeek.fr, etc..)

 

OpenBeerMap – La Carte des bières

Aperogeek c’est de la Bière et du Linux.

Et pour l’instant j »ai abordé beaucoup de sujets Geek et très peut de bière. Du coup je vais vous parler d’une appli super qui permet de trouver facilement les bons bars qui servent de la bonne bière !

Il s’agit d’OpenBeerMap ! Une surcouche d’OpenStreetMap pour visualiser tous les bars et la liste des bières que servent chacun.

open_beer_map

Bien sur comme c’est Open Source, tout le monde peut contribuer en allant renseigner les bières pressions servies à chaque adresse !

J’ai déjà commencé en ajoutant quelques bonnes adresse sur Lyon 😉

Zabbix JMX : Auto Discovery + JBoss + Weblogic T3

zabbix_logo_500x131Java_logo

Dernièrement j’ai patché le code source du collecteur JMX de Zabbix pour rajouter quelques features :

  • Découverte automatiques des attributs / Name
  • JMX JBoss
  • JMX Weblogic en T3

Les sources sont disponibles sur mon github

Comment ça marche ?

Il faut spécifier une macro Zabibx $JMX_USER avec <login>:<protocol> ou juste « :<protocole> » si il n’y a pas d’authentification JMX.

Voici les valeurs possible pour protocole :

  • jmx : URL JMX classique
  • jboss : URL jboss remoting JMX
  • t3 : Pour utiliser une connection weblogic t3
  • t3s : Pour se connecter à la console weblo en T3S

voici les URL exacte définies pour chaque protocole :

String jmx_url      = "service:jmx:rmi:///jndi/rmi://[" + conn + "]:" + port + "/jmxrmi"; // default
String jboss_url    = "service:jmx:remoting-jmx://" + conn + ":" + port; // jboss
String t3_url       = "service:jmx:t3://"+conn+":"+port+"/jndi/weblogic.management.mbeanservers.runtime"; // T3
String t3s_url      = "service:jmx:t3s://"+conn+":"+port+"/jndi/weblogic.management.mbeanservers.runtime"; // T3S

Ainsi, dans chaque template JMX, on ajoute 2 macros {$JMX_USER} et {$JMX_PASS} et on renseigne le protocole dans {$JMX_USER}.

Si aucun protocole n’est renseigné, c’est l’url classique qui est utilisée.

Dépendances

Copier les libs suivantes dans le répoertoire lib de zabbix_java_gateway :

  • wlthint3client.jar : pour faire du weblogic t3
  • jboss-remoting-3.2.18.GA-redhat-1.jar : pour jboss

Compilation

Pour compiler tout ça il y a juste a cloner le repo git, éditer le Makefile pour renseigner le PATH de la JDK et des binaiures javac / jar.

Puis :

make

Ca va générer un package bin/zabbix-java-gateway-X.Y.Z.jar

Deploiement

Pour installer, il suffi de copier le jar généré dans le répertoire bin de zabbix_java_gateway. et de re-démarrer zabbix_java_gateway.