高性能API云原生网关 APISIX安装与配置指南

Apache APISIX是Apache软件基金会下的顶级项目,由API7.ai开发并捐赠。它是一个高性能的云原生API网关,具有动态、实时等特点。

APISIX网关可作为所有业务的流量入口,为用户提供了丰富的功能,包括动态路由、动态上游、动态证书、A/B测试、灰度发布(金丝雀发布)、蓝绿部署、限速、防攻击、指标收集、监控报警、可观测性和服务治理等。基于Nginx和OpenResty构建的APISIX,通过Lua语言扩展了其功能,具有高性能和低延迟的特点,是构建现代微服务架构的理想选择。

接下来本文将介绍如何安装并运行APISIX!

APISIX基础概念

上游(Upstream)

上游是指应用层服务或节点的抽象。它的作用是对服务节点进行负载均衡,以确保请求能够被有效地处理。在APISIX中,上游的地址信息可以直接配置到路由或服务上。通过创建上游对象,可以在多个路由或服务中共享相同的上游配置,从而简化管理和维护。

路由(Route)

路由是APISIX中最核心的资源对象之一。它定义了请求的匹配规则,并根据匹配结果执行相应的操作。路由通常包含以下三个重要部分:

  • 匹配规则:用于确定请求是否与路由匹配。
  • 插件配置:用于在请求生命周期中执行特定的逻辑操作。
  • 上游信息:指定请求应该被转发到哪个上游服务。

通过路由的配置,可以实现诸如路由转发、请求过滤、流量控制等功能。

服务(Service)

服务是某类API的抽象,通常与上游服务一一对应。它定义了API的基本信息,包括访问路径、后端服务地址等。路由与服务之间的关系通常是N:1的,即多个路由可以引用同一个服务。

消费者(Consumer)

消费者是指使用API服务的客户端。消费者需要进行认证并获得访问权限,才能够使用API提供的服务。在APISIX中,消费者可以与插件或上游服务进行绑定,从而实现个性化的访问控制和流量管理。

插件(Plugin)

插件是扩展APISIX应用层能力的重要机制。它们在请求或响应的生命周期中执行特定的逻辑操作,以实现诸如请求转发、请求修改、流量控制等功能。插件可以与路由、服务或消费者进行绑定,以实现个性化的功能定制和流量处理。

Admin API

APISIX 提供了 Admin API 和直观的 Dashboard,这些工具使得配置 Apache APISIX 路由、上游、服务、SSL 证书等功能变得简单而直观。

通过 Admin API,用户可以轻松地获取、创建、更新和删除资源。APISIX 具有热加载能力,这意味着在资源配置完成后,APISIX 会自动更新配置,无需重新启动服务。Dashboard 则提供了可视化界面,用户可以直观地管理和监控 APISIX 的各项功能。

Admin API 和 Dashboard 的使用使得对 API 网关的管理变得高效且易于维护。通过这些工具,用户可以根据需要动态地调整和优化 API 网关的配置,从而满足不同的业务需求。

APISIX的架构设计如下所示:

其中,APISIX 核心包括路由匹配、负载均衡、服务发现、API 管理等重要功能,以及配置管理等基础模块。同时,APISIX 还提供了丰富的内置插件,涵盖了可观测性、安全、流量控制等方面。

Admin API 和 Dashboard 为用户提供了一种简单而强大的方式,使得用户可以轻松地管理和配置他们的 API 网关,从而更好地满足业务需求。

安装APISIX

本文中提供的安装方法适用于 CentOS 7 和 CentOS 8。如果你选择该方法安装 APISIX,需要先安装 etcd。

安装etcd

APISIX 使用 etcd 作为配置中心进行保存和同步配置。在安装 APISIX 之前,需要在你的主机上安装 etcd。

如果你在安装 APISIX 时选择了 Docker 或 Helm 安装,那么 etcd 将会自动安装;如果你选择其他方法或者需要手动安装 APISIX,请参考以下步骤安装 etcd。

APISIX要求ETCD版本3.5以上!

bash 复制代码
ETCD_VERSION='3.5.4'
wget https://github.com/etcd-io/etcd/releases/download/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-amd64.tar.gz
tar -xvf etcd-v${ETCD_VERSION}-linux-amd64.tar.gz && \
cd etcd-v${ETCD_VERSION}-linux-amd64 && \
sudo cp -a etcd etcdctl /usr/bin/

编写systemd /etc/systemd/system/etcd.service

bash 复制代码
[Unit]
Description=etcd service
Documentation=etcd service
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/etcd
Restart=on-failure
RestartSec=30s

[Install]
WantedBy=multi-user.target

安装APISIX

如果当前系统没有安装 OpenResty,请使用以下命令来安装 OpenResty 和 APISIX 仓库。

bash 复制代码
yum install -y https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm

如果已安装 OpenResty 的官方 RPM 仓库,请使用以下命令安装 APISIX 的 RPM 仓库。

bash 复制代码
yum install yum-utils -y
yum-config-manager --add-repo https://repos.apiseven.com/packages/centos/apache-apisix.repo

完成上述操作后使用以下命令安装 APISIX

bash 复制代码
yum install apisix -y

管理 APISIX 服务

APISIX 安装完成后,你可以运行以下命令初始化 NGINX 配置文件和 etcd

shell 复制代码
apisix init

使用以下命令启动 APISIX

shell 复制代码
apisix start

建议使用systemd进行后续的管理!

使用RPM 方式安装的默认已经配置好apisix的systemd 位于r/usr/lib/systemd/system/apisix.service

bash 复制代码
# apisix systemd service
# https://github.com/api7/apisix-build-tools/blob/master/usr/lib/systemd/system/apisix.service
[Unit]
Description=apisix
#Conflicts=apisix.service
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
Restart=on-failure
WorkingDirectory=/usr/local/apisix
ExecStartPre=/bin/rm -f /usr/local/apisix/logs/worker_events.sock
ExecStart=/usr/bin/apisix start
ExecStop=/usr/bin/apisix

 stop
ExecReload=/usr/bin/apisix reload
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

配置APISIX

通过修改本地的配置文件,例如 /usr/local/apisix/conf/config.yaml 文件。

或者在启动 APISIX 时使用 -c--config 添加文件路径参数 apisix start -c <path string>,完成对 APISIX 服务本身的基本配置。

举例配置

yaml 复制代码
apisix:
  node_listen:
    - 9080
    - 80                 # API6默认HTTP监听端口,这里列出了两个,允许同时访问9080和80端口
  ssl:                   # 开启SSL模块,启用HTTPS
    enable: true
    listen:
      - port: 443       # HTTPS默认端口
      - port: 9443      # 可选端口,建议删除,只保留443作为默认端口
  enable_ipv6: false
  enable_control: true    # 开启管理端口和相关Dashboard端口
  control:
    ip: "0.0.0.0"
    port: 9092           # 管理端口,用于API6的管理操作和Dashboard的访问
deployment:
  admin:
    allow_admin:               # 允许admin用户执行key的网段,详见:https://nginx.org/en/docs/http/ngx_http_access_module.html#allow
      - 0.0.0.0/0              
    admin_key:
      - name: "admin"
        key: thisisakey
        role: admin                 # admin角色:管理所有配置数据
      - name: "viewer"
        key: 4054f7cf07e344346cd3f287985e76a2
        role: viewer
  etcd:                             # ETCD连接地址,如果不使用Docker部署,可修改为其他IP
    host:                           # 可以定义同一个ETCD集群的多个ETCD主机地址
      - "http://localhost:2379"          # 这里的ETCD也可以修改为宿主机IP
    prefix: "/apisix"               # API6配置前缀
    timeout: 30                     # 超时时间30秒
plugin_attr:                        # Prometheus相关配置,此处可以保持默认,后续再添加监控
  prometheus:
    export_addr:
      ip: "0.0.0.0"
      port: 9091                   # Prometheus导出端口,用于数据采集

启动APISIX

bash 复制代码
systemctl enable --now apisix

可以通过 curl 来访问正在运行的 APISIX 实例。比如,你可以发送一个简单的 HTTP 请求来验证 APISIX 运行状态是否正常

bash 复制代码
curl "http://127.0.0.1:9080" --head | grep Server

现在,你已经成功安装并运行了 APISIX!

部署 Dashboard

安装步骤

安装RPM包

bash 复制代码
sudo yum install -y https://github.com/apache/apisix-dashboard/releases/download/v3.0.1/apisix-dashboard-3.0.1-0.el7.x86_64.rpm

启动方式

在Shell中运行dashboard

bash 复制代码
sudo manager-api -p /usr/local/apisix/dashboard/

或者作为服务运行dashboard

bash 复制代码
systemctl start apisix-dashboard

访问Dashboard

在不修改配置的情况下,通过浏览器访问 http://127.0.0.1:9000 使用GUI界面的Dashboard。默认的用户名和密码为admin。

通过以上步骤,你已经成功安装并部署了Apache APISIX Dashboard。

参考

APISIX安装指南

APISIX官方文档

API7.ai官网

相关推荐
阿里云云原生6 小时前
LLM 不断提升智能下限,MCP 不断提升创意上限
云原生
阿里云云原生6 小时前
GraalVM 24 正式发布阿里巴巴贡献重要特性 —— 支持 Java Agent 插桩
云原生
宁zz9 小时前
乌班图安装jenkins
运维·jenkins
云上艺旅9 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
无名之逆9 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
大丈夫立于天地间9 小时前
ISIS协议中的数据库同步
运维·网络·信息与通信
rainFFrain10 小时前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
GalaxyPokemon10 小时前
Muduo网络库实现 [九] - EventLoopThread模块
linux·服务器·c++
xujiangyan_11 小时前
nginx的反向代理和负载均衡
服务器·网络·nginx
@郭小茶11 小时前
docker-compose方式部署docker项目
运维·docker·容器