[golang][load balancer] Golang製のロードバランサー 「gobetween」を使ってみた。

AIX、UNIX、LinuxNetwork
201812081803178b7
githubの説明画像より

はじめに

先日、以下のような記事を書きましたが、Nginx以外のロードバランサーツールはないかと探してみたところ、golang製のロードバランサーが見つかったので使用してみました。

GitHub - yyyar/gobetween: :cloud: Modern & minimalistic load balancer for the Сloud era
:cloud: Modern & minimalistic load balancer for the Сloud era - yyyar/gobetween

L4バランサーで、各種プロトコルに対応、設定ファイルのフォーマットもtomlとjsonに対応、またREST APIも用意され、バックエンドとの接続についてはリストなどを用意することもでき、またconsulやDocker、LXDとも連携して、自動的にバックエンドに組み込むなど、柔軟に設定できるようになっています。フットプリントも40MB程度と小さめです。

また、ロードバランスとの性能について、公式のドキュメントではNginxにやや劣る程度とされています。

Performance tests · yyyar/gobetween Wiki

とりあえず前回のようにロードバランスする設定を書いてみました。書式フォーマットはtomlです。

ちなみに確認環境は以下の通り。

確認環境

$ gobetween -v
2018/12/09 06:26:15 gobetween v0.6.1
0.6.1

設定内容

[logging]
  level = "info"
  output = "stdout"

[api]
  enabled = false 
  bind = ":8888" 
  cors = false 

[servers.default]
  bind = ":1053" 
  protocol = "udp" 
  balance = "roundrobin"
  max_connections = 0 
  client_idle_timeout = "10m" 
  backend_idle_timeout = "10m" 
  backend_connection_timeout = "5s" 

[servers.default.udp]
	max_requests = 0 max_responses = 0

[servers.default.discovery]
	failpolicy = "keeplast" 
    interval = "0s" timeout = "5s" 
    kind = "static" 
    static_list = [ "1.1.1.1:53", "1.0.0.1:53", "9.9.9.9:53", "9.9.9.10:53" ] 

[servers.auth]
  bind = ":1153" 
  protocol = "udp" 
  balance = "roundrobin" 
  max_connections = 0 
  client_idle_timeout = "10m" 
  backend_idle_timeout = "10m" 
  backend_connection_timeout = "5s" 

[servers.auth.discovery]
	failpolicy = "keeplast" 
    interval = "0s" 
    timeout = "5s" 
    kind = "static" 
    static_list = [ "192.168.1.2:53" ] 

[servers.default.access]
	default = "deny" 
    rules = [ "allow 127.0.0.1", "allow ::1", "allow 192.168.1.0/24", ] 

[servers.auth.access]
	default = "deny" 
    rules = [ "allow 127.0.0.1", "allow ::1", "allow 192.168.1.0/24", ] 

ここではdefaultauthと2つのパターンで振り分けるようにしています。それぞれに設定をすることができるので、こちらも柔軟に設定できるかなと思います。

ちなみに設定ファイルの読み込みですが、gobetweenはローカルにファイルを配置しなくても、webからの読み込みや、consul KVSからの読み込みにも対応しているので、管理もしやすいかなと思います。

Configuration · yyyar/gobetween Wiki

ちょっと残念なのは、reloadが無いっぽいので、接続断が発生しちゃうことでしょうか。

この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする
タイトルとURLをコピーしました