apisix 容器安装

发布时间 2023-05-25 14:52:13作者: 小张同学哈

1. 按照官方文档进行docker容器安装,安装完成后启动报错,关键错误日志如下:

2023/02/07 02:22:25 [warn] 52#52: *12717338 [lua] v3.lua:829: request_chunk(): http://etcd:2379: failed to parse domain: failed to parse domain. Retrying, context: ngx.timer
[error] 76#76: *12281706 [lua] config_etcd.lua:631: no healthy etcd endpoint available, next retry after 2s, context: ngx.timer
[warn] 109#109: *10905451 [lua] v3.lua:245: _request_uri(): http://etcd:2379: failed to parse domain: failed to parse domain. Retrying, client: 172.19.0.7, server: , request: "GET /apisix/prometheus/metrics HTTP/1.1", host: "apisix:9091"

2. 查阅官方Issue

  https://github.com/apache/apisix/issues/8800,若是luaJit的bug,已经修复。然后按照官方文档 安装最新版apisix-3.3.0,依然报错。按照Issue中的说法,需要自己rebuild的apisix-base. 

 3. 然后下载apisix-build-tools,在虚拟机中进行build

4. 整个build过程是在docker容器中进行,并需要不断从互联网下载各种包、库以及github代码,而且需要容器能够连接互联网(需梯子)。

  build之前需要修改构建脚本添加VPN代理:

   修改build-apisix-base.sh,在开始从github仓库下载代码之前,添加VPN代理:  

export https_proxy=http://192.168.144.129:7890 http_proxy=http://192.168.144.129:7890 all_proxy=socks5://192.168.144.129:7890

    export https_proxy=http://192.168.144.129:7890 http_proxy=http://192.168.144.129:7890 all_proxy=socks5://192.168.144.129:7890

    192.168.144.129为运行VPN软件的宿主机的IP地址,你的虚拟机要能够访问到(即虚拟机与宿主机需要互通)。

  在 cd grpc-client-nginx-module-${grpc_client_nginx_module_ver} || exit 1 这一行后面,添加如下代码:

sed -i '/#!\/usr\/bin\/env\sbash/a\export https_proxy=http://192.168.144.129:7890 http_proxy=http://192.168.144.129:7890 all_proxy=socks5://192.168.144.129:7890' install-util.sh
sed -i '/install-util.sh\sinstall_go/a\\tPATH="$(PATH):/usr/local/go/bin" go env -w GOPROXY=https://goproxy.io,direct' Makefile

  第一行是在install-util.sh中添加代理,第二行是为go设置环境变量GOPROXY (go语言下载包时使用的代理)

5. 执行构建:

  make package type=rpm app=apisix-base version=1.21.4.1.8 image_base=centos image_tag=7

  注意:version参数,必须与apisix-3.3.0 依赖的版本一致,不一致会导致rpm包无法安装。