apisix多节点搭建

文章目录

  • 前言
  • 一、介绍
    • 1. 端口介绍
    • 2. APISIX节点介绍
    • 3. apisix单机安装配置教程(选看)
  • 二、准备
    • 1. 配置集群免密登录
    • 2. 搭建etcd集群
  • 三、安装apisix节点
    • 1. 复制脚本
    • 2. 增加执行权限
    • 3. 分发脚本
    • 4. 执行脚本
    • 5. 配置apisix的etcd集群地址
  • 四、安装apisix-dashboard
    • 1. 复制脚本
    • 2. 增加执行权限
    • 3. 执行脚本
    • 4. 配置apisix-dashboard的etcd集群地址
    • 5. 浏览器访问
    • 6. 卸载Apisix和apisix-dashboard
  • 五、命令
    • 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. apisix-dashboard命令
      • 2.1 启动apisix-dashboard服务
      • 2.2 停止apisix-dashboard服务
      • 2.3 重启apisix-dashboard服务
  • 总结


前言

本文介绍了APISIX的安装和配置过程,包括在集群环境中安装APISIX节点和APISIX Dashboard,并提供了相应的脚本和命令。首先介绍了端口的作用以及各个端口的默认值,然后详细说明了APISIX节点和etcd集群之间的关系。接下来给出了一个单机安装配置教程供参考。

在准备阶段,我们需要设置集群免密登录并搭建etcd集群。然后,在每个节点上执行脚本进行APISIX节点的安装,并将etcd集群地址添加到配置文件中。

接着介绍如何安装并配置APISIX Dashboard,在192.168.145.103节点上执行相关脚本完成下载、安装与修改访问权限等操作。最后通过浏览器访问Dashboard页面进行验证。

如果需要卸载Apisix或apisix-dashboard服务,可以按照给出命令断开对应服务并删除相关文件和目录即可。


一、介绍

1. 端口介绍

  • 管理接口端口(Admin API Port):默认为9180。这个端口用于与APISIX的管理接口进行通信,可以执行添加、修改、删除等操作。
  • 代理监听端口(Proxy Listen Port):默认为9080。这个端口是APISIX作为反向代理监听客户请求的入站流量所使用的。
  • APISIX仪表盘端口:默认为9000。

2. APISIX节点介绍

  1. APISIX 的控制面是高可用性的,因为它只依赖于一个 etcd 集群。简单的说,apisix上配置的数据(apisix自身的配置除外)是完全保存到etcd集群的,apisix完全依赖于etcd集群。
  2. APISIX 可以通过在它前面添加一个负载均衡器来实现高可用性,因为 APISIX 的数据平面是无状态的,可以在需要时进行扩展。简单来说,apisix的每一个节点都是独立的,并没有apisix集群的说法,只需要给apisix的每个节点都绑定同一个etcd集群,就可以实现etcd中apisix的配置数据共享。

3. apisix单机安装配置教程(选看)

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

二、准备

1. 配置集群免密登录

集群版安装之前,先准备好三个节点。并已经设置好集群免密登录。

  • 配置集群免密登录教程

在这里,准备的集群节点为:192.168.145.103192.168.145.104192.168.145.105

2. 搭建etcd集群

  • etcd自动化安装配置教程

三、安装apisix节点

分别在三个节点安装apisix。

1. 复制脚本

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

#!/bin/bash

# apisix版本
APISIX_VERSION='3.8.0'

# 安装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

# 安装 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_openresty
install_apisix $APISIX_VERSION

exit 0

2. 增加执行权限

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

chmod a+x /tmp/install_apisix.sh

3. 分发脚本

使用scp命令把脚本分发到192.168.145.104192.168.145.105节点。

scp /tmp/install_apisix.sh 192.168.145.104:/tmp/
scp /tmp/install_apisix.sh 192.168.145.105:/tmp/

4. 执行脚本

192.168.145.103节点执行以下命令,开始在三个节点分别运行脚本,开始下载和安装apisix。

/tmp/install_apisix.sh
ssh 192.168.145.104 /tmp/install_apisix.sh
ssh 192.168.145.105 /tmp/install_apisix.sh

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

5. 配置apisix的etcd集群地址

等待apisix节点安装完成后。
分别打开三个节点的apisix的配置文件/usr/local/apisix/conf/config.yaml,然后添加etcd集群地址配置,如下所示。

deployment:
  role: traditional
  role_traditional:
    config_provider: etcd
  etcd:
    host:
      - http://192.168.145.103:2379
      - http://192.168.145.104:2379
      - http://192.168.145.105:2379

然后分别在三个节点执行以下命令加载apisix配置文件。

ulimit -n 4096
apisix reload

四、安装apisix-dashboard

安装之前,确保节点可以访问到github,若不能,请查看解决方法:
Windows和Linux访问不了GitHub的解决方法

1. 复制脚本

首先,在192.168.145.103节点将以下脚本内容复制并保存为/tmp/install_dashboard.sh文件。

#!/bin/bash

DASHBOARD_VERSION='3.0.1'

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_dashboard $DASHBOARD_VERSION
alter

exit 0

2. 增加执行权限

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

chmod a+x /tmp/install_dashboard.sh

3. 执行脚本

192.168.145.103节点执行以下命令,开始在三个节点分别运行脚本,开始下载和安装apisix-dashboard。

/tmp/install_dashboard.sh

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

4. 配置apisix-dashboard的etcd集群地址

等待apisix-dashboard节点安装完成后。
打开192.168.145.103节点的apisix-dashboard的配置文件/usr/local/apisix/dashboard/conf/conf.yaml,然后添加etcd集群地址配置,如下所示。

  etcd:
    endpoints:            # supports defining multiple etcd host addresses for an etcd cluster
      - 192.168.145.103:2379
      - 192.168.145.104:2379
      - 192.168.145.105:2379

然后执行以下命令重启apisix-dashboard。

systemctl restart apisix-dashboard

5. 浏览器访问

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

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

查看节点信息:

在这里插入图片描述

6. 卸载Apisix和apisix-dashboard

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

apisix stop
systemctl stop apisix-dashboard
rm -rf /usr/bin/apisix
rm -rf /usr/local/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. apisix-dashboard命令

2.1 启动apisix-dashboard服务

systemctl start apisix-dashboard

2.2 停止apisix-dashboard服务

systemctl stop apisix-dashboard

2.3 重启apisix-dashboard服务

systemctl restart apisix-dashboard

总结

通过这篇文章,您学习到了如何在多个节点上部署 APISIX 和 APisix-Dashboard,并成功地启动它们。您还学会使用一些常用命令来管理 APisix 服务以及查看版本信息等操作。

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

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

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

相关文章

【GEE】基于GEE批量下载Landsat8 L1C数据(整幅)

之前发过一篇使用GEE下载Landsat8的文章,然后有很多小伙伴私信我各种问题,如L1C、L2数据代码怎么修改,如何镶嵌,如何去云、 如何裁剪等一系列问题。正好快过年了,手头的事也没有多少了,所以这两天整理了一下…

蜂邮EDM邮件营销平台,低至0.0041元每封!

推荐的邮件营销平台有哪些?邮件营销平台如何使用? 你是否厌倦了传统的推广方式?是时候尝试一种全新的、高效的传播方式了!蜂邮EDM邮件营销平台正在掀起一场数字化风潮,每封邮件仅需0.0041元,让你的推广成本…

5款超级好用的桌面端软件推荐

​ 今天我想分享一些自己比较喜欢的桌面端软件,还请大家包涵指正。如果你曾搜索过 Windows效率工具推荐,对下文的软件或许有所了解。不过为了凑字数,我还是会再介绍一遍。 1.电子书阅读——Starrea ​ Starrea是一款轻量、易用而又全功能的…

C#/.NET/.NET Core优秀项目和框架2024年1月简报

前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学…

[Python-闫式DP]

闫式DP分析法 闫老师是将DP问题归结为了有限集合中的最值问题。 动态规划有两个阶段,一是状态表示,二是状态计算。 状态表示 f(i,j) 状态表示是一个化零为整的过程,动态规划的做题思路不是暴力法的每一个物品都去枚举,而是将相…

异步解耦之RabbitMQ(二)__RabbitMQ架构及交换机

异步解耦之RabbitMQ(一) RabbitMQ架构 RabbitMQ是一个基于AMQP(Advanced Message Queuing Protocol)协议的消息代理中间件,它通过交换机和队列实现消息的路由和分发。以下是RabbitMQ的架构图: Producer(生产者&#…

Java设计模式-组合模式(13)

大家好,我是馆长!今天开始我们讲的是结构型模式中的组合模式。老规矩,讲解之前再次熟悉下结构型模式包含:代理模式、适配器模式、桥接模式、装饰器模式、外观模式、享元模式、组合模式,共7种设计模式。 组合模式(Composite Pattern) 定义 组合(Composite)模式:又叫…

深度学习与神经网络Pytorch版 3.2 线性回归从零开始实现 1.生成数据集

3.2 线性回归从零开始实现 目录 3.2 线性回归从零开始实现 一 ,简介 1. 原理 2. 步骤 3. 优缺点 4. 应用场景 二 ,代码展现 1. 生成数据集(完整代码) 2. 各个函数解析 2.1 torch.normal()函数 2.2 torch.matmul()函数 2.3 d2l.plt.scatter(…

【教学类-44-54】20240201 德彪钢笔行书(实线字体)制作的数字描字帖

作品展示 背景需求: 找到了两款适合做数字描字贴的字体 【教学类-44-03】20240111阿拉伯数字字帖的字体(三)——德彪钢笔行书(实线字体)和print dashed(虚线字体)-CSDN博客文章浏览阅读1.1k次…

【HarmonyOS】鸿蒙开发之HTTP网络请求——第5章

HTTP网络请求封装 network/request.ets import { configInterface } from ./type import http from ohos.net.http import { getToken } from ../utils/storage//网络请求封装 export const request (config:configInterface)>{let httpRequest:http.HttpRequest http.c…

༺༽༾ཊ—Unity之-01-工厂方法模式—ཏ༿༼༻

首先创建一个项目, 在这个初始界面我们需要做一些准备工作, 建基础通用文件夹, 创建一个Plane 重置后 缩放100倍 加一个颜色, 任务:使用工厂方法模式 创建 飞船模型, 首先资源商店下载飞船模型&#xff0c…

二进制安全虚拟机Protostar靶场(5)堆的简单介绍以及实战 heap0

前言 这是一个系列文章,之前已经介绍过一些二进制安全的基础知识,这里就不过多重复提及,不熟悉的同学可以去看看我之前写的文章 什么是堆 堆是动态内存分配的区域,程序在运行时用来分配内存。它与栈不同,栈用于静态…

【Vue3+Vite】Vue3视图渲染技术 快速学习 第二期

文章目录 一、模版语法1.1 插值表达式和文本渲染1.1.1 插值表达式 语法1.1.2 文本渲染 语法 1.2 Attribute属性渲染1.3 事件的绑定 二、响应式基础2.1 响应式需求案例2.2 响应式实现关键字ref2.3 响应式实现关键字reactive2.4 扩展响应式关键字toRefs 和 toRef 三、条件和列表渲…

农业植保无人机行业研究:预计2025年市场规模可达115亿元

农业植保无人机行业市场投资前景现状如何?农业植保无人机市场,包括无人机自身技术、性能标准和植保标准。农业植保无人机应用植保机喷洒农药对我国而言,不仅具有很大的经济价值,还具有社会价值:农业植保机作业不仅有超高的工作效…

并网逆变器学习笔记8---平衡桥(独立中线模块)控制

参考文献:《带独立中线模块的三相四线制逆变器中线电压脉动抑制方法》---赵文心 一、独立中线模块的三相四线拓扑 独立中线模块是控制中线电压恒为母线一半,同时为零序电流ineu提供通路。不平衡负载的零序电流会导致中线电压脉动,因此需要控制…

【Android 字节码插桩】Gradle插件基础 Transform API的使用

前言 啪~我给大家开个会(手机扔桌子上) 什么叫做 客户无感的数据脱敏!? 师爷给翻译翻译什么叫做客户无感的数据脱敏? 什么特么的叫做客户无感数据脱敏? 举个栗子~ 客户端Sdk新升级了一个版本,增…

UnityShader(九)Unity中的基础光照(下)

目录 标准光照模型 自发光 高光反射 (1)Phong模型 (2)Blinn模型 漫反射 环境光 逐顶点还是逐像素 逐像素光照 逐顶点光照 总结 标准光照模型 光照模型有许多种,但在早期游戏引擎中,往往只使用一…

linux -- 并发 -- 并发来源与简单的解决并发的手段

互斥与同步 当多个执行路径并发执行时,确保对共享资源的访问安全是驱动程序员不得不面对的问题 互斥:对资源的排他性访问 同步:对进程执行的先后顺序做出妥善的安排 一些概念: 临界区:对共享的资源进行访问的代码片段…

1、缓存击穿背后的问题

当面试官问:你知道什么是缓存击穿吗,你们是如何解决的? 首先我们要了解什么是缓存击穿?以及缓存击穿会引发什么问题? 缓存击穿就是redis中的热点数据过期,缓存失效,导致大量的请求直接打到数据…

【免费分享】数据可视化-银行动态实时大屏监管系统,含源码

一、动态效果展示 1. 动态实时更新数据效果图 ​ 2. 鼠标右键切换主题 二、确定需求方案 1. 屏幕分辨率 这个案例的分辨率是16:9,最常用的的宽屏比。 根据电脑分辨率屏幕自适应显示,F11全屏查看; 2. 部署方式 B/S方式:支持…