前言
随着所分管业务规模逐渐扩大,接口数量越来越多,混合了node、python等各种的单体后端让我十分难受,已经难以管理。
因此打算升级一波后端技术啦,将原来的单体应用通过api网关进行整合
选择apisix后,因为整个踩坑安装繁琐复杂,且网上的教程基本都只能覆盖安装的一小部分,特整合一下安装教程
因为本人过菜,对很多东西理解都不深,所以部署的过程可能略有繁琐,如有不妥请指点
目标:
离线部署apisix+apisix-dashboard,并在其中整合一下grafana监控网关流量
apisix介绍
APISIX 是一个云原生、高性能、可扩展的微服务 API 开源网关。
基于OpenResty(Nginx+Lua)和etcd来实现,对比传统的API网关,具有动态路由和热插件加载的特点。系统本身自带前端,可以手动配置路由、负载均衡、限速限流、身份验证等插件,操作方便。APISIX是用Lua语言开发,语言相对简单,容易上手,同时可以按自己的需求进行系统的二次开发以及开发自己的插件。
性能好、免费、支持jwt各种插件的网关,关键是免费呀!是真的好,真的可以试一下!
step1:编译apisix-docker
根据apisix-docker的 文档可知,官方推荐我们自己拉取dockerfile编译
Docker images are not official ASF releases but provided for convenience. Recommended usage is always to build the source.
我们选择了 dashboard-all-in-one 这个dockerfile进行编译,因为这样编译出的容器etcd、apisix+apisix-dashboard能全部融合在一个容器里面,好用又方便部署
修改一下dashboard-all-in-one的dockerfile
众所周知的原因,很多包在国内下载不下来,虽然官方在dockerfile中给了cn用户设置代理源的选项,但在编译过程中,apisix的文件还是没办法下载下来,因此要修改一下dockerfile:
1、拷贝下载不下来的文件,用科学手段下载到dockerfile同级目录下
2、修改dockerfile
COPY ./all-in-one/apisix-dashboard/apisix-master-0.rockspec home/
把48行改成
&& luarocks install home/apisix-${APISIX_VERSION}-0.rockspec --tree=/usr/local/apisix/deps \
3、执行
make build-dashboard-all-in-one
注意⚠️:这里必须找台x86的机子进行编译,我用mac m1 用buildx命令编译的时候dockerfile最后的CPOY命令会提示失败。、win10自带ubantu编译、ubantu编译都不行,卡了我三天.....最后是用一台老的x86mac编译成功的
step2:容器转移到内网
把如下东西放到内网服务器上;
-
[ 🙆]刚刚编译好的容器:apache/apisix-dashboard:whole,用
docker save -o apisix.tar apache/apisix-dashboard:whole的命令保存 -
[ 🙆]从dockerhub上下载的grafana容器 也是docker save保存下来
-
[ 🙆]apisix-docker中的/all-in-one/apisix/config.yaml和/all-in-one/apisix-dashboard/conf.yaml两个配置文件,我是直接把apisix-docker的整个项目都丢进了内网,方便好用。
-
[ 🙆]prometheus 安装包(直接从github下载即可),这是个采集数据的东东,好像是监控可视化必须的。。。
step3:修改配置文件
此处参考apisix的教程修改,教程地址
部署prometheus
参考文章在此处:
1、下载二进制包:prometheus-2.6.1.linux-amd64.tar.gz
2、解压包:tar xvzf prometheus-2.6.1.linux-amd64.tar.gz
3、移动到安装目录:mv prometheus-2.6.1.linux-amd64 /usr/local/prometheus
用vim修改配置文件prometheus.yaml,加入如下内容
后台运行 ./prometheus --config.file=prometheus.yml &
部署grafana
为了把日志文件永久保存,参考了文档这里进行部署grafana.com/docs/grafan…
# create a persistent volume for your data in /var/lib/grafana (database and plugins)
docker volume create grafana-storage
# start grafana
docker run -d -p 3000:3000 --name=grafana -v grafana-storage:/var/lib/grafana grafana/grafana
部署apisix的all in one容器
在启动all in one容器前,修改配置文件
把最底下改为:
用官方apisix-docker的github给的命令,运行容器
# launch APISIX-dashboard container
docker run -d \
-p 9080:9080 -p 9091:9091 -p 2379:2379 -p 9000:9000 \
-v `pwd`/all-in-one/apisix/config.yaml:/usr/local/apisix/conf/config.yaml \
-v `pwd`/all-in-one/apisix-dashboard/conf.yaml:/usr/local/apisix-dashboard/conf/conf.yaml \
apache/apisix-dashboard:whole
step3 配置和测试一下:
输入url:9000,就可以打开apisix-dashboard配置了
随便找个后端用apisix代理一下,试一下9080端口能不能代理后端的资源,发现成功了
在url:3000端口打开grafana,配置一下数据源和apisix插件,因为全部都是图形化操作,配置一下导入插件的json就好,在本文中不解释,可参考这篇文章: blog.csdn.net/weixin_4409…
配置好了再试一下grafana能不能看到流量:
发现可以,就成功了
写在最后
谢谢大家看我啰嗦,apisix真的很好用,性能也非常好。
虽然它是国产网关,但受限于国内网络和语言等原因,网上成套的教程确实不多,特留下次踩坑攻略,感谢apisix团队给我们贡献了那么好用的软件。