【docker部署安装ApiSix】

news2024/11/17 9:48:08

docker安装ApiSi

常见问题-提前查阅
1-端口被占用
确保所需的所有端口(默认的 9080/9091/9443/2379/9000)未被其他系统/进程使用

#查询端口占用情况
netstat -antp |grep 9443

# 如果端口冲突可尝试修改apisix的端口配置,
# 但不建议,因为会出现端口对应不上,导致apisix服务出错
# 除非必须修改,那请查看修改此文件

vim /opt/testApiSix/apisix-docker/example/docker-compose.yml

2-cannot access data directory
ETCD出现报错:cannot access data directory: mkdir /bitnami/etcd/data: permission denied,表示etcd启动时未没有创建db的权限,
在opt目录下执行:ETCD会把安装目录下的etcd_data 映射到容器内部的/bitnami/etcd/目录,并在此目录下创建data存储DB数据

chmod -R 777 /opt/apisix-docker/example/

3-容器持续地重启或失败
如果 Docker 容器持续不断地重启或失败,请登录容器并观察日志以诊断问题。

## 查询容器id
docker ps -a | grep 容器模糊名称
## 查询容器id对应日志
docker logs -f containerId

#进入到容器内部
docker exec -it containerId /bin/sh

APISIX简介

apisix 是由openresty 团队开发并开源的微服务api gateway

OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,
由中国人章亦春发起,提供了很多高质量的第三方模块。
OpenResty 是一个强大的 Web 应用服务器,
Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,
更主要的是在性能方面,OpenResty可以 快速构造出
足以胜任 10K 以上并发连接响应的超高性能 Web 应用系统。
360,UPYUN,阿里云,新浪,腾讯网,去哪儿网,
酷狗音乐等都是 OpenResty 的深度用户。

Nginx 采用一个 master 进程管理多个 worker 进程(master-worker)模式,
基本的事件处理都在 woker 中,
master 负责一些全局初始化,以及对 worker 的管理。
在OpenResty中,每个 woker 使用一个 LuaVM,
当请求被分配到 woker 时,将在这个 LuaVM 里创建一个 coroutine(协程)。
协程之间数据隔离,每个协程具有独立的全局变量_G。
OpenResty致力于将服务器应用完全运行与nginx中,
充分利用nginx事件模型进行非阻塞I/O通信。
其对MySQL、redis、Memcached的I\O通信操作也是非阻塞的,
可以轻松应对10K以上的超高连接并发。

第一步-部署ApiSix前docker基础环境准备

安装前必要部署环境准备
本文基于docker-compose安装APISIX, 所以需要提前安装好docker、docker-compose。
必要条件如下
1.Linux服务器Centos7.2(注:服务器操作系统版本)
2.Linux已部署Docker(注:如没安装,请参照下面连接第一步到第三步)
安装部署docker与docker-compose的步骤
2.Linux已部署Docker-Compose(注:如没安装,请参照下面连接第一步到第四步)
安装部署docker与docker-compose的步骤

第二步-docker部署安装APISIX-分批次操作

apisix-docker对应github地址,为下列链接
apisix-docker对应github地址

2.1-从远程github仓库获取ApiSix的部署全家桶

# 切换到安装目录,如/opt
cd /opt
#将 Apache APISIX 的 Docker 镜像下载到本地
git clone https://github.com/apache/apisix-docker.git

2.2-赋权限

## 赋权限(不执行,会报:ETCD容器启动时报错:
## cannot access data directory: mkdir /bitnami/etcd/data: permission denied,
## 表示etcd启动时未没有创建db的权限)
chmod -R 777 /opt/apisix-docker/example/

2.3-切换目录,使用docker命令安装部署apisix已经被打好的包

# 将当前的目录切换到 apisix-docker/example 路径下
cd /opt/apisix-docker/example
# 运行 docker-compose 命令,安装 Apache APISIX
# 确保所需的所有端口(默认的 9080/9091/9443/2379/9000)未被其他系统/进程使用,再执行下面命令
#查询端口占用情况
netstat -antp |grep 9443

## 如被占用
# 如果端口冲突可尝试修改apisix的端口配置,
# 但不建议,因为会出现端口对应不上,导致apisix服务出错
# 除非必须修改,那请查看修改此文件

vim /opt/testApiSix/apisix-docker/example/docker-compose.yml
# 修改完之后,再执行下列命令启动apisix容器
docker-compose -p docker-apisix up -d

其中example目录结构如下:
在这里插入图片描述

第三步-验证APISIX所需服务是否安装成功

3.1-docker ps -a | grep apisix查看以下5个容器是否都已经启动

## docker ps -a | grep 模糊匹配服务名
docker ps -a | grep apisix
docker ps -a | grep etcd
docker ps -a |grep dashboard
docker ps -a |grep grafana
docker ps -a |grep prometheus

如下图-右侧显示up,即为正常启动,如不是up标识,
在这里插入图片描述
3.2-如必要服务没正常启动,查看启动失败的日志,分析是端口冲突,还是其他原因
如不是up标识,进入各自的容器,查看容器启动日志

# docker logs -f 复制上面图片中的左侧容器id,以左上角举例
docker logs -f 60ce72be6caa

排查完所有未启动成功的容器,修正启动成功之后,进入网址

3.3-访问apisix-dashboard
将IP替换成实际的部署APISIX的服务器IP

http://IP:9000
默认账号密码admin/admin

第四步-扩展docker-compose操作与docker操作

4.1-docker-compose操作

#拉取镜像
docker-compose pull
#创建并启动镜像
docker-compose -p docker-apisix up -d
#停止并删除镜像
docker-compose -p docker-apisix down
#启动服务
docker-compose -p docker-apisix start
#停止服务
docker-compose -p docker-apisix stop

4.2-docker操作

#停止、启动、kill指定容器
docker stop containerid
docker start containerid
docker kill containerid
# 查看运行的容器
docker ps
#停止指定容器
docker stop $(docker ps -qa)
#删除全部容器
docker rm $(docker ps -qa)
#删除指定容器
docker rmi containerid
#查看所有镜像
docker images
#查看容器日志
docker logs -f containerid
#进入到容器内部
docker exec -it containerid /bin/sh

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

0305kali linux配置运行-docker-macos aarm64

文章目录 1 下载运行2 配置2.1 配置系统环境2.2 配置SSH服务2.3 安装工具 3 问题总结结语 1 下载运行 拉取kali linux镜像 docker pull kalilinux/kali-rolling该镜像为“纯净版”系统,没有任何工具,体积小。下面当我们运行起来之后,到容器中…

GlusterFs 分布式复制卷(Distributed-Replicate)性能测试

目录 fio工具参数解释 Glusterfs 和NFS 性能测试 顺序写: 随机写: 顺序读: 随机读: 随机读写: 参数说明: 测试结论: 与NFS对比 压测对比结果 NFS和GlusterFs的优缺点 NFS的优点 NFS…

基于卷积神经网络VGG的猫狗识别

!有需要本项目的实验源码的可以私信博主! 摘要:随着大数据时代的到来,深度学习、数据挖掘、图像处理等已经成为了一个热门研究方向。深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远…

综合能源系统(1)——综合能源系统基本定义与内涵

综合能源系统关键技术与典型案例  何泽家,李德智主编 综合能源系统基本定义 综合能源系统(Integrated Energy System,IES)的概念最早产生于热电联产领域,侧重于热电系统的协同优化,而后逐渐扩展丰富,涉及电、热、冷…

DEVICENET转MODBUS-TCP网关应用案例

远创智控YC-DNT-TCP连接到DEVICENET总线中做为从站使用,连接到 MODBUS-TCP 总线中做为主站或从站使用。是自主研发的一款 DEVICENET 从站功能的通讯网关。 YC-DNT-TCP常用拓展图 技术指标 网关的 MODBUS 接口可通过拨码选择做为主站(客户端&#xff09…

QNAP威联通NAS搭建SFTP服务,并内网穿透实现公网远程访问

文章目录 前言1. 威联通NAS启用SFTP2. 测试局域网访问3. 内网穿透3.1 威联通安装cpolar内网穿透3.2 创建隧道3.3 测试公网远程访问 4. 配置固定公网TCP端口地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址4.3 测试使用固定TCP端口地址远程连接威联通SFTP 转载自远程内…

【算法集训之线性表篇】Day 05

文章目录 题目思路代码实现效果 题目 将两个有序顺序表合并为一个有序顺序表,函数结果返回值为顺序表。 思路 我们可以利用二路归并排序算法中的Merge函数思路,设置两个指针i,j,分别记录在顺序表a和b中的访问位置,再…

【未解决】No rule to make target ‘/usr/lib/x86_64-linux-gnu/libGL.so‘

测试ros自带的PCL1.8是否能用,网上找个测试代码,编译阶段报错: cmake .. -- Could NOT find ensenso (missing: ENSENSO_LIBRARY ENSENSO_INCLUDE_DIR) ** WARNING ** io features related to ensenso will be disabled -- Could NOT find …

Blender环境纹理材质贴图入门教程

推荐:将 NSDT场景编辑器 加入你的3D开发工具链 大家好,今天跟大家分享Blender材质贴图入门图文教程,一套blender的PBR材质包,和HDRI环境纹理贴图,在文末领取,希望能助到大家更高效完成场景练习。 据我了解…

Linux Deploy(一)Linux Deploy简介与软件安装

一、Linux Deploy简介 Linux Deploy可以在安卓机器上使用chroot容器技术运行arm或者x86的Linux系统,利用该技术可以搭建个人服务器,Linux Deploy可运行多种linux发行版的软件,不失为一个好的家庭微型服务系统,如果想把手机弄成微…

【Spark_BigData】期末复习考试——

复习题目 yarn框架中不包含的进程为 Yarn包括两个主要进程:资源管理器Resource-Manager,节点管理器Node-Manager。 Scheduler zookeeper spark SQL 前身 Shark 在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。 HiveContext继承自SQLCon…

安装最新版CMAK,处理报错java.util.NoSuchElementException: key not found: PLAINTEXT

安装最新版CMAK,处理报错java.util.NoSuchElementException: key not found: PLAINTEXT 一、下载CMAK二、解压CMAK三、修改配置文件四、安装jdk11五、启动CMAK六、CMAK界面设置Kafka集群信息七、完整报错八、报错原因九、解决方法 一、下载CMAK CMAK下载地址&#…

将本地项目上传至gitee

一、先去gitee新建仓库 点击新建仓库之后,跳转下图页面 点击创建之后,跳转下图页面 到此为止,这里仓库就创建好了,下面去提交代码 二、本地项目连接远程仓库 1、进入想上传的项目的文件夹,然后右键点击 Git Bash Her…

Stable Diffusion 模特换装 蒙版一键批量提取

有没有想过可以使用算法批量提取图片中模特的服装,然后通过SD进行换装。 一个一个的PS抠图是不是太累,可以使用算法批量提取。相对于 Segment Anything 方法这个比较简单。 文章目录 蒙版批量提取SD换装 蒙版批量提取 import osfrom tqdm import tqdm …

前台测试,工程督导及5G网络优化工程师的区别具体在哪里?

什么是通信? 北邮版《通信原理》教材的第一句话是--通信乃是互通信息。 其实,这句话就说出了通信的本质,通信的目标就是如何让世界的任何人在任何时间,任何地点都进行信息的互通。 大到卫星,小到SIM卡,通信技术覆盖于…

OpenCV实现一张图片的特定区域上添加另一张图片

#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv;int main( ){Mat image= imread

Vite是如何实现Esbuild打包的

前面文章说过&#xff08;Vite如何实现秒级依赖预构建的能力&#xff09;&#xff0c;在 Vite 依赖预构建的底层实现中&#xff0c;大量地使用到了 Esbuild 这款构建工具&#xff0c;实现了比较复杂的 Esbuild 插件功能和技巧。接下来&#xff0c;我就来带你揭开 Vite 预构建神…

【JVM进阶】JVM看这一篇就够了(类加载器、垃圾回收、JVM调优、内存泄漏、CPU飙高)

文章目录 1、JVM组成1.1、JVM组成及运行流程1.2、程序计数器什么是程序计数器&#xff1f; 1.3、Java堆你能给我详细的介绍Java堆吗? 1.4、虚拟机栈什么是虚拟机栈垃圾回收是否涉及栈内存&#xff1f;栈内存分配越大越好吗&#xff1f;方法内的局部变量是否线程安全&#xff1…

spring boot学习之自定义starter启动器

starter启动器的目标 引入maven包即可自动装配配置&#xff0c;个人理解&#xff0c;如jdbc引入即可操作数据库 实现 1新建springboot工程编写实现类 2编写配置类 3配置 4打包 4新建工程引入使用

【Linux】进程信号之信号的保存

进程信号 二 一、信号的保存1、信号其他相关常见概念2、信号在内核中表示3、系统内核中信号集sigset_t类型介绍 二、信号集操作函数1、sigset_t 类型的操作函数2、关于block表的系统调用3、关于pending表的系统调用 三、结语 一、信号的保存 1、信号其他相关常见概念 实际执行…