当前仓库属于暂停状态,部分功能使用受限,详情请查阅 仓库状态说明
1 Star 0 Fork 96

冲击 / gateway
暂停

forked from fagongzi / gateway
暂停
 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
build.md 5.63 KB
一键复制 编辑 原始数据 按行查看 历史

搭建Gateway环境

这个章节帮助你搭建Gateway环境

准备

Etcd

Gateway目前支持Etcd作为元数据区的存储,所以需要一个Etcd环境,参考:etcd environment

Golang

如果你希望从源码编译Gateway,你需要一个golang 环境,必须使用1.11及以上的版本。

从源码编译

  • 使用Makefile脚本

    以下命令默认在项目根目录(即$GOPATH/src/github.com/fagongzi/gateway)目录下执行。

    • 编译适合当前系统的二进制文件
    make release_version='version string'
    • 指定编译的二进制文件类型
    # Linux
    make release release_version='version string'
    
    # Darwin(mac osx)
    make release_darwin release_version='version string'
    • 打包为docker镜像
    make docker release_version='version string'
    • 打包为docker镜像,且定制镜像内容
    # for demo, including etcd, proxy, apiserver, ui
    make docker release_version='version string'
    
    # only proxy
    make docker release_version='version string' with=proxy
    
    # only etcd
    make docker release_version='version string' with=etcd
    
    # apiserver with ui
    make docker release_version='version string' with=apiserver
    • 更多使用说明
    make help

Gateway组件

Gateway运行环境包含2个组件:ApiServerProxy

  • ApiServer 对外提供API管理元数据。

  • Proxy Proxy是一个无状态的API代理,提供给终端用户直接访问。

ApiServer

ApiServer 对外提供GRPC的服务,用来管理Gateway的元数据

$ ./apiserver --help
Usage of ./apiserver:
  -addr string
    	Addr: client entrypoint (default "127.0.0.1:9091")
  -addr-store string
    	Addr: store address (default "etcd://127.0.0.1:2379")
  -crash string
    	The crash log file. (default "./crash.log")
  -discovery
    	Publish apiserver service via discovery.
  -log-file string
    	The external log file. Default log to console.
  -log-level string
    	The log level, default is info (default "info")
  -namespace string
    	The namespace to isolation the environment. (default "dev")
  -publish-lease int
    	Publish service lease seconds (default 10)
  -publish-timeout int
    	Publish service timeout seconds (default 30)
  -service-prefix string
    	The prefix for service name. (default "/services")

discovery参数用来是否使用服务发现的方式发布ApiServer提供的对外接口 namespace参数用来隔离多个环境,这个配置需要和对应的Proxynamespace一致

proxy

Proxy是内部所有API的统一对外入口,也就是API统一接入层。

$ ./proxy --help
Usage of ./proxy:
  -addr string
    	Addr: http request entrypoint (default "127.0.0.1:80")
  -addr-pprof string
    	Addr: pprof addr
  -addr-rpc string
    	Addr: manager request entrypoint (default "127.0.0.1:9091")
  -addr-store string
    	Addr: store of meta data, support etcd (default "etcd://127.0.0.1:2379")
  -crash string
    	The crash log file. (default "./crash.log")
  -filter value
    	Plugin(Filter): format is <filter name>[:plugin file path][:plugin config file path]
  -limit-body int
    	Limit(MB): MB for body size (default 10)
  -limit-buf-read int
    	Limit(bytes): Bytes for read buffer size (default 2048)
  -limit-buf-write int
    	Limit(bytes): Bytes for write buffer size (default 1024)
  -limit-conn int
    	Limit(count): Count of connection per backend server (default 64)
  -limit-conn-idle int
    	Limit(sec): Idle for backend server connections (default 30)
  -limit-conn-keepalive int
    	Limit(sec): Keepalive for backend server connections (default 60)
  -limit-heathcheck int
    	Limit: Count of heath check worker (default 1)
  -limit-heathcheck-interval int
    	Limit(sec): Interval for heath check (default 60)
  -limit-timeout-read int
    	Limit(sec): Timeout for read from backend servers (default 30)
  -limit-timeout-write int
    	Limit(sec): Timeout for write to backend servers (default 30)
  -log-file string
    	The external log file. Default log to console.
  -log-level string
    	The log level, default is info (default "info")
  -namespace string
    	The namespace to isolation the environment. (default "dev")
  -ttl-proxy int
    	TTL(secs): proxy (default 10)
  -version
      Show version info

namespace参数用来隔离多个环境,这个配置需要和对应的ApiServernamespace一致

运行环境

我们以三台etcd、一台ApiServer,三台Proxy的环境为例

环境信息

组件 环境
etcd集群环境 192.168.1.100,192.168.1.101,192.168.1.102
Proxy 192.168.1.200,192.168.1.201,192.168.1.202
ApiServer 192.168.1.203

启动Proxy

./proxy --addr=192.168.1.200:80 --addr-rpc=192.168.1.200:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --namespace=test
./proxy --addr=192.168.1.201:80 --addr-rpc=192.168.1.201:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --namespace=test
./proxy --addr=192.168.1.202:80 --addr-rpc=192.168.1.202:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --namespace=test

用户的API接入地址可以为:192.168.1.201:80、192.168.1.201:80、192.168.1.202:80其中任意一个

启动ApiServer

./apiserver --addr=192.168.1.203:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --discovery --namespace=test

调用ApiServer创建元信息

Gateway Restful API

Gateway grpc客户端例子

Go
1
https://gitee.com/1273640670/gateway.git
git@gitee.com:1273640670/gateway.git
1273640670
gateway
gateway
master

搜索帮助