API网关-Apisix RPM包方式自动化安装配置教程

文章目录

  • 前言
  • 一、简介
    • 1. etcd简介
    • 2. APISIX简介
    • 3. apisix-dashboard简介
  • 二、Apisix安装教程
    • 1. 复制脚本
    • 2. 增加执行权限
    • 3. 执行脚本
    • 4. 浏览器访问
    • 5. 卸载Apisix
  • 三、命令
    • 1. Apisix命令
      • 1.1 启动apisix服务
      • 1.2 停止apisix服务
      • 1.3 优雅地停止apisix服务
      • 1.4 重启apisix服务
      • 1.5 重新加载apisix服务
      • 1.6 初始化本地nginx.conf
      • 1.7 初始化etcd的数据
      • 1.8 测试生成的nginx.conf
      • 1.9 显示apisix的版本信息
      • 1.10 显示apisix帮助信息
    • 2. etcd命令
      • 2.1 启动etcd
    • 3. apisix-dashboard命令
      • 3.1 启动apisix-dashboard服务
      • 3.2 停止apisix-dashboard服务
      • 3.3 重启apisix-dashboard服务
  • 总结


前言

API网关在现代应用开发中扮演着重要的角色,它可以帮助我们实现请求路由、负载均衡、认证授权、限流熔断等常见的API管理功能。Apche APISIX是一个高性能且可扩展的开源API网关和微服务管理平台,提供了丰富的功能和灵活的插件体系。而APISIX Dashboard则是APISIX官方提供的管理界面,使得对API网关进行配置和监控变得更加简单直观。

本教程将介绍如何使用Apisix RPM包方式来自动化安装并配置Apisix及其Dashboard组件。你将学习到如何通过脚本自动下载安装所需软件包,并进行必要配置以启动Apisix服务与Dashboard界面。


一、简介

1. etcd简介

Etcd 是一个分布式的键值存储系统,它被设计用于可靠地存储和检索数据。Etcd 最初由 CoreOS 开发,并成为 Kubernetes 的核心组件之一。

以下是 Etcd 的几个关键特点和功能:

  1. 分布式一致性:Etcd 使用 Raft 一致性算法来确保在集群中的所有节点之间达成共识。这意味着即使在面临网络故障或节点故障时,系统仍能保持数据的强一致性。

  2. 高可用性:通过将数据复制到多个节点上并使用选举机制选择新领导者,在某些节点失败时,Etcd 能够继续提供服务而不会停止工作。

  3. 监听与通知机制:Etcd 支持监听指定前缀下的键值变化,并可以发送通知给订阅者。这使得应用程序可以实时获取配置更改、服务发现等事件。

  4. 安全认证与访问控制:Etcd 提供了基于角色的访问控制(RBAC)机制,允许管理员定义用户、角色和权限策略以限定对存储中特定资源的操作权限。

  5. 快速响应时间:由于 Etcd 使用内存进行读取操作并具有高效索引结构(B+ 树),因此它能够提供快速的读取和写入操作。

Etcd 在分布式系统中扮演着重要角色,广泛应用于容器编排平台(如 Kubernetes)、服务发现、配置管理等场景。它为应用程序提供了可靠且高性能的数据存储解决方案,并具有良好的水平扩展性和强一致性保证。

2. APISIX简介

Apache APISIX 是一个高性能、可扩展的开源 API 网关和微服务管理平台。它基于 Nginx 和 OpenResty 构建,提供了丰富的功能和灵活的插件体系,用于实现请求路由、负载均衡、认证授权、限流熔断等常见的 API 管理功能。

以下是 Apache APISIX 的一些主要特点:

  1. 动态配置:APISIX 支持动态加载和更新配置,可以在运行时修改路由规则、插件设置等,并且无需重启网关即可生效。

  2. 强大而灵活的插件系统:APISIX 提供了丰富多样的内置插件(如限流器、身份验证器等),同时还支持自定义 Lua 插件来满足个性化需求。

  3. 分布式架构:APISIX 可以水平扩展并部署在多个节点上,通过集群方式处理大量并发请求,并具备高可用性和容错能力。

  4. 监控与日志:APISIX 集成了 Prometheus 和 Grafana 来提供实时监控指标,并支持将访问日志导出到 Elasticsearch 或其他存储后端进行分析与查询。

  5. 易于使用与集成:APISIX 提供了 RESTful 接口以及命令行工具来管理网关和配置,同时还提供了与 Kubernetes、Consul 等常见微服务生态系统的集成。

  6. 高性能:APISIX 基于 Nginx 和 OpenResty 构建,充分利用它们的高性能特点,并通过优化和缓存技术来提供快速而可靠的请求处理。

总体而言,Apache APISIX 是一个功能强大且灵活的 API 网关平台,适用于构建现代化、可扩展且安全稳定的微服务架构。

3. apisix-dashboard简介

Apache APISIX Dashboard 是 Apache APISIX 的官方管理界面,用于可视化地管理和监控 API 网关的配置和状态。它提供了一个直观且易于使用的用户界面,使开发人员和运维人员能够轻松地管理 API 网关并进行实时监控。

以下是 Apache APISIX Dashboard 的一些主要特点:

  1. 可视化配置:APISIX Dashboard 提供了一个图形化界面,让你可以通过简单而直观的方式来创建、修改和删除路由规则、插件设置等。

  2. 实时监控与统计:Dashboard 可以展示各种有用的指标数据,如请求量、响应时间、错误率等,并提供图表展示以及历史数据查询功能。这样你就可以更好地理解系统性能并做出相应调整。

  3. 权限与认证:Dashboard 支持多用户身份验证,并具备基于角色的访问控制(RBAC),允许不同层级或团队之间对网关进行分权操作。

  4. 集成扩展性:APISIX Dashboard 可以轻松集成到现有微服务生态系统中,并支持自定义插件开发来满足个性化需求。此外,在 Kubernetes 集群中部署 Dashboard 也非常便捷。

  5. 版本管理与回滚:Dashboard 允许你管理和回滚 API 网关的配置版本,以便在需要时快速还原到先前的状态。

总体而言,Apache APISIX Dashboard 提供了一个友好且功能强大的界面来管理和监控 Apache APISIX。它使得对 API 网关进行配置、监测和调整变得更加简单,并提供了可视化工具来帮助开发人员更好地理解系统性能并做出相应优化。


二、Apisix安装教程

此shell脚本执行后会自动安装 OpenRestyAPISIX 仓库,自动安装并启动etcdapisixapisix-dashboard,并修改好配置文件。

1. 复制脚本

首先,将以下脚本内容复制并保存为/tmp/install_apisix.sh文件。

#!/bin/bashETCD_VERSION='3.5.4'
ETCD_INSTALLDIR='/opt/module/etcd'
APISIX_VERSION='3.8.0'
DASHBOARD_VERSION='3.0.1'# 安装yum工具包并更新软件包
yum -y update
if [ -z "$(yum list installed | grep yum-utils)" ]; thenyum -y install yum-utils
fi
if [ -z "$(command -v wget)" ]; thenyum -y install wget
fi# 安装 etcd
install_etcd() {local etcd_name="etcd-v${1}-linux-amd64"local etcd_url="https://github.com/etcd-io/etcd/releases/download/v${1}/etcd-v${1}-linux-amd64.tar.gz"if [ -z "$(command -v etcd)" ]; thenif [ ! -d "${2}" ]; thenmkdir -p "${2}"fiif [ ! -f /tmp/"${etcd_name}".tar.gz ]; thenwget "$etcd_url" -P /tmpif [ $? -ne 0 ]; thenecho "${etcd_name}.tar.gz下载失败,请重试或手动下载到/tmp目录下再次执行"echo "下载地址:$etcd_url"exit 1fifiif [ -d "${2}/${etcd_name}" ]; thenrm -rf "${2}/${etcd_name}"fitar -zxvf /tmp/etcd-v"${1}"-linux-amd64.tar.gz -C "${2}"sudo cp -a "${2}"/etcd-v"${1}"-linux-amd64/etcd "${2}"/etcd-v"${1}"-linux-amd64/etcdctl /usr/bin/nohup "${2}"/etcd-v"${1}"-linux-amd64/etcd >/tmp/etcd.log 2>&1 &fi
}# 安装 OpenResty 和 APISIX 仓库
install_openresty() {local apisix_rpm_url='https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm'local apisix_repo_url='https://repos.apiseven.com/packages/centos/apache-apisix.repo'if [ -z "$(yum repolist | grep -i openresty)" ]; thenwget $apisix_rpm_url -P /tmpif [ $? -ne 0 ]; thenecho "apache-apisix-repo-1.0-1.noarch.rpm 下载失败,请重试或手动下载到/tmp目录下再次执行"echo "下载地址:$apisix_rpm_url"exit 1fiyum -y install /tmp/apache-apisix-repo-1.0-1.noarch.rpmif [ $? -eq 0 ]; thenecho "向 yum 包管理器添加软件仓库 OpenResty 成功"elseecho "向 yum 包管理器添加软件仓库 OpenResty 失败,请查看异常信息后重试"exit 1fifiif [ -z "$(yum repolist | grep -i apisix)" ]; thenwget $apisix_repo_url -P /tmpif [ $? -ne 0 ]; thenecho "apache-apisix.repo 下载失败,请重试或手动下载到/tmp目录下再次执行"echo "下载地址:$apisix_repo_url"exit 1fiyum-config-manager -y --add-repo /tmp/apache-apisix.repoif [ $? -eq 0 ]; thenecho "向 yum 包管理器添加软件仓库 APISIX 成功"elseecho "向 yum 包管理器添加软件仓库 APISIX 失败,请查看异常信息后重试"exit 1fifi
}# apisix安装与配置
install_apisix() {if [ -z "$(command -v apisix)" ]; thenyum -y install apisix-"${1}"if [ $? -ne 0 ]; thenecho "apisix-${1} 安装失败,请查看异常信息后重试"exit 1fiulimit -n 4096apisix initif [ $? -eq 0 ]; thenecho "初始化配置文件和 etcd 成功"elseecho "初始化配置文件和 etcd 失败,请查看异常信息后重试"exit 1fiapisix startif [ $? -eq 0 ]; thenecho "启动 apisix 服务成功"elseecho "启动 apisix 服务失败,请查看异常信息后重试"exit 1fifi
}install_dashboard() {local dashboard_url="https://github.com/apache/apisix-dashboard/releases/download/v${1}/apisix-dashboard-${1}-0.el7.x86_64.rpm"if [ -z "$(systemctl list-units --type=service | grep apisix-dashboard)" ]; thenwget "$dashboard_url" -P /tmpif [ $? -ne 0 ]; thenecho "apisix-dashboard-${1}-0.el7.x86_64.rpm 下载失败,请重试或手动下载到/tmp目录下再次执行"echo "下载地址:$dashboard_url"exit 1fiyum -y install /tmp/apisix-dashboard-"${1}"-0.el7.x86_64.rpmif [ $? -ne 0 ]; thenecho "apisix-dashboard 安装失败,请查看异常信息后重试"exit 1fi# sudo manager-api -p /usr/local/apisix/dashboard/systemctl start apisix-dashboardif [ $? -ne 0 ]; thenecho "apisix-dashboard 启动失败,请查看异常信息后重试"exit 1fifi
}alter() {file_path='/usr/local/apisix/dashboard/conf/conf.yaml'allow_list='    - 127.0.0.1           # The rules are checked in sequence until the first match is found.'new_allow_list='    - 0.0.0.0/0           # The rules are checked in sequence until the first match is found.'sed -i "s|$allow_list|$new_allow_list|" "$file_path"if [ $? -ne 0 ]; thenecho "修改为允许任何ip访问失败,请查看异常信息后重试"exit 1fisystemctl restart apisix-dashboardif [ $? -ne 0 ]; thenecho "apisix-dashboard 重启失败,请查看异常信息后重试"exit 1fi
}install_etcd $ETCD_VERSION $ETCD_INSTALLDIR
install_openresty
install_apisix $APISIX_VERSION
install_dashboard $DASHBOARD_VERSION
alterexit 0

2. 增加执行权限

在终端中执行以下命令,为脚本添加执行权限。

chmod a+x /tmp/install_apisix.sh

3. 执行脚本

执行以下命令,运行脚本开始下载、安装和配置Apisix。

/tmp/install_apisix.sh

请等待安装完成,如有异常会有提示。

4. 浏览器访问

浏览器输入192.168.145.105:9000进行访问(192.168.145.105替换为自己的ip地址),然后输入账号密码登录,如下图所示。
账号:admin
密码:admin

在这里插入图片描述
在这里插入图片描述

5. 卸载Apisix

停止服务,然后删除对应文件和目录即可。

apisix stop
systemctl stop apisix-dashboard
rm -rf /usr/bin/apisix
rm -rf /usr/local/apisix
rm -rf /usr/local/apisix/apisix
rm -rf /usr/local/openresty/lualib/resty/apisix

三、命令

1. Apisix命令

1.1 启动apisix服务

apisix start

1.2 停止apisix服务

apisix stop

1.3 优雅地停止apisix服务

apisix quit

1.4 重启apisix服务

apisix restart

1.5 重新加载apisix服务

apisix reload

1.6 初始化本地nginx.conf

apisix init

1.7 初始化etcd的数据

apisix init_etcd

1.8 测试生成的nginx.conf

apisix test

1.9 显示apisix的版本信息

apisix version

1.10 显示apisix帮助信息

apisix help

2. etcd命令

2.1 启动etcd

nohup etcd > /tmp/etcd.log 2>&1 &

3. apisix-dashboard命令

3.1 启动apisix-dashboard服务

systemctl start apisix-dashboard

3.2 停止apisix-dashboard服务

systemctl stop apisix-dashboard

3.3 重启apisix-dashboard服务

systemctl restart apisix-dashboard

总结

通过本教程,你已经学会了使用RPM包方式来自动化安装并配置Apache APISIX及其Dashboard组件。首先,在服务器上执行脚本时会自动下载OpenResty和APISIX仓库,并完成相应软件仓库添加操作;然后根据指定版本号依次安装etcd、apisix以及apisix-dashboard;最后修改dashboard相关文件以允许任意IP地址访问,并重新启动相关服务。

希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!

参考链接:

  • https://apisix.apache.org/docs/apisix/installation-guide/
  • https://apisix.apache.org/docs/dashboard/install/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/248889.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android矩阵Matrix变换setRectToRect,Kotlin

Android矩阵Matrix变换setRectToRect,Kotlin 在 Android画布Canvas裁剪区域clipRect,Kotlin-CSDN博客 基础上,增加一个点,通过setRectToRect挖出Bitmap原图中心区域的一块放到目标RectF里面。 import android.content.Context imp…

Google Chrome 常用的几个参数

1 右键--Google Chrome--属性--目标 参数作用--disable-infobars此计算机将不会再收到 Google Chrome 更新,因为 Windows XP 和 Windows Vista 不再受支持。适用于 xp、2003 的 49.x.x.x 版本。示例1--ingore-certificate-errors忽略证书错误--disable-background-…

知识库建设这些工具来帮忙,企业工作效率翻倍

在当今深度信息化的年代,知识库成了企业不可或缺的一部分,它的建设与管理显得格外重要。然而,想要建设又好又高效的知识库并非易事。好消息是,有很多优秀的工具可以让这个过程变得更加轻松,今天我们就重点来探讨其中的…

excel中去掉单元格中两个数字之间的空格

excel中去掉单元格中两个数字之间的空格 使用公式:SUBSTITUTE(A1," “,”") 解释:将A1单元格中的空格查找出来并去掉。

搭建WebGL开发环境

前言 本篇文章介绍如何搭建WebGL开发环境 WebGL WebGL的技术规范继承自免费和开源的OpenGL ES标准,从某种意义上说,WebGL就是Web版的OpenGL ES,而OpenGL ES是从OpenGL中派生出来的。他们的应用环境有区别,一般来说:…

C++:第十四讲动态规划初步

每日C知识 想要在做C小游戏里实现等待效果,可以用Sleep。 Sleep函数可以使计算机程序(进程,任务或线程)进入休眠,使其在一段时间内处于非活动状态。 一般需要头文件windows.h。 注意"Sleep"首字母要大写…

ppt背景图片怎么设置?让你的演示更加出彩!

PowerPoint是一款广泛应用于演示文稿制作的软件,而背景图片是演示文稿中不可或缺的一部分。一个好的背景图片能够提升演示文稿的整体效果,使观众更加关注你的演示内容。可是ppt背景图片怎么设置呢?本文将介绍ppt背景图片设置的三个方法&#…

Spring-boot项目+Rancher6.3部署+Nacos配置中心+Rureka注册中心+Harbor镜像仓库+NFS存储

目录 一、项目概述二、环境三、部署流程3.1 Harbor部署3.1.1 docker安装3.1.2 docker-compose安装3.1.3 安装证书3.1.4 Harbor下载配置安装 3.2 NFS存储搭建3.3 Rancher平台配置3.3.1 NFS存储相关配置3.3.2 Harbor相关配置3.3.3 Nacos部署及相关配置3.3.4 工作负载deployment配…

ubuntu20.04 安装ROS2 记录

主要参考B站古月居的ROS2入门21讲 和 以下链接(基本和视频上一致) ubuntu20.04安装ROS2 详细教程_ubuntu20.04 ros2-CSDN博客 但是中间有些需要注意的地方, 1,添加源 步骤中提到 sudo curl -sSL https://raw.githubuserconten…

Redis冲冲冲——缓存三兄弟:缓存击穿、穿透、雪崩

目录 引出缓存击穿缓存穿透缓存雪崩 总结 引出 谈谈redis的击穿、穿透、雪崩。 缓存击穿 缓存击穿:redis中没有,但是数据库有 顺序:先查缓存,判断缓存是否存在;如果缓存存在,直接返回数据;如果…

【前端素材】bootstrap3 实现地产置业公司source网页设计

一、需求分析 地产置业公司的网页通常是该公司的官方网站,旨在向访问者提供相关信息和服务。这些网页通常具有以下功能: 公司介绍:网页通常包含有关公司背景、历史、核心价值观和使命等方面的信息。此部分帮助访问者了解公司的身份和目标。 …

人工视觉仍然需要图像采集卡

最初,图像采集卡被用作模拟视频数字转换器和图像缓冲器,但如今它们能够执行复杂的任务,例如图像处理。图像采集卡的设计不断发展,旨在提高系统性能并减少计算机处理需求。 除了图像采集之外,图像采集卡还执行机器视觉…

芯片跨时钟域设计(二)

芯片培训(真实项目)介绍: 低功耗景芯SoC前端、中端、后端全流程实战培训(火爆订购中) DDR4/3项目实战培训 ARM Cortex-A72处理器12nm PR实战培训 ARM Cortex-A72处理器12nm DFT实战培训 ARM Cortex-A7处理器28nm PR实战培训(火爆价格战) RISC-V MCU 40nm全芯片…

抽象类(Java)、模板方法设计模式

一、概念 在Java中有abstract关键字,就是抽象的意思,可用来修饰类和成员方法。 用abstract来修饰类,那这个类就是抽象类;修饰方法,那这个方法就是抽象方法。 修饰符 abstract class 类名{修饰符 abstract 返回值类型…

走进水稻种植教学基地可视化:科技与农业知识的完美结合

随着科技的不断发展,农业领域也在不断创新和进步。水稻种植教学基地可视化系统是一种基于现代信息技术手段的教学方式,通过虚拟现实、3D建模等技术,将水稻种植的全过程进行模拟和展示。这种教学方式打破了传统农业教学的局限性,使…

Springboot+vue的健身房管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的健身房管理系统(有报告)。Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的健身房管理系统,采用M(model&#xf…

知识点积累系列(一)golang语言篇【持续更新】

云原生学习路线导航页(持续更新中) 本文是 知识点积累 系列文章的第一篇,记录golang语言相关的知识点 1.结构体的mapstructure是什么 mapstructure:"default" mapstructure是一个Go语言的库,用于将一个map中的值映射到…

STM32读取MPU6050数据并通过角度值控制舵机运动(STM32、GY-521 MPU6050、SG90舵机、MG946舵机)

通过STM32F103C8T6读取MPU6050数据控制舵机运动(STM32、GY-521 MPU6050、SG90舵机、MG946舵机) 最终现象一、MPU6050数据读取二、舵机控制原理①什么是PWM?②STM32F103C8T6如何生成PWM?③控制舵机需要什么样的PWM波? 三…

【Go】Channel底层实现 ②

文章目录 channel底层实现channel发送、接收数据有缓冲 channelchannel 先写再读channel 先读再写(when the receiver comes first) 无缓冲channelchannel存在3种状态: channel底层实现 // channel 类型定义 type hchan struct {// channel 中的元素数量, lenqcoun…

【排序算法】C语言实现随机快排,巨详细讲解

文章目录 🚀前言🚀快排的核心过程partition(划分过程)🚀快排1.0🚀随机快速排序🚀稳定性 🚀前言 铁子们好啊!继续我们排序算法今天要讲的是快排,通常大家所说…