基于官方文档快速安装部署:
https://apisix.apache.org/zh/docs/apisix/getting-started
记录通过通过 Docker Compose安装 Apache APISIX遇到的问题点
版本依赖
依赖 | 版本 |
---|---|
Go | go1.16.4 |
Git | 2.30.1 |
Docker | 20.10.7 |
Docker-compose | 1.29.2 |
安装 Apache APISIX
#将 Apache APISIX 的 Docker 镜像下载到本地
git clone https://github.com/apache/apisix-docker.git
# 将当前的目录切换到 apisix-docker/example 路径下
cd apisix-docker/example
# 运行 docker-compose 命令,安装 Apache APISIX
docker-compose -p docker-apisix up -d
-p为docker-compose开启的当前容器组的统一前缀,本条命令的创建的容器统一前缀为“docker-apisix”,查看创建的网络也会加上这个统一前缀 “docker network ls”
下载完成后,在运行 Docker 的宿主机上执行curl命令访问 Admin API,根据返回数据判断 Apache APISIX 是否成功启动。
curl "http://127.0.0.1:9080/apisix/admin/services/" -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'
返回数据如下所示,表示Apache APISIX 成功启动:
{
"count":1,
"action":"get",
"node":{
"key":"/apisix/services",
"nodes":{},
"dir":true
}
}
很遗憾,启动失败了
描述问题:
查看容器运行状态发现部分容器启动失败,apache/apisix:2.6-alpine不可用,或者创建容器成功,但是curl调用失败
docker ps
797232e77336 apache/apisix:2.7-alpine "sh -c '/usr/bin/api…" 23 hours ago Up 23 hours 0.0.0.0:9080->9080/tcp, :::9080->9080/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp docker-apisix_apisix_1
5f4309055eb4 bitnami/etcd:3.4.15 "/opt/bitnami/script…" 23 hours ago Up 23 hours 0.0.0.0:2379->2379/tcp, :::2379->2379/tcp, 2380/tcp docker-apisix_etcd_1
c5a6aec8251d nginx:1.19.0-alpine "/docker-entrypoint.…" 23 hours ago Up 23 hours 0.0.0.0:9082->80/tcp, :::9082->80/tcp docker-apisix_web2_1
2c1c8acd9bb6 apache/apisix-dashboard:2.7 "/usr/local/apisix-d…" 23 hours ago Up 23 hours 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp docker-apisix_apisix-dashboard_1
1bf53dc6181e nginx:1.19.0-alpine "/docker-entrypoint.…" 23 hours ago Up 23 hours 0.0.0.0:9081->80/tcp, :::9081->80/tcp docker-apisix_web1_1
查看log 日志
docker logs docker-apisix_apisix_1
WARNING: using fixed Admin API token has security risk.
Please modify "admin_key" in conf/config.yaml .
/usr/local/openresty/luajit/bin/luajit ./apisix/cli/apisix.lua init_etcd
Warning! Request etcd endpoint 'http://etcd:2379/version' error, connection refused, retry time=1
Warning! Request etcd endpoint 'http://etcd:2379/version' error, connection refused, retry time=2
request etcd endpoint 'http://etcd:2379/version' error, connection refused
分析为etcd不可达导致的apisix不可用导致的问题
直接登陆docker-apisix_web1_1容器查看etcd是否可用显示正常
curl "http://etcd:2379/version"
{"etcdserver":"3.4.15","etcdcluster":"3.4.0"}
登陆docker-apisix_etcd_1容器查看也没问题etcdctl 调用没问题
感觉是docker-apisix_apisix_1本身的问题
解决办法
猜测apisix版本兼容问题导致不可用更换apisix版本
修改https://github.com/apache/apisix-docker.git项目的/example/docker-compose.yml文件
image: apache/apisix:2.6-alpine改成image: apache/apisix:2.7-alpine
删除之前创建的容器重新创建即可
docker-compose down #删除之前创建的容器
docker network prune #删除之前创建的网络
docker-compose -p docker-apisix up -d
调用curl "http://127.0.0.1:9080/apisix/admin/services/" -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1',正常返回json,容器创建成功,浏览器访问127.0.0.1:9000正常进入apisix-dashboard
(apisix-dashboard调用的接口部分接口不兼容)