loadbalance

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 1, 2017 License: Apache-2.0 Imports: 6 Imported by: 0

README

loadbalance

loadbalance acts as a round-robin DNS loadbalancer by randomizing the order of A and AAAA records in the answer.

See Wikipedia about the pros and cons on this setup. It will take care to sort any CNAMEs before any address records, because some stub resolver implementations (like glibc) are particular about that.

Syntax

loadbalance [POLICY]
  • POLICY is how to balance, the default is "round_robin"

Examples

Load balance replies coming back from Google Public DNS:

. {
    loadbalance round_robin
    proxy . 8.8.8.8 8.8.4.4
}

Documentation

Overview

Package loadbalance is plugin for rewriting responses to do "load balancing"

Package loadbalance shuffles A and AAAA records.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type RoundRobin

type RoundRobin struct {
	Next plugin.Handler
}

RoundRobin is plugin to rewrite responses for "load balancing".

func (RoundRobin) Name

func (rr RoundRobin) Name() string

Name implements the Handler interface.

func (RoundRobin) ServeDNS

func (rr RoundRobin) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error)

ServeDNS implements the plugin.Handler interface.

type RoundRobinResponseWriter

type RoundRobinResponseWriter struct {
	dns.ResponseWriter
}

RoundRobinResponseWriter is a response writer that shuffles A and AAAA records.

func (*RoundRobinResponseWriter) Hijack

func (r *RoundRobinResponseWriter) Hijack()

Hijack implements the dns.ResponseWriter interface.

func (*RoundRobinResponseWriter) Write

func (r *RoundRobinResponseWriter) Write(buf []byte) (int, error)

Write implements the dns.ResponseWriter interface.

func (*RoundRobinResponseWriter) WriteMsg

func (r *RoundRobinResponseWriter) WriteMsg(res *dns.Msg) error

WriteMsg implements the dns.ResponseWriter interface.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL