scql执行报错403
提交一个sql查询任务后,scql执行报错403:
ERROR: [403 Forbidden] during [POST] to [http://scql-broker2.ppcp.svc.cluster.local:8011/intra/query/submit] [SecretFlowJobApi#submitQuery4P2p(SecretFlowJobDTO)]: []
是不是scql里,限制了某些请求来源会被拒绝呀?
服务之间的环境是这样的: scql-broker服务在k8s的一个集群ppcp.svc.cluster.local下,然后应用服务tds-connector2在另一个k8s集群下。
Ps,在应用服务tds-connector2机器或容器里,直接运行:
curl --location 'http://scql-broker2.ppcp.svc.cluster.local:8011/intra/query/submit'
--header 'Content-Type: application/json'
--data '{"query":"select * from ta left join tb on ta.ID=tb.ID","projectId":"lFCgipDeumSykCpfSCwjDcxwgSviNuGz"}'
发现是可以正常提交和返回的,不会403。所以证明了scql-broker本身与tds-connector2服务的通信是没问题的。
broker 容器内部可以能正常访问吗?
broker 容器内部可以能正常访问吗?
可以的。 [root@Test-K8s-Master1 /home/nlsa]#kubectl -n ppcp exec -it scql-broker2-0 -- /bin/bash root@scql-broker2-0:/home/admin# root@scql-broker2-0:/home/admin# root@scql-broker2-0:/home/admin# pwd /home/admin root@scql-broker2-0:/home/admin#
broker 容器内部可以能正常访问吗?
可以的。 [root@Test-K8s-Master1 /home/nlsa]#kubectl -n ppcp exec -it scql-broker2-0 -- /bin/bash root@scql-broker2-0:/home/admin# root@scql-broker2-0:/home/admin# root@scql-broker2-0:/home/admin# pwd /home/admin root@scql-broker2-0:/home/admin#
curl --location 'http://scql-broker2.ppcp.svc.cluster.local:8011/intra/query/submit' 修改为localhost 尝试一下。注意端口映射关系
broker 容器内部可以能正常访问吗?
可以的。 [root@Test-K8s-Master1 /home/nlsa]#kubectl -n ppcp exec -it scql-broker2-0 -- /bin/bash root@scql-broker2-0:/home/admin# root@scql-broker2-0:/home/admin# root@scql-broker2-0:/home/admin# pwd /home/admin root@scql-broker2-0:/home/admin#
curl --location 'http://scql-broker2.ppcp.svc.cluster.local:8011/intra/query/submit' 修改为localhost 尝试一下。注意端口映射关系
broker容器内部通过localhost提交,试了也可以呢: root@scql-broker2-0:/home/admin# curl --location 'http://localhost:8011/intra/query/submit' --header 'Content-Type: application/json' --data '{"query":"select * from ta left join tb on ta.ID=tb.ID","projectId":"lFCgipDeumSykCpfSCwjDcxwgSviNuGz"}' {"status":{"code":0, "message":"submit query job 44b5055d-0f63-11f0-a261-1e7f307d2b61 succeed", "details":[]}, "job_id":"44b5055d-0f63-11f0-a261-1e7f307d2b61"}
broker 容器内部可以能正常访问吗?
可以的。 [root@Test-K8s-Master1 /home/nlsa]#kubectl -n ppcp exec -it scql-broker2-0 -- /bin/bash root@scql-broker2-0:/home/admin# root@scql-broker2-0:/home/admin# root@scql-broker2-0:/home/admin# pwd /home/admin root@scql-broker2-0:/home/admin#
curl --location 'http://scql-broker2.ppcp.svc.cluster.local:8011/intra/query/submit' 修改为localhost 尝试一下。注意端口映射关系
broker容器内部通过localhost提交,试了也可以呢: root@scql-broker2-0:/home/admin# curl --location 'http://localhost:8011/intra/query/submit' --header 'Content-Type: application/json' --data '{"query":"select * from ta left join tb on ta.ID=tb.ID","projectId":"lFCgipDeumSykCpfSCwjDcxwgSviNuGz"}' {"status":{"code":0, "message":"submit query job 44b5055d-0f63-11f0-a261-1e7f307d2b61 succeed", "details":[]}, "job_id":"44b5055d-0f63-11f0-a261-1e7f307d2b61"}
broker配置文件方便提供下吗?
1.部署方式是(p2p/中心化)? 2.scql的版本 3. broker以及engine日志可以提供下(文件方式)。
请问,部署形态是怎么样的,自己在 k8s 里部署的 SCQL,还是通过 kuscia 运行的 SCQL?
broker 容å¨å é¨å¯ä»¥è½æ£å¸¸è®¿é®åï¼
å¯ä»¥çã [root@Test-K8s-Master1 /home/nlsa]#kubectl -n ppcp exec -it scql-broker2-0 -- /bin/bash root@scql-broker2-0:/home/admin# root@scql-broker2-0:/home/admin# root@scql-broker2-0:/home/admin# pwd /home/admin root@scql-broker2-0:/home/admin#
curl --location 'http://scql-broker2.ppcp.svc.cluster.local:8011/intra/query/submit' ä¿®æ¹ä¸ºlocalhost å°è¯ä¸ä¸ã注æç«¯å£æ å°å ³ç³»
broker容å¨å é¨éè¿localhostæäº¤ï¼è¯äºä¹å¯ä»¥å¢ï¼ root@scql-broker2-0:/home/admin# curl --location 'http://localhost:8011/intra/query/submit' --header 'Content-Type: application/json' --data '{"query":"select * from ta left join tb on ta.ID=tb.ID","projectId":"lFCgipDeumSykCpfSCwjDcxwgSviNuGz"}' {"status":{"code":0, "message":"submit query job 44b5055d-0f63-11f0-a261-1e7f307d2b61 succeed", "details":[]}, "job_id":"44b5055d-0f63-11f0-a261-1e7f307d2b61"}
brokeré ç½®æä»¶æ¹ä¾¿æä¾ä¸åï¼
brokerçconfig.ymlæä»¶é ç½®å¦ä¸ï¼
intra_server:
protocol: http
host: 0.0.0.0
port: 8011
inter_server:
host: 0.0.0.0
port: 8021
protocol: http
cert_file: "/home/admin/configs/cert.pem"
key_file: "/home/admin/configs/key.pem"
log_level: info
party_code: 10000004
party_info_file: "/home/admin/configs/party_info.json"
private_pem_path: "/home/admin/configs/ed25519key.pem"
intra_host: scql-broker2:8011
engine:
timeout: 120s
protocol: http
content_type: application/json
uris:
- for_peer: scql-engine2:8003
for_self: scql-engine2:8003
storage:
type: mysql
conn_str: "root:iGw8F6P777@tcp(mysql2:3306)/broker?charset=utf8mb4&parseTime=True&loc=Local&interpolateParams=true"
max_idle_conns: 10
max_open_conns: 100
conn_max_idle_time: 2m
conn_max_lifetime: 5m
1.部署方式是(p2p/中心化)? 2.scql的版本 3. broker以及engine日志可以提供下(文件方式)。
- 部署方式为p2p
- scql版本为0.5.0b2
,部署形态是怎么样的,自己在 k8s 里部署的 SCQL,还是通过 kuscia 运行的 SC
将scql包装了一层镜像,然后在k8s部署的:
version: "3.7"
networks:
alise_net:
external: true
name: ${COMPOSE_PROJECT_NAME}_springboot
services:
ppcp-scql-engine:
image: hub.pptech.com/ppcp/ppcp-scql:${SCQL}
container_name: ppcp-scql-engine
restart: always
environment:
- TZ=Asia/Shanghai
ports:
- 8003:8003
networks:
alise_net:
ipv4_address: 172.20.0.22
entrypoint: /home/admin/bin/scqlengine --flagfile=/home/admin/conf/gflags.conf
volumes:
- /data/dscn/conf/scql/conf:/home/admin/conf
- /data/dscn/logs/scql:/home/admin/logs
ppcp-scql-broker:
image: hub.pptech.com/ppcp/ppcp-scql:${SCQL}
container_name: ppcp-scql-broker
restart: always
environment:
- TZ=Asia/Shanghai
ports:
- 8011:8011
- 8021:8021
networks:
alise_net:
ipv4_address: 172.20.0.23
entrypoint: /home/admin/bin/broker -config=/home/admin/configs/config.yml
volumes:
- /data/dscn/conf/scql/configs:/home/admin/configs
- /data/dscn/logs/scql:/home/admin/logs
在 broker 容器里可以正常访问,说明 SCQL 本身是正常的,请自行排查下 k8s endpoint 无法访问的原因哈
在 broker 容器里可以正常访问,说明 SCQL 本身是正常的,请自行排查下 k8s endpoint 无法访问的原因哈
broker日志看到有403报错呢:
2025-04-02 08:12:46.428 WARNING server.go:120 |GIN|status=403|method=POST|path=/intra/query/submit|ip=10.244.68.24|latency=54.734µs|
所以应该还是scql-broker内部,会对某些请求来源进行拒绝?
服务之间的环境是这样的: scql-broker服务在k8s的一个集群ppcp.svc.cluster.local下,然后应用服务tds-connector2在另一个k8s集群下。
Ps,在应用服务tds-connector2机器或容器里,直接运行: curl --location 'http://scql-broker2.ppcp.svc.cluster.local:8011/intra/query/submit' --header 'Content-Type: application/json' --data '{"query":"select * from ta left join tb on ta.ID=tb.ID","projectId":"lFCgipDeumSykCpfSCwjDcxwgSviNuGz"}'
发现是可以正常提交和返回的,不会403。所以证明了scql-broker本身与tds-connector2服务的通信是没问题的。
出现403的请求,你是在什么环境下执行的?
服务之间的环境是这样的: scql-broker服务在k8s的一个集群ppcp.svc.cluster.local下,然后应用服务tds-connector2在另一个k8s集群下。 Ps,在应用服务tds-connector2机器或容器里,直接运行: curl --location 'http://scql-broker2.ppcp.svc.cluster.local:8011/intra/query/submit' --header 'Content-Type: application/json' --data '{"query":"select * from ta left join tb on ta.ID=tb.ID","projectId":"lFCgipDeumSykCpfSCwjDcxwgSviNuGz"}' 发现是可以正常提交和返回的,不会403。所以证明了scql-broker本身与tds-connector2服务的通信是没问题的。
出现403的请求,你是在什么环境下执行的?
在应用服务tds-connector2去调用http://scql-broker2.ppcp.svc.cluster.local:8011执行。
源码这两个地方应该有一个有问题,估计是第一个AllowOrigins,我们下载了对应版本的源码,重新编译了个二进制丢到测试环境替换原来的,现在就可以了。