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

2024-02-27 07:04

本文主要是介绍高性能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 架构图

其中,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以上!

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

[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 仓库。

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

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

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

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

yum install apisix -y

image-20240226000744246

管理 APISIX 服务

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

apisix init

使用以下命令启动 APISIX

apisix start

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

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

# 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/apisixstop
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 服务本身的基本配置。

举例配置

apisix:node_listen:- 9080- 80                 # API6默认HTTP监听端口,这里列出了两个,允许同时访问9080和80端口ssl:                   # 开启SSL模块,启用HTTPSenable: truelisten:- port: 443       # HTTPS默认端口- port: 9443      # 可选端口,建议删除,只保留443作为默认端口enable_ipv6: falseenable_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: thisisakeyrole: admin                 # admin角色:管理所有配置数据- name: "viewer"key: 4054f7cf07e344346cd3f287985e76a2role: vieweretcd:                             # ETCD连接地址,如果不使用Docker部署,可修改为其他IPhost:                           # 可以定义同一个ETCD集群的多个ETCD主机地址- "http://localhost:2379"          # 这里的ETCD也可以修改为宿主机IPprefix: "/apisix"               # API6配置前缀timeout: 30                     # 超时时间30秒
plugin_attr:                        # Prometheus相关配置,此处可以保持默认,后续再添加监控prometheus:export_addr:ip: "0.0.0.0"port: 9091                   # Prometheus导出端口,用于数据采集

启动APISIX

systemctl enable --now apisix

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

curl "http://127.0.0.1:9080" --head | grep Server

image-20240226002004764

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

部署 Dashboard

安装步骤

安装RPM包

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

sudo manager-api -p /usr/local/apisix/dashboard/

或者作为服务运行dashboard

systemctl start apisix-dashboard

访问Dashboard

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

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

参考

APISIX安装指南

APISIX官方文档

API7.ai官网

这篇关于高性能API云原生网关 APISIX安装与配置指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/751567

相关文章

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参