APISIX简介与应用

APISIX 是一个云原生、高性能、可扩展的微服务 API 开源网关,基于OpenResty(Nginx+Lua)etcd来实现,对比传统的API网关,具有动态路由热插件加载的特点。系统本身自带前端,可以手动配置路由负载均衡限速限流身份验证等插件,操作方便。APISIX是用Lua语言开发,语言相对简单,容易上手,同时可以按自己的需求进行系统的二次开发以及开发自己的插件,目前APISIX已经发布到1.1版本。

本文将从APISIX功能,安装以及使用三个方面对APISIX进行介绍。

一、APISIX功能

APISIX的功能有很多,包括动态路由url重写动态上游IP黑白名单A/B测试灰度发布限速限流监控报警健康检查等等,本文只介绍几个比较常用的功能,其他功能具体可以查看APISIX的官方文档说明。

1.服务热启动功能

使用过Nginx的同学都会遇到过这种情况,在修改nginx.conf后需要重启nginx服务修改才会生效,重启时间虽然短暂,但难免会有一段服务不可用时间。当然,可以通过其他方式进行规避服务不可用。APISIX的服务热启动通过在路由、Service、Upstreams等插件中动态的修改配置即可,并不需要再重启APISIX服务来使修改生效。

2.热插件功能

不再需要在nginx.conf文件中编写复杂的规则代码来实现需求,通过使用自带的路由、Upstreams等插件,在前端页面中添加所需要的规则即可实现。下文应用会详细介绍。目前通过插件可以实现uri重写、根据请求信息中的内容实现路由跳转等等。也可以根据自己的需求开发符合自己需求的插件。

3.动态负载均衡

通过Upstreams插件,可以实现基于权重的roundrobin和chash负载均衡。

4.数据集群

APISIX支持etcd集群,通过etcd集群增强了系统的可用性,大大减小了故障损失。

5.监控

APISIX外接第三方prometheus监控系统,提供符合prometheus数据格式的监控指标数据。Prometheus 是由 SoundCloud 开源监控告警解决方案,已经比较成熟完善。

二、APISIX安装

1.安装OpenResty和etcd依赖

CentOS7

# install epel, `luarocks` need it.
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo rpm -ivh epel-release-latest-7.noarch.rpm

# add OpenResty source
sudo yum install yum-utils
sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

# install OpenResty, etcd and some compilation tools
sudo yum install -y etcd openresty curl git gcc luarocks lua-devel

# start etcd server
sudo service etcd start

Ubuntu 16.04 & 18.04

# add OpenResty source
wget -qO - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install software-properties-common
sudo add-apt-repository -y "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main"
sudo apt-get update

# install OpenResty, etcd and some compilation tools
sudo apt-get install -y git etcd openresty curl luarocks

# start etcd server
sudo service etcd start

2.安装APISIX

通过源码包安装

# 下载源码包
wget http://www.apache.org/dist/incubator/apisix/1.1/apache-apisix-1.1-incubating-src.tar.gz
tar zxvf apache-apisix-1.1-incubating-src.tar.gz

# 安装运行时依赖的Lua库
cd apache-apisix-1.1-incubating
make deps

3.安装控制台

确保你的运行环境中的 Node 版本 >= 8.12.0。
3.1 下载 Dashboard源码:
git clone https://github.com/apache/incubator-apisix-dashboard.git
3.2 安装依赖并构建
git checkout   #这里的tag版本和你使用的apisix版本一致
yarn && yarn build:prod
3.3与 APISIX 集成

把编译后的在 /dist 目录下的所有文件,拷贝到 apisix/dashboard 目录下。 使用浏览器打开 http://127.0.0.1:9080/apisix/dashboard/ 即可使用, 不用填写用户名和密码,直接登录。

4.管理(启动、关闭)APISIX服务

# init nginx config file and etcd
make init

# start APISIX server
make run

# stop APISIX server
make stop

三、APISIX应用

配置一个可用的链路。

1.配置Upstream

创建Upstream界面中有Desc、Type、Key、Node。Type中根据需要选择roundrobinchash两种方式,如果选择chash方式需要从下拉列表中选择合适的Key。Node节点根据实际需求可以添加多个,如下图:

APISIX简介与应用_第1张图片

2.配置Routes

创建Route界面中有Desc、URIs、Hosts、AddURI、Remote Address、Methods、Upstream、Service。在URIs中添加接收的请求uri,支持正则表达,例如:请求地址有http://ip:port/hello/world.jsp、http://ip:port/hello/apisix.do,这里的URIs可以添加/hello/*来匹配处理这类请求。在Upstream中选择刚才创建的upstream。其他选择可以默认不填,如下图:

APISIX简介与应用_第2张图片

3.配置完成

完成上述两步配置后,就可以通过client端请求APISIX实现路由跳转。

四、小结

综上,APISIX搭建比较简单,上手比较容易,能够满足日常的网关需求,同时也可以自己进行二次开发。当然,APISIX中也有其他功能,相关功能可以自己进行扩展研究。可以根据自己的实际需求,对APISIX功能进行适当的删减,符合自己的才是最重要的。

后期需要在监控方面进行二次开发,目前是外接三方Prometheus,Prometheus是一款比较成熟完善的监控系统,但是外接三方让系统看起来比较庞大,并不是那么的精简,后期可以参考Prometheus中监控指标进行二次开发。

你可能感兴趣的:(Java,网关,APISIX)