5分钟学会如何部署开源网关
最近在研究开源网关,找了一圈,发现这个叫 Apinto 的开源网关符合我的需求,下面我将演示如何部署这样一个开源网关。
Apinto功能架构图
开始部署
部署资源
设备推荐配置 | 设备数量 | 部署对象 |
4核8G,250G磁盘空间,2.5GHz | 1 | 控制台程序、Mysql数据库、Redis数据库 |
4核8G,250G磁盘空间,2.5GHz | 2 | 网关节点 |
部署架构
控制台程序、mysql数据库、redis数据库建议安装在一台服务器,Apinto节点原则上一台服务器部署一个节点,多个Apinto节点组成一个Apinto集群。
控制台一键部署
此处使用docker-compose进行一键化部署,因此在部署前,服务器应该已经安装好
docker
1.13 及其以上版本,并且安装了docker-compose。- Docker安装教程:https://www.runoob.com/docker/ubuntu-docker-install.html
- Docker-Compose安装教程:https://www.runoob.com/docker/docker-compose.html
1、编辑一键部署文件
(1)编辑
docker-compose.yml
文件vi docker-compose.yml
(2)修改文件配置
version: '3' services: mysql: image: mysql:5.7.21 privileged: true restart: always container_name: apinto_mysql hostname: apinto_mysql ports: - "33306:3306" environment: - MYSQL_ROOT_PASSWORD={MYSQL_PWD} - MYSQL_DATABASE=apinto volumes: - /var/lib/apinto/mysql:/var/lib/mysql networks: - apinto apinto-dashboard: image: eolinker/apinto-dashboard container_name: apinto-dashboard privileged: true restart: always networks: - apinto ports: - "18080:8080" depends_on: - mysql - redis_cluster environment: - MYSQL_USER_NAME=root - MYSQL_PWD={MYSQL_PWD} - MYSQL_IP=apinto_mysql - MYSQL_PORT=3306 #mysql端口 - MYSQL_DB="apinto" - ERROR_DIR=/apinto-dashboard/work/logs # 日志放置目录 - ERROR_FILE_NAME=error.log # 错误日志文件名 - ERROR_LOG_LEVEL=info # 错误日志等级,可选:panic,fatal,error,warning,info,debug,trace 不填或者非法则为info - ERROR_EXPIRE=7d # 错误日志过期时间,默认单位为天,d|天,h|小时, 不合法配置默认为7d - ERROR_PERIOD=day # 错误日志切割周期,仅支持day、hour - REDIS_ADDR=172.100.0.1:7201,172.100.0.1:7202,172.100.0.1:7203,172.100.0.1:7204,172.100.0.1:7205,172.100.0.1:7206 #Redis集群地址 多个用,隔开 - REDIS_PWD={REDIS_PWD} # Redis密码 volumes: - /var/log/apinto/apinto-dashboard/work:/apinto-dashboard/work #挂载log到主机目录 redis_cluster: container_name: redis_cluster image: eolinker/cluster-redis:6.2.7 hostname: redis_cluster privileged: true restart: always environment: - REDIS_PWD={REDIS_PWD} - PORT=7201 - HOST={HOST} volumes: - /var/lib/apinto/redis-cluster/data:/usr/local/cluster_redis/data network_mode: host networks: apinto: driver: bridge ipam: driver: default config: - subnet: 172.100.0.0/24
上述配置中,使用 "{}" 包裹的均为变量,相关变量说明如下:
- MYSQL_PWD:mysql数据库root用户初始化密码
- REDIS_PWD:redis密码
- HOST:Redis广播IP,可设置宿主机的局域网IP/外网IP,建议此处设置宿主机的局域网IP。
查看宿主机IP方法如下:
ip route
执行后得到下列IP列表,从下表可以看到,宿主机默认局域网
ip
是172.18.31.253
替换后配置示例如下:
version: '3' services: mysql: image: mysql:5.7.21 privileged: true restart: always container_name: apinto_mysql hostname: apinto_mysql ports: - "33306:3306" environment: - MYSQL_ROOT_PASSWORD=123456 - MYSQL_DATABASE=apinto volumes: - /var/lib/apinto/mysql:/var/lib/mysql networks: - apinto apinto-dashboard: image: eolinker/apinto-dashboard container_name: apinto-dashboard privileged: true restart: always networks: - apinto ports: - "18080:8080" depends_on: - mysql - redis_cluster environment: - MYSQL_USER_NAME=root - MYSQL_PWD=123456 - MYSQL_IP=apinto_mysql - MYSQL_PORT=3306 #mysql端口 - MYSQL_DB="apinto" - ERROR_DIR=/apinto-dashboard/work/logs # 日志放置目录 - ERROR_FILE_NAME=error.log # 错误日志文件名 - ERROR_LOG_LEVEL=info # 错误日志等级,可选:panic,fatal,error,warning,info,debug,trace 不填或者非法则为info - ERROR_EXPIRE=7d # 错误日志过期时间,默认单位为天,d|天,h|小时, 不合法配置默认为7d - ERROR_PERIOD=day # 错误日志切割周期,仅支持day、hour - REDIS_ADDR=172.100.0.1:7201,172.100.0.1:7202,172.100.0.1:7203,172.100.0.1:7204,172.100.0.1:7205,172.100.0.1:7206 #Redis集群地址 多个用,隔开 - REDIS_PWD=123456 # Redis密码 volumes: - /var/log/apinto/apinto-dashboard/work:/apinto-dashboard/work #挂载log到主机目录 redis_cluster: container_name: redis_cluster image: eolinker/cluster-redis:6.2.7 hostname: redis_cluster privileged: true restart: always environment: - REDIS_PWD=123456 - PORT=7201 - HOST=172.18.31.253 volumes: - /var/lib/apinto/redis-cluster/data:/usr/local/cluster_redis/data network_mode: host networks: apinto: driver: bridge ipam: driver: default config: - subnet: 172.100.0.0/24
2、部署控制台
在
docker-compose.yml
文件所在目录下执行下列命令,即可一键完成部署。docker-compose up -d
部署完成结果如下图
部署节点
节点提供Docker部署和安装包部署两种部署方式,这两种部署方式都能快速让Apinto节点在您的服务器上运行起来。
安装包部署
Apinto安装包可从https://github.com/eolinker/apinto/releases/中获取,Apinto支持在arm64、amd64架构上运行。
- 下载安装包并解压(此处以v0.12.4版本的安装包示例)
wget https://github.com/eolinker/apinto/releases/download/v0.12.4/apinto_v0.12.4_linux_amd64.tar.gz && tar -zxvf apinto_v0.12.4_linux_amd64.tar.gz && cd apinto
请根据需要下载对应架构及系统的安装包,安装包下载请点击跳转
- 安装网关:
./install.sh install
执行该步骤将会生成配置文件
/etc/apinto/apinto.yml
和/etc/apinto/config.yml
,可根据需要修改。- 启动网关:
apinto start
Docker部署
容器有两个可挂载目录和一个可挂载配置文件:
/var/lib/apinto
: 数据目录
#目录结构如下
cluster member
/extends #存放扩展
/var/log/apinto
: 系统日志目录
#目录结构如下
error.log #日志文件
- 注意:系统日志文件默认日志过期时间为7天,每天生成新的日志文件,错误日志等级为error。
- 若要修改系统日志配置,可以通过修改
/apinto/apinto.yml
实现。apinto.yml相关文档点此进行跳转。 /etc/apinto/config.yml
: 程序运行配置文件
version: 2 #certificate: # 证书存放根目录 # dir: /etc/apinto/cert client: #advertise_urls: # open api 服务的广播地址 #- http://127.0.0.1:9400 listen_urls: # open api 服务的监听地址 - http://0.0.0.0:9400 #certificate: # 证书配置,允许使用ip的自签证书 # - cert: server.pem # key: server.key gateway: #advertise_urls: # 转发服务的广播地址 #- http://127.0.0.1:9400 listen_urls: # 转发服务的监听地址 - https://0.0.0.0:8099 - http://0.0.0.0:8099 peer: # 集群间节点通信配置信息 listen_urls: # 节点监听地址 - http://0.0.0.0:9401 #advertise_urls: # 节点通信广播地址 # - http://127.0.0.1:9400 #certificate: # 证书配置,允许使用ip的自签证书 # - cert: server.pem # key: server.key
该文件用于配置网关的路由监听端口、openAPI监听端口等信息。
默认路由监听端口为8099,openAPI监听端口为9400。
备注:config.yml文件内容参考点此跳转
容器运行示例
docker run -td -p 8099:8099 -p 9400:9400 \ -v /data/apinto/data-dir:/var/lib/apinto \ -v /data/apinto/log-dir:/var/log/apinto \ -v /data/apinto/config-dir/config.yml:/etc/apinto/config.yml \ --name=apinto_node eolinker/apinto-gateway:latest
关于 Apinto
Apinto是一款高性能、可扩展、易维护的API网关。
Apinto网关基于GO语言模块化开发,5分钟极速部署,配置简单、易于维护,支持集群与动态扩容,企业级开箱即用。Apinto除了提供丰富的网关插件外,还将提供监控告警、用户角色等企业插件,同时支持自定义网关插件和可扩展企业插件,满足我们企业的定制化需求。
Apinto支持代理外部流量,转发给内部服务,也支持内部服务之间的通信代理。