教你 5 分钟快速部署开源网关

最近在研究开源网关,找了一圈,发现这个叫 Apinto 的开源网关符合我的需求,下面我将演示如何部署这样一个开源网关。

Apinto功能架构图

 

开始部署

部署资源

设备推荐配置设备数量部署对象
4核8G,250G磁盘空间,2.5GHz1控制台程序、Mysql数据库、Redis数据库
4核8G,250G磁盘空间,2.5GHz2网关节点

部署资源

 控制台程序、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.21privileged: truerestart: alwayscontainer_name: apinto_mysqlhostname: apinto_mysqlports:- "33306:3306"environment:- MYSQL_ROOT_PASSWORD={MYSQL_PWD}- MYSQL_DATABASE=apintovolumes:- /var/lib/apinto/mysql:/var/lib/mysqlnetworks:- apintoapinto-dashboard:image: eolinker/apinto-dashboardcontainer_name: apinto-dashboardprivileged: truerestart: alwaysnetworks:- apintoports:- "18080:8080"depends_on:- mysql- redis_clusterenvironment:- 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_clusterimage: eolinker/cluster-redis:6.2.7hostname: redis_clusterprivileged: truerestart: alwaysenvironment:- REDIS_PWD={REDIS_PWD}- PORT=7201- HOST={HOST}volumes: - /var/lib/apinto/redis-cluster/data:/usr/local/cluster_redis/datanetwork_mode: host
networks:apinto:driver: bridgeipam:driver: defaultconfig:- 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.21privileged: truerestart: alwayscontainer_name: apinto_mysqlhostname: apinto_mysqlports:- "33306:3306"environment:- MYSQL_ROOT_PASSWORD=123456- MYSQL_DATABASE=apintovolumes:- /var/lib/apinto/mysql:/var/lib/mysqlnetworks:- apintoapinto-dashboard:image: eolinker/apinto-dashboardcontainer_name: apinto-dashboardprivileged: truerestart: alwaysnetworks:- apintoports:- "18080:8080"depends_on:- mysql- redis_clusterenvironment:- 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_clusterimage: eolinker/cluster-redis:6.2.7hostname: redis_clusterprivileged: truerestart: alwaysenvironment:- REDIS_PWD=123456- PORT=7201- HOST=172.18.31.253volumes: - /var/lib/apinto/redis-cluster/data:/usr/local/cluster_redis/datanetwork_mode: host
networks:apinto:driver: bridgeipam:driver: defaultconfig:- 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

请根据需要下载对应架构及系统的安装包,安装包下载请点击跳转

2. 安装网关:

./install.sh install

执行该步骤将会生成配置文件/etc/apinto/apinto.yml/etc/apinto/config.yml,可根据需要修改。

3. 启动网关:

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:9400listen_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:9400listen_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支持代理外部流量,转发给内部服务,也支持内部服务之间的通信代理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/350184.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【算法】JavaScript必会算法 —— 排列组合(全排列)

文章目录 首先理解一下排列组合的定义: 排列的定义:从 n n n个不同元素中,任取 m m m( m ≤ n m≤n m≤n, m m m与 n n n均为自然数,下同)个元素按照一定的顺序排成一列,叫做从 n n…

C++:排列组合算法

转载请注明出处 1 介绍 排列(Permutation)和组合(Combination)是两个基础的数学概念。 计算排列与组合可以解决一些实际的工程问题,掌握排列组合计算的方法是十分重要的。 目前,网上已经有一些计算排列…

排列组合公式及排列组合算法

排列组合公式 排列组合公式/排列组合计算公式 公式P是指排列,从N个元素取M个进行排列。 公式C是指组合,从N个元素取M个进行组合,不进行排列。 N-元素的总个数 M参与选择的元素个数 !-阶乘,如 9!&#xf…

排列组合公式/排列组合计算公式

排列组合公式/排列组合计算公式 公式P是指排列,从N个元素取M个进行排列。 公式C是指组合,从N个元素取M个进行组合,不进行排列。 N-元素的总个数 M参与选择的元素个数 !-阶乘,如9!=9*8*7*6*5…

详细总结组合排列的十余种算法实现

目录 •写在前面 •问题引入 •暴力枚举 循环枚举 递归枚举 回溯枚举 •深度优先搜索 前序遍历 中序遍历 后序遍历 •字典序 •二进制位运算 •带重复数字 •总结 •写在前面 排列组合的问题,如果没有合适的算法去解决,时间复杂度会相当的…

论坛的头像

做了个论坛的头像,相当的简单 也就只能看看啦 菜啊

论坛头像编辑 html,spu头像编辑.html

SPU头像编辑 $axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; }; $axure.utils.getOtherPath function() { return resources/Other.html; }; $axure.utils.getReloadPath function() { return resources/reload.ht…

牛客网项目---1.7.账号设置(上传头像、修改密码)

7、账号设置/setting 上传头像将头像保存到本地/七牛云服务器,随机生成字符串作为图片的名称,表单提交再返回该界面。获取头像时,在本地获取,通过输入输出流,先读到缓冲区,再从缓冲区写出;在七…

Discuz论坛无法上传头像/ 企业邮箱被归为垃圾邮件的问题

背景: 安装了Discuz论坛程序,更改个人头像的时候,点击上传按钮没有反应基于阿里云企业邮箱配置了论坛的邮件发送服务,但是邮箱被列入垃圾邮件拒收 解决方法: 上传头像失败:ucenter和全局域名要加https&a…

flask更改用户头像

目录结构图: 配置app 导包及配置 import os from flask import Flask, flash, request, redirect, url_for,Request,render_template from werkzeug.utils import secure_filenameUPLOAD_FOLDER 文件下载的绝对路径 # 允许的下载类型 ALLOWED_EXTENSIONS {txt, pdf, png, j…

discuz论坛用户--设置--修改头像不显示的解决方法

本文参考:https://www.2cto.com/kf/201601/478810.html 和https://jingyan.baidu.com/article/ceb9fb10ab73b68cad2ba092.html 先登陆discuz管理员后台admin.php,找到“站长”>>“UCenter设置”,其它的默认的地方就不要动了。关键要改…

关于Discuz 出现上传头像失败的问题

今天测试了论坛上传头像时出现 网上大部分的解决方案是配置UCenter Access denied for agent changed 头像无法更新 配置文件: config下config_global.php,config_ucenter.php uc_server\data下的config.inc.php 具体可参考此处:Discuz配…

内部论坛系统

开发环境/技术: Linux,MyEclipse,JDK1.7,MySql,JS,jQuery, ajax,Tomcat,CSS样式,Struts框架等 项目描述/功能: 项目主要实现了用户登陆注册&#…

Vue 彩色头像|一个有趣的头像生成器 附源码

前言 这是一款矢量风格的头像生成器,您可以搭配不同的素材组件,生成属于您自己的个性化头像。 介绍 您可能感兴趣的功能: 可视化组件配置栏随机生成头像重做/撤消国际化批量生成多个头像 在线体验 Vue 彩色头像https://www.shserve.cn/…

PHP 头像上传到mysql数据库

准备环境 window2008 phpStudy Mysql数据库 mysql数据库 第一步&#xff1a;用户登录成功 该用户已经存在数据库 进入个人中心&#xff0c;查找到数据库中的个人信息 进行图片上次 <?php include "../mysqlcon/dblink.php"; //导入数据库 ?><html> …

用php做论坛头像代码,详细介绍PHP针对多用户实现头像更换代码示例

一个网站&#xff0c;其实说白了就是某几个特定功能的组合&#xff0c;而更换用户头像就在这些功能之中。今天就来做个测试&#xff0c;针对不同的用户&#xff0c;实现头像上传功能。 成品图 思路针对不同的用户上传头像&#xff0c;我们要为每一个已登录的用户创建一个文件夹…

教你用go freetype根据用户昵称生成头像

最近需要为用户服务添加一些新功能&#xff0c;其中就包括在注册时根据用户昵称生成头像这一点。 由于用户服务是用golang写的&#xff0c;google来google去都只找到freetype一个比较简单好用的库&#xff0c;其他比如ImageMagicK之类api都过于低层不适合我们这样相对简单的图…

java ajax 更改头像_ajax+node实现头像更改

好久没有更新博客了&#xff0c;这几天在写文件上传的时候遇到了一个新的问题&#xff0c;就是关于ajax实现文件上传的问题 这几天在做一个小的demo&#xff0c;类似于论坛的一个东西&#xff0c;基于jqueryexpressmongo的一个小的案例&#xff0c;在做到关于设置个人头像的时候…

DISCUZ论坛插件h5手机电脑头像上传3.7.1带扩展插件【收集免费分享】

一个支持电脑和手机h5技术头像上传的插件。 说明&#xff1a;本插件h5电脑版和h5手机版为自主全新开发的触屏版头像上传&#xff0c;体验好&#xff0c;性能好&#xff0c;绿色。 主要特点&#xff1a;支持H5电脑版和H5手机版头像上传。 支持鼠标和触屏操作&#xff0c;支持图…

discuz 头像html5上传,discuz更新H5头像上传

越来越多的浏览器可以慢慢的不在支持flash,对应一些discuz论坛的老的版本来说就需要进行升级操作了,接下来吾爱编程为大家介绍一下discuz头像上传flash改为h5上传的方法,有需要的小伙伴可以参考一下: 1、准备工作: 根据自己的网站编码格式下载对应的最新的版本代码,然后解…