首先,我们需要准备部署网关的物理环境,我搭建测试环境使用的是:
1.8核16G的Centos服务器两台
2.三节点的Mongodb集群一个
3.2核4G Redis实例一个
4.一套完整的ELK环境,主要是elaticsearch
本文章是用过的官方编译好放在DockerHub的镜像进项部署,所以我们需要先准备好Docker环境,Docker的安装我这里不再赘述,可以直接看官方文档。
根据官方文档描述,我们在启动网关时,需要配置网关的限流中间件数据库,可以使用redis和mongodb两种数据来进行限制,和进行统计报表的elaticsearch
注意这有个坑,最新的版本已经不再支持redis作为reate limit来进行使用
所以我们在准备好数据库环境之后,开始部署网关应用,我们来看一下官方文档的部署命令
1 | bash复制代码docker run \ |
官方实例中式通过环境变量来指定了mongodb的信息,然后告诉你,如果想进行更多详细的配置,需要自己编写yml文件来进行更详细的配置,我这里贴一下完整的全量配置yml文件,量非常的大,大家慢慢看。
1 | yml复制代码############################################################################################################ |
问题来了,文档中告诉了你配置文件怎么写,但是愣是没告诉你怎么让容器正确的读取到这个配置文件,我一句MMP就爆出了口,然后我去翻了一下源代码,找到了答案,网关会默认读取:/etc/gravitee-gateway/gravitee.yml这个位置的配置文件,所以我们在启动容器时需要给他挂载一个写好的配置文件到容器的这个目录上去,当然你也可以直接在build的时候就把配置就打到镜像的这个位置上去,我选择的是挂载,方便修改,所以最后的部署命令变为了:
1 | docker复制代码docker run -p 8082:8082 --name openapi-gateway -v /home/openapi/gateway:/etc/gravitee-gateway -d graviteeio/apim-gateway:latest |
这里给贴一个最基础的核心配置文件出来,只要写上这几个核心配置,就可以启动网关,别问我为什么知道,说出来全是泪。。。
1 | yml复制代码management: |
正常启动网关之后,我们看一下网关的日志,我们会看到网关读取了我们挂载的配置文件,加载了所有默认插件并且开始监听8082端口开始处理请求,如果启动失败查看一下日志信息,大多数都是因为配置不正确或者数据库连接不上等问题。
从输出日志中我们还可以看出来几个坑就是jvm参数和一些系统的时区之类的配置,默认最大的jvm内存只有256,需要我们去自行更改,但是官方文档中并没有标注通过哪些地方进行修改,所以下一篇文章我们会采用源码编译然后自己编译镜像的方式去进行部署,来修改一些关键的自定义配置。
本文转载自: 掘金