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/bash

ETCD_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)" ]; then
  yum -y install yum-utils
fi
if [ -z "$(command -v wget)" ]; then
  yum -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)" ]; then
    if [ ! -d "${2}" ]; then
      mkdir -p "${2}"
    fi
    if [ ! -f /tmp/"${etcd_name}".tar.gz ]; then
      wget "$etcd_url" -P /tmp
      if [ $? -ne 0 ]; then
        echo "${etcd_name}.tar.gz下载失败,请重试或手动下载到/tmp目录下再次执行"
        echo "下载地址:$etcd_url"
        exit 1
      fi
    fi
    if [ -d "${2}/${etcd_name}" ]; then
      rm -rf "${2}/${etcd_name}"
    fi
    tar -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)" ]; then
    wget $apisix_rpm_url -P /tmp
    if [ $? -ne 0 ]; then
      echo "apache-apisix-repo-1.0-1.noarch.rpm 下载失败,请重试或手动下载到/tmp目录下再次执行"
      echo "下载地址:$apisix_rpm_url"
      exit 1
    fi
    yum -y install /tmp/apache-apisix-repo-1.0-1.noarch.rpm
    if [ $? -eq 0 ]; then
      echo "向 yum 包管理器添加软件仓库 OpenResty 成功"
    else
      echo "向 yum 包管理器添加软件仓库 OpenResty 失败,请查看异常信息后重试"
      exit 1
    fi
  fi
  if [ -z "$(yum repolist | grep -i apisix)" ]; then
    wget $apisix_repo_url -P /tmp
    if [ $? -ne 0 ]; then
      echo "apache-apisix.repo 下载失败,请重试或手动下载到/tmp目录下再次执行"
      echo "下载地址:$apisix_repo_url"
      exit 1
    fi
    yum-config-manager -y --add-repo /tmp/apache-apisix.repo
    if [ $? -eq 0 ]; then
      echo "向 yum 包管理器添加软件仓库 APISIX 成功"
    else
      echo "向 yum 包管理器添加软件仓库 APISIX 失败,请查看异常信息后重试"
      exit 1
    fi
  fi
}

# apisix安装与配置
install_apisix() {
  if [ -z "$(command -v apisix)" ]; then
    yum -y install apisix-"${1}"
    if [ $? -ne 0 ]; then
      echo "apisix-${1} 安装失败,请查看异常信息后重试"
      exit 1
    fi
    ulimit -n 4096
    apisix init
    if [ $? -eq 0 ]; then
      echo "初始化配置文件和 etcd 成功"
    else
      echo "初始化配置文件和 etcd 失败,请查看异常信息后重试"
      exit 1
    fi
    apisix start
    if [ $? -eq 0 ]; then
      echo "启动 apisix 服务成功"
    else
      echo "启动 apisix 服务失败,请查看异常信息后重试"
      exit 1
    fi
  fi
}

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)" ]; then
    wget "$dashboard_url" -P /tmp
    if [ $? -ne 0 ]; then
      echo "apisix-dashboard-${1}-0.el7.x86_64.rpm 下载失败,请重试或手动下载到/tmp目录下再次执行"
      echo "下载地址:$dashboard_url"
      exit 1
    fi
    yum -y install /tmp/apisix-dashboard-"${1}"-0.el7.x86_64.rpm
    if [ $? -ne 0 ]; then
      echo "apisix-dashboard 安装失败,请查看异常信息后重试"
      exit 1
    fi
    # sudo manager-api -p /usr/local/apisix/dashboard/
    systemctl start apisix-dashboard
    if [ $? -ne 0 ]; then
      echo "apisix-dashboard 启动失败,请查看异常信息后重试"
      exit 1
    fi
  fi
}

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 ]; then
    echo "修改为允许任何ip访问失败,请查看异常信息后重试"
    exit 1
  fi
  systemctl restart apisix-dashboard
  if [ $? -ne 0 ]; then
    echo "apisix-dashboard 重启失败,请查看异常信息后重试"
    exit 1
  fi
}

install_etcd $ETCD_VERSION $ETCD_INSTALLDIR
install_openresty
install_apisix $APISIX_VERSION
install_dashboard $DASHBOARD_VERSION
alter

exit 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/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【云原生】认识docker容器操作命令

目录 一、容器操作命令 1、创建容器 2、删除容器以及停止容器运行 3、查看容器的运行状态 4、查看容器的详细信息 5、将容器的文件传输到宿主机以及将宿主机的文件传输到容器中 6、批量删除容器 7、进入容器 二、容器的迁移 1、先在容器中创建测试文件 2、将容器存储…

洛谷 P5635 【CSGRound1】天下第一

原址链接 P5635 【CSGRound1】天下第一 先看标签 搜索&#xff1f;模拟&#xff1f;用不着这么复杂 创建函数a(int x,int y,int p) a(int x,int y,int p){if(x<0){return 1;}x (xy)%p;if(y<0){return 2;}y (xy)%p;return a(x,y,p); }写入主函数 #include<iostrea…

防御保护----防火墙的安全策略、NAT策略实验

实验拓扑&#xff1a; 实验要求&#xff1a; 1.生产区在工作时间&#xff08;9&#xff1a;00-18&#xff1a;00&#xff09;内可以访问DMZ区&#xff0c;仅可以访问http服务器&#xff1b; 2.办公区全天可以访问DMZ区&#xff0c;其中10.0.2.10可以访问FTP服务器和HTTP服务器…

Flink实现数据写入MySQL

先准备一个文件里面数据有&#xff1a; a, 1547718199, 1000000 b, 1547718200, 1000000 c, 1547718201, 1000000 d, 1547718202, 1000000 e, 1547718203, 1000000 f, 1547718204, 1000000 g, 1547718205, 1000000 h, 1547718210, 1000000 i, 1547718210, 1000000 j, 154771821…

Windows Server 安装 Docker

一、简介 Docker 不是一个通用容器工具&#xff0c;它依赖运行的 Linux 内核环境。Docker 实质上是在运行的 Linux 服务器上制造了一个隔离的文件环境&#xff0c;所以它执行的效率几乎等同于所部署的 Linux 主机服务器性能。因此&#xff0c;Docker 必须部署在 Linux 内核系统…

【保驾护航】HarmonyOS应用开发者基础认证-题库

通过系统化的课程学习&#xff0c;熟练掌握DevEco Studio&#xff0c;ArkTS&#xff0c;ArkUI&#xff0c;预览器&#xff0c;模拟器&#xff0c;SDK等HarmonyOS应用开发的关键概念&#xff0c;具备基础的应用开发能力。 考试说明 1、考试需实名认证&#xff0c;请在考前于个…

【LeetCode: 135. 分发糖果 + 贪心】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

嵌入式-stm32-江科大-OLED调试工具

文章目录 一&#xff1a;OLED调试工具1.1 OLED显示屏介绍1.2 实验&#xff1a;在OLED显示屏的使用1.3 自己新增功能测试道友&#xff1a;今天没有开始的事&#xff0c;明天绝不会完成。 一&#xff1a;OLED调试工具 1.1 OLED显示屏介绍 学习任何一门语言就需要进行调试&#…

Java基础进阶03-注解和单元测试

目录 一、注解 1.概述 2.作用 3.自定义注解 &#xff08;1&#xff09;格式 &#xff08;2&#xff09;使用 &#xff08;3&#xff09;练习 4.元注解 &#xff08;1&#xff09;概述 &#xff08;2&#xff09;常见元注解 &#xff08;3&#xff09;Target &#x…

第13次修改了可删除可持久保存的前端html备忘录:删除按钮靠右,做了一个背景主题:现代深色

第13次修改了可删除可持久保存的前端html备忘录&#xff1a;删除按钮靠右&#xff0c;做了一个背景主题&#xff1a;现代深色 备忘录代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"vi…

LFU算法

LFU算法 Least Frequently Used&#xff08;最不频繁使用&#xff09; Leetcode有原题&#xff0c;之前手写过LRU&#xff0c;数据结构还是习惯于用java实现&#xff0c;实现是copy的评论题解。 题解注释写的很清楚 大致就是说LFUCache类维护一个存放node的map&#xff0c;同…

立创EDA学习:设计收尾工作

布线整理 ShiftM&#xff0c;关闭铺铜显示 调整结束后再使用快捷键”ShiftM“打开铺铜 过孔 在空白区域加上一些GND过孔&#xff0c;连接顶层与底层的铺铜。放置好”过孔“后&#xff0c;隐藏铺铜&#xff0c;观察刚才放置的过孔有没有妨碍到其他器件 调整铺铜 先打开铺铜区&…

php mysql字段默认值使用问题

前提是使用了事务&#xff0c;在第一个阶段 是A表操作保存&#xff0c;第二阶段操作B表&#xff0c;操作B表的时候使用了A表的一个字段&#xff0c;这个字段在第一阶段没有设置值&#xff0c;保存的时候使用字段默认值。 【这种情况 最好是在第一阶段 把后面要使用的字段设置好…

C#在图片上输出文字和保存

winform&#xff0c;图片控件&#xff0c;加载一个图片&#xff0c;在图片上输出文字&#xff1b; 输出文字的代码如下&#xff1b; private void pictureBox1_Paint(object sender, PaintEventArgs e){Graphics g1 e.Graphics;g1.DrawString("测试", this.Font, B…

物联网IOT视频设备如何快速对接阿里云生活物联网(Link Visual)并成功上云?

原文永久更新地址&#xff1a;https://www.yundashi168.com/472.html 文章来源&#xff1a;猿视野 如果有图片看不清楚&#xff0c;加载不出来&#xff0c;请阅读原文。 什么是Link Visual、 Link Visual是生活物联网平台针对视频产品推出的增值服务&#xff0c;提供视频数据上…

指针的深入理解1

1.如何理解指针 假设有一栋宿舍楼&#xff0c;把你放在楼里&#xff0c;楼上有100个房间&#xff0c;但是房间没有编号&#xff0c;你的一个朋友来找你玩&#xff0c; 如果想找到你&#xff0c;就得挨个房子去找&#xff0c;这样效率很低&#xff0c;但是我们如果根据楼层和楼…

C#,恩廷格尔组合数(Entringer Number)的算法与源程序

恩廷格尔组合数&#xff08;Entringer Number&#xff09;组合数学的序列数字之一。 E&#xff08;n&#xff0c;k&#xff09;是{1&#xff0c;2&#xff0c;…&#xff0c;n1}的排列数&#xff0c;从k1开始&#xff0c;先下降后上升。 计算结果&#xff1a; 源代码&#xf…

用Excel辅助做数独

做数独游戏的时候&#xff0c;画在纸上很容易弄花眼&#xff0c;所以我考虑用Excel辅助做一个。 界面如下&#xff1a; 按下初始化表格区域按钮&#xff0c;会在所有单元格中填充“123456789”。如下图&#xff1a; 当某个单元格删除得只剩一个数字时&#xff0c;会将同一行、…

[UI5 常用控件] 03.Icon, Avatar,Image

文章目录 前言1. Icon2. Avatar2.1 displayShape2.2 initials2.3 backgroundColor2.4 Size2.5 fallbackIcon2.6 badgeIcon2.7 badgeValueState2.8 active 3. Image 前言 本章节记录常用控件Title,Link,Label。 其路径分别是&#xff1a; sap.m.Iconsap.m.Avatarsap.m.Image 1…

C++面试:散列表

目录 1. 散列表的基本概念 散列表的定义 散列函数 哈希冲突 2. 处理冲突的方法 链地址法&#xff08;Separate Chaining&#xff09; 开放地址法 再散列 3. 散列表的性能分析 1. 平均查找长度&#xff08;ASL&#xff09; 2. 负载因子&#xff08;Load Factor&#…