From dd3601979eae6cf46d2473df571f8aaadb45085b Mon Sep 17 00:00:00 2001 From: Omar Khawaja Date: Thu, 4 Oct 2018 16:18:52 -0400 Subject: [PATCH] Load Balancing with Fabio Guide (#4445) * add load-balancing guide * restructure load balancing section * defining consul lb strategies inline and giving fabio its own bullet point * update docker image name and shorten job template * changing system scheduler link to relative link and moving load balancing navigation link right to right above Web UI --- website/source/assets/images/lb-homepage.png | Bin 0 -> 16274 bytes .../source/assets/images/lb-routing-table.png | Bin 0 -> 70505 bytes .../source/assets/images/routing-table.png | Bin 0 -> 59952 bytes .../guides/load-balancing/fabio.html.md | 233 ++++++++++++++++++ .../load-balancing/load-balancing.html.md | 20 ++ website/source/layouts/guides.erb | 9 + 6 files changed, 262 insertions(+) create mode 100644 website/source/assets/images/lb-homepage.png create mode 100644 website/source/assets/images/lb-routing-table.png create mode 100644 website/source/assets/images/routing-table.png create mode 100644 website/source/guides/load-balancing/fabio.html.md create mode 100644 website/source/guides/load-balancing/load-balancing.html.md diff --git a/website/source/assets/images/lb-homepage.png b/website/source/assets/images/lb-homepage.png new file mode 100644 index 0000000000000000000000000000000000000000..567f2d8d44be0f53d82c2c0894ed7b2a678f02f0 GIT binary patch literal 16274 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 literal 0 HcmV?d00001 diff --git a/website/source/assets/images/routing-table.png b/website/source/assets/images/routing-table.png new file mode 100644 index 0000000000000000000000000000000000000000..acc71946f719c687022079d6ffd5ab9809d4a92b GIT binary patch literal 59952 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 A^8f$< literal 0 HcmV?d00001 diff --git a/website/source/guides/load-balancing/fabio.html.md b/website/source/guides/load-balancing/fabio.html.md new file mode 100644 index 000000000..718caca70 --- /dev/null +++ b/website/source/guides/load-balancing/fabio.html.md @@ -0,0 +1,233 @@ +--- +layout: "guides" +page_title: "Load Balancing with Nomad" +sidebar_current: "guides-load-balancing" +description: |- + There are multiple approaches to load balancing within a Nomad cluster. + One approach involves using [fabio][fabio]. Fabio integrates natively + with Consul and provides rich features with an optional Web UI. +--- + +# Load Balancing with Fabio + +[Fabio][fabio] integrates natively with Consul and provides an optional Web UI +to visualize routing. + +The main use case for fabio is to distribute incoming HTTP(S) and TCP requests +from the internet to frontend services that can handle these requests. This +guide will show you one such example using [Apache][apache] web server. + +## Reference Material + +- [Fabio](https://github.com/fabiolb/fabio) on GitHub +- [Load Balancing Strategies for Consul](https://www.hashicorp.com/blog/load-balancing-strategies-for-consul) +- [Elastic Load Balancing][elb] + +## Estimated Time to Complete + +20 minutes + +## Challenge + +Think of a scenario where a Nomad operator needs to configure an environment to +make Apache web server highly available behind an endpoint and distribute +incoming traffic evenly. + +## Solution + +Deploy fabio as a +[system][system] +scheduler so that it can route incoming traffic evenly to the Apache web server +group regardless of which client nodes Apache is running on. Place all client nodes +behind an [AWS load balancer][elb] to +provide the end user with a single endpoint for access. + +## Prerequisites + +To perform the tasks described in this guide, you need to have a Nomad +environment with Consul installed. You can use this +[repo](https://github.com/hashicorp/nomad/tree/master/terraform#provision-a-nomad-cluster-in-the-cloud) +to easily provision a sandbox environment. This guide will assume a cluster with +one server node and three client nodes. + +-> **Please Note:** This guide is for demo purposes and is only using a single server +node. In a production cluster, 3 or 5 server nodes are recommended. + +## Steps + +### Step 1: Create a Job for Fabio + +Create a job for Fabio and name it `fabio.nomad` + +```hcl +job "fabio" { + datacenters = ["dc1"] + type = "system" + + group "fabio" { + task "fabio" { + driver = "docker" + config { + image = "fabiolb/fabio" + network_mode = "host" + } + + resources { + cpu = 200 + memory = 128 + network { + mbits = 20 + port "lb" { + static = 9999 + } + port "ui" { + static = 9998 + } + } + } + } + } +} +``` + +Setting `type` to [system][system] will ensure that fabio is run on all clients. +Please note that the `network_mode` option is set to `host` so that fabio can +communicate with Consul which is also running on the client nodes. + +### Step 2: Run the Fabio Job + +We can now register our fabio job: + +```shell +$ nomad job run fabio.nomad +==> Monitoring evaluation "fba4f04a" + Evaluation triggered by job "fabio" + Allocation "6e6367d4" created: node "f3739267", group "fabio" + Allocation "d17573b4" created: node "28d7f859", group "fabio" + Allocation "f3ad9b16" created: node "510898b6", group "fabio" + Evaluation status changed: "pending" -> "complete" +==> Evaluation "fba4f04a" finished with status "complete" +``` +At this point, you should be able to visit any one of your client nodes at port +`9998` and see the web interface for fabio. The routing table will be empty +since we have not yet deployed anything that fabio can route to. +Accordingly, if you visit any of the client nodes at port `9999` at this +point, you will get a `404` HTTP response. That will change soon. + +### Step 3: Create a Job for Apache Web Server + +Create a job for Apache and name it `webserver.nomad` + +```hcl +job "webserver" { + datacenters = ["dc1"] + type = "service" + + group "webserver" { + count = 3 + restart { + attempts = 2 + interval = "30m" + delay = "15s" + mode = "fail" + } + ephemeral_disk { + size = 300 + } + + task "apache" { + driver = "docker" + config { + image = "httpd:latest" + port_map { + http = 80 + } + } + + resources { + network { + mbits = 10 + port "http" {} + } + } + + service { + name = "apache-webserver" + tags = ["urlprefix-/"] + port = "http" + check { + name = "alive" + type = "http" + path = "/" + interval = "10s" + timeout = "2s" + } + } + } + } +} +``` + +Notice the tag in the service stanza begins with `urlprefix-`. This is how a +path is registered with fabio. In this case, we are registering the path '/' +with fabio (which will route us to the default page for Apache web server). + +### Step 4: Run the Job for Apache Web Server + +We can now register our job for Apache: + +```shell +$ nomad job run webserver.nomad +==> Monitoring evaluation "c7bcaf40" + Evaluation triggered by job "webserver" + Evaluation within deployment: "e3603b50" + Allocation "20951ad4" created: node "510898b6", group "webserver" + Allocation "43807686" created: node "28d7f859", group "webserver" + Allocation "7b60eb24" created: node "f3739267", group "webserver" + Evaluation status changed: "pending" -> "complete" +==> Evaluation "c7bcaf40" finished with status "complete" +``` +You have now deployed and registered your web servers with fabio! At this point, +you should be able to visit any of the Nomad clients at port `9999` and +see the default web page for Apache web server. If you visit fabio's web +interface by going to any of the client nodes at port `9998`, you will see that +the routing table has been populated as shown below (**Note:** your destination IP +addresses will be different). + +[![Routing Table][routing-table]][routing-table] + +Feel free to reduce the `count` in `webserver.nomad` for testing purposes. You +will see that you still get routed to the Apache home page by accessing +any client node on port `9999`. Accordingly, the routing table +in the web interface on port `9999` will reflect the changes. + +### Step 5: Place Nomad Client Nodes Behing AWS Load Balancer + +At this point, you are ready to place your Nomad client nodes behind an AWS load +balancer. Your Nomad client nodes may change over time, and it is important +to provide your end users with a single endpoint to access your services. This guide will use the [Classic Load Balancer][classic-lb]. + +The AWS [documentation][classic-lb-doc] provides instruction on how to create a +load balancer. The basic steps involve creating a load balancer, registering +instances behind the load balancer (in our case these will be the Nomad client +nodes), creating listeners, and configuring health checks. + +Once you are done +with this, you should be able to hit the DNS name of your load balancer at port +80 (or whichever port you configured in your listener) and see the home page of +Apache web server. If you configured your listener to also foward traffic to +the web interface at port `9998`, you should be able to access that as well. + +[![Home Page][lb-homepage]][lb-homepage] + +[![Routing Table][lb-routing-table]][lb-routing-table] + +[apache]: https://httpd.apache.org/ +[classic-lb]: https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/introduction.html +[classic-lb-doc]: https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-getting-started.html +[elb]: https://aws.amazon.com/elasticloadbalancing/ +[fabio]: https://fabiolb.net/ +[lb-homepage]: /assets/images/lb-homepage.png +[lb-routing-table]: /assets/images/lb-routing-table.png +[routing-table]: /assets/images/routing-table.png +[system]: /docs/runtime/schedulers.html#system diff --git a/website/source/guides/load-balancing/load-balancing.html.md b/website/source/guides/load-balancing/load-balancing.html.md new file mode 100644 index 000000000..9a34fe87b --- /dev/null +++ b/website/source/guides/load-balancing/load-balancing.html.md @@ -0,0 +1,20 @@ +--- +layout: "guides" +page_title: "Load Balancing" +sidebar_current: "guides-load-balancing" +description: |- + There are multiple approaches to load balancing within a Nomad cluster. This + discusses the most popular strategies. +--- + +# Load Balancing + +There are multiple approaches to set up load balancing across a Nomad cluster. +Most of these methods assume Consul is installed alongside Nomad (see [Load +Balancing Strategies for +Consul](https://www.hashicorp.com/blog/load-balancing-strategies-for-consul)). + +- [Fabio](/guides/load-balancing/fabio.html) + +Please refer to the specific documentation above or in the sidebar for more +detailed information about each strategy. diff --git a/website/source/layouts/guides.erb b/website/source/layouts/guides.erb index 3a9207a0e..0fce3df53 100644 --- a/website/source/layouts/guides.erb +++ b/website/source/layouts/guides.erb @@ -200,6 +200,15 @@ + > + Load Balancing + + + > Web UI