API网关-Apisix多节点搭建(RPM包方式)
文章目录
- 前言
- 一、介绍
- 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节点介绍
- APISIX 的控制面是高可用性的,因为它只依赖于一个 etcd 集群。简单的说,apisix上配置的数据(apisix自身的配置除外)是完全保存到etcd集群的,apisix完全依赖于etcd集群。
- APISIX 可以通过在它前面添加一个负载均衡器来实现高可用性,因为 APISIX 的数据平面是无状态的,可以在需要时进行扩展。简单来说,apisix的每一个节点都是独立的,并没有apisix集群的说法,只需要给apisix的每个节点都绑定同一个etcd集群,就可以实现etcd中apisix的配置数据共享。
3. apisix单机安装配置教程(选看)
- API网关-Apisix RPM包方式自动化安装配置教程
二、准备
1. 配置集群免密登录
集群版安装之前,先准备好三个节点。并已经设置好集群免密登录。
- 配置集群免密登录教程
在这里,准备的集群节点为:192.168.145.103、192.168.145.104、192.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)" ]; thenyum -y install yum-utils
fi
if [ -z "$(command -v wget)" ]; thenyum -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)" ]; 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_openresty
install_apisix $APISIX_VERSIONexit 0
2. 增加执行权限
在终端中执行以下命令,为脚本添加执行权限。
chmod a+x /tmp/install_apisix.sh
3. 分发脚本
使用scp命令把脚本分发到192.168.145.104和192.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: traditionalrole_traditional:config_provider: etcdetcd: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/bashDASHBOARD_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)" ]; 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_dashboard $DASHBOARD_VERSION
alterexit 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 服务以及查看版本信息等操作。
希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!
相关文章:
API网关-Apisix多节点搭建(RPM包方式)
文章目录 前言一、介绍1. 端口介绍2. APISIX节点介绍3. apisix单机安装配置教程(选看) 二、准备1. 配置集群免密登录2. 搭建etcd集群 三、安装apisix节点1. 复制脚本2. 增加执行权限3. 分发脚本4. 执行脚本5. 配置apisix的etcd集群地址 四、安装apisix-dashboard1. 复制脚本2. …...
HAL库配置片内FLASH读写
一、FLASH简介 不同型号的 STM32F40xx/41xx,其 FLASH 容量也有所不同,最小的只有 128K 字节,最大 的则达到了 1024K 字节。我们的探索者开发板选择的是 STM32F407ZGT6 的 FLASH 容量为 1024K 字节。 主存储器,存放代码和数据常数&…...
日志记录——单片机可执行文件合并
一:需求场景 现在有一片单片机,执行程序包括自定义boot和应用程序app, 在将打包好的固件给到生产是有以下问题,由于要通过jlink烧录boot,然后上电启动boot,通过boot烧录初始化程序,过程过于复杂࿰…...
2024数模美赛C题F题完整代码结果展示
C:Momentum in Tennis 实在精力有限,完整讲解可以移步去看我的讲解视频啦: 美赛C题每一问代码结果讲解及进度说明 F:Reducing lllegal Wildlife Trade 实在精力有限,完整讲解可以移步去看我的讲解视频啦: …...
H5调用安卓原生相机API案例
1、在activity_main.xml文件里添加webview标签 <WebViewandroid:id="@+id/webview"android:layout_width="match_parent"android:layout_height="match_parent"> </WebView> 2、AndroidManifest.xml(权限和活动声明) 开启访问…...
Java面试——计网篇
一、基础篇 1、 TCP/IP 网络模型 对于同一台设备上的进程间通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式,而对于不同设备上的进程间通信,就需要网络通信,而设备是多样性的,所以要兼容多…...
函数式接口当参数使用
如果函数式接口作为一个方法的参数,就以为着要方法调用方自己实现业务逻辑,常见的使用场景是一个业务整体逻辑是不相上下的,但是在某一个步骤有不同的逻辑,例如数据处理有不同的策略,如果有大量的if-els,或…...
全面详解Maven的配置文件settings.xml
全面详解Maven的配置文件settings.xml setting文件位置maven多仓库查找依赖的顺序大致如下:基本配置选项localRepository(本地仓库设置)mirrors(镜像设置)servers(服务器)Profiles(配置文件)Active Profiles(激活配置文件Profiles的Profile) Maven是一个用于构建和管…...
【Spring连载】使用Spring Data访问Redis(十四)----Redis Repositories
【Spring连载】使用Spring Data访问Redis(十四)----Redis Repositories 一、Core concepts二、Defining Repository Interfaces三、Creating Repository Instances四、Usage五、Object Mapping Fundamentals六、对象到Hash映射Object-to-Hash Mapping七、…...
小鹏汽车穿越“生死线”
文|刘俊宏编|王一粟 “颠覆与涅槃,颠覆自我与重新涅槃,让企业在变革中更完美的蜕变。” 2024新年伊始,小鹏汽车董事长兼CEO何小鹏对2023年的蜕变显然非常刻骨铭心。无论是在汽车新势力,还是放眼整个中国汽…...
AIPC专题:深耕笔电背光模组领域,AIPC与车载显示拉动公司成长
今天分享的是AIPC系列深度研究报告:《AIPC专题:深耕笔电背光模组领域,AIPC与车载显示拉动公司成长》。 (报告出品方:东兴证券) 报告共计:19页 公司深耕笔电背光模组,主要下游客户为…...
架构(十一)从0到1实现动态定时任务
一、引言 作者的平台项目最近需要实现一个功能,用户可选择这个任务什么时候执行,执行频率是什么? 这其实就是一个定时任务,只不过需要动态的,让用户自由选择。 二、原生实现 要实现这样的功能,可以直接依赖…...
Mybatis 批量插入数据 SQL
温故而知新,这里记录一下 案例1 批量插入时,xxxMapper.java 中方法的参数都必须是 List ,泛型可以是 bean ,也可以是 Map 。配合使用 mybatis 的 foreach 即可。示例如下: public Integer batchInsertDemo(List<D…...
【学员分享-考试心得】国产数据库潜力无限,云贝教育OBCP认证培训帮您解难题
近年来,随着国产化转型的推进,国外数据库的岗位需求逐渐减少,让许多IT从业者倍感压力。在这种情况下,了解国产数据库成为了求职市场上的竞争力。云贝老师们将聚焦于OceanBase、PostgreSQL、TDSQL等IT培训,探讨其对国产…...
【Mysql】事务的隔离级别与 MVCC
事务隔离级别 我们知道 MySQL 是一个 C/S 架构的服务,对于同一个服务器来说,可以有多个客户端与之连接,每个客户端与服务器连接上之后,就是一个会话( Session )。每个客户端都可以在自己的会话中向服务器发…...
MongoDB从入门到实战之MongoDB快速入门
前言 上一章节主要概述了MongoDB的优劣势、应用场景和发展史。这一章节将快速的概述一下MongoDB的基本概念,带领大家快速入门MongoDB这个文档型的NoSQL数据库。 MongoDB从入门到实战的相关教程 MongoDB从入门到实战之MongoDB简介👉 MongoDB从入门到实战…...
Linux服务详解
如有错误或有补充,以及任何改进的意见,请在评论区留下您的高见,同时文中给出大部分命令的示例,即是您暂时无法在Linux中查看,您也可以知道各种操作的功能以及输出 如果觉得本文写的不错,不妨点个赞&#x…...
闲聊电脑(4)硬盘分区
夜深人静,万籁俱寂,老郭趴在电脑桌上打盹,桌子上的小黄鸭和桌子旁的冰箱又开始窃窃私语…… 小黄鸭:冰箱大哥,上次你说的那个“分区”和“格式化”是什么意思? 冰箱:分区么,就是分…...
光耦合器的结构与原理解析
光耦合器是一种重要的电光转换器件,广泛应用于电子设备、通信系统以及工业控制等领域。本文将深入分析光耦合器的结构与原理,旨在为读者提供清晰而全面的了解。 光耦合器作为一种关键的电子元件,扮演着信号隔离和传输的重要角色。它的设计结构…...
代码随想录day17--二叉树的应用5
LeetCode654.最大二叉树 题目描述: 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
