Closed ff2035 closed 1 year ago
目前文档并没有说清楚 http://tengine.taobao.org/document_cn/xudp_cn.html : 目前,xudp能力仅在Anolis系统上支持(注意:需要宿主机和docker都是Anolis操作系统才能支持xudp特性)。
hello, 我是阿里云操作系统开发团队的同学。Alibaba Cloud Linux 及 OpenAnolis OS 都支持 xudp。4.19 内核及 5.10 内核都可以支持。 我们在很早之前就已经完成了这一块的工作。内核要求是 ANCK。RHCK是不支持的。另外, 我们目前只保障在阿里云上可以正常运行。
xudp 是 Express UDP 与 tengine 连接的一个模块。Expree UDP 是一个独立的 UDP 加速方案。 阿里云实践 这个文档可以参考。 如果 Expree UDP 可以正常运行, tengine + xudp 就没有问题了。
对于 docker 的情况下, 确实要求宿主机要支持才可以。
hello, 我是阿里云操作系统开发团队的同学。Alibaba Cloud Linux 及 OpenAnolis OS 都支持 xudp。4.19 内核及 5.10 内核都可以支持。 我们在很早之前就已经完成了这一块的工作。内核要求是 ANCK。RHCK是不支持的。另外, 我们目前只保障在阿里云上可以正常运行。
xudp 是 Express UDP 与 tengine 连接的一个模块。Expree UDP 是一个独立的 UDP 加速方案。 阿里云实践 这个文档可以参考。 如果 Expree UDP 可以正常运行, tengine + xudp 就没有问题了。
对于 docker 的情况下, 确实要求宿主机要支持才可以。
这边按照上面的文档有安装了Express UDP, 但在tengine里编译 :
./configure --prefix=/usr/local/nginx --with-xquic-inc="../xquic-1.6.0/include" --with-xquic-lib="../xquic-1.6.0/build" --with-http_v2_module --without-http_rewrite_module --add-module=modules/ngx_http_xquic_module --with-openssl="../Tongsuo-8.3.2" --with-http_realip_module --with-http_geoip_module --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-luajit-lib=/usr/local/luajit/lib/ --with-luajit-inc=/usr/local/luajit/include/luajit-2.1/ --with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_geoip_module --with-stream_sni --add-module=../ngx_cache_purge-2.5.3 --add-module=../ngx_devel_kit-0.3.0 --add-module=../lua-nginx-module-0.10.12 --add-module=../headers-more-nginx-module-0.34 --add-module=../nginx-module-vts-0.2.1 --add-module=./modules/ngx_http_upstream_dynamic_module --add-module=./modules/ngx_http_upstream_check_module --add-module=./modules/ngx_http_upstream_vnswrr_module --add-module=./modules/mod_xudp
到mod_xudp 模块时提示以下内容: adding module in ./modules/mod_xudp checking for xudp ... not found ./configure: error: xudp library not found.
xudp library 文件确认是有的, 在/lib64/ 目录 和 /usr/local/lib64/ 目录下都有
[root@test tengine]# ll /lib64/libxudp.* -rw-r--r-- 1 root root 928350 Aug 3 15:40 /lib64/libxudp.a -rwxr-xr-x 1 root root 575512 Aug 3 15:40 /lib64/libxudp.so -rwxr-xr-x 1 root root 575512 Aug 3 15:40 /lib64/libxudp.so.1 -rwxr-xr-x 1 root root 575512 Aug 3 15:40 /lib64/libxudp.so.1.0.2
请问是还有什么遗漏吗?
@ff2035 config 检查的时候会尝试编译一个简单例子,编译不通过会提示这个,也可能是头文件没有找到,可以使用 --with-xudp-lib= 和 --with-xudp-inc= 显示指定一下 xudp 的库文件和头文件。
https://github.com/alibaba/tengine-ingress/blob/master/images/tengine/rootfs/build.sh#L313
上面这里有个完整的编译例子可以参考一下
@ff2035 config 检查的时候会尝试编译一个简单例子,编译不通过会提示这个,也可能是头文件没有找到,可以使用 --with-xudp-lib= 和 --with-xudp-inc= 显示指定一下 xudp 的库文件和头文件。
https://github.com/alibaba/tengine-ingress/blob/master/images/tengine/rootfs/build.sh#L313
上面这里有个完整的编译例子可以参考一下
加了这两个选项: --with-xudp-lib= 和 --with-xudp-inc= 还是一样的,
./configure --prefix=/usr/local/nginx \
--with-xquic-inc="../xquic-1.6.0/include" \
--with-xquic-lib="../xquic-1.6.0/build" \
--with-http_v2_module \
--without-http_rewrite_module \
--add-module=modules/ngx_http_xquic_module \
--with-openssl="../Tongsuo-8.3.2" \
--with-http_realip_module \
--with-http_geoip_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-luajit-lib=/usr/local/luajit/lib/ \
--with-luajit-inc=/usr/local/luajit/include/luajit-2.1/ \
--with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib \
--with-stream \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-stream_geoip_module \
--with-stream_sni \
--add-module=../ngx_cache_purge-2.5.3 \
--add-module=../ngx_devel_kit-0.3.0 \
--add-module=../lua-nginx-module-0.10.12 \
--add-module=../headers-more-nginx-module-0.34 \
--add-module=../nginx-module-vts-0.2.1 \
--add-module=./modules/ngx_http_upstream_dynamic_module \
--add-module=./modules/ngx_http_upstream_check_module \
--add-module=./modules/ngx_http_upstream_vnswrr_module \
--add-module=./modules/mod_xudp \
--with-xudp-lib="/usr/local/lib64/" \
--with-xudp-inc="/usr/local/include/" \
--with-xquic_xdp-inc="/usr/local/lib64/xquic_xdp/"
##到mod_xudp 模块时提示以下内容:
adding module in ./modules/mod_xudp
checking for xudp ... not found
./configure: error: xudp library not found.
有参考了上面文档这部份操作:
if [[ ${WITH_XUDP} == "1" ]]; then
# build xudp library
get_src_local "/source/libxudp-v$XUDP_LIB_VERSION.tar.gz"
cd "$BUILD_PATH/libxudp-v$XUDP_LIB_VERSION"
make
cp "$BUILD_PATH/libxudp-v$XUDP_LIB_VERSION/objs/libxudp.so.$XUDP_LIB_VERSION" /usr/local/lib/
cd /usr/local/lib/
ln -s -f libxudp.so.$XUDP_LIB_VERSION libxudp.so.1
ln -s -f libxudp.so.$XUDP_LIB_VERSION libxudp.so
# build xquic-xdp
cd "$BUILD_PATH/tengine-$TENGINE_VERSION/modules/mod_xudp/xquic-xdp"
make config root="$BUILD_PATH/libxudp-v$XUDP_LIB_VERSION"
make
mkdir -p /usr/local/lib64/xquic_xdp/
cp kern_xquic.o /usr/local/lib64/xquic_xdp/kern_xquic.o
WITH_XUDP_MODULE="--with-xudp-inc=$BUILD_PATH/libxudp-v$XUDP_LIB_VERSION/objs \
--with-xudp-lib=$BUILD_PATH/libxudp-v$XUDP_LIB_VERSION/objs \
--with-xquic_xdp-inc=$BUILD_PATH/tengine-$TENGINE_VERSION/modules/mod_xudp/xquic-xdp \
--add-module=modules/mod_xudp"
fi
按上面的配置,加了--with-xudp-inc --with-xudp-lib --with-xquic_xdp-inc 三个参数还是一样的结果。
阿里云ECS,操作系统是 Alibaba Cloud Linux 版本 3.2104
--with-xquic_xdp-inc=./modules/mod_xudp/xquic-xdp/
改成这样后,./configure 通过了,不过make 的时候会报错:
`cc -c -I/usr/local/luajit/include/luajit-2.1/ -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -DNDK_SET_VAR -I src/core -I src/event -I src/event/modules -I src/os/unix -I src/proc -I modules/ngx_http_xquic_module -I ../xquic-1.6.0/include -I ../ngx_devel_kit-0.3.0/objs -I objs/addon/ndk -I ./modules/ngx_http_upstream_check_module -I ./modules/mod_xudp -I /usr/local/include/ -I ./modules/mod_xudp/xquic-xdp/ -I modules/ngx_http_lua_module/src/api -I ../Tongsuo-8.3.2/.openssl/include -I objs -I src/http -I src/http/modules -I src/http/v2 -I ../ngx_devel_kit-0.3.0/src -I ../ngx_devel_kit-0.3.0/src -I ../ngx_devel_kit-0.3.0/objs -I objs/addon/ndk -I /usr/local/luajit/include/luajit-2.1/ -I src/stream \ -o objs/addon/ngx_http_xquic_module/ngx_xquic_intercom.o \ modules/ngx_http_xquic_module/ngx_xquic_intercom.c
_modules/ngx_http_xquic_module/ngx_http_xquic.c:24:10: fatal error: ngx_http_lua_ssl_certby.h: No such file or directory
24 | #include ~~~~~~
compilation terminated. make[1]: [objs/Makefile:1877: objs/addon/ngx_http_xquic_module/ngx_http_xquic.o] Error 1 make[1]: Waiting for unfinished jobs.... make[1]: Leaving directory '/root/source/tengine' make: *** [Makefile:10: build] Error 2`
只要不添加lua模块的时候, 就没有问题了 所以想请教一下,ngx_http_xquic 模块和 lua 模块能共存吗?
@ff2035 可以共存的,这个头文件也是存在的,可以加一下 -I 包含一下头文件就好了
CC_OPT="-I modules/ngx_http_lua_module/src"
./configure \
...
--with-cc-opt="${CC_OPT}"
@ff2035 可以共存的,这个头文件也是存在的,可以加一下 -I 包含一下头文件就好了
CC_OPT="-I modules/ngx_http_lua_module/src" ./configure \ ... --with-cc-opt="${CC_OPT}"
加了这个可以了,感谢!!!