RADL ひよっこエンジニアの備忘録 2年目 奮闘記
reddit.epicplugins.com 
want to join? in seconds

Googleの独自ロードバランサー Seesaw を試す!

ソース
http://jp.techcrunch.com/2016/01/30/20160129google-open-sources-its-seesaw-load-balancer/

Googleが今日(米国時間1/29)、ロードバランサーSeesawをオープンソースにする、と発表した。このLinuxアプリケーションはGoogleのGo言語で書かれていて、これからはApacheライセンスによりGitHubで入手できる。

Googleのインフラの日常的メンテナンスを担当しているSite Reliability Engineer(SRE)の一人Joel Singが、今日の発表声明で述べているところによると、Googleは2012年までは二種類のロードバランシングシステムを使っていたが、しかしどちらも、“管理と安定性に問題があった”。そこで、彼と彼のチームは新しいソリューションを探したが、Googleのニーズを満たすものがなかったので、自作することになった。

“要求はそれほど複雑ではなかった。必要なのは、ユニキャストとエニーキャストの仮想IPを扱えること、NATとDSR(またの名DR)でロードバランシングができること、そしてバックエンドに対する健康診断ができることだ”、とSingは書いている。“何よりも必要なのは、管理のしやすいプラットホームだった。構成を変えたときのデプロイの自動化、とかね”。

一部ではすでにネットワークレベルのロードバランシングにLinux Virtuall Server(LVS)を使っていたから、Singのチームもそうすることにした。ただしそれに加えて彼らは、 モジュール構造のマルチプロセスアーキテクチャと、フェイルオーバーやリカバリのサービスも実装した。

“開発は短期間で集中的に行い、完成しデプロイにも成功したSeesaw v2で二つの既存のプラットホームをリプレースした”、とSingは書いている。“これにより、全体的に、サービスの可利用性が向上し、管理のオーバヘッドが減った”。

なお、このプロジェクトの提供者はGoogleだが、オープンソースのバージョンはGoogleの公式のプロダクトではない。だから、サポートをGoogleに求めることはできない。

とまぁ気になる記事を会社の先輩に教えて頂いたのでさっそくやってみました。
go 環境はすでに作ってあったので、ささっと導入に望みますが・・・

go get golang.org/x/crypto/ssh
go get github.com/dlintw/goconf
go get github.com/golang/glog
go get github.com/golang/protobuf/{proto,protoc-gen-go} ← ここで失敗する!
go get github.com/miekg/dns

まじかー!失敗だ。

root@ubuntu:~/go/seesaw# go get github.com/golang/protobuf/{proto,protoc-gen-go}

# github.com/golang/protobuf/protoc-gen-go/descriptor
../src/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go:33: 
import /root/go/pkg/linux_amd64/github.com/golang/protobuf/proto.a: not a package file

ほー!
not a package file と言われました。
しかし、lsで見てみると・・・

root@ubuntu:~/go/pkg/linux_amd64/github.com/golang/protobuf# ls -al
total 1176
drwxr-xr-x 2 root root    4096 Jan 29 23:52 .
drwxr-xr-x 3 root root    4096 Jan 29 23:52 ..
-rw-r--r-- 1 root root 1192884 Jan 29 23:52 proto.a

しっかりと「proto.a」はあるんだなぁ。。
proto.aはあるんだけど、proto.aがパッケージじゃないって言ってるのかなぁ?

このエラーのせいで make 出来ないし・・

protoc --go_out=. pb/config/config.proto
protoc-gen-go: program not found or is not executable
--go_out: protoc-gen-go: Plugin failed with status code 1.
make: *** [proto] Error 1

まぁ、しばらくしたら導入方法を記載したブログが増えると思うので、そこ見てやってみようかな。

コメントを残す