Devops

Tips and Tricks to Master Devops

Our Motto: Automate everything

Devops

If you want to increase your productivity, automate all the things from development to software testing and going in production.


You may have recognized the famous indie game Factorio used as the picture for this article. Factorio is best described as: Factorio is a game in which you build and maintain factories. You will be mining resources, researching technologies, building infrastructure, automating production and fighting enemies. Basically the goal of this game is to build a fully automated supply chain to produce a rocket to escape an hostile planet where you crashed.

Rancher High-Availability

Rancher High-Availability

Devops

Step by step guide to install Rancher High-Availability (multi-nodes).


This blog post is the last part of a series of three tutorials dedicated to Rancher High-Availability. We previously installed Rancher single-node using a external databases: a replicated Master-Master MySQL database, a MariaDB Galera Cluster. This time we will go full HA by installing Rancher on three servers. Pre-requisites You need an existing Rancher server (single-node) that uses an external database. You also need from 3 to 5 servers with at least 1GB RAM (8GB recommended) and a load balancer:

Galera Cluster for Rancher

Galera Cluster for Rancher

Devops

Step by step guide to install a MariaDB Galera Cluster for Rancher.


This blog post is the second part of a series of three tutorials dedicated to Rancher High-Availability. We previously installed a replicated Master-Master MySQL database. This time we will install a MariaDB Galera Cluster on three servers. The trick is that we are going to use a first Rancher to install the database cluster for a second Rancher server (used in production). In the end we will have one Rancher server that manages its own database cluster!

MySQL Master - Master

MySQL Master - Master

Devops

Step by step guide to install an external and replicated MySQL Database for Rancher.


This blog post is the first part of a series of three tutorials dedicated to Rancher High-Availability. And the first step towards HA is to have a fault tolerant database. By default Rancher comes with an embedded HSQLDB database. It’s fine for testing purpose but not suited to a production environment. So this tutorial explains: How to start a replicated Master - Master MySQL database using Docker, How to export Rancher data to an external database, How to start Rancher using an external database.

Building small Java Docker images

Building small Java Docker images

Devops

Simple tutorial on how to build lightweight Docker images for Java applications.


When you take a look at the Java Official Docker images, you will immediately notice how fat they are: a whopping 243MB announced for a simple Java 8 JDK base image! It takes forever to download them from a regular DSL connection here. Usually, your Dockerfile for Java apps starts with something like: FROM java:8 MAINTAINER ... Just try the following command: (you must have docker installed) docker pull java:8 docker images | grep java It should output something like:

Scheduling Docker containers on a cluster

Scheduling Docker containers on a cluster

Devops

Scheduling Docker containers on a cluster.


Docker makes it incredibly easy to run a variety of processes on a cluster of machines. Rancher offers container orchestration on top of Docker. Rancher allows you to manage a cluster of Docker-enabled machines. We use Rancher extensively at Octoperf to run JMeter containers on machines all over the world. We quickly faced an issue with Rancher here: container scheduling. Rancher nodes administration UI rancher-infrastructure When you have a single machine running your docker container, everything is simple.

Deploying Jekyll using Docker

Deploying Jekyll using Docker

Devops

Using Docker to build and deploy static websites on Amazon S3.


Building and deploying a Jekyll website on Amazon S3 To build the website of Octoperf, our load testing tool, we use Jekyll. I also use it for this website. It’s great to generate static content, hosted on Amazon S3 like OctoPerf or on Github for this blog. But we had trouble upgrading jekyll to version 3 on our build server. We use plugin that are not yet available for this version.

Backup Couchbase to S3 automatically

Backup Couchbase to S3 automatically

Devops

How to backup Couchbase to S3 automatically.


Couchbase is a popular NoSQL Database. I’m working with this database for about a year. I like this database for several reasons: Easy to install: a single .deb file to dpkg on Ubuntu, Fast: it serves queries within milliseconds, Distributed: you can build a distributed cluster with tens of machines. The biggest downside with this database is that it consumes almost 20% of cpu on our m3.large AWS instance for no reason.

HTTPS should be the standard

HTTPS should be the standard

Devops

Secure HTTP communication should be the de-facto standard to ensure better privacy.


OctoPerf is fully HTTPS. There is a are several reasons for it. Setting up HTTPS for all our websites (Documentation, Application and Website) is a little bit tedious and pricey1. It took us two days to complete the operation but the result is satisfying for number of reasons. Why is HTTP so dangerous HTTPS ensures that the communication between our servers and our customers is fully encrypted. Lots of people are using a Wifi connection to go on the internet.

Real-time analytics with ElasticSearch

Real-time analytics with ElasticSearch

Devops

Real-time analytics was the trickiest part of our load testing tool. We went through many issues and learnt lessons from that.


Requirements When we first started to think about real-time analytics, we though that our previous experience in load testing would help us to get quickly to something working fine. It always seems easy to rethink about a problem you already solved in the past. We were totally wrong. We wanted to provide our users a completely new analytics experience when load testing their website. Our requirements are : Real-time: users should not wait the end of the test to analyze results, Blazingly Fast: users should experience sub-second response times, regardless of the number of concurrent virtual users, Scalable: we must be able to scale horizontally as the number of users grows, Reliable: the analytics system should be redundant to provide fault tolerance and avoid outage, Testable: we should be able to easily verify through unit testing that the analytics system is working correctly, Open-source: we don’t want to build this by ourselves.