写文出发点
最近在调研基于GO语言的开源网关,想找个性能不错,扩展性强,还有免费控制台的网关。
然后在github上发现一个不错的项目,APINTO网关,项目首页是https://github.com/eolinker/apinto ,顺便点了个star
最近他们把控制台2.0开源出来了,页面好看,操作方便,所以想写个使用系列记录一下~
APINTO简介
Apinto是一款高性能、可扩展、易维护的云原生API网关。
Apinto网关基于GO语言模块化开发,5分钟极速部署,配置简单、易于维护,支持集群与动态扩容,并且提供几十款网关插件和实用的企业级插件,让用户开箱即用。
Apinto API 网关以出色的用户体验和适用于各种企业级业务场景的控制台为特色。控制台具有四大亮点功能:集群管理、应用管理、精细服务治理和企业插件,能够满足企业对 API 网关更高级场景化需求的要求。
功能简介
Apinto网关可以作为业务流量的入口,可以对业务流量进行处理,如动态路由、负载均衡、服务发现、熔断降级、身份认证、监控与告警等。 Apinto网关不受云平台限制,也能在Kubernetes运行。
APINTO部署
Apinto没有其它依赖,但不支持Windows系统。接下来在Linux环境下部署,用官方提供的安装包进行安装, 教程地址
1.下载安装包并解压
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
下载版本是0.12.4,最新版本参考github上的release
2.安装网关:
./install.sh install
3.修改网关配置文件
vi /etc/apinto/config.yml
修改客户端和服务监听的广播地址, ip使用宿主机的ip。
(以下内容从官方教程复制过来)
version: 2
#certificate: # 证书存放根目录
# dir: /etc/apinto/cert
client:
advertise_urls: # open api 服务的广播地址
- http://172.25.45.30:9400
listen_urls: # open api 服务的监听地址
- http://0.0.0.0:9400
#certificate: # 证书配置,允许使用ip的自签证书
# - cert: server.pem
# key: server.key
gateway:
advertise_urls: # 转发服务的广播地址
- http://172.25.45.30: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://172.25.45.30:9401
#certificate: # 证书配置,允许使用ip的自签证书
# - cert: server.pem
# key: server.key
4.启动
apinto start
5.查看apinto是否启动成功
ps aux | grep apinto
可以看到三个进程已启动成功
其它部署方法,docker
dashboard控制台使用Docker-Compose一键部署
dashboard2.0依赖mysql和redis。
接下来在Linux环境下用docker-compose去部署控制台,官方有提供部署教程
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。
将mysql和redis密码均设为123456,redis的host设置为本机ip
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 #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.25.45.30
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
3、启动程序
docker-compose up -d
查看docker容器,可以看到成功生成了dashboard、mysql,redis容器实例。
使用体验
在Apinto和Dashboard都启动后,在浏览器端打开dashboard,IP:18080
界面真好看~
各个模块先待我慢慢研究,之后再写多几篇。
下一篇来讲解怎么使用控制台去连接上面创建好的单节点Apinto。