Sfoglia il codice sorgente

Get rid of zookeeper (#1726)

* Get rid of zookeeper

Signed-off-by: Roman Zabaluev <rzabaluev@provectus.com>

* Fix build

Signed-off-by: Roman Zabaluev <rzabaluev@provectus.com>

* Cleanup

Signed-off-by: Roman Zabaluev <rzabaluev@provectus.com>

* Review fixes

Signed-off-by: Roman Zabaluev <rzabaluev@provectus.com>

* Skip unwanted domain check for documentation flow

Signed-off-by: Roman Zabaluev <rzabaluev@provectus.com>
Roman Zabaluev 3 anni fa
parent
commit
8908d6839c

+ 1 - 1
.github/workflows/documentation.yaml

@@ -18,6 +18,6 @@ jobs:
         uses: urlstechie/urlchecker-action@0.2.31
         with:
           exclude_patterns: localhost,127.0.,192.168.
-          exclude_urls: https://api.server,https://graph.microsoft.com/User.Read
+          exclude_urls: https://api.server,https://graph.microsoft.com/User.Read,https://dev-a63ggcut.auth0.com
           print_all: false
           file_types: .md

+ 0 - 3
README.md

@@ -87,7 +87,6 @@ kafka:
     -
       name: local
       bootstrapServers: localhost:29091
-      zookeeper: localhost:2183
       schemaRegistry: http://localhost:8085
       schemaRegistryAuth:
         username: username
@@ -99,7 +98,6 @@ kafka:
 
 * `name`: cluster name
 * `bootstrapServers`: where to connect
-* `zookeeper`: zookeeper service address
 * `schemaRegistry`: schemaRegistry's address
 * `schemaRegistryAuth.username`: schemaRegistry's basic authentication username
 * `schemaRegistryAuth.password`: schemaRegistry's basic authentication password
@@ -161,7 +159,6 @@ For example, if you want to use an environment variable to set the `name` parame
 |`KAFKA_ADMIN-CLIENT-TIMEOUT` | Kafka API timeout in ms. Default: `30000`
 |`KAFKA_CLUSTERS_0_NAME` | Cluster name
 |`KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS` 	|Address where to connect 
-|`KAFKA_CLUSTERS_0_ZOOKEEPER` 	| Zookeeper service address 
 |`KAFKA_CLUSTERS_0_KSQLDBSERVER` 	| KSQL DB server address 
 |`KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL` 	|Security protocol to connect to the brokers. For SSL connection use "SSL", for plaintext connection don't set this environment variable
 |`KAFKA_CLUSTERS_0_SCHEMAREGISTRY`   	|SchemaRegistry's address

+ 0 - 1
documentation/compose/DOCKER_COMPOSE.md

@@ -10,4 +10,3 @@
 8. [kafka-ui-reverse-proxy.yaml](./kafka-ui-reverse-proxy.yaml) - An example for using the app behind a proxy (like nginx).
 9. [kafka-ui-sasl.yaml](./kafka-ui-sasl.yaml) - SASL auth for Kafka.
 10. [kafka-ui-traefik-proxy.yaml](./kafka-ui-traefik-proxy.yaml) - Traefik specific proxy configuration.
-11. [kafka-ui-zookeeper-ssl.yml](./kafka-ui-zookeeper-ssl.yml) - SSL enabled zookeeper.

+ 0 - 144
documentation/compose/kafka-ui-zookeeper-ssl.yml

@@ -1,144 +0,0 @@
----
-version: '2'
-services:
-
-  kafka-ui:
-    container_name: kafka-ui
-    image: provectuslabs/kafka-ui:latest
-    ports:
-      - 8080:8080
-    volumes:
-      - /tmp/kafka/secrets/kafka.kafka1.keystore.jks:/etc/kafka/secrets/kafka.zookeeper.keystore.jks
-      - /tmp/kafka/secrets/kafka.zookeeper.truststore.jks:/etc/kafka/secrets/kafka.zookeeper.truststore.jks
-    depends_on:
-      - zookeeper0
-      - kafka0
-      - schemaregistry0
-      - kafka-connect0
-    environment:
-      KAFKA_CLUSTERS_0_NAME: local
-      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
-      KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper0:2182
-      KAFKA_CLUSTERS_0_JMXPORT: 9997
-      KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schemaregistry0:8085
-      KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: first
-      KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: http://kafka-connect0:8083
-      KAFKA_CLUSTERS_0_ZOOKEEPER_CLIENTCNXNSOCKET: org.apache.zookeeper.ClientCnxnSocketNetty
-      KAFKA_CLUSTERS_0_ZOOKEEPER_CLIENT_SECURE: 'true'
-      KAFKA_CLUSTERS_0_ZOOKEEPER_SSL_KEYSTORE_LOCATION: /etc/kafka/secrets/kafka.zookeeper.keystore.jks
-      KAFKA_CLUSTERS_0_ZOOKEEPER_SSL_KEYSTORE_PASSWORD: 12345678
-      KAFKA_CLUSTERS_0_ZOOKEEPER_SSL_TRUSTSTORE_LOCATION: /etc/kafka/secrets/kafka.zookeeper.truststore.jks
-      KAFKA_CLUSTERS_0_ZOOKEEPER_SSL_TRUSTSTORE_PASSWORD: 12345678
-
-  zookeeper0:
-    image: confluentinc/cp-zookeeper:5.2.4
-    volumes:
-      - /tmp/kafka/secrets/kafka.kafka1.keystore.jks:/etc/kafka/secrets/kafka.zookeeper.keystore.jks
-      - /tmp/kafka/secrets/kafka.zookeeper.truststore.jks:/etc/kafka/secrets/kafka.zookeeper.truststore.jks
-    environment:
-      ZOOKEEPER_CLIENT_PORT: 2182
-      ZOOKEEPER_TICK_TIME: 2000
-
-      ZOOKEEPER_SECURE_CLIENT_PORT: 2182
-      ZOOKEEPER_SERVER_CNXN_FACTORY: org.apache.zookeeper.server.NettyServerCnxnFactory
-      ZOOKEEPER_SSL_KEYSTORE_LOCATION: /etc/kafka/secrets/kafka.zookeeper.keystore.jks
-      ZOOKEEPER_SSL_KEYSTORE_PASSWORD: 12345678
-      ZOOKEEPER_SSL_KEYSTORE_TYPE: PKCS12
-      ZOOKEEPER_SSL_TRUSTSTORE_LOCATION: /etc/kafka/secrets/kafka.zookeeper.truststore.jks
-      ZOOKEEPER_SSL_TRUSTSTORE_PASSWORD: 12345678
-      ZOOKEEPER_SSL_TRUSTSTORE_TYPE: JKS
-      # TLS 1.2 is the tested-default - TLS 1.3 has not been tested for production
-      # You can evaluate TLS 1.3 for ZooKeeper by uncommenting the following two properties
-      # and setting KAFKA_ZOOKEEPER_SSL_PROTOCOL on brokers
-      ZOOKEEPER_SSL_ENABLED_PROTOCOLS: TLSv1.3,TLSv1.2
-      ZOOKEEPER_SSL_QUORUM_ENABLED_PROTOCOLS: TLSv1.3,TLSv1.2
-      ZOOKEEPER_SSL_CIPHER_SUITES: TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
-      ZOOKEEPER_SSL_CLIENT_AUTH: need
-      ZOOKEEPER_AUTH_PROVIDER_X509: org.apache.zookeeper.server.auth.X509AuthenticationProvider
-      ZOOKEEPER_AUTH_PROVIDER_SASL: org.apache.zookeeper.server.auth.SASLAuthenticationProvider
-    ports:
-      - 2182:2182
-
-  kafka0:
-    image: confluentinc/cp-kafka:5.3.1
-    depends_on:
-      - zookeeper0
-    ports:
-      - 9092:9092
-      - 9997:9997
-    volumes:
-      - /tmp/kafka/secrets/kafka.kafka1.keystore.jks:/etc/kafka/secrets/kafka.kafka1.keystore.jks
-      - /tmp/kafka/secrets/kafka.server.truststore.jks:/etc/kafka/secrets/kafka.kafka1.truststore.jks
-    environment:
-      KAFKA_BROKER_ID: 1
-      KAFKA_ZOOKEEPER_CONNECT: zookeeper0:2182
-      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092
-      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
-      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
-      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
-      JMX_PORT: 9997
-      KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997
-      KAFKA_ZOOKEEPER_SSL_CLIENT_ENABLE: 'true'
-      KAFKA_ZOOKEEPER_SSL_CIPHER_SUITES: TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
-      KAFKA_ZOOKEEPER_CLIENT_CNXN_SOCKET: org.apache.zookeeper.ClientCnxnSocketNetty
-      KAFKA_ZOOKEEPER_SSL_KEYSTORE_LOCATION: /etc/kafka/secrets/kafka.kafka1.keystore.jks
-      KAFKA_ZOOKEEPER_SSL_KEYSTORE_PASSWORD: 12345678
-      KAFKA_ZOOKEEPER_SSL_KEYSTORE_TYPE: PKCS12
-      KAFKA_ZOOKEEPER_SSL_TRUSTSTORE_LOCATION: /etc/kafka/secrets/kafka.kafka1.truststore.jks
-      KAFKA_ZOOKEEPER_SSL_TRUSTSTORE_PASSWORD: 12345678
-      KAFKA_ZOOKEEPER_SSL_TRUSTSTORE_TYPE: JKS
-
-  schemaregistry0:
-    image: confluentinc/cp-schema-registry:5.5.0
-    ports:
-      - 8085:8085
-    depends_on:
-      - zookeeper0
-      - kafka0
-    environment:
-      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka0:29092
-      SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: zookeeper0:2182
-      SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
-      SCHEMA_REGISTRY_HOST_NAME: schemaregistry0
-      SCHEMA_REGISTRY_LISTENERS: http://schemaregistry0:8085
-
-      SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
-      SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
-      SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas
-
-  kafka-connect0:
-    image: confluentinc/cp-kafka-connect:6.0.1
-    ports:
-      - 8083:8083
-    depends_on:
-      - kafka0
-      - schemaregistry0
-    environment:
-      CONNECT_BOOTSTRAP_SERVERS: kafka0:29092
-      CONNECT_GROUP_ID: compose-connect-group
-      CONNECT_CONFIG_STORAGE_TOPIC: _connect_configs
-      CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
-      CONNECT_OFFSET_STORAGE_TOPIC: _connect_offset
-      CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
-      CONNECT_STATUS_STORAGE_TOPIC: _connect_status
-      CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
-      CONNECT_KEY_CONVERTER: org.apache.kafka.connect.storage.StringConverter
-      CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
-      CONNECT_VALUE_CONVERTER: org.apache.kafka.connect.storage.StringConverter
-      CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
-      CONNECT_INTERNAL_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
-      CONNECT_INTERNAL_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
-      CONNECT_REST_ADVERTISED_HOST_NAME: kafka-connect0
-      CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components"
-
-  kafka-init-topics:
-    image: confluentinc/cp-kafka:5.3.1
-    volumes:
-      - ./message.json:/data/message.json
-    depends_on:
-      - kafka0
-    command: "bash -c 'echo Waiting for Kafka to be ready... && \
-               cub kafka-ready -b kafka0:29092 1 30 && \
-               kafka-topics --create --topic second.users --partitions 3 --replication-factor 1 --if-not-exists --zookeeper zookeeper0:2182 && \
-               kafka-topics --create --topic first.messages --partitions 2 --replication-factor 1 --if-not-exists --zookeeper zookeeper0:2182 && \
-               kafka-console-producer --broker-list kafka0:29092 -topic second.users < /data/message.json'"

+ 0 - 11
kafka-ui-api/pom.xml

@@ -54,17 +54,6 @@
             <artifactId>commons-lang3</artifactId>
             <version>3.9</version>
         </dependency>
-        <dependency>
-            <groupId>org.apache.zookeeper</groupId>
-            <artifactId>zookeeper</artifactId>
-            <version>${zookeper.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-log4j12</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>

+ 0 - 1
kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/ClustersProperties.java

@@ -23,7 +23,6 @@ public class ClustersProperties {
   public static class Cluster {
     String name;
     String bootstrapServers;
-    String zookeeper;
     String schemaRegistry;
     SchemaRegistryAuth schemaRegistryAuth;
     String ksqldbServer;

+ 0 - 9
kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ZooKeeperException.java

@@ -1,9 +0,0 @@
-package com.provectus.kafka.ui.exception;
-
-public class ZooKeeperException extends RuntimeException {
-
-  public ZooKeeperException(Throwable cause) {
-    super(cause);
-  }
-
-}

+ 0 - 7
kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalClusterMetrics.java

@@ -17,7 +17,6 @@ public class InternalClusterMetrics {
         .brokers(List.of())
         .topics(Map.of())
         .status(ServerStatusDTO.OFFLINE)
-        .zookeeperStatus(ServerStatusDTO.OFFLINE)
         .internalBrokerMetrics(Map.of())
         .metrics(List.of())
         .version("unknown")
@@ -36,12 +35,6 @@ public class InternalClusterMetrics {
   private final int topicCount;
   private final Map<String, InternalTopic> topics;
 
-  // zk stats
-  @Deprecated //use 'zookeeperStatus' field with enum type instead
-  private final int zooKeeperStatusEnum;
-  private final ServerStatusDTO zookeeperStatus;
-  private final Throwable lastZookeeperException;
-
   // partitions stats
   private final int underReplicatedPartitionCount;
   private final int onlinePartitionCount;

+ 0 - 3
kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalClusterState.java

@@ -2,7 +2,6 @@ package com.provectus.kafka.ui.model;
 
 import com.google.common.base.Throwables;
 import com.provectus.kafka.ui.service.MetricsCache;
-import com.provectus.kafka.ui.util.ClusterUtil;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Optional;
@@ -16,7 +15,6 @@ public class InternalClusterState {
   private MetricsCollectionErrorDTO lastError;
   private Integer topicCount;
   private Integer brokerCount;
-  private Integer zooKeeperStatus;
   private Integer activeControllers;
   private Integer onlinePartitionCount;
   private Integer offlinePartitionCount;
@@ -40,7 +38,6 @@ public class InternalClusterState {
         .orElse(null);
     topicCount = metrics.getTopicDescriptions().size();
     brokerCount = metrics.getClusterDescription().getNodes().size();
-    zooKeeperStatus = ClusterUtil.convertToIntServerStatus(metrics.getZkStatus().getStatus());
     activeControllers = metrics.getClusterDescription().getController() != null ? 1 : 0;
     version = metrics.getVersion();
 

+ 0 - 1
kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/KafkaCluster.java

@@ -20,7 +20,6 @@ public class KafkaCluster {
   private final String jmxUsername;
   private final String jmxPassword;
   private final String bootstrapServers;
-  private final String zookeeper;
   private final InternalSchemaRegistry schemaRegistry;
   private final String ksqldbServer;
   private final List<KafkaConnectCluster> kafkaConnect;

+ 0 - 2
kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/MetricsCache.java

@@ -27,7 +27,6 @@ public class MetricsCache {
     Throwable lastKafkaException;
     String version;
     List<Feature> features;
-    ZookeeperService.ZkStatus zkStatus;
     ReactiveAdminClient.ClusterDescription clusterDescription;
     JmxClusterUtil.JmxMetrics jmxMetrics;
     InternalLogDirStats logDirInfo;
@@ -39,7 +38,6 @@ public class MetricsCache {
           .status(ServerStatusDTO.OFFLINE)
           .version("Unknown")
           .features(List.of())
-          .zkStatus(new ZookeeperService.ZkStatus(ServerStatusDTO.OFFLINE, null))
           .clusterDescription(
               new ReactiveAdminClient.ClusterDescription(null, null, List.of(), Set.of()))
           .jmxMetrics(JmxClusterUtil.JmxMetrics.empty())

+ 4 - 7
kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/MetricsService.java

@@ -19,7 +19,6 @@ import reactor.core.publisher.Mono;
 @Slf4j
 public class MetricsService {
 
-  private final ZookeeperService zookeeperService;
   private final JmxClusterUtil jmxClusterUtil;
   private final AdminClientService adminClientService;
   private final FeatureService featureService;
@@ -35,7 +34,6 @@ public class MetricsService {
                 Mono.zip(
                     List.of(
                         jmxClusterUtil.getBrokerMetrics(cluster, description.getNodes()),
-                        zookeeperService.getZkStatus(cluster),
                         getLogDirInfo(cluster, ac),
                         featureService.getAvailableFeatures(cluster, description.getController()),
                         loadTopicConfigs(cluster),
@@ -46,11 +44,10 @@ public class MetricsService {
                             .clusterDescription(description)
                             .version(ac.getVersion())
                             .jmxMetrics((JmxClusterUtil.JmxMetrics) results[0])
-                            .zkStatus((ZookeeperService.ZkStatus) results[1])
-                            .logDirInfo((InternalLogDirStats) results[2])
-                            .features((List<Feature>) results[3])
-                            .topicConfigs((Map<String, List<ConfigEntry>>) results[4])
-                            .topicDescriptions((Map<String, TopicDescription>) results[5])
+                            .logDirInfo((InternalLogDirStats) results[1])
+                            .features((List<Feature>) results[2])
+                            .topicConfigs((Map<String, List<ConfigEntry>>) results[3])
+                            .topicDescriptions((Map<String, TopicDescription>) results[4])
                             .build()
                 )))
         .doOnError(e ->

+ 0 - 102
kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ZookeeperService.java

@@ -1,102 +0,0 @@
-package com.provectus.kafka.ui.service;
-
-import com.provectus.kafka.ui.exception.ZooKeeperException;
-import com.provectus.kafka.ui.model.KafkaCluster;
-import com.provectus.kafka.ui.model.ServerStatusDTO;
-import java.io.IOException;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import javax.annotation.Nullable;
-import lombok.RequiredArgsConstructor;
-import lombok.Value;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.ZooKeeper;
-import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
-import reactor.core.publisher.Mono;
-
-@Service
-@RequiredArgsConstructor
-@Slf4j
-public class ZookeeperService {
-
-  private final Map<String, ZooKeeper> cachedZkClient = new ConcurrentHashMap<>();
-
-  @Value
-  public static class ZkStatus {
-    ServerStatusDTO status;
-    @Nullable
-    Throwable error;
-  }
-
-  public Mono<ZkStatus> getZkStatus(KafkaCluster kafkaCluster) {
-    return Mono.fromSupplier(() ->
-            new ZkStatus(
-                isZookeeperOnline(kafkaCluster)
-                    ? ServerStatusDTO.ONLINE
-                    : ServerStatusDTO.OFFLINE, null))
-        .onErrorResume(th -> Mono.just(new ZkStatus(ServerStatusDTO.OFFLINE, th)));
-  }
-
-  private boolean isZookeeperOnline(KafkaCluster kafkaCluster) {
-    var isConnected = false;
-    if (StringUtils.hasText(kafkaCluster.getZookeeper())) {
-      var zkClient = getOrCreateZkClient(kafkaCluster);
-      log.debug("Start getting Zookeeper metrics for kafkaCluster: {}", kafkaCluster.getName());
-      if (zkClient != null) {
-        isConnected = isZkClientConnected(zkClient);
-      }
-    }
-    return isConnected;
-  }
-
-  private boolean isZkClientConnected(ZooKeeper zkClient) {
-    try {
-      zkClient.getChildren("/brokers/ids", null);
-    } catch (KeeperException e) {
-      log.error("A zookeeper exception has occurred", e);
-      closeZkClientSession(zkClient, e);
-      return false;
-    } catch (InterruptedException e) {
-      log.error("Interrupted: ", e);
-      Thread.currentThread().interrupt();
-    }
-    return true;
-  }
-
-  private void closeZkClientSession(ZooKeeper zkClient, KeeperException e) {
-    try {
-      zkClient.close();
-    } catch (InterruptedException ex) {
-      log.error("Unable to close zkClient session: ", e);
-      Thread.currentThread().interrupt();
-    }
-  }
-
-  @Nullable
-  private ZooKeeper getOrCreateZkClient(KafkaCluster cluster) {
-    final var clusterName = cluster.getName();
-    final var client = cachedZkClient.get(clusterName);
-    if (client != null && client.getState() != ZooKeeper.States.CONNECTED) {
-      cachedZkClient.remove(clusterName);
-    }
-    try {
-      return cachedZkClient.computeIfAbsent(clusterName, n -> createClient(cluster));
-    } catch (Exception e) {
-      log.error("Error while creating zookeeper client for cluster {}", clusterName);
-      return null;
-    }
-  }
-
-  private ZooKeeper createClient(KafkaCluster cluster) {
-    try {
-      return new ZooKeeper(cluster.getZookeeper(), 60 * 1000, watchedEvent -> {
-      });
-    } catch (IOException e) {
-      log.error("Error while creating a zookeeper client for cluster [{}]",
-          cluster.getName());
-      throw new ZooKeeperException(e);
-    }
-  }
-}

+ 0 - 4
kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/ClusterUtil.java

@@ -23,10 +23,6 @@ public class ClusterUtil {
 
   private static final ZoneId UTC_ZONE_ID = ZoneId.of("UTC");
 
-  public static int convertToIntServerStatus(ServerStatusDTO serverStatus) {
-    return serverStatus.equals(ServerStatusDTO.ONLINE) ? 1 : 0;
-  }
-
   public static TopicMessageDTO mapToTopicMessage(ConsumerRecord<Bytes, Bytes> consumerRecord,
                                                   RecordSerDe recordDeserializer) {
 

+ 0 - 52
kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/ZookeeperServiceTest.java

@@ -1,52 +0,0 @@
-package com.provectus.kafka.ui.service;
-
-import com.provectus.kafka.ui.AbstractIntegrationTest;
-import com.provectus.kafka.ui.model.KafkaCluster;
-import com.provectus.kafka.ui.model.ServerStatusDTO;
-import java.util.Properties;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import reactor.test.StepVerifier;
-
-class ZookeeperServiceTest extends AbstractIntegrationTest {
-  private ZookeeperService zookeeperService;
-
-  @BeforeEach
-  void init() {
-    AdminClientServiceImpl adminClientService = new AdminClientServiceImpl();
-    adminClientService.setClientTimeout(5_000);
-    zookeeperService = new ZookeeperService();
-  }
-
-  @Test
-  void getZkStatusEmptyConfig() {
-    KafkaCluster kafkaCluster =
-        KafkaCluster.builder()
-            .name(LOCAL)
-            .bootstrapServers(kafka.getBootstrapServers())
-            .properties(new Properties())
-            .build();
-
-    ZookeeperService.ZkStatus zkStatus = new ZookeeperService.ZkStatus(ServerStatusDTO.OFFLINE, null);
-    StepVerifier.create(zookeeperService.getZkStatus(kafkaCluster))
-        .expectNext(zkStatus)
-        .verifyComplete();
-  }
-
-  @Test
-  void getZkStatusWrongConfig() {
-    KafkaCluster kafkaCluster =
-        KafkaCluster.builder()
-            .name(LOCAL)
-            .bootstrapServers(kafka.getBootstrapServers())
-            .zookeeper("localhost:1000")
-            .properties(new Properties())
-            .build();
-
-    ZookeeperService.ZkStatus zkStatus = new ZookeeperService.ZkStatus(ServerStatusDTO.OFFLINE, null);
-    StepVerifier.create(zookeeperService.getZkStatus(kafkaCluster))
-        .expectNext(zkStatus)
-        .verifyComplete();
-  }
-
-}

+ 1 - 0
kafka-ui-contract/src/main/resources/swagger/kafka-ui-api.yaml

@@ -1741,6 +1741,7 @@ components:
           type: integer
         zooKeeperStatus:
           type: integer
+          deprecated: true
         activeControllers:
           type: integer
         onlinePartitionCount:

+ 0 - 1
pom.xml

@@ -20,7 +20,6 @@
         <org.projectlombok.version>1.18.20</org.projectlombok.version>
         <org.projectlombok.e2e-checks.version>1.18.20</org.projectlombok.e2e-checks.version>
         <git.revision>latest</git.revision>
-        <zookeper.version>3.7.0</zookeper.version>
         <kafka-clients.version>2.8.0</kafka-clients.version>
         <node.version>v14.17.1</node.version>
         <dockerfile-maven-plugin.version>1.4.10</dockerfile-maven-plugin.version>