Site is under maintenance mode. Please wait few min!
Saltar al contenido

Cómo instalar VestaCP y crear un sitio web en Ubuntu 14.04

marzo 4, 2020

 

El autor ha seleccionado el Fondo de código abierto y de recibir una donación como parte del programa de escritura de donaciones.

Introducción

Apache Kafka es un intermediario de mensajes distribuido popular diseñado para manejar grandes volúmenes de datos en tiempo real. clúster A Kafka es altamente escalable y tolerante a fallos, y también tiene un mucho mayor rendimiento en comparación con otros intermediarios de mensajes tales como ActiveMQ y RabbitMQ. A pesar de que se utiliza generalmente como un publicación / suscripción de sistema de mensajería , muchas organizaciones también lo utilizan para la agregación de registro, ya que ofrece un almacenamiento persistente para los mensajes publicados.

Una publicación / suscripción de sistema de mensajería permite que uno o más productores para publicar mensajes sin tener en cuenta el número de consumidores o cómo van a procesar los mensajes. clientes suscritos son notificados automáticamente sobre las actualizaciones y la creación de nuevos mensajes. Este sistema es más eficiente y escalable que los sistemas donde los clientes sondean periódicamente para determinar si los nuevos mensajes están disponibles.

En este tutorial, instalar y configurar Apache 2.1.1 Kafka forma segura en un servidor Debian 10, a continuación, comprobar la configuración mediante la producción y el consumo de un mensaje Hello World. A continuación, instalar opcionalmente KafkaT para monitorear Kafka y configurar un clúster de varios nodos Kafka.

Requisitos previos

Para seguir a lo largo, se necesita:

  • Una Debian 10 servidor con al menos 4 GB de RAM y un usuario no root con privilegios sudo. Siga los pasos que se especifican en nuestra guía de configuración inicial del servidor de Debian 10 si usted no tiene un usuario no root para este compromiso.
  • OpenJDK 11 instalado en el servidor. Para instalar esta versión, siga las instrucciones en Cómo instalar Java con Dependencia en Debian 10 sobre la instalación de versiones específicas de OpenJDK. Kafka está escrito en Java, por lo que requiere una JVM.

Nota: Instalaciones sin 4 GB de RAM pueden provocar que el servicio falle Kafka, con la máquina virtual de Java (JVM) lanzar una excepción de memoria insuficiente durante el arranque.

Paso 1 – Creación de un usuario de Kafka

Desde Kafka puede manejar peticiones sobre una red, es una buena práctica para crear un usuario dedicado para ello. Este daño se minimiza en su máquina Debian debe ser comprometida el servidor Kafka. Va a crear el usuario dedicada kafka en este paso.

Conectado como el usuario no root sudo, crear un usuario llamado kafka con el comando useradd:

sudo useradd kafka -m

  • sudo useradd -m kafka

Las asegura -m que se creará un directorio inicial para el usuario. Este directorio de inicio, / home / kafka, actuará como su directorio de espacio de trabajo para la ejecución de comandos más adelante.

Configuración de la contraseña usando passwd:

sudo passwd kafka

  • sudo passwd kafka

Introduzca la contraseña que desea utilizar para este usuario.

A continuación, agregue el usuario kafka al grupo sudo con el comando adduser, de modo que tenga los privilegios necesarios para instalar las dependencias de Kafka:

sudo adduser kafka sudo

  • sudo adduser kafka sudo

Su usuario kafka ya está listo . Entrar en esta cuenta usando su:

su -l kafka

  • su -l kafka

Ahora que ha creado el usuario Kafka-específica, se puede pasar a descargar y extraer los archivos binarios de Kafka.

Paso 2 – descargar y extraer el Kafka binarios

En este paso, se van a descargar y extraer los archivos binarios de Kafka en carpetas específicas en el directorio personal del usuario de su kafka .

Para empezar, cree un directorio en / home / kafka llamada Descargas para almacenar sus descargas:

mkdir ~/Downloads

  • mkdir ~ / Descargas

A continuación, instale rizo usando apt-get de modo que usted será capaz de descargar archivos remotos :

sudo apt-get update && sudo apt-get install curl

  • sudo apt-get update && sudo apt-get install rizo

Cuando se le solicite, escriba Y para confirmar la descarga rizo.

Una vez instalado rizo, lo utilizan para descargar los binarios de Kafka:

curl "https://archive.apache.org/dist/kafka/2.1.1/kafka_2.11-2.1.1.tgz" -o ~/Downloads/kafka.tgz

  • rizo «https://archive.apache.org/dist/kafka/2.1.1/kafka_2.11-2.1.1.tgz» – o ~ / Descargas / kafka.tgz

Crear un directorio llamado Kafka y el cambio a este directorio. Este será el directorio base de la instalación de Kafka:

mkdir ~/kafka && cd ~/kafka

  • mkdir ~ / kafka && cd ~ / kafka

extraer el archivo que descargó con el comando tar:

tar -xvzf ~/Downloads/kafka.tgz --strip 1

  • alquitrán -xvzf ~ / Descargas / kafka. TGZ –strip 1

Ha especificado el –strip 1 pabellón para garantizar que el contenido del archivo se extraen en ~ / kafka / sí mismo y no en otro directorio dentro de ella, como ~ / kafka / kafka_2.12-2.1 0,1 /.

Ahora que ha descargado y extraído los archivos binarios con éxito, puede pasar a la configuración de Kafka para permitir la eliminación tema.

Paso 3 – Configuración del comportamiento predeterminado del servidor de Kafka

de Kafka no nos permitirá borrar un tema , la categoría, grupo o nombre de alimentación a la que los mensajes pueden ser publicados. Para modificar esto, edite el archivo de configuración. opciones de configuración de

Kafka se especifican en server.properties. Abrir este archivo con nano o su editor favorito:

nano ~/kafka/config/server.properties

  • nano ~ / kafka / config / server.properties complemento de

Let una configuración que nos permitirá eliminar temas Kafka. Agregue la siguiente línea resaltada en la parte inferior del archivo:

...
group.initial.rebalance.delay.ms

delete.topic.enable = true

Guardar el archivo y nano salida. Ahora que ha configurado Kafka, puede crear archivos de unidades systemd para correr y permitiendo Kafka en el arranque.

Paso 4 – Creación de archivos Systemd Unidad e inicio del

Kafka servidor En esta sección, va a crear archivos de unidades systemd para el servicio de Kafka. Esto le ayudará a realizar acciones de servicio comunes, tales como iniciar, detener y reiniciar Kafka de una manera consistente con otros servicios Linux.

ZooKeeper es un servicio que Kafka utiliza para gestionar su estado del clúster y configuraciones. Se utiliza comúnmente en sistemas distribuidos como un componente integral. En este tutorial, utilizará Zookeeper para gestionar estos aspectos de Kafka. Si desea saber más sobre él, visite los documentos oficiales ZOOKEEPER.

En primer lugar, crear el archivo de la unidad de empleado del zoológico:

sudo nano /etc/systemd/system/zookeeper.service

  • sudo nano /etc/systemd/system/zookeeper.service

Escribe la siguiente definición de unidad en el archivo:

[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
User=kafka
ExecStart=/home/kafka/kafka/bin/zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.properties
ExecStop=/home/kafka/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Los [Unidad] sección especifica que ZooKeeper requiere la creación de redes y para el sistema de archivos que esté listo antes de que pueda comenzar.

El [Servicio] sección especifica que systemd debe utilizar los archivos de concha zookeeper-server-start.sh y zookeeper-server-stop.sh para iniciar y detener el servicio. También especifica que ZooKeeper debe reiniciarse automáticamente si sale de forma anormal.

A continuación, cree el archivo de servicio systemd para kafka:

sudo nano /etc/systemd/system/kafka.service

  • sudo nano /etc/systemd/system/kafka.service

Escribe la siguiente definición de unidad en el archivo:

[Unit]
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties > /home/kafka/kafka/kafka.log 2>&1'
ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Los [Unidad] sección especifica que este archivo unidad depende de zookeeper.service. Esto asegurará que el cuidador del zoológico se inicia automáticamente cuando se inicia el servicio kafka.

El [Servicio] sección especifica que systemd debe utilizar el kafka-server-start.sh y archivos de concha kafka-server-stop.sh para iniciar y detener el servicio. También especifica que Kafka se debe reiniciar automáticamente si sale de forma anormal.

Ahora que se han definido las unidades, empezar a Kafka con el siguiente comando:

sudo systemctl start kafka

  • sudo systemctl empezar kafka

Para garantizar que el servidor se ha iniciado correctamente, compruebe los registros de diario para la unidad de kafka:

sudo journalctl -u kafka

  • sudo -u journalctl kafka

verá una salida similar a la siguiente:

OutputMar 23 13:31:48 kafka systemd[1]: Started kafka.service.

ahora tiene un servidor que está a Kafka en el puerto 9092, que es el puerto por defecto para Kafka.

Ha iniciado el servicio de kafka, pero si tuviera que reiniciar el servidor, sería todavía no se iniciará automáticamente. Para habilitar kafka en el arranque del servidor, ejecute:

sudo systemctl enable kafka

  • sudo systemctl permiten kafka

Ahora que ha iniciado y habilitado los servicios, es el momento para revisar la instalación.

Paso 5 – Comprobación de la instalación

vamos a publicar y consumir un mensaje Hello World para asegurarse de que el servidor de Kafka se está comportando correctamente. La publicación de mensajes en Kafka requiere:

  • Un productor, que permite la publicación de los registros y los datos a los temas.
  • Un consumidor, que lee los mensajes y los datos de los temas.

En primer lugar, crear un tema llamado TutorialTopic escribiendo:

~/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic TutorialTopic

  • ~ / kafka / bin / kafka-topics.sh –create –zookeeper localhost: 2181 –replication factor 1 –partitions 1 –topic TutorialTopic

puede crear un productor de la línea de comandos usando la secuencia de comandos kafka-console-producer.sh. Se espera que el nombre de host, el puerto y un nombre del tema del servidor de Kafka como argumentos.

Publicar la cadena Hola, mundo al tema TutorialTopic escribiendo:

echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev
ull

  • echo «Hola, mundo» | ~ / Kafka / bin / kafka-console-producer.sh –broker lista localhost: 9092 –topic TutorialTopic > / dev / null

La bandera –broker-lista determina la lista de los intermediarios de mensajes para enviar el mensaje que, en este caso localhost: 9092. designa –topic el tema como TutorialTopic.

A continuación, puede crear un consumidor Kafka con el script kafka-console-consumer.sh. Se espera que el nombre de host y el puerto del servidor ZooKeeper y un nombre de tema como argumentos.

El siguiente comando consume mensajes de TutorialTopic. Tenga en cuenta el uso de la bandera –de-principio, lo que permite que el consumo de los mensajes que fueron publicados antes de iniciar el consumidor:

~/kafka/bin/kafka-console-consumer.sh --bootstrap-server `localhost:9092` --topic TutorialTopic --from-beginning

  • ~ / kafka / bin / kafka-console-consumer.sh –bootstrap-servidor ` localhost: 9092` –topic TutorialTopic –de-comenzando

–bootstrap-servidor proporciona una lista de ingresses en el grupo de Kafka. En este caso, se utiliza localhost: 9092.

Verá Hola, mundo en su terminal:

OutputHello, World

El guión continuará funcionando, a la espera de más mensajes para ser publicado en el tema. Siéntase libre para abrir una nueva terminal y comenzar un productor de publicar unos cuantos mensajes. Usted debe ser capaz de ver a todos en la salida del consumidor. Si desea obtener más información sobre cómo utilizar Kafka, consulte la documentación oficial de Kafka.

Cuando haya terminado la prueba, presione CTRL + C para detener la secuencia de comandos del consumidor. Ahora que ha probado la instalación, se puede pasar a la instalación de KafkaT con el fin de administrar mejor el clúster de Kafka.

Paso 6 – Instalación de KafkaT (Opcional)

KafkaT es una herramienta de Airbnb que hace que sea más fácil para usted para ver detalles sobre el clúster de Kafka y llevar a cabo determinadas tareas administrativas desde la línea de comandos. Debido a que es una gema de rubíes, tendrá que Ruby a utilizarlo. También se necesita el paquete build-essential para poder construir las otras gemas de los que depende. Instalarlos usando apt:

sudo apt install ruby ruby-dev build-essential

  • sudo apt instalar ruby ​​ruby-dev build-essential

Ahora puede instalar KafkaT usando el comando joya:

sudo CFLAGS=-Wno-error=format-overflow gem install kafkat

  • sudo CFLAGS = -Wno-error = formato de desbordamiento joya instalar kafkat

el CFLAGS = -Wno-error = advertencias de desbordamiento formato desactiva la opción de formato de desbordamiento y se requiere para la gema ZooKeeper, que es una dependencia de KafkaT.

KafkaT utiliza .kafkatcfg que el archivo de configuración para determinar la instalación y directorios de su servidor de registro Kafka. También debe tener una entrada que apunta a la instancia KafkaT ZooKeeper.

Crear un nuevo archivo llamado .kafkatcfg:

nano ~/.kafkatcfg

  • nano ~ / .kafkatcfg

Añadir las siguientes líneas para especificar la información necesaria acerca del servidor y la instancia Kafka Zookeeper:

{
"kafka_path": "~/kafka",
"log_path": "mp/kafka-logs",
"zk_path": "localhost:2181"
}

Ahora está listo para usar KafkaT. Para empezar, he aquí cómo lo usaría para ver los detalles de todas las particiones de Kafka:

kafkat partitions

  • kafkat particiones

Usted verá el siguiente resultado:

OutputTopic Partition Leader Replicas ISRs
TutorialTopic 0 0 [0] [0]
__consumer_offsets 0 0 [0] [0]
...

Esta salida muestra TutorialTopic, así como __consumer_offsets, un tema interno utilizado por Kafka para almacenar información relacionada con clientes. Puede ignorar las líneas que comienzan con __consumer_offsets.

Para obtener más información sobre KafkaT, consulte a su repositorio GitHub.

Ahora que ha instalado KafkaT, se puede configurar opcionalmente Kafka en un clúster de servidores de Debian 10 para hacer un clúster de varios nodos.

Paso 7 – Configuración de una multi-nodo de clúster (Opcional)

Si desea crear un clúster de varios corredor usando más servidores de Debian 10, repita el paso 1, paso 4 y el paso 5 en cada una de las nuevas máquinas. Además, realizar los siguientes cambios en el archivo ~ / kafka / config / server.properties para cada uno:

  • Cambiar el valor de la propiedad broker.id tal que es único en todo el clúster. Esta propiedad identifica de forma única cada servidor del clúster y puede tener cualquier cadena como su valor. Por ejemplo, «server1», «server2», etc., sería útil como identificadores.
  • Cambiar el valor de la propiedad zookeeper.connect de tal manera que todos los nodos que apunte a la misma instancia ZooKeeper. Esta propiedad especifica la dirección de la instancia ZooKeeper y sigue el : formato. Para este tutorial, se usaría your_first_server_IP: 2181, en sustitución de your_first_server_IP con la dirección IP del servidor Debian 10 ya ha configurado.

Cambiar el valor de la propiedad broker.id tal que es único en todo el clúster. Esta propiedad identifica de forma única cada servidor del clúster y puede tener cualquier cadena como su valor. Por ejemplo, «server1», «server2», etc., sería útil como identificadores.

Cambiar el valor de la propiedad zookeeper.connect de tal manera que todos los nodos que apunte a la misma instancia ZooKeeper. Esta propiedad especifica la dirección de la instancia ZooKeeper y sigue el : formato. Para este tutorial, se usaría your_first_server_IP: 2181, en sustitución de your_first_server_IP con la dirección IP del servidor Debian 10 ya ha configurado.

Si usted quiere tener varias instancias ZOOKEEPER para el clúster, el valor de la propiedad zookeeper.connect en cada nodo debe ser una cadena idénticos, separados por comas lista de las direcciones IP y números de puerto de todos los casos ZOOKEEPER.

Nota: Si usted tiene un firewall activado en el servidor Debian 10 con Zookeeper instalado, asegúrese de abrir el puerto 2181 para permitir las peticiones entrantes de los otros nodos del clúster.

Paso 8 – Restringir el usuario Kafka

Ahora que todas las instalaciones se realizan, puede eliminar los privilegios de administrador del usuario kafka. Antes de hacerlo, cierre la sesión y volver a iniciarla como cualquier otro usuario que no sea root sudo. Si todavía está ejecutando la misma sesión de shell que comenzó con este tutorial, simplemente escriba salida.

eliminar el usuario kafka del grupo sudo:

sudo deluser kafka sudo

  • sudo sudo deluser kafka

Para mejorar aún más la seguridad de su servidor Kafka, bloquear la contraseña del usuario kafka con el comando passwd. Esto garantiza que nadie puede entrar directamente en el servidor utilizando esta cuenta:

sudo passwd kafka -l

  • sudo passwd -l kafka

En este punto, sólo root o un usuario sudo puede iniciar sesión como kafka escribiendo el comando siguiente:

sudo su - kafka

  • sudo su – kafka

En el futuro, si desea desbloquearlo, el uso passwd con la opción -u:

sudo passwd kafka -u

  • sudo passwd -u kafka

ahora ha restringido el éxito de administración del usuario kafka privilegios.

Conclusión

Ahora tiene Apache Kafka funcionando de forma segura en el servidor de Debian. Puede hacer uso de ella en sus proyectos mediante la creación de productores y consumidores que utilizan Kafka Kafka clientes, que están disponibles para la mayoría de los lenguajes de programación. Para obtener más información sobre Kafka, también se puede consultar la documentación de Apache Kafka.