Nginx实现微服务网关高可用方案


一、微服务的高可用方案

在微服务架构中,为保证微服务的高并发和高可用,在不同的服务器中部署多个微服务实例并注册到微服务注册中西,微服务被调用时通过Ribbon来实现负载均衡,微服务网关是提供给客户端的统一入口,微服务网关的负载均衡只能借助于其它的反向代理工具,比如Nginx、Haproxy等等。下面是使用Nginx实现网关高可用的架构图。
image.png
图一
从图一中可以看出,微服务网关调用微服务A和微服务B时,利用Ribbon实现了负载均衡,客户端调用微服务网关时,利用Nginx实现了负载均衡,但是此时的Nginx服务器如果宕掉,那么整个微服务一样还是不能访问,下面将利用 Keepalive + nginx 来实现Nginx的高可用。

二、Keepalive 实现Nginx高可用

利用虚拟网关vip 和 Keepalive 可以实现nginx 高可用,原理图如下:
image.png
图二
首先Keepalived可以在主机上产生一个虚拟的ip,这里叫做vip(v是virtual的意思),keepalived会将这个vip绑定到交换机上,当主机宕机时,备机会收不到心跳检测,备机会自动生成vip并绑定到交换机上,成为新主机,当客户端访问时,交换机会将请求转发给新主机,当旧主机恢复后,新主机会自动切换为备机,从而保证Nginx的高可用。

三、参考文档

  1. 《Nginx实现高可用》:https://www.cnblogs.com/woniusky/p/11050499.html
  2. 《Nginx高可用》:https://www.cnblogs.com/Soy-technology/p/11355634.html
  3. 《Keepalive+nginx高可用实战》:https://blog.csdn.net/java_zyq/article/details/90041267
  4. 《keepalived工作原理》:https://blog.csdn.net/qq_35733751/article/details/79834050
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐