SpringCloud服务网关-zuul高可用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/BruceLiu_code/article/details/102643279

1.引言

Zuul的高可用非常关键,因为外部请求到后端微服务的流量都会经过Zuul。故而在生产环境中,我们一般都需要部署高可用的Zuul以避免单点故障。
两种场景讨论Zuul的高可用:

1.1.Zuul客户端也注册到了Eureka Server上

这种情况下,Zuul的高可用非常简单,只需将多个Zuul节点注册到Eureka Server上,就可实现Zuul的高可用。此时,Zuul的高可用与其他微服务的高可用没什么区别。
在这里插入图片描述当Zuul客户端也注册到Eureka Server上时,只需部署多个Zuul节点即可实现其高可用。Zuul客户端会自动从Eureka Server中查询Zuul Server的列表,并使用Ribbon负载均衡地请求Zuul集群。

1.2.Zuul客户端未注册到Eureka Server上

现实中,这种场景往往更常见,例如,Zuul客户端是一个手机APP——我们不可能让所有的手机终端都注册到Eureka Server上。这种情况下,我们可借助一个额外的负载均衡器来实现Zuul的高可用,例如Nginx、HAProxy、F5等。
在这里插入图片描述Zuul客户端将请求发送到负载均衡器,负载均衡器将请求转发到其代理的其中一个Zuul节点。这样,就可以实现Zuul的高可用。本文选择第二种高可用方式。

2.搭建步骤

2.1.整体架构

在这里插入图片描述

2.2.工程准备

准备2个ZUUL网关工程,或者启动两个网关实例方便测试
在这里插入图片描述

2.3.安装Ningx

此处省略Nginx的安装。Nginx可以安装Linux版本,或者安装Window学习用。
在这里插入图片描述

2.4.配置Nginx

Zuul网关集群使用Nginx反向代理即可,保证每台网关配置数据相同。

 upstream  backServer{
	    server 127.0.0.1:3333;
	    server 127.0.0.1:4444;
	}
    server {
        listen       80;
        server_name  www.bruceliu.com;
       location / {
		    ### 指定上游服务器负载均衡服务器
		    proxy_pass http://backServer/;
            index  index.html index.htm;
        }
    }

配置域名映射hosts:

127.0.0.1       eureka7001.com
127.0.0.1       eureka7002.com
127.0.0.1       eureka7003.com
127.0.0.1       www.bruceliu.com

这是 把访问 http://www.bruceliu.com:80 的url 轮询方式导向 http://127.0.0.1:4444 和http://127.0.0.1:3333 而这两个网址就是spring zuul1 和zuul2 的服务网址端口

2.5.启动测试项目

在这里插入图片描述

2.6.启动测试项目

启动测试,访问 http://www.bruceliu.com/provider-consumer/test?access-token=bruce
会交替出现访问http://127.0.0.1:2222 和http://127.0.0.1:3333的效果
访问 zuul代理的 serviceA,只要zuul1,zuul2至少有一个服务开启,都能正常访问!

在这里插入图片描述
使用nginx的另外一个好处就是屏蔽了nuul内部服务的api显示,浏览器显示的都是nginx的url,在外面看到的好像是只有一个网站,而不是在一堆微服务中不断跳转。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/BruceLiu_code/article/details/102643279