Gérer les configurations de cluster

Chaque cluster Kafka dans Streaming avec Apache Kafka dispose d'un fichier de configuration de cluster contenant toutes les propriétés de configuration de serveur.

Vous devez également gérer les configurations client.

Propriétés de courtier configurables

Avec Streaming avec Apache Kafka, vous pouvez personnaliser la configuration Kafka en mettant à jour des propriétés de broker spécifiques. Le service rationalise la configuration Kafka en limitant les propriétés pouvant être mises à jour. Validez le fichier de configuration du cluster par rapport aux propriétés prises en charge pour éviter tout comportement inattendu.

Si des configurations non valides ou incorrectes sont fournies, elles sont ignorées et les valeurs par défaut telles que définies par Apache Kafka sont utilisées. Cela garantit la stabilité du cluster et empêche toute mauvaise configuration d'affecter la disponibilité du service.

Pour connaître les configurations par défaut définies par OCI Streaming avec Apache Kafka, reportez-vous à Options par défaut de cluster.

Vous pouvez mettre à jour les propriétés de broker suivantes :

Propriété Exemple de valeur Objet
client.quota.callback.static.storage.soft 97 % de totalStorageBytes Définit une limite ajustable de la capacité de stockage sur disque du broker.
client.quota.callback.static.storage.hard 98 % de totalStorageBytes Définit une limite fixe de la capacité de stockage du disque du broker.
default.replication.factor 1 Définit le facteur de réplication par défaut pour les nouveaux sujets.
log.retention.hours 168 Définit la durée minimale de conservation des segments de journal.
log.segment.bytes 1 073 741 824 Définit la taille maximale d'un fichier de segment de journal unique.
log.cleanup.policy supprimer Définit la stratégie de conservation des journaux (delete ou compact).
message.max.bytes 1 048 588 Définit la taille maximale d'un message que le broker accepte.
min.insync.replicas 1 Définit le nombre minimum de répliques synchronisées requises pour qu'une écriture soit reconnue.
num.io.threads 8 Définit le nombre de threads pour les opérations d'E/S de disque.
num.replica.fetchers 1 Définit le nombre de threads utilisés pour répliquer les données d'autres brokers.
unclean.leader.election.enable faux Permet d'élire des répliques non synchronisées en tant que dirigeants.

Définir des quotas de disque de broker personnalisés

Vous pouvez définir des quotas de disque de broker personnalisés.

  1. Créez ou mettez à jour le fichier JSON de configuration de cluster avec la configuration de quota requise. Par exemple, mettez à jour le fichier kafka-config.json avec les détails suivants sur les quotas de disque :
    {
    "properties": {
     "client.quota.callback.class": "io.strimzi.kafka.quotas.StaticQuotaCallback",
     "client.quota.callback.static.storage.soft": "1000000000",
     "client.quota.callback.static.storage.hard": "2000000000",
     "client.quota.callback.static.storage.check-interval": "30"
     }
    }
  2. Indiquez le fichier de configuration créé ou mis à jour à l'étape précédente comme fichier de configuration pour le cluster. Par exemple, spécifiez --latest-config file://kafka-config.json dans la commande CLI create ou update cluster-config.
  3. Mettez à jour le cluster Kafka à l'aide de l'API ou de l'interface de ligne de commande et indiquez le nouveau fichier de configuration ou le fichier de configuration mis à jour kafka-config.json.
Remarque

Vous ne pouvez pas définir des valeurs de quota de disque supérieures aux limites par défaut.

Propriétés de courtier non configurables

La transmission en continu avec Apache Kafka définit certaines propriétés de broker comme non modifiables et si vous configurez ces propriétés, elles sont ignorées par le service. Vous devez valider le fichier de configuration par rapport aux propriétés de support pour éviter tout comportement inattendu.

Vous ne pouvez pas mettre à jour les propriétés de courtier suivantes :

  • advertised.
  • authorizer.
  • broker.
  • controller
  • cruise.control.metrics.reporter.bootstrap.
  • cruise.control.metrics.topic
  • host.name
  • inter.broker.listener.name
  • listener.
  • listeners.
  • log.dir
  • password.
  • port
  • process.roles
  • sasl.
  • security.
  • servers.node.id
  • ssl.
  • super.user

Par exemple, Streaming avec Apache Kafka ne prend pas en charge les processus d'écoute en texte brut et la configuration du paramètre "listeners": "PLAINTEXT://:9092" dans le fichier de configuration du cluster n'est donc pas prise en charge. Si vous appliquez ce paramètre pour configurer un processus d'écoute en texte brut, la configuration est ignorée en mode silencieux et le processus d'écoute en texte brut n'est pas activé et un avertissement est consigné.

Voici un exemple de configurations personnalisées non valides. Ici, tous les paramètres sont ignorés et les valeurs par défaut sont appliquées.

{
  "listeners": "PROTOCOL://:9092",                  // Ignored: Protocol not supported.
  "num.network.threads": -5,                        // Ignored: Cannot be negative.
  "num.io.threads": "eight",                        // Ignored: Should be an integer (like, 8).
  "socket.send.buffer.bytes": 0,                    // Ignored: Value is too low.
  "socket.receive.buffer.bytes": 9999999999,        // Ignored: Value is too high.
  "socket.request.max.bytes": -104857600,           // Ignored: Negative value.
  "log.retention.hours": "one hundred",             // Ignored: Should be an integer.
  "log.segment.bytes": 123.45,                      // Ignored: Should be an integer, not a decimal.
  "log.retention.check.interval.ms": "five minutes",// Ignored: Should be an integer in ms.
  "num.partitions": 0,                              // Ignored: Should be at least 1.
  "default.replication.factor": 5,                  // Ignored: May fail if fewer than 5 brokers.
  "min.insync.replicas": 10,                        // Ignored: Higher than replication factor.
  "message.max.bytes": -1000012,                    // Ignored: Negative value.
  "replica.fetch.max.bytes": "1MB",                 // Ignored: Should be an integer.
  "offsets.topic.replication.factor": "three",      // Ignored: Should be an integer.
  "transaction.state.log.replication.factor": -1,   // Ignored: Negative value.
  "transaction.state.log.min.isr": 0                // Ignored: Should be at least 1.
}