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.mzph.cn/news/649581.shtml

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

相关文章

jenkins发布失败

今天用jenkins发布项目时失败了,而前几天还好好的。 云控制台看了下,发现根本就没打包。 报错如下: 从控制台可以看出,项目依赖没有下载下来,所以打包失败了。 根本原因是:在配置中给yarn指定的淘宝仓库…

python爬虫采集下载中国知网《出版来源导航》论文文献下载_PDF文档_数据采集知网爬虫论文Python3

时隔一年,很久没更新博客了。今天给大家带来一个python3采集中国知网 :出版来源导航 这个是网址是中国知网的,以下代码仅限于此URL(出版来源导航)采集,知网的其他网页路径采集不一定行,大家可以…

活字格V9获取图片失败bug,报错404,了解存储路径,已改为批量上传和批量获取

项目场景: 问题描述 原因分析: 解决方案: 完成了批量上传功能,这插件真的很方便 于是写了个批量获取附件的js代码,我真厉害 项目场景: 活字格V9版本获取图片链接Upload 【9.0.103.0】图片上传的存储路…

操作系统(4)---虚拟机

虚拟机又叫虚拟机管理程序或者虚拟机监控程序(Virtual Machine Monitor/Hypervisor,VMM),使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器 (Virtual Machine,VM),每个虚拟机器都可以独立运行一个操作系…

C语言中各种类型指针所能访问的字节

其实学习语言的最简单的方法就是学习代码&#xff0c;所以下面来看一段代码就明白了&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int a 0x11223344;int* pa &a;char* pc &a;double* pd &a;printf("%p\n", …

数据结构——链式二叉树(2)

目录 &#x1f341;一、二叉树的销毁 &#x1f341;二、在二叉树中查找某个数&#xff0c;并返回该结点 &#x1f341;三、LeetCode——检查两棵二叉树是否相等 &#x1f315;&#xff08;一&#xff09;、题目链接&#xff1a;100. 相同的树 - 力扣&#xff08;LeetCode&a…

【干货】【常用电子元器件介绍】【电阻】(二)--敏感电阻器

声明&#xff1a;本人水平有限&#xff0c;博客可能存在部分错误的地方&#xff0c;请广大读者谅解并向本人反馈错误。   电子电路中除了采用普通电阻器外&#xff0c;还有一些敏感电阻器&#xff08;如热敏电阻器、压敏电阻器、光敏电阻器等&#xff09;也被广泛地应用。然而…

C# 使用 SapNwRfc 调用SAP RFC

好久没写过相关代码&#xff0c;今天又来贡献一篇 C# 使用 SapNwRfc 调用SAP RFC。用VS2022的WINFORM应用程序&#xff0c;使用NuGet中的SapNwRfc类库&#xff0c;call SAP系统中的RFC&#xff0c;传入7个参数&#xff0c;得到RFC返回的2张表的数据。 一、VS2022中新建WINFORM…

Nodejs前端学习Day1_补档

我给day1搞没了&#xff0c;还是觉得该补一个&#xff0c;有用 文章目录 前言一、学习目标二、学习目录三、为什么JavaScript代码可以在浏览器中运行四、为什么JavaScript可以操作DOM和BOM五、浏览器中的JavaScript运行环境总结 前言 补档 一、学习目标 二、学习目录 三、为什…

RustDesk私有化部署,自建远程桌面搭建教程

以linux操作系统为例&#xff1a; 解压安装 # 使用wget进行下载1.1.8-2版本&#xff08;最新版本可以看上述发布地址&#xff09; wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.8-2/rustdesk-server-linux-amd64.zip # 使用unzip解压 unzip rust…

Hive3.1.3基础

参考B站尚硅谷 目录 什么是HiveHive架构原理 Hive安装Hive安装地址Hive安装部署安装Hive启动并使用Hive MySQL安装安装MySQL配置MySQL 配置Hive元数据存储到MySQL配置元数据到MySQL Hive服务部署hiveserver2服务metastore服务编写Hive服务启动脚本&#xff08;了解&#xff09…

EventSource 长链接执行

EventSource 说明文档MDN 其他参考文档 一、利用node启服务 import fs from fs import express from express const app express() // eventSource 仅支持 get 方法 // 服务器端发送的数据必须是纯文本格式&#xff0c;不能是二进制数据。 app.get(/api, (req, res) > …

table用position: sticky固定多层表头,滑动滚动条border边框透明解决方法

问题&#xff1a;我们发现&#xff0c;只要设置了border边框&#xff0c;这个位置滑动有内容经过就会出现如图的情况。 解决的方法&#xff1a;用outline&#xff08;轮廓&#xff09;替代border,以达到我们想要的样式。 table thead tr {border: none;outline-color: #fff;ou…

Redis(八)哨兵机制(sentinel)

文章目录 哨兵机制案例认识异常 哨兵运行流程及选举原理主观下线(Subjectively Down)ODown客观下线(Objectively Down)选举出领导者哨兵选出新master过程 哨兵使用建议 哨兵机制 吹哨人巡查监控后台master主机是否故障&#xff0c;如果故障了根据投票数自动将某一个从库转换为新…

excel 设置密码保户

目录 前言设置打开密码设置编辑密码 前言 保户自己的数据不被泄漏是时常有必要的&#xff0c;例如财务数据中最典型员工工资表&#xff0c;如果不设置密码后果可想而知&#xff0c;下面我们一起来设置excel查看密码和编辑密码。我用的是wps,其它版本类似&#xff0c;可自行查资…

已经安装了CUDA,但是cmd执行nvcc -V报错:nvcc不是内部或外部命令,也不是可运行的程序或批处理文件

请注意&#xff0c;查看版本的指令是nvcc --version或nvcc -V&#xff0c;注意区分大小写 如果还是不能输出版本信息&#xff0c;那这个原因可能是由于没有在系统环境变量里添加CUDA。 先来看看CUDA是否安装成功&#xff1a; 在CUDA的安装路径下找到bandwidthTest.exe 和 devi…

一种通过增强的面部边界实现精确面部表示的多级人脸超分辨率

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读&#xff1a;一种通过增强的面部边界实现精确面部表示的多级人脸超分辨率二、使用步骤1、研究背景2、方法提出3、相关方法3.1、FSR网络结构3.2…

26.各品类中商品价格的中位数(ceil与floor函数)

题目&#xff1a; 题解&#xff1a; --这道题主要考察中位数的取法 SELECT category_id,cast(sum(price)/count(1) as DECIMAL(16,2)) medprice from( SELECTcategory_id,price,rn,max(rn)over(partition by category_id) max_rn from(SELECTcategory_id,price,row_number() …

Emergent Abilities of Large Language Models 机翻mark

摘要 证明通过扩大语言模型可以可靠地提高性能和样本效率在广泛的下游任务。相反&#xff0c;本文讨论了我们称之为大型语言模型的新兴能力的一种不可预测的现象。我们认为如果一个能力不存在于较小的模型中&#xff0c;但在较大的模型中存在&#xff0c;则该能力就是新兴的。…

开发微信小程序,将图片下载到相册的方法,saveImageToPhotosAlbum怎么用

在开发微信小程序的时候&#xff0c;经常能看到小程序里面有下载按钮&#xff0c;如何将小程序中的图片下载到手机相册中那&#xff0c;下面给大家说一下怎么做&#xff0c;代码如何去写。 一、到微信小程序后台开启“用户隐私保护指引” 1.进入小程序后台&#xff0c;侧拉拉到…