前言

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地址访问,并重新启动相关服务。

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

参考链接:

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐