All Projects → xcompass → Haproxy Confd

xcompass / Haproxy Confd

HAProxy combined with confd for HTTP load balancing with SSL offloading

Programming Languages

shell
77523 projects

Projects that are alternatives of or similar to Haproxy Confd

Elixir Socket
Socket wrapping for Elixir.
Stars: ✭ 642 (+9071.43%)
Mutual labels:  ssl
Springboot Learning
🚕 spring boot学习案例,方便spring boot 初学者快速掌握相关知识
Stars: ✭ 724 (+10242.86%)
Mutual labels:  ssl
Mruby Tls
mruby wrapper for libtls from http://www.libressl.org/
Stars: ✭ 5 (-28.57%)
Mutual labels:  ssl
Certigo
A utility to examine and validate certificates in a variety of formats
Stars: ✭ 662 (+9357.14%)
Mutual labels:  ssl
Docker Letsencrypt Nginx Proxy Companion
Automated ACME SSL certificate generation for nginx-proxy
Stars: ✭ 6,350 (+90614.29%)
Mutual labels:  ssl
Inlets Operator
Add public LoadBalancers to your local Kubernetes clusters
Stars: ✭ 795 (+11257.14%)
Mutual labels:  load-balancer
Steeltoe
Steeltoe .NET Core Components: CircuitBreaker, Configuration, Connectors, Discovery, Logging, Management, and Security
Stars: ✭ 612 (+8642.86%)
Mutual labels:  load-balancer
Laravel Uptime Monitor
A powerful and easy to configure uptime and ssl monitor
Stars: ✭ 837 (+11857.14%)
Mutual labels:  ssl
Netbare
Net packets capture & injection library designed for Android
Stars: ✭ 716 (+10128.57%)
Mutual labels:  ssl
Fabio
Consul Load-Balancing made simple
Stars: ✭ 6,834 (+97528.57%)
Mutual labels:  load-balancer
Porterlb
Bare Metal Load-balancer for Kubernetes Cluster
Stars: ✭ 671 (+9485.71%)
Mutual labels:  load-balancer
Pyopenssl
A Python wrapper around the OpenSSL library
Stars: ✭ 701 (+9914.29%)
Mutual labels:  ssl
Netcoreserver
Ultra fast and low latency asynchronous socket server & client C# .NET Core library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and 10K connections problem solution
Stars: ✭ 799 (+11314.29%)
Mutual labels:  ssl
Devcert
Local HTTPS development made easy
Stars: ✭ 655 (+9257.14%)
Mutual labels:  ssl
F5 Openstack Lbaasv1
OpenStack Neutron LBaaSv1 plugin and agent to control F5 BIG-IP devices
Stars: ✭ 6 (-14.29%)
Mutual labels:  load-balancer
Multitor
Create multiple TOR instances with a load-balancing.
Stars: ✭ 624 (+8814.29%)
Mutual labels:  load-balancer
Api
姬长信API For Docker 一个基于多种编程语言开源免费不限制提供生活常用,出行服务,开发工具,金融服务,通讯服务和公益大数据的平台.
Stars: ✭ 743 (+10514.29%)
Mutual labels:  ssl
Zltoolkit
一个基于C++11的轻量级网络框架,基于线程池技术可以实现大并发网络IO
Stars: ✭ 838 (+11871.43%)
Mutual labels:  ssl
Single File Httpd.conf
Single file httpd.conf configuration file for Apache HTTPD Server.
Stars: ✭ 7 (+0%)
Mutual labels:  ssl
Beetlex
high performance dotnet core socket tcp communication components, support TLS, HTTP, HTTPS, WebSocket, RPC, Redis protocols, custom protocols and 1M connections problem solution
Stars: ✭ 802 (+11357.14%)
Mutual labels:  ssl

HAProxy combined with confd for HTTP load balancing

This is based on yaronr/haproxy-confd and cstpdk/haproxy-confd

  • HAProxy 1.6.x with confd 0.12.0-alpha
  • Uses zero-downtime reconfiguration (e.g - instead of harpy reload, which will drop all connections, will gradually transfer new connections to the new config)
  • Added support for url rexeg (not reggae, damn you spell checker) for routing, in addition to the usual hostname pattern
  • Added validation for existence of keys in backing kv store, to prevent failures
  • Used official Alpine HAProxy as base to reduce the size of the image
  • Added multiple domain support
  • Added SSL/HTTPS support
  • Added tests

Usage

Setup

Create the paths allowing confd to find the services:

etcdctl mkdir "/services"
etcdctl mkdir "/tcp-services"
etcdctl mkdir "/config"

Depending on your needs, create one or more services or tcp-services. For instance, to create an http service with domain example.org and load balancing on servers 1.2.3.4:80 (we'll call it nodeA) and 2.3.4.5:80 (called nodeB), run these commands:

etcdctl mkdir "/services/example.org"
etcdctl set "/services/example.org/upstreams/nodeA" "1.2.3.4:80"
etcdctl set "/services/example.org/upstreams/nodeB" "2.3.4.5:80"

Enable SSL/HTTP support

etcdctl mkdir "/config/services"
etcdctl set "/config/services/enable_ssl" "true"
etcdctl set "/services/example.org/scheme" "https"

Possible values for scheme are: http (default), https, http-and-https. If scheme is https, all traffic to http for the domain will be redirected to https.

Add pem certs/keys to keys directory to be mounted to the container.

Start Container

Start the container making sure to expose port 80 on the host machine

docker run -e ETCD_NODE=http://172.17.42.1:2379 -p 1000:1000 -p 80:80 -p 443:443 -v `pwd`/keys:/keys compass/haproxy-confd

To add an upstream node, let's say nodeB2, 2.3.4.5:90, you just have to run this, and the configuration should safely be updated !

etcdctl set "/services/example.org/upstreams/nodeB2" "2.3.4.5:90"

To remove an upstream server, let's say ... nodeB2 (added by mistake ?), just run

etcdctl rm "/services/myapp/upstreams/nodeB2"

To remove a service, and so a directory, you must type

etcdctl rmdir "/services/example.org"

The commands for a tcp-service are the same but with tcp-services instead of services

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].