业务场景之一
Redis在业务场景中也很重要,涉及到的,所以这次迁移到docker swarm中来跑,目标是高可用及负载均衡,任意一台机器关掉,服务不中断。
为什么用Docker Swarm service的方式
这个是根据业务数据的写入方式来决定的,也考虑过Redis cluster,哨兵,swarm volume+分布式存储的方式,因为业务数据没有持久化的需求,仅仅是把redis当做业务多类型键值缓存服务来使用,所以这里保证Redis服务高可用即可。
docker swarm的搭建略过,不懂的同学可以自行Google(为什么不用百度,你懂的~~)
Let’s do it!
好,先建立Redis的服务,复制三个副本
1 | docker service create --name redis -p 6379:6379 --replicas 3 --restart-condition on-failure redis |
看看运行效果:
Good~,接下来配置HAproxy
先准备好配置文件,考虑一下部署策略,如果要以service方式来部署,建议采用分布式存储文件如Ceph,GlusterFS,OpenStack cinder等解决方案。这里条件有限,采取单机部署,
1 | docker run -d --name haproxy -v /data/haproxy_config:/usr/local/etc/haproxy -p 29000:29000 -p 443:443 -p 172.16.2.5:16379:16379 haproxy |
备注:
-v /data/haproxy_config:/usr/local/etc/haproxy 挂载编辑好的 配置文件到haproxy到容器里面
好,看看HAproxy的配置:
1 | frontend haproxy_redis |
然后开始模拟测试,随意关掉一台,OK。应用仍能提供服务,再关掉一台,还有一台。
那有人说,全挂了咋办啊,额。。。。。。难道上线不做监控报警吗?第一台有问题了就应第一时间知道并处理了啊~~~