备注:
因为fabio 依赖consul vault (不是强需),启动之前需要先安装consul,
本次为了简单consul 使用的是单机,使用的是dev 模式
1. conusl 安装&&启动
wget -O consul_1.0.1_linux_amd64.zip https://releases.hashicorp.com/consul/1.0.1/consul_1.0.1_linux_amd64.zip?_ga=2.266211915.599626352.1512025497-95808125.1504594004
unzip consul_1.0.1_linux_amd64.zip
cp consul /usr/bin
nohup consul agent --dev &
2. fabio 安装&&启动
https://github.com/fabiolb/fabio/releases 地址下载对应的版本
nohup fabio &
3. 配置使用
备注:参考官方的demo (go)
a. get code
go get github.com/fabiolb/fabio
cd $GOPATH/src/github.com/fabiolb/fabio/demo
b. build
go build
c. run
./server -addr 127.0.0.1:5000 -name svc-a -prefix /foo
参考运行界面
4. 官方demo 的几个问题,以及实际需要注意的
实际系统中我们可能会存在比较多的系统故障,比如consul 集群故障,fabio 故障,服务故障,目前存在以下几个问题
a. 服务宕机
这个比较简单,问题不大,重新起来进行注册就可以了
b. fabio宕机
这个就有问题了,实际上我们应该多个节点,简单故障
c. consul 宕机
fabio 不受较大影响(因为cache),新服务不能注册,以前的可以使用,但是此时consul 起来之后,需要进行服务注册的重试,不然consul旧的服务是没有的
假如此时使用了lb 或者类似工具解决ha 以及负载均衡问题,旧会出现数据一致性的问题,实际上可能需要确保,数据的一致性
备注:上面的分析也是从部分极端情况下设想的,但是实在分布式系统中,一切皆有可能,因为可能会触连锁反应,所以还是最好规划,以及有对应的解决方案
方法
5. 参考资料
https://github.com/fabiolb/fabio