5分钟部署 Apinto 开源网关

原创
2023/03/24 14:41
阅读数 200
Apinto 是一款高性能、可扩展、易维护的 API 网关。
Apinto 网关基于 GO 语言模块化开发,5分钟极速部署,配置简单、易于维护,支持集群与动态扩容,企业级开箱即用。Apinto 除了提供丰富的网关插件外,还将提供监控告警、用户角色等企业插件,同时支持自定义网关插件和可扩展企业插件,满足我们企业的定制化需求。
Apinto 支持代理外部流量,转发给内部服务,也支持内部服务之间的通信代理。
 

Apinto 功能架构图

 

开始部署

控制台程序、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 列表,从下表可以看到,宿主机默认局域网 ip172.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 架构上运行。
 
  1. 下载安装包并解压(此处以 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
请根据需要下载对应架构及系统的安装包,安装包下载请 点击跳转
 
  1. 安装网关:
./install.sh install
执行该步骤将会生成配置文件 /etc/apinto/apinto.yml/etc/apinto/config.yml,可根据需要修改。
 
  1. 启动网关:
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

 

 
 
 
 
 
 
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部