1.7 KiB
1.7 KiB
Sentinel
Sentinel is a highly-available reverse proxy that can be used to distribute traffic to multiple backends. It is designed to be simple to use and easy to configure.
Features
- Simple to use
- Easy to configure
- Highly-available
Installation
To install Sentinel, you can use the following command:
go get github.com/juls0730/sentinel
Usage
all you need is a structure that holds the proxyManager structure and a function that returns a transport for the proxyManager
package main
import (
"github.com/juls0730/sentinel"
"net/http"
)
func main() {
proxyManager := sentinel.NewProxyManager()
proxyManager.ListenAndServe("localhost:8080")
proxy, err := NewDeploymentProxy(socketPath)
if err != nil {
return err
}
proxyManager.AddProxy("text.local", proxy)
}
type unixDialer struct {
socketPath string
}
// dialContext implements DialContext but ignored everthing and just gives you a connection to the unix socket
func (d *unixDialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
return net.Dial("unix", d.socketPath)
}
func getTransport(target string) *http.Transport {
return &http.Transport{
DialContext: (&unixDialer{socketPath: socket}).DialContext,
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
MaxIdleConnsPerHost: 100,
ForceAttemptHTTP2: false,
}
}
If you want more indepth examples of how to use Sentinel, you can check out gloom which is a plugin-based web server that uses Sentinel to distribute traffic to multiple backends, or Flux which is a mini-paas that uses Sentinel to distribute traffic to project containers.