【问题标题】:How to exposing CockroachDB using Ingress on Google Cloud for external loadtesting如何使用 Google Cloud 上的 Ingress 公开 CockroachDB 以进行外部负载测试
【发布时间】:2021-03-05 16:05:47
【问题描述】:

对于我目前研究中的分布式数据库项目,我应该在 Google Cloud Kubernetes Engine 上部署一个 CockrouchDB 集群并针对它运行 YCSB 负载测试。

YCSB 客户端将在另一个 VM 上运行,以便结果与其他组的结果具有可比性。

现在我需要在端口 8080 上公开数据库控制台以及在端口 26257 上公开数据库端点。

到目前为止,我开始将 cockraochdb-public 服务更改为 kind: NodePort 并使用 Ingress 公开其端口。我当前的问题是暴露两个端口(如果可能的话,在它们的默认端口 8080 和 26257 上)并让它们从 YCSB 访问。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: cockroachdb-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: cockroachdb-global-ip
    ingress.citrix.com/insecure-service-type: “tcp”
    ingress.citrix.com/insecure-port: “6379”
  labels:
    app: cockroachdb
spec:
  backend:
    serviceName: cockroachdb-public
    servicePort: 26257
  rules:
  - http:
      paths:
      - path: /labs/*
        backend:
          serviceName: cockroachdb-public
          servicePort: 8080
      - path: /*
        backend:
          serviceName: cockroachdb-public
          servicePort: 26257

到目前为止,我只是设法将它路由到不同的路径。我不确定这是否可行,因为 YCSB 使用的 JDBC 驱动程序使用的是 TCP 而不是 http。

如何使用 Ingress for TCP 公开一项服务的两个端口?

【问题讨论】:

    标签: jdbc google-cloud-platform kubernetes-ingress cockroachdb ycsb


    【解决方案1】:

    专注于:

    如何使用 Ingress for TCP 公开一项服务的两个端口?

    通常,当引用 Ingress 资源时,它是针对 HTTP/HTTPS 流量。

    您不能像问题中提到的那样使用Ingress 公开TCP 流量。

    旁注!

    有一些选项可以使用Ingress 控制器来传递TCP/UDP 流量(nginx-ingress)。


    您可以使用LoadBalancer 类型的服务公开您的应用程序:

    apiVersion: v1
    kind: Service
    metadata:
      name: cockroach-db-cockroachdb-public
      namespace: default
    spec:
      ports:
      - name: grpc
        port: 26257
        protocol: TCP
        targetPort: grpc # (containerPort: 26257) 
      - name: http
        port: 8080
        protocol: TCP
        targetPort: http # (containerPort: 8080) 
      selector:
        selector: INSERT-SELECTOR-FROM-YOUR-APP
      type: LoadBalancer
    

    免责声明!

    以上示例取自cockroachdb Helm Chart 修改值:

    • service.public.type="LoadBalancer"

    根据上述定义,您将通过 TCP/UDP LoadBalancer 将 Pods 暴露给端口上的外部流量:808026257。您可以通过以下链接了解更多信息:


    YCSB 客户端将在另一个 VM 上运行,以便结果与其他组的结果具有可比性。

    如果此 VM 位于 GCP 基础架构中,您还可以查看 Internal TCP/UDP LoadBalancer:


    我也不确定你的 Ingress 资源的注释:

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: cockroachdb-ingress
      annotations:
        kubernetes.io/ingress.global-static-ip-name: cockroachdb-global-ip
        ingress.citrix.com/insecure-service-type: “tcp”
        ingress.citrix.com/insecure-port: “6379”
    

    GKE 中,当您创建Ingress 而不指定您正在使用的ingress.class 时:gce 控制器。 ingress.citrix.com 注释特定于 citrix 控制器,不适用于 gce 控制器。


    其他资源:

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2016-06-15
      相关资源
      最近更新 更多