安装:
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前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标识,
如不是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
后面备注:
启动etcd:
systemctl start etcd
docker安装:
镜像配置文件:
/home/apisix/apisix-docker/example/
下载并启动镜像:
启动所有镜像:docker-compose -p docker-apisix up
实践操作:
添加路由:
➜ curl “http://127.0.0.1:9180/apisix/admin/routes/1” -X PUT -d ’
{
“methods”: [“GET”],
“host”: “zhiyou.com”,
“uri”: “/anything/*”,
“upstream”: {
“type”: “roundrobin”,
“nodes”: {
“httpbin.org:80”: 1
}
}
}’ -H ‘X-API-KEY: edd1c9f034335f136f87ad84b625c8f1’
正常会得到如下所示的结果
{“value”:{“create_time”:1679392758,“methods”:[“GET”],“host”:“youdianzhishi.com”,“status”:1,“priority”:0,“update_time”:1679392758,“upstream”:{“pass_host”:“pass”,“hash_on”:“vars”,“type”:“roundrobin”,“nodes”:{“httpbin.org:80”:1},“scheme”:“http”},“id”:“1”,“uri”:“/anything/*”},“key”:“/apisix/routes/1”}