samzph opened a new issue #253:
URL: https://github.com/apache/pulsar-helm-chart/issues/253


   **Describe the bug**
   When attempting to connect via the proxy using an ingress with a custom URL, 
an error is thrown: `Resolve error: asio.netdb:1 : Host not found 
(authoritative)`, presumably due to the DNS being switched from the custom URL 
to an internal Kubernetes URL.
   
   Failure presumably at the changeover:
   `http://dev-pulsar-proxy.<redacted>.com:80` -> 
`pulsar://pulsar-broker-2.pulsar-broker.pulsar.svc.cluster.local:6650`
   
   See below for more error details w/ full stack trace.
   
   **To Reproduce**
   Install Apache Pulsar Helm Chart using these configs:
   ### values.yaml (relevant snippets)
   ```yaml
   components:
     #broker
     broker: true
     # proxy
     proxy: true
   
   broker:
       repository: apachepulsar/pulsar-all
       tag: 2.8.2
   proxy:
       repository: apachepulsar/pulsar-all
       tag: 2.8.2
   
   broker:
     ports:
       http: 80
     nodeSelector:
         Name: messaging-nodes
     configData:
       PULSAR_MEM: >
         -Xms128m -Xmx256m -XX:MaxDirectMemorySize=256m
       PULSAR_GC: >
         -XX:+UseG1GC
         -XX:MaxGCPauseMillis=10
         -Dio.netty.leakDetectionLevel=disabled
         -Dio.netty.recycler.linkCapacity=1024
         -XX:+ParallelRefProcEnabled
         -XX:+UnlockExperimentalVMOptions
         -XX:+DoEscapeAnalysis
         -XX:ParallelGCThreads=4
         -XX:ConcGCThreads=4
         -XX:G1NewSizePercent=50
         -XX:+DisableExplicitGC
         -XX:-ResizePLAB
         -XX:+ExitOnOutOfMemoryError
         -XX:+PerfDisableSharedMem
         -XX:+IgnoreUnrecognizedVMOptions
   
   proxy:
     nodeSelector:
         Name: messaging-nodes
     service:
       type: ClusterIP
     ports:
       http: 80
       pulsar: 8080
     configData:
       PULSAR_MEM: >
         -Xms64m -Xmx64m -XX:MaxDirectMemorySize=64m
       PULSAR_GC: >
         -XX:+UseG1GC
         -XX:MaxGCPauseMillis=10
         -Dio.netty.leakDetectionLevel=disabled
         -Dio.netty.recycler.linkCapacity=1024
         -XX:+ParallelRefProcEnabled
         -XX:+UnlockExperimentalVMOptions
         -XX:+DoEscapeAnalysis
         -XX:ParallelGCThreads=4
         -XX:ConcGCThreads=4
         -XX:G1NewSizePercent=50
         -XX:+DisableExplicitGC
         -XX:-ResizePLAB
         -XX:+ExitOnOutOfMemoryError
         -XX:+PerfDisableSharedMem
         -XX:+IgnoreUnrecognizedVMOptions
   ```
   
   ### pulsar-ingress.yaml
   ```yaml
   # pulsar-broker
   apiVersion: networking.k8s.io/v1beta1
   kind: Ingress
   metadata:
     name: pulsar-broker
     namespace: pulsar
     annotations:
       kubernetes.io/ingress.class: alb
       alb.ingress.kubernetes.io/scheme: internet-facing
       alb.ingress.kubernetes.io/target-type: ip
       alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
       alb.ingress.kubernetes.io/group.name: pulsar-alb
       alb.ingress.kubernetes.io/healthcheck-path: /
       alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", 
"RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": 
"HTTP_301"}}'
       alb.ingress.kubernetes.io/success-codes: 200,302,301
       alb.ingress.kubernetes.io/target-group-attributes: 
stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=3600
       alb.ingress.kubernetes.io/certificate-arn: <redacted> 
       
service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: 
enabled
       alb.ingress.kubernetes.io/ssl-policy: <redacted>
       alb.ingress.kubernetes.io/security-groups: <redacted>
   spec:
     rules:
       - host: dev-pulsar-broker.<redacted>.com
         http:
           paths:
             - path: /*
               backend:
                 serviceName: ssl-redirect
                 servicePort: use-annotation
             - path: /*
               backend:
                 serviceName: pulsar-broker
                 servicePort: 80
   ---
   # pulsar-proxy
   apiVersion: networking.k8s.io/v1beta1
   kind: Ingress
   metadata:
     name: pulsar-proxy
     namespace: pulsar
     annotations:
       kubernetes.io/ingress.class: alb
       alb.ingress.kubernetes.io/scheme: internet-facing
       alb.ingress.kubernetes.io/target-type: ip
       alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
       alb.ingress.kubernetes.io/group.name: pulsar-alb
       alb.ingress.kubernetes.io/healthcheck-path: /metrics
       alb.ingress.kubernetes.io/success-codes: 200,302,301
       alb.ingress.kubernetes.io/target-group-attributes: 
stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=3600
       alb.ingress.kubernetes.io/certificate-arn: <redacted>
       
service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: 
enabled
       alb.ingress.kubernetes.io/ssl-policy: <redacted>
       alb.ingress.kubernetes.io/security-groups: <redacted>
   spec:
     rules:
       - host: dev-pulsar-proxy.<redacted>.com
         http:
           paths:
             - path: /*
               backend:
                 serviceName: pulsar-proxy
                 servicePort: 80
   ---
   ```
   
   **Test the Proxy**
   note: Tenants, Namespaces, Topics and Subscriptions replaced with <xxxxxx> 
for universality. 
   ```python
   In [1]: import pulsar
   
   In [2]: client = pulsar.Client('http://dev-pulsar-proxy.<redacted>.com:80')
   
   In [3]: consumer = client.subscribe('<Tenant>/<Namespace>/<Topic>', 
'<Subscription>')
      ...: while True:
      ...:     msg = consumer.receive()
      ...:     print(msg.data())
      ...:     consumer.acknowledge(msg)
      ...:
      ...: client.close()
   2022-03-25 15:21:40.839 INFO  [0x105274580] Client:88 | Subscribing on Topic 
:<Tenant>/<Namespace>/<Topic>
   2022-03-25 15:21:40.840 INFO  [0x16bf53000] HTTPLookupService:235 | Curl 
Lookup Request sent for 
http://dev-pulsar-proxy.<redacted>.com:80/admin/v2/persistent/<Tenant>/<Namespace>/<Topic>/partitions?checkAllowAutoCreation=true
   2022-03-25 15:21:41.184 INFO  [0x16bf53000] HTTPLookupService:249 | Response 
received for url 
http://dev-pulsar-proxy.<redacted>.com:80/admin/v2/persistent/<Tenant>/<Namespace>/<Topic>/partitions?checkAllowAutoCreation=true
 code 200
   2022-03-25 15:21:41.184 INFO  [0x16bf53000] HTTPLookupService:293 | 
parsePartitionData = { LookupDataResult [brokerUrl_ = ] [brokerUrlTls_ = ] 
[partitions = 0] [authoritative = 0] [redirect = 0] proxyThroughServiceUrl = 0] 
}
   2022-03-25 15:21:41.188 INFO  [0x16bf53000] HandlerBase:64 | 
[persistent://<Tenant>/<Namespace>/<Topic>, <Subscription>, 0] Getting 
connection from pool
   2022-03-25 15:21:41.188 INFO  [0x16bf53000] HTTPLookupService:235 | Curl 
Lookup Request sent for 
http://dev-pulsar-proxy.<redacted>.com:80/lookup/v2/topic/persistent/<Tenant>/<Namespace>/<Topic>
   2022-03-25 15:21:41.418 INFO  [0x16bf53000] HTTPLookupService:249 | Response 
received for url 
http://dev-pulsar-proxy.<redacted>.com:80/lookup/v2/topic/persistent/<Tenant>/<Namespace>/<Topic>
 code 200
   2022-03-25 15:21:41.419 INFO  [0x16bf53000] HTTPLookupService:328 | 
parseLookupData = { LookupDataResult [brokerUrl_ = 
pulsar://pulsar-broker-2.pulsar-broker.pulsar.svc.cluster.local:6650] 
[brokerUrlTls_ = ] [partitions = 0] [authoritative = 0] [redirect = 0] 
proxyThroughServiceUrl = 0] }
   2022-03-25 15:21:41.419 INFO  [0x16bf53000] ClientConnection:181 | [<none> 
-> pulsar://pulsar-broker-2.pulsar-broker.pulsar.svc.cluster.local:6650] Create 
ClientConnection, timeout=10000
   2022-03-25 15:21:41.419 INFO  [0x16bf53000] ConnectionPool:96 | Created 
connection for 
pulsar://pulsar-broker-2.pulsar-broker.pulsar.svc.cluster.local:6650
   2022-03-25 15:21:46.424 ERROR [0x16c0f7000] ClientConnection:530 | [<none> 
-> pulsar://pulsar-broker-2.pulsar-broker.pulsar.svc.cluster.local:6650] 
Resolve error: asio.netdb:1 : Host not found (authoritative)
   2022-03-25 15:21:46.425 INFO  [0x16c0f7000] ClientConnection:1535 | [<none> 
-> pulsar://pulsar-broker-2.pulsar-broker.pulsar.svc.cluster.local:6650] 
Connection closed
   2022-03-25 15:21:46.425 INFO  [0x16c0f7000] ClientConnection:255 | [<none> 
-> pulsar://pulsar-broker-2.pulsar-broker.pulsar.svc.cluster.local:6650] 
Destroyed connection
   ```
   
   **Expected behavior**
   A connection is made through the pulsar proxy on port 80 or 443 using 
HTTP/HTTPS that gets converted into usable Pulsar commands.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to