scql icon indicating copy to clipboard operation
scql copied to clipboard

scql执行报错403

Open oaHeZgnoS opened this issue 1 year ago • 16 comments

提交一个sql查询任务后,scql执行报错403:

ERROR: [403 Forbidden] during [POST] to [http://scql-broker2.ppcp.svc.cluster.local:8011/intra/query/submit] [SecretFlowJobApi#submitQuery4P2p(SecretFlowJobDTO)]: []

是不是scql里,限制了某些请求来源会被拒绝呀?

oaHeZgnoS avatar Apr 01 '25 08:04 oaHeZgnoS

服务之间的环境是这样的: 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服务的通信是没问题的。

oaHeZgnoS avatar Apr 01 '25 08:04 oaHeZgnoS

broker 容器内部可以能正常访问吗?

wangzul avatar Apr 01 '25 09:04 wangzul

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#

oaHeZgnoS avatar Apr 01 '25 09:04 oaHeZgnoS

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 尝试一下。注意端口映射关系

wangzul avatar Apr 01 '25 09:04 wangzul

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"}

oaHeZgnoS avatar Apr 02 '25 01:04 oaHeZgnoS

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配置文件方便提供下吗?

wangzul avatar Apr 02 '25 02:04 wangzul

1.部署方式是(p2p/中心化)? 2.scql的版本 3. broker以及engine日志可以提供下(文件方式)。

wangzul avatar Apr 02 '25 02:04 wangzul

请问,部署形态是怎么样的,自己在 k8s 里部署的 SCQL,还是通过 kuscia 运行的 SCQL?

tongke6 avatar Apr 02 '25 03:04 tongke6

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

oaHeZgnoS avatar Apr 02 '25 03:04 oaHeZgnoS

1.部署方式是(p2p/中心化)? 2.scql的版本 3. broker以及engine日志可以提供下(文件方式)。

  1. 部署方式为p2p
  2. scql版本为0.5.0b2

oaHeZgnoS avatar Apr 02 '25 03:04 oaHeZgnoS

,部署形态是怎么样的,自己在 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

oaHeZgnoS avatar Apr 02 '25 03:04 oaHeZgnoS

在 broker 容器里可以正常访问,说明 SCQL 本身是正常的,请自行排查下 k8s endpoint 无法访问的原因哈

tongke6 avatar Apr 02 '25 03:04 tongke6

在 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内部,会对某些请求来源进行拒绝?

oaHeZgnoS avatar Apr 02 '25 08:04 oaHeZgnoS

服务之间的环境是这样的: 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的请求,你是在什么环境下执行的?

wangzul avatar Apr 02 '25 08:04 wangzul

服务之间的环境是这样的: 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执行。

oaHeZgnoS avatar Apr 02 '25 08:04 oaHeZgnoS

源码这两个地方应该有一个有问题,估计是第一个AllowOrigins,我们下载了对应版本的源码,重新编译了个二进制丢到测试环境替换原来的,现在就可以了。

Image

oaHeZgnoS avatar Apr 02 '25 10:04 oaHeZgnoS