APISIX2.6 微服务网关入门
Posted 停下是为了更好的开始
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了APISIX2.6 微服务网关入门相关的知识,希望对你有一定的参考价值。
前言:
(1)Apache APISIX是一个动态的、实时的、高性能的 API 网关。它提供丰富的流量管理功能,例如负载均衡、动态上游服务、金丝雀发布、断路、身份验证、可观察性等。您可以使用 Apache APISIX 来处理传统的南北流量,以及服务之间的东西流量。它也可以用作 k8s ingress controller。这个作为微服务网关十分重要
它是国人开源,目前已经进入 Apache 进行孵化,社区活跃,文档详细友好,厉害!!!
APISIX地址:https://github.com/apache/apisixDashBoard:https://github.com/apache/apisix-dashboard
文档地址:https://apisix.apache.org/zh/docs/apisix/architecture-design/apisix
(2)APISIX 通过插件机制,提供了动态负载均衡、身份验证、限流限速等等功能,当然我们也可以自己开发插件进行拓展。更多的特性大家可以自行去了解一下
(3)Apache APISIX 的技术架构:
图片来源:APISIX 官网
下面,让我们快速进入APISIX的 极简入门。
1、快速安装
在《APISIX 官方文档 —— 安装》中,介绍了源码包、RPM 包、Docker 三种安装方式。这里我们使用 CentOS 7.9 系统,所以采用 RPM 包。
因为 APISIX 是基于 OpenResty + etcd 来实现,所以需要安装响应的依赖。
1.1 安装相关依赖
# install etcd
wget https://github.com/etcd-io/etcd/releases/download/v3.4.13/etcd-v3.4.13-linux-amd64.tar.gz
tar -xvf etcd-v3.4.13-linux-amd64.tar.gz && \\
cd etcd-v3.4.13-linux-amd64 && \\
sudo cp -a etcd etcdctl /usr/bin/
# add OpenResty source
sudo yum install yum-utils
sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
# install OpenResty and some compilation tools
sudo yum install -y openresty curl git gcc openresty-openssl111-devel unzip
# install LuaRocks
curl https://raw.githubusercontent.com/apache/apisix/master/utils/linux-install-luarocks.sh -sL | bash -
# start etcd server
nohup etcd &
检查下ETCD 是否启动成功:
1.2 安装APISIX
$ sudo yum install -y https://github.com/apache/apisix/releases/download/2.6/apisix-2.6-0.x86_64.rpm
检查一下APISIX版本:
启动APISIX服务:
默认会安装在/usr/local/apisix路径下,默认端口9080,可通过如下命令检查:
1.3 APISIX dashboard(控制台)安装
参考文档:
https://github.com/apache/apisix-dashboard
(1)git获取源码:
$ git clone https://github.com/apache/incubator-apisix-dashboard.git
$ cd incubator-apisix-dashboard
切换分支版本,需要与apisix版本一致即可
$ git checkout -b release/2.6 origin/release/2.6
(2)构建控制流:manager-api
控制流用于为控制台提供接口,相当于在APISIX与控制台之间的桥梁。手动构建需要如下步骤:1.需要事先装好 Go 1.13+注意:如果你想使用Orchestration的插件功能,需要安装Lua 5.1+已上版本。
$ wget https://dl.google.com/go/go1.16.5.linux-amd64.tar.gz
$ tar -C /usr/local -xzvf go1.16.5.linux-amd64.tar.gz
--
$ export PATH=$PATH:/usr/local/go/bin
$ source /etc/profile
检查环境变量:
-- enable Go MODULE
$ go env -w GO111MODULE=on
-- 对于我们国内用户,可以设置Goproxy代理加速下载模块
$ go env -w GOPROXY=https://goproxy.cn,direct
(3)构建
执行下面的命令:
$ ./api/build.sh
注意:如果执行上面的命令 会超时,可以单独把wget + 后面的链接复制出来,独立执行就可以了。
(3)构建web
确保机器上的Node.js版本在10.0.0+已上,执行下面的命令
$ curl -sL https://rpm.nodesource.com/setup_16.x | sudo bash -
$ sudo yum install nodejs
$ node --version
$ npm --version
安装yarn:
$ curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
$ sudo yum install yarn
$ sudo yum build
安装依赖:
接下来就是漫长的等待。。。
(4)运行控制流 manager-api
[root@iZhp33yk3z4ttlhta3t5tkZ incubator-apisix-dashboard]# ./api/run.sh &
根据提示,创建对应的文件夹:logs
重新执行上面的命令:./api/run.sh &
然后,我们直接:公网IP:9000,就可以访问 Dashboard,显示这样的界面时,解决方案:
https://github.com/apache/apisix-dashboard/blob/master/docs/en/latest/FAQ.md
修改:/root/incubator-apisix-dashboard/output/conf/
注意:生产环境不能这样设置!!!
杀掉 manager-api 进程后
再重新启动一下:
./api/run.sh &
账号密码都是 admin
2、快速实践
创建2个netcore 3.1 的项目(注意:需要安装对应的.net core sdk)
启动 5000端口的app:
启动 5001端口的app:
2.1 动态负载均衡
(1)创建 APISIX Upstream
在 APISIX 控制台的「上游」菜单中,创建一个 APISIX Upstream。如下图所示:
点击下一步,最后点击 提交,即可。
(2)创建 APISIX Route
APISIX Route,字面意思就是路由,通过定义一些规则来匹配客户端的请求,然后根据匹配结果加载并执行相应的 插件,并把请求转发给到指定 Upstream。
点击下一步,选择上游服务:
点击下一步,关于插件部门后面的问题后续会陆续更新。
最后点击提交即可:
(3)简单测试:
现在,我们来请求 APISIX 网关,转发请求到后端服务。
浏览器中输入:
从结果可以看出,APISIX 网关使用带权轮询算法(Round Robin),将请求轮流转发到后端服务。博客已搬家到Infoq, 欢迎大家关注!
2.2 限流限速
敬请期待~~~
2.3 身份验证
敬请期待~~~
以上是关于APISIX2.6 微服务网关入门的主要内容,如果未能解决你的问题,请参考以下文章
10.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 内置插件
开启springcloud全家桶6:Spring Cloud 服务网关 Zuul 快速入门
Java 微服务之 SpringCloud快速入门day02 Zuul网关,面向服务的路由,Zuul过滤器