Open daoshouchen opened 1 month ago
您好,通过报错看起来是网络问题,通过scdbclient go build -o scdbclient cmd/scdbclient/main.go部署scql需要保证外网通讯畅通,建议先检查下网络情况。
确实是网络问题,目前存在网络没办法连接上下载所需依赖,能否提供一个不需要实时网络下载就能构建完成的方案。 因为无论在公司服务器节点或者生产服务节点,几乎都是无法满足网络去下载所需依赖的。
有没有可能将所需依赖打包成一份lib,之后进行构建使用?
打包构建目前不支持,建议先使用外网环境验证,后续可以参考文档和代码通过将镜像和依赖包手动上传来配置。
我尝试用本机进行操作,依然还是无法下载依赖。完全没法进展下去了,有没有可能提供点有效解决方案或者处理思路?
麻烦提供下失败信息或截图
可以尝试配置下go的代理,然后重试: go env -w GOPROXY=https://goproxy.cn,direct
可以尝试配置下go的代理,然后重试: go env -w GOPROXY=https://goproxy.cn,direct
有效;出现新问题: go build -o scdbclient cmd/scdbclient/main.go go: downloading github.com/influxdata/go-prompt v0.2.8 go: downloading github.com/spf13/cobra v1.6.1 go: downloading github.com/olekukonko/tablewriter v0.0.5 go: downloading github.com/golang/mock v1.6.0 go: downloading google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de go: downloading google.golang.org/grpc v1.63.2 go: downloading google.golang.org/protobuf v1.33.0 go: downloading google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de go: downloading github.com/mattn/go-runewidth v0.0.13 go: downloading golang.org/x/sys v0.19.0 go: downloading github.com/spf13/pflag v1.0.5 go: downloading golang.org/x/net v0.24.0 go: downloading google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be go: downloading github.com/pkg/term v1.2.0-beta.2 go: downloading github.com/rivo/uniseg v0.2.0 go: downloading golang.org/x/text v0.14.0
/usr/local/go/src/runtime/internal/sys/consts.go:18:7: DefaultPhysPageSize redeclared in this block /usr/local/go/src/runtime/internal/sys/arch_amd64.go:10:2: other declaration of DefaultPhysPageSize /usr/local/go/src/runtime/internal/sys/consts.go:22:7: PCQuantum redeclared in this block /usr/local/go/src/runtime/internal/sys/arch_amd64.go:11:2: other declaration of PCQuantum /usr/local/go/src/runtime/internal/sys/consts.go:25:7: Int64Align redeclared in this block /usr/local/go/src/runtime/internal/sys/arch_amd64.go:12:2: other declaration of Int64Align /usr/local/go/src/runtime/internal/sys/consts.go:32:7: MinFrameSize redeclared in this block /usr/local/go/src/runtime/internal/sys/arch_amd64.go:14:2: other declaration of MinFrameSize /usr/local/go/src/runtime/internal/sys/stubs.go:16:7: StackGuardMultiplier redeclared in this block /usr/local/go/src/runtime/internal/sys/consts.go:15:7: other declaration of StackGuardMultiplier /usr/local/go/src/runtime/internal/sys/stubs.go:16:30: undefined: StackGuardMultiplierDefault
/usr/local/go/src/math/acosh.go:43:6: Acosh defined in both Go and assembly /usr/local/go/src/math/asin.go:20:6: Asin defined in both Go and assembly /usr/local/go/src/math/asin.go:58:6: Acos defined in both Go and assembly /usr/local/go/src/math/asinh.go:40:6: Asinh defined in both Go and assembly /usr/local/go/src/math/atan.go:96:6: Atan defined in both Go and assembly /usr/local/go/src/math/atan2.go:30:6: Atan2 defined in both Go and assembly /usr/local/go/src/math/atanh.go:48:6: Atanh defined in both Go and assembly /usr/local/go/src/math/cbrt.go:26:6: Cbrt defined in both Go and assembly /usr/local/go/src/math/erf.go:189:6: Erf defined in both Go and assembly /usr/local/go/src/math/erf.go:274:6: Erfc defined in both Go and assembly /usr/local/go/src/math/erf.go:274:6: too many errors
check下go的版本(go version),如果版本老旧,需要按照官网升级go。
go version go version go1.23.0 linux/amd64
看报错是端口服务无法访问,而且scdb log并没有接收到请求,maybe是跨网络连接的问题?可以检查下远程节点的8080端口是否开放访问权限。
create database demo
[submit and get]err: Post "http://10.199.0.20:18080/public/submit_and_get": dial tcp 10.199.0.20:18080: connect: connection refused
以下是scdb配置,劳烦看一下哪里有问题?
1.scdb config.yml 配置
scdb_host: http://10.199.0.20:18080
port: 18080
2.docker-compose.yaml
version: "3.8"
services:
scdb:
image: secretflow-registry.cn-hangzhou.cr.aliyuncs.com/secretflow/scql:latest
environment:
问题已解决,是docker的宿主机端口未配置
总结一下在部署过程中遇到的一些常见问题: 1、在配置镜像时可能会连不上,需要配置改成阿里云镜像仓库:secretflow-registry.cn-hangzhou.cr.aliyuncs.com/secretflow/scql:latest 2、部署过程中依赖的openssl需要较高版本,我升级到openssl-3.2.2.tar.gz,生成密钥才正常。 3、在部署过程中依赖的go环境版本需要1.22及以上,通常需要升级,到官网下载最新go版本升级,参考https://stackoverflow.com/questions/62330084/fail-to-build-with-code-go-redeclared-in-this-block 4、在构建scdbclient 客户端时需要依赖go网络下载依赖,有可能网络连不上,采用go代理:go env -w GOPROXY=https://goproxy.cn,direct/ 5、在节点以及scdb启动时docker的启动端口,宿主机端口,监听端口有时会弄混。建议采用scdb 18080,engine 28080,38080这种区分。并将宿主机端口映射设定好,以免随机生成; 6、原生有mysql的,在docker拉起时可以忽略mysql配置,提前创建好数据库及执行完成sql文件。
@daoshouchen 已收到,非常感谢!我们将重视您的意见反馈,将帮助我们改进SCQL,使其更加完善和易用。
请教一个高可用部署的问题,如何在生产中保证各节点的高可用方案?是可以和传统应用一样alice多节点使用负载,bob多节点使用负载,各方通过负载地址进行通信吗?
scql本身的p2p模式支持多实例部署,可以部署多个broker/engine,但流量均衡、节点健康探查之类的机制缺失(这类功能放在平台、网关实现maybe更合适)。实践上业务可配合secretflow/kuscia平台实现高可用部署。 中心化模式模式中scdb模块是单节点,engine可以部署多个实例,但也需要配合网关解决路由问题。
在中心化模式中,在部署多个engine实例时的密钥文件是一定要同一个对吗?
如果启用了authorized_profile_path,则会校验公钥,因此需要是同一个
补充一下:authorized_profile_path里的公钥是创建user时对应的秘钥,和engine里用来加密https的是两回事,一个用于辨别身份,一个是https加密,如果两个秘钥不复用,则engine多实例的秘钥可以不同。
Stale issue message. Please comment to remove stale tag. Otherwise this issue will be closed soon.
Issue Type
Others
Have you searched for existing issues?
Yes
Link to Relevant Documentation
https://www.secretflow.org.cn/zh-CN/docs/scql/0.8.1b1/topics/deployment/how-to-deploy-centralized-cluster
Question Details