2025-05-15 15:41:10 +00:00
2025-05-15 15:41:10 +00:00
2025-05-15 15:41:10 +00:00
2025-05-15 15:41:10 +00:00
2025-05-15 15:41:10 +00:00
2025-05-15 15:41:10 +00:00

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.

Description
Languages
Go 100%