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.hqwc.cn/news/433571.html

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

相关文章

docker部署常用命令

centos安装docker https://docs.docker.com/engine/install/centos/ 修改iptables(重要!!!) step1:修改iptables配置vim /lib/systemd/system/docker.serviceExecStart/usr/bin/dockerd -H fd:// --containerd/run/…

CAD-autolisp(三)——文件、对话框

目录 一、文件操作1.1 写文件1.2 读文件 二、对话框DCL2.1 初识对话框2.2 常用对话框界面2.2.1 复选框、列表框2.2.2 下拉框2.2.3 文字输入框、单选点框 2.3 Lisp对dcl的驱动2.4 对话框按钮实现拾取 一、文件操作 1.1 写文件 代码示例(defun c:writefile();getfiled函数&…

用Visual Studio Code创建JavaScript运行环境【2024版】

用Visual Studio Code创建JavaScript运行环境 JavaScript 的历史 JavaScript 最初被称为 LiveScript,由 Netscape(Netscape Communications Corporation,网景通信公司)公司的布兰登艾奇(Brendan Eich)在 …

[C++开发 03_2/2 _ STL(185)]

知识点1:STL初始 概述: STL是标准模板库的意思,STL从广义上来讲分为:容器,算法,迭代器。 容器算法之间通过迭代器进行无缝连接。 知识点2:STL初始 2.1 STL诞生 C中面向对象的三大特性&#xff1…

YARN介绍

1 概念 YARN 是一个资源管理、任务调度的框架,主要包含三大模块:ResourceManager(RM)、 NodeManager(NM)、ApplicationMaster(AM)。其中,ResourceManager 负责所有资 源…

LVS 概念介绍

1、集群简介 集群概述 集群称呼来自于英文单词 cluster,表示一群、一串的意思,用在服务器领域则表示大量服务器的集合体,协同起来向用户提供系统资源,系统服务。通过网络连接组合成一个计算机组,来共同完一个任务。 …

Spring5系列学习文章分享---第五篇(事务概念+特性+案例+注解声明式事务管理+参数详解 )

目录 事务事务概念什么是事务事务四个特性(ACID) 搭建事务操作环境Spring 事务管理介绍注解声明式事务管理声明式事务管理参数配置XML 声明式事务管理事务操作(完全注解声明式事务管理)感谢阅读 开篇: 欢迎再次来到 Spring 5 学习…

记一个信息泄露到RCE

打点 开局一个登录框 信息收集 发现了一处接口泄露了部分信息 不过只有支付宝密钥的信息无法扩大危害,此时尝试寻找了一下其他同类型系统同样的接口,查看一下是否泄露的信息相同 因为如果相同就说明是静态的,没有价值横向收集 此时访问其他…

关于我写过那些MySQL专栏

写在文章开头 这是截至今日写过的文章汇总,对于关注笔者公众号有一段时间的读者都知道,笔者会每周对自己写过的文章整理至相关专栏,以便读者可以按需进行检索阅读。 你好,我叫sharkchili,目前还是在一线奋斗的Java开…

无需手动部署3分钟自动化搞定幻兽帕鲁游戏联机服务器搭建与好友一起玩

生存类游戏《幻兽帕鲁》异常火爆,大量玩家遭遇了卡顿、闪退、延迟高的糟糕体验,其实我们玩家也可以选择《幻兽帕鲁》的专用服务器模式,自行搭建服务器和好友畅玩,无需手动部署,3分钟自动化搞定游戏联机服务器搭建。 1…

代码随想录算法训练营第32天(贪心算法02● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

贪心算法 part02 122.买卖股票的最佳时机II解题思路 55. 跳跃游戏解题思路 45.跳跃游戏II (来不及了 明天刷解题思路 122.买卖股票的最佳时机II 动态规划章节会重点讲买卖股票问题 本题解法很巧妙,大家可以看题思考一下,在看题解。 题目链接&…

Cybellum—信息安全测试工具

产品概述 由于软件和数据在汽车上的使用越来越多,汽车越来越“智能化”,汽车行业面临着重大的信息安全挑战。2021年8月,ISO/SAE 21434正式发布,标准中对汽车的信息安全提出了规范化的要求,汽车信息安全不容忽视。 Cyb…