本文将介绍几种部署Goku API Gateway的方式,最快一分钟可使用上为网关,详情请看全文。

什么是Goku API Gateway?

Goku API Gateway (中文名:悟空 API 网关)是一个基于 Golang 开发的运行在企业系统服务边界上的微服务网关。当您构建网站、App、IOT甚至是开放API交易时,Goku API Gateway 能够帮你将内部系统中重复的组件抽取出来并放置在Goku上运行,如进行用户授权、访问控制、防火墙、数据转换等;并且Goku 提供服务编排的功能,让企业可以快速从各类服务上获取需要的数据,对业务实现快速响应。

Goku API Gateway 的社区版本(CE)拥有完善的使用指南和二次开发指南,代码使用纯 Go 语言编写,拥有良好的性能和扩展性,并且内置的插件系统能够让企业针对自身业务进行定制开发。使用 Goku API Gateway 能让业务开发团队更加专注地实现业务。

一套完整的 Goku API Gateway 由一个 控制台若干个 网关节点 组成。节点通过IP地址注册在控制台中,控制台内的配置项会对所有节点生效。控制台用于配置网关的运行信息,例如访问策略、转发的API信息等等;节点用于实际的转发。当控制台上发布了最新的配置,所有节点都会主动更新自己的运行配置;在控制台发布的配置支持版本管理,可以手动发布和回滚。

Goku API Gateway支持管理多个网关节点的集群,实现让用户访问不同的集群从而访问不同的服务地址的目的。

下面是以两个DC(Data Center)为例的部署架构简图:



Goku的网关节点除了能够直接获取控制台的配置外,也支持采用直接读取配置文件的方式来使用。配置文件可以通过EOLINKER 官方提供的线上控制台来导出,线上控制台可让用户方便修改配置,修改完后导出配置文件,放到节点的服务器上即可。

线上控制台地址:http://goku-console.eolinker.com

使用线上控制台的话无法区分不同集群,如需使用更强功能建议还是部署自己的私有云控制台。

本文给出几种Goku API Gateway的部署方式:

一、节点docker+线上控制台

二、节点docker+线上控制台Docker

三、使用安装包直接安装

部署安装时需要用到的链接:

一、节点Docker+线上控制台

Goku API Gateway提供节点Docker和控制台Docker,最快的方式就是仅部署节点Docker,然后通过线上控制台来配置网关信息,配置完成后导出文件并上传到节点服务器,最后启动节点Docker。

使用步骤

1、配置完毕后,在线上控制台的首页导出配置:



2、将配置上传到服务器,启动docker:

docker run -dt -p {转发端口号}:6689 \
-v {日志挂载地址}:/app/goku-ce/node/work \
-v {配置文件地址}:/app/goku-ce/node/work/goku-node.json \
eolinker/goku-api-gateway-ce-node

完整配置示例如下:

docker run -dt -p 6689:6689 \
-v /app/goku-ce/node/work:/app/goku-ce/node/work \
-v /app/goku-ce/node/versionConfig_b14a1af4-b961-4dfb-8bfe-d4d157dd651e.json:/app/goku-ce/node/work/goku-node.json \
eolinker/goku-api-gateway-ce-node

用户通过网关访问API地址为:{{节点IP:端口}}/{{转发URL}} 。

二、节点Docker+控制台Docker

(一)部署控制台

1、 创建goku-ce专属网络

docker network create --driver bridge --subnet=172.18.12.0/24 --gateway=172.18.12.1 goku-ce

2、运行控制台程序

docker run -dt -p {浏览器访问端口号}:7000 \
-v {sqlite数据库挂载地址}:/app/goku-ce/console/work \
-e GOKU_ADMIN_PASSWORD={控制台admin密码} \
--network=goku-ce \
--ip 172.18.12.2 \
--name goku-ce-console \
eolinker/goku-api-gateway-ce-console

完整示例启动如下:

docker run -dt -p 7000:7000 \
-v /app/goku-ce/work:/app/goku-ce/console/work \
-e GOKU_ADMIN_PASSWORD=123456 \
--network=goku-ce \
--ip 172.18.12.2 \
--name goku-ce-console \
eolinker/goku-api-gateway-ce-console

3、 登录控制台

打开浏览器,输入 域名/IP+浏览器访问端口号,进入控制台页面,输入用户名(admin)及密码(启动设置的admin密码)进行登录:

(二)部署网关节点

1、进入控制台,新建节点

节点IP需要和启动节点docker容器时绑定的IP 一致:



点击查看 新建节点详细教程

2、在控制台生成并发布配置

发布配置后,节点会读取控制台的最新配置来运行。

点击查看 发布配置的教程链接

3、启动节点docker容器

docker run -dt -p {转发端口号}:6689 \
--network goku-ce \
--ip {节点IP} \
-v {日志挂载地址}:/app/goku-ce/node/work \
-e GOKU_ADMIN_ADDRESS={控制台IP}:7005 \
eolinker/goku-api-gateway-ce-node

完整示例如下:

docker run -dt -p 6689:6689 \
--network goku-ce \
--ip 172.18.12.3 \
-v /app/goku-ce/work:/app/goku-ce/node/work \
-e GOKU_ADMIN_ADDRESS=172.18.12.2:7005 \
eolinker/goku-api-gateway-ce-node

4、查看节点运行状态

进入节点管理页面,若节点的状态显示为运行中,则节点正常启动:

三、通过安装包直接部署

安装准备:到Github上下载最新的Release包。

项目地址:https://github.com/eolinker/goku-api-gateway

(一)安装控制台

1、安装命令:

mkdir -p {install dir}

mv console-{version}.tar.gz {tmp}/

cd {tmp}/

tar -xzf console-{version}.tar.gz

cd console-{version} && ./install.sh {install dir}

cd {install dir}

2、首次安装进入{install dir}/console/config文件夹,编辑配置文件内容,配置语法参照yaml。

goku.conf 如下:

admin_bind: 绑定节点获取配置的地址,形如IP:Port,填写内网地址或本机地址

listen_port: 管理后台监听端口,可以开放给外网访问

db_type: 数据库类型,v3.1.0只支持 sqlite

db_path: sqlite db的文件路径

3、进入{install dir}/console文件夹,运行run.sh文件以启动控制台。

首次运行:

./run.sh start {config file} 管理员账号 管理员密码

示例:

./run.sh start config/goku.conf admin 123456

非首次运行:

./run.sh start|restart

4、在浏览器输入服务器IP+程序监听端口号,进入控制台页面

注:程序监听端口号为goku.conf的配置项listen_port的值

(二)、节点安装

1、安装命令:

  mkdir -p {install dir}
mv goku-node-{version}.tar.gz {tmp}/
cd {tmp}/
tar -xzf goku-node-{version}.tar.gz
cd goku-node-{version} && ./install.sh {install dir}
cd {install dir}

2、在控制台新建节点

(1)登录控制台,一级菜单选择 网关节点,创建集群:



(2)进入相应的集群,为不同集群 添加节点



(3)点击 新增节点 按钮,填写节点信息后点击 确定

  • 新建节点时的节点IP字段填写内网IP或本地IP
  • 若配置文件(goku.conf)中的admin_bind字段值IP部分为127.0.0.1或localhost,此处节点IP必须填写127.0.0.1

3、启动节点程序:

 {install dir}/run.sh {start|stop|reload|restart|force-reload} [admin url] [port]

此处的admin url值与配置文件(goku.conf)中的admin_bind字段值一致。

示例:

 {install dir}/run.sh start 127.0.0.1:7005 7702

4、检查节点是否正常运行:

进入控制台的网关节点页面,若节点的状态显示为运行中,则节点正常启动:



最后,你也可以通过编译Github上Master分支的代码,编译最新的内容来安装,编译教程:https://help.eolinker.com/#/tutorial/?groupID=c-372&productID=19

相关链接

节点Dockerhttps://hub.docker.com/r/eolinker/goku-api-gateway-ce-node

控制台Dockerhttps://hub.docker.com/r/eolinker/goku-api-gateway-ce-console

新上控制台http://goku-console.eolinker.com

项目地址https://github.com/eolinker/goku-api-gateway

项目官网https://www.eolinker.com

几种部署Goku API Gateway的方式,最快一分钟可使用上网关的更多相关文章

  1. 分享一个国内首个企业级开源的GO语言网关--GoKu API Gateway

    一. 简介 GoKu API Gateway,中文名:悟空API网关,是国内首个开源go语言API网关,帮助企业进行API服务治理与API性能安全维护,为企业数字化赋能. GoKu API Gatew ...

  2. 如何更快理解和运用服务编排?(使用Goku API Gateway实现)

    上一篇博客 未来实现API管理系统的几个关键词 发布后,有不少读者私信我,让我写一篇实际运用的文章,我周末趁着有空写了这篇有关“服务编排”的文章.用的是Goku API Gateway进行演示, 希望 ...

  3. [转载] 构建微服务:使用API Gateway

    原文: http://mp.weixin.qq.com/s?__biz=MzA5OTAyNzQ2OA==&mid=206889381&idx=1&sn=478ccb35294c ...

  4. 微服务实战(二):使用API Gateway

    微服务实战(一):微服务架构的优势与不足 微服务实战(二):使用API Gateway 微服务实战(三):深入微服务架构的进程间通信 微服务实战(四):服务发现的可行方案以及实践案例 微服务实践(五) ...

  5. 微服务实战-使用API Gateway

    当你决定将应用作为一组微服务时,需要决定应用客户端如何与微服务交互.在单体式程序中,通常只有一组冗余的或者负载均衡的服务提供点.在微服务架构中,每一个微服务暴露一组细粒度的服务提供点.在本篇文章中,我 ...

  6. 使用API Gateway

    http://dockone.io/article/482 [编者的话]本系列的第一篇介绍了微服务架构模式.它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用的理想选择. Do ...

  7. 微服务实战(二):使用API Gateway - DockOne.io

    原文:微服务实战(二):使用API Gateway - DockOne.io [编者的话]本系列的第一篇介绍了微服务架构模式.它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用 ...

  8. 使用Kylin构建企业大数据分析平台的4种部署方式

    本篇博客重点介绍如何使用Kylin来构建大数据分析平台.根据官网介绍,其实部署Kylin非常简单,称为非侵入式安装,也就是不需要去修改已有的 Hadoop大数据平台.你只需要根据的环境下载适合的Kyl ...

  9. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

随机推荐

  1. [WP8.1]给Pivot的Header加上颜色

    先上个效果图 以前想实现这个给Pivot加颜色时只找到8的,通过参考8的实现方式,8.1的实现如下,在Pivot的样式上做一些修改,如下图的红框处 另外如果要改Pivot的Header里文字的颜色又要 ...

  2. win10安装python

    下载地址:https://www.python.org/downloads/release/python-365/ 安装完成后,在cmd里输入  python ,检查是否安装成功

  3. dubbo配置负载均衡、集群环境

    再用dubbo作为项目架构的时候,给consumer消费者用nginx提供了负载均衡策略和集群的实现, 但是想了下,consumer再多,但是提供者还是一个,最后还不都是落到了这一个provider上 ...

  4. Spring Security 自定义登录认证(二)

    一.前言 本篇文章将讲述Spring Security自定义登录认证校验用户名.密码,自定义密码加密方式,以及在前后端分离的情况下认证失败或成功处理返回json格式数据 温馨小提示:Spring Se ...

  5. Java的数组的作业11月06日

    动手动脑 实验一:了解for循环得到棋盘结构 (1) 程序: import java.io.*; public class QiPan { //定义一个二维数组来充当棋盘 private String ...

  6. UVA - 11795 Mega Man's Mission

    Mega Man is off to save the world again. His objective is to kill the Robots created by Dr. Wily who ...

  7. windows上gedit 安装

    1. 用浏览器打开https://wiki.gnome.org/Apps/Gedit 下载并安装 gedit 文本编辑器.这个操作无需管理员权限. 2. 把 gedit 放到桌面或者快速启动栏,这样你 ...

  8. winsock完成端口套接字重用注意事项

    刚申请到博客,第一篇随笔(๑•̀ㅂ•́)و✧ 关于DisconnectEx的一个问题,目前主要发现在windows10中出现了这个问题,winserver2008 win7都没有这个问题. 被Disc ...

  9. django开发中关于外键设置

    django开发中关于外键设置 我们建模型的时候会用到ForeignKey 而由于外键的约数会导致一些保存 所有我们ctrl+左键进入源码 源码 def __init__(self, to, on_d ...

  10. jQuery v1.10.2如何判断checkbox(复选框)是否被选中

    做项目时,我们经常会用到jquery来做一些判断,今天自己遇上判断复选框是否选中,然后搜索查看,发现现在网上的都是错误的,下面罗列错误的: 1.$("#id").attr(&quo ...