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