温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何从零搭建ocelot网关和consul集群

发布时间:2021-12-10 16:52:57 来源:亿速云 阅读:393 作者:柒染 栏目:大数据

今天就跟大家聊聊有关如何从零搭建ocelot网关和consul集群,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

介绍

微服务中有关键的几项技术,其中网关和服务服务发现,服务注册相辅相成。

首先解释几个需要的术语

网关 Gateway(API GW / API 网关),顾名思义,是企业 IT 在系统边界上提供给外部访问内部接口服务的统一入口,简化了外部由于多服务协同完成任务时的繁琐配置。网关组件有Kong,ocelot,

服务发现:通过网关访问内部各个微服务,网关要找到所需服务的过程称为服务发现

服务注册:既然有服务发现,前提是要把所需服务提前“录入”,这个录入的过程称为服务注册。服务注册可配置文件(人肉方式不推荐),也可用服务注册组件如Consul或者Eureka等等(推荐)

搭建Consul集群(Windows)

官网下载Consul程序,https://www.consul.io/downloads.html

下载下来就是一个可执行文件Consul.exe

Consul有两种代理模式,一种server,一种client,官方建议Server端达到3台以上才可高可用,但不要太多,太多会给集群间数据同步造成压力,client数量不限。

多个server端之间会选择出一个leader,当一个server的leader宕机则会从其他server端”投票“选择新的leader

实践

这里server我们用2台实验

192.168.74.55

192.168.74.54

1台Client

192.168.74.161

consul启动有两种方式一种是命令行,一种是配置文件的方式。

命令行方式启动一个consul的server端

consul agent -server -ui -bootstrap-expect 2 -data-dir opt/consul/data -node ServerMaster -bind 192.168.74.55 -client 192.168.74.55

关键参数说明

-server:server模式启动

-ui :开启ui界面(consul.exe内部带了GUI图形界面操作)

 -bootstrap-expect 2:server端到2个时集群生效

-data-dir:consul产生的文件路径(consul自己会产生一下数据存储的位置)

-node:此节点名称

-bind:集群内部通信地址,默认0.0.0.0

-client:此节点绑定的通讯地址

以上只是关键参数,以下是完整参数说明:  

 如何从零搭建ocelot网关和consul集群

但是命令启动很繁琐,所以推荐下面的配置文件的方式启动

在consul同文件夹下建立一个server.json的配置文件

如何从零搭建ocelot网关和consul集群

为了快速启动,再建立一个bat批处理文件runconsul.bat

consul agent -config-dir server.jsonpause

双击runconsul.bat启动consul

在192.168.74.54服务器开启一个server端继续以上操作。

命令方式启动

consul agent -server -ui -data-dir opt/consul/data -node Server01 -bind 192.168.74.54 -client 192.168.74.54 -join=192.168.74.55

-join将192.168.74.54加入到192.168.74.55服务器

配置文件方式:

如何从零搭建ocelot网关和consul集群

在192.168.74.161服务器开启一个consul的client端

命令方式:

consul agent -ui -data-dir opt/consul/data -node ServerSlave  -bind 192.168.74.161 -client 192.168.74.161 -join 192.168.74.55

配置文件方式:

如何从零搭建ocelot网关和consul集群

效果 

简单Consul集群到这里就搭建成功,只要访问三台服务器任意一个都可数据同步,演示:

如何从零搭建ocelot网关和consul集群

如何从零搭建ocelot网关和consul集群

 netcore集成Consul服务注册

服务注册关键代码

首先新建一个ConsulClient的类库

如何从零搭建ocelot网关和consul集群

ConsulRegister.csproj所需组件如下:

如何从零搭建ocelot网关和consul集群

如何从零搭建ocelot网关和consul集群

如何从零搭建ocelot网关和consul集群

如何从零搭建ocelot网关和consul集群

再新建一个.netcore的webapi项目WebA,并且引用ConsulRegister项目

在WebA项目中的Startup.cs文件中加入Consul服务

如何从零搭建ocelot网关和consul集群

在WebA项目的appsettings.json配置文件中加入以下Consul服务端配置

如何从零搭建ocelot网关和consul集群

这里服务注册就算完成

Ocelot网关搭建

接下来继续Ocelot借助于Consul实现服务发现

新建项目Ocelot.Gateway

如何从零搭建ocelot网关和consul集群

将以下依赖加入Ocelot.Gateway.csproj中:

如何从零搭建ocelot网关和consul集群

新建ocelot.json文件

如何从零搭建ocelot网关和consul集群

修改Startup.cs文件如下:

如何从零搭建ocelot网关和consul集群

发布WebA后复制两份分别启动

dotnet WebA.dll --urls="http://0.0.0.0:2001"

dotnet WebA.dll --urls="http://0.0.0.0:2002"

到这里相当于2001和2002程序简单集群了一下

可以发现日志中有 http://192.168.74.161:2002/HealthCheck调用信息:

如何从零搭建ocelot网关和consul集群

这其实是consul进行健康检查进行的调用。

启动多个程序后,打开浏览器打开Consuld界面会发现注册了两个服务

如何从零搭建ocelot网关和consul集群

 如何从零搭建ocelot网关和consul集群

如何从零搭建ocelot网关和consul集群

这里ocelot网关和consul的服务注册和发现就算初步集成。

如果生成环境是windows的情况,将consul做成windwos服务即可

sc create "ConsulServer" binPath="F:\XXX\consul.exe agent -config-dir XXX.json"

生产环境是linux则借助systemd做成守护进程即可 

看完上述内容,你们对如何从零搭建ocelot网关和consul集群有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI