Skip to content

cautio/switchboard

 
 

Repository files navigation

switchboard

A TCP router written on Golang.

Developed to replace HAProxy as the proxy tier enabling high availability for the MySQL dbaas for Cloud Foundry. Responsible for routing of client connections to a one node at a time of a backend cluster, and failover on cluster node failure. For more information, see the develop branch of cf-mysql-release/docs/proxy.md.

Why switchboard?

There are several other proxies out there: Nginx, HAProxy and even MariaDB's MaxScale. None of them met a specific criteria which is critical for the performance of the cluster in the case that a database server becomes unhealthy but is still accessible. Switchboard detects this condition (via healthchecks) and severs the connection. This forces the client to reconnect, and will be routed to a healthy backend. From the client's perspective it looks like it is connected to a single backend that briefly disappeared and is immediately available again.

Development

Proxy

Install Go by following the directions found here

Running the tests requires Ginkgo:

go get github.com/onsi/ginkgo/ginkgo

Run the tests using the following command:

./bin/test

UI

Ensure phantomjs v2.0 or greater is installed.

To do this on OSX using homebrew:

brew install phantomjs

Run the UI tests using the following command:

./bin/test-ui

Build UI assets:

./bin/build-ui

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 73.6%
  • CSS 22.7%
  • Go 3.5%
  • Other 0.2%