当前位置: 首页 > 工具软件 > Seesaw > 使用案例 >

Seesaw v2了解

钦宏义
2023-12-01

Seesaw

关于

Seesaw v2 是一个基于LVS的负载均衡平台.

它能够通过先进的负载均衡功能为同一网络的服务器提供基础的负载均衡功能,如:任播(anycast)、Direct Server Return (DSR),支持多VLAN与集中配置。

并且,它的设计是可靠和易于维护的。

环境要求

一个Seesaw v2的负载集群需要两个Seesaw节点(可以是虚拟机或物理机),每个节点必须有两个网卡(一个为主机网络通讯使用,一个为集群的虚拟IP(VIP)使用),四个网卡必须连接相同的二层网络。

编译

Seesaw v2 使用go语言开发,并依赖于以下几个包:

  • golang.org/x/crypto/ssh
  • github.com/dlintw/goconf
  • github.com/golang/glog
  • github.com/golang/protobuf/proto
  • github.com/miekg/dns

另外,编译与运行时依赖 libnl (https://www.infradead.org/~tgr/libnl/),编译时依赖于Go protobuf编译器

在Debian/Ubuntu类型系统上,在编译之前先运行如下命令:

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

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/golang/protobuf/{proto,protoc-gen-go}
go get -u github.com/miekg/dns

确保${GOPATH}/bin包含在环境变量PATH里,并在seesaw目录执行:

make test
make install

安装

make install执行成功之后,在${GOPATH}/bin目录下会出现几个以seesaw_开头的二进制文件。安装这些文件到合适的本地环境中:

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

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

install "etc/init/seesaw_watchdog.conf" "/etc/init"
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"

setcap工具在Debian/Ubuntu中可以在ibcap2-bin包中找到。

配置

每个节点需要一个用于提供节点信息和它的对等体(peer)信息的/etc/seesaw/seesaw.cfg配置文件,每个负载均衡集群需要一个基于文本的protobuf的/etc/seesaw/cluster.pb配置文件。

seesaw.cfg示例配置文件可以参考etc/seesaw/seesaw.cfg.example - 一个简单的seesaw.cfg配置提供如下信息:

  • anycast_enabled - true 表示集群开启任播功能
  • name - 集群的简写名称
  • node_ipv4 - 当前Seesaw节点的IPV4地址
  • peer_ipv4 - 对等体(peer) Seesaw节点IPV4地址
  • vip_ipv4 - 集群VIP IPV4地址

VIP在Seesaw节点间漂移,并且仅当在当前主节点上(master)上激活,VIP的分配需要与node_ipv4node_ipv4在同一地址段。

cluster.pb示例配置文件可以参考etc/seesaw/cluster.pb.example - 一个最小的cluster.pb 配置文件包含一个seesaw_vip实体与两个node实体。为对你想要提供负载的服务,需要配置一个带有一个或多个vserver_entry段落(段落为一个端口/协议对)、一个或多个backends与一个或多个的healthchecksvserver实体,特性信息都可以通过protobuf定义 - 参考pb/config/config.proto

执行restart seesaw_watchdog将启动(或者重启) watchdog进程,并将启动其他组件。

任播(Anycast)

Seesaw v2为VIP的任播提供全支持 - 其可用时将公布一个VIP,并在不可用时回收VIP。为此,需要安装配置Quagga BGP守护,与BGP对等体(BGP peers)接受在Seesaw节点上从任播范围(目前硬编码为192.168.255.0/24)宣告的特定的主机路由。

命令行

一旦完成了相关的配置并运行了Seesaw组件,Seesaw的状态即可通过命令行接口进行查询与控制了。运行seesaw会给出交互式提示 - 输入?会得到顶层的命令列表,快速预览:

  • config reload - 从当前配置源中重新加载cluster.pb
  • failover - Seesaw节点之间故障切换
  • show vservers - 列出当前集群中所有的vservers配置
  • show vserver <name> - 显示给定名字的vserver的当前状态

故障排除

Seesaw在watchdog下运行5个组件 - 进程表如下:

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

所有的Seesaw v2组件都有自己的日志记录,都是通过watchdog提供的日志功能。如果任意经常已经停止运行,在/var/log/seesaw下检查相应的日志文件,如:seesaw_engine.{log,INFO}

 类似资料: