1 votes

L'arrêt propre d'Apache Kafka 0.8.1.1 ne fonctionne pas

J'en ai un :

  • une seule instance d'Apache Kafka (2.9.2-0.8.1.1) installée à partir de la source, en utilisant la configuration par défaut ( server.properties etc.),
  • Zookeeper (3.4.5+dfsg-2) stand-alone, installé depuis le package

fonctionnant sur un hôte Ubuntu 14.04 LTS avec un nom hostname1 .

J'essaie d'arrêter Kafka proprement mais je n'y arrive pas.

J'ai essayé 2 méthodes :

  • envoi de SIGINT - mais Kafka l'ignore tout simplement (il ne mentionne pas la réception du signal dans un quelconque journal, il continue à fonctionner) [SIGTERM fonctionne mais ce n'est pas le sujet].

  • en utilisant Outil d'arrêt contrôlé - mais il échoue avec ce qui suit..

..stacktrace :

[2015-02-03 12:55:49,461] ERROR Operation failed due to controller failure (kafka.admin.ShutdownBroker$)
java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: hostname1; nested exception is:
        java.net.ConnectException: Connection refused]
        at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:369)
        at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:268)
        at kafka.admin.ShutdownBroker$.kafka$admin$ShutdownBroker$$invokeShutdown(ShutdownBroker.scala:56)
        at kafka.admin.ShutdownBroker$.main(ShutdownBroker.scala:109)
        at kafka.admin.ShutdownBroker.main(ShutdownBroker.scala)
Caused by: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: hostname1; nested exception is:
        java.net.ConnectException: Connection refused]
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:118)
        at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:203)
        at javax.naming.InitialContext.lookup(InitialContext.java:411)
        at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1929)
        at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1896)
        at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:286)
        ... 4 more
Caused by: java.rmi.ConnectException: Connection refused to host: hostname1; nested exception is:
        java.net.ConnectException: Connection refused
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
        at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
        at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
        at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:341)
        at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:114)
        ... 9 more
Caused by: java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:579)
        at java.net.Socket.connect(Socket.java:528)
        at java.net.Socket.<init>(Socket.java:425)
        at java.net.Socket.<init>(Socket.java:208)
        at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
        at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:147)
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
        ... 14 more

2voto

i2gh0st Points 141

Pour 0.8.1.1 cet outil :

  • ne fonctionne pas en l'état,
  • n'est plus nécessaire.

Citation de "L'outil d'arrêt contrôlé ne semble pas fonctionner tel quel" problème Kafka JIRA :

Avons-nous encore besoin de cet outil ? Actuellement, l'arrêt contrôlé est activée par une configuration et se déclenche automatiquement lors d'un kill -15 d'un serveur Kafka. Je pense presque que nous pouvons nous débarrasser d'un outil pour faire l'arrêt contrôlé.

Voici ce que j'ai fini par mettre dans mon config/server.properties :

controlled.shutdown.enable=true
controlled.shutdown.max.retries=3
controlled.shutdown.retry.backoff.ms=5000

0voto

Greg Dubicki Points 1111

La première chose est que j'ai utilisé le mauvais signal. J'aurais dû utiliser SIGTERM (15) au lieu de SIGINT (2).

Deuxièmement, comme @MaasSql l'a souligné, vous devez activer explicitement l'arrêt contrôlé dans Kafka 0.8.1.1. .

(Pour les versions 0.8.2+, vous n'avez pas besoin de faire cela -) il est activé par défaut .)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X