文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

Seesaw v2

注意: 此项目并非 Google 官方产品。

介绍

Seesaw v2 是一个基于 Linux Virtual Server (LVS) 的负载均衡平台。

主要提供了同一个局域网内服务器的负载均衡,还包含一些高级的负载均衡功能,如 anycast, Direct Server Return (DSR),支持多个虚拟网络和集中式配置。

其设计理念是可靠以及易于维护。

要求

Seesaw v2 负载均衡集群要求两个 Seesaw 节点 —— 可以是物理机或者是虚拟机。每个节点包含两个网络接口,一个用户自身网络,另外一个用于集群虚拟 IP。这四个网络接口都可以连接到同一个 2 层的交换网络。

第 1 段(可获 1.54 积分)

构建

Seesaw v2 使用 Go 语言开发,依赖一些 Go 开发包:

此外,在编译和运行时依赖于 libnl 以及编译时依赖于 Go 的 protobuf 编译器。

在 Debian/Ubuntu 系统中,你可以在构建器用如下命令安装构建环境:

apt-get install golang
apt-get install libnl-3-dev libnl-genl-3-dev

如果你的 Linux 发行版已经安装了 1.5 以前的 Go 版本,需要更新一下版本,更新地址:https://golang.org/dl/.

第 2 段(可获 1.18 积分)

在设置完 GOPATH 系统路径之后(例如 ~/go)执行如下命令:

go get -u golang.org/x/crypto/ssh
go get -u github.com/dlintw/goconf
go get -u github.com/golang/glog
go get -u github.com/miekg/dns
go get -u github.com/kylelemons/godebug/pretty

确保 ${GOPATH}/bin 在你的系统环境变量 ${PATH} 以及在 seesaw 目录:

make test
make install

如果你希望重新生成 protobuf 代码,就需要安装 protobuf 编译器和 Go protobuf 编译器:

apt-get install protobuf-compiler
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
第 3 段(可获 0.46 积分)

重新生成 protobuf 代码的命令如下:

make proto

安装

在成功执行完 make install 命令后,将会在 ${GOPATH}/bin 目录下生成很多二进制文件,文件前缀是 seesaw_ ,将这些文件安装到适当位置:

SEESAW_BIN="/usr/local/seesaw"
SEESAW_ETC="/etc/seesaw"
SEESAW_LOG="/var/log/seesaw"

INIT=`ps -p 1 -o comm=`

install -d "${SEESAW_BIN}" "${SEESAW_ETC}" "${SEESAW_LOG}"

install "${GOPATH}/bin/seesaw_cli" /usr/bin/seesaw

for component in {ecu,engine,ha,healthcheck,ncc,watchdog}; do
  install "${GOPATH}/bin/seesaw_${component}" "${SEESAW_BIN}"
done

if [ $INIT = "init" ]; then
  install "etc/init/seesaw_watchdog.conf" "/etc/init"
elif [ $INIT = "systemd" ]; then
  install "etc/systemd/system/seesaw_watchdog.service" "/etc/systemd/system"
  systemctl --system daemon-reload
fi
install "etc/seesaw/watchdog.cfg" "${SEESAW_ETC}"

# Enable CAP_NET_RAW for seesaw binaries that require raw sockets.
/sbin/setcap cap_net_raw+ep "${SEESAW_BIN}/seesaw_ha"
/sbin/setcap cap_net_raw+ep "${SEESAW_BIN}/seesaw_healthcheck"
第 4 段(可获 0.38 积分)

setcap 二进制文件可以在 Debian/Ubuntu 系统的 libcap2-bin 包中找到。

配置

每个节点都需要一个 /etc/seesaw/seesaw.cfg 配置文件,提供了节点描述信息以及其对等节点信息。此外,每个负载均衡集群都需要一个集群配置,其配置的形式是 protobuf 文本格式,集群配置文件存放于 /etc/seesaw/cluster.pb.

seesaw.cfg 示例配置文件请看 etc/seesaw/seesaw.cfg.example - 这是一个最小化的 seesaw.cfg 配置,包含如下内容:

  • anycast_enabled - True 表示启用集群的 anycast
  • name - 集群的短名称
  • node_ipv4 - 节点的 IPv4 地址
  • peer_ipv4 - 对等节点的 IPv4 地址
  • vip_ipv4 - 集群虚拟 IP 的 IPv4 地址
第 5 段(可获 1.46 积分)

虚拟 IP 在两个 Seesaw 节点间浮动,并且只对当前主节点有效。该地址需要在相同网段中分配,包括节点 IP 和对等节点 IP 地址。

一个示例的 cluster.pb 文件 etc/seesaw/cluster.pb.example - 这是一个最小化的 cluster.pb 配置,包含一个 seesaw_vip 条目和两个节点条目。每个需要负载均衡的服务需要一个独立的 vserver 条目以及一个或者多个 vserver_entry 配置段 (每一个 port/proto 配对), 一个或者多个 backends 以及一个或者多个 healthchecks. 关于 protobuf 定义的更详细信息请阅读 pb/config/config.proto.

第 6 段(可获 1.29 积分)

在一个基于 upstart 的系统中,可以运行 restart seesaw_watchdog 来启动或者重启 watchdog 进程,它将依次运行相关组件。

Anycast

Seesaw v2 完全支持 anycast 虚拟 IP —— 也就是说它将在可用时广播一虚拟 IP ,并在不可用时收回虚拟 IP。为了让这个功能生效需要安装并配置 Quagga BGP 守护进程,这样 BGP 配对可以接受特定主机的路由信息和来自 Seesaw 节点在 Anycast 范围内的广播信息(当前硬编码为 as 192.168.255.0/24).

第 7 段(可获 1.1 积分)

命令行

一旦执行了初始的配置并开始运行 Seesaw 组件,就可以通过 Seesaw 命令行接口来查看 Seesaw 的运行状态。运行 seesaw 命令 (假设在 /usr/bin ) 将提示一个交互式的命令环境,可输入 ? 来查看完整的命令列表,一些常用命令如下:

  • config reload - 从当前配置源中重新加载 cluster.pb 文件
  • failover - 在 Seesaw 节点中执行故障转移
  • show vservers - 列出集群中的所有已配置的 vservers
  • show vserver <name> - 显示指定名称 vserver 的当前状态
第 8 段(可获 1.09 积分)

故障诊断

Seesaw 在 watchdog 下运行通常包含 5 个组件,进程表中会显示如下进程:

  • seesaw_ecu
  • seesaw_engine
  • seesaw_ha
  • seesaw_healthcheck
  • seesaw_ncc
  • seesaw_watchdog

除了 watchdog 提供的日志,所有 Seesaw v2 组件都有其各自独立的日志。如果其中某个进程不允许了,可以检测其对应的日志信息 /var/log/seesaw (例如 seesaw_engine.{log,INFO}).

第 9 段(可获 0.66 积分)

文章评论

深圳访客
好东西啊 ~