[Развертывание со стилем] [Промежуточное программное обеспечение для сообщений] Автономные/кластерные статьи Kafka

Kafka
[Развертывание со стилем] [Промежуточное программное обеспечение для сообщений] Автономные/кластерные статьи Kafka
автор Дата Погода
Юань Гонгзи 2019-12-19 (четверг) облачно, небольшой дождь

Чем меньше ты знаешь, тем меньше ты не знаешь

Если у вас нет лайков друзей, вы не можете улучшать и сражаться с монстрами

1. Сплетни

Говорят, что я тянул ее несколько дней на этой неделе и не доделал, но узнал, что вчера вечером вышла новая версия. . .

Kafka Она — бренд кофе, а. . неправильный.Первоначально разработанная LinkedIn, это распределенная платформа для обмена сообщениями и потоковой передачи. (Это также должно быть зарегистрировано в очереди задержки для чтения исходного кода...)

Кроме того, по сравнению с RocketMQ, ее развертывание относительно простое, здесь меньше понимания, кто в доме хозяин, нужно заботиться только о том, где запустить несколько нод, а за остальные мы проголосуем внутренне.

Лоб. . . Кстати, для его использования Кафке также нужна девушка-мужчина, его зовут ZooKeeper. Официальный пакет поставляется с ZooKeeper, вы можете выбрать пакет или установить его самостоятельно.

2. Загрузите установочный пакет

Официальный адрес:kafka.apache.org/downloads

Загрузите последнюю версию программного обеспечения: kafka_2.13-2.4.0.tgz (используйте более позднюю версию Scala)

3. Проверка/подготовка системной среды

  • Среда Java jdk1.8 или выше
  • Пример использования операционной системы Centos7
  • Промежуточное ПО ZooKeeper

В-четвертых, установите Zookeeper

Если приглашенный сотрудник выбирает официальный пакет, см.официальная документация, второй шаг описывается следующим образом:

bin/zookeeper-server-start.sh config/zookeeper.properties

Если вы очень индивидуальны и хотите заказать самостоятельно, пожалуйста, обратитесь кРазвертывание Zookeeperэто меню.

И если вы полны, пожалуйста, не обращайте внимания на ерунду выше. . .

5. Одиночная машина

В этой главе в основном описывается развертывание Kafka на одном компьютере и одном узле.

1. Создайте эксклюзивного пользователя (вы можете пропустить этот шаг и использовать пользователя root напрямую или, если хотите)

Справочная статья по созданию пользователей Linux

2. Выберите каталог установки (поместите инструментальное программное обеспечение в папку /soft или как хотите)

распаковать

[root@hadoop-master /soft]# tar -xvzf kafka_2.13-2.4.0.tgz
[root@hadoop-master /soft]# chown -R hadoop:hadoop kafka_2.13-2.4.0

Создавайте программные ссылки для облегчения последующих обновлений программного обеспечения или переключения между несколькими версиями.

[root@hadoop-master /soft]# ln -s kafka_2.13-2.4.0 kafka

3. Установите переменные среды

Добавьте следующее в конец файла

[root@hadoop-master /soft]# vi /etc/profile
export KAFKA_HOME=/soft/kafka
export PATH=$PATH:$KAFKA_HOME/bin
执行保存: Esc :wq
[root@hadoop-master /soft]# source /etc/profile

4. Изменить конфигурацию - начальный этап

  1. Файл конфигурации config/server.properties. Найдите в файле следующее содержимое, просмотрите и измените его.
# 高能提醒使用hadoop用户
[root@hadoop-master /soft]# su - hadoop
[hadoop@hadoop-master ~]$ mkdir -p ~/kafka/config
[hadoop@hadoop-master ~]$ cp /soft/kafka/config/server.properties ~/kafka/config/server.properties
[hadoop@hadoop-master ~]$ vi ~/kafka/config/server.properties
# broker的唯一标识,自然数
broker.id=0
# 监听信息,默认端口9092。PLAINTEXT://本机IP地址或域名:9092
listeners=PLAINTEXT://hadoop-master:9092
# 消息日志路径
log.dirs=/home/hadoop/kafka/data
# zookeeper连接信息。多个zookeeper用英文逗号分隔,可以用hostname或者ip地址+端口号方式填写。
zookeeper.connect=hadoop-master:2181,hadoop-master2:2181,hadoop-dn1:2181
# 是否自动创建topic,默认为true
# auto.create.topics.enable=false
执行保存: Esc :wq
  1. параметры JVM

    В bin/kafka-server-start.sh по умолчанию установлено значение 1G, которое можно настроить по мере необходимости.

[hadoop@hadoop-master ~]$ cp /soft/kafka/bin/kafka-server-start.sh /soft/kafka/bin/kafka-server-start.sh.bak
[hadoop@hadoop-master ~]$ vi /soft/kafka/bin/kafka-server-start.sh
# 找到此行修改:export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
export KAFKA_HEAP_OPTS="-Xmx256m -Xms256m"
执行保存: Esc :wq
  1. путь журнала

    В bin/kafka-run-class.sh определите переменную среды LOG_DIR.

[hadoop@hadoop-master ~]$ cp /soft/kafka/bin/kafka-run-class.sh /soft/kafka/bin/kafka-run-class.sh.bak
[hadoop@hadoop-master ~]$ vi /soft/kafka/bin/kafka-run-class.sh
# 参考行limitations under the License.
# 下面增加变量,后面可以在自启动服务中定义环境变量来替换。
LOG_DIR="/home/hadoop/kafka/logs"
执行保存: Esc :wq

5. Запустите тест

Используйте пользователя Hadoop. Поскольку команда добавлена ​​в переменную окружения, ее можно выполнять в любом каталоге.

[hadoop@hadoop-master /soft/kafka]$ kafka-server-start.sh /home/hadoop/kafka/config/server.properties
# 后台启动:kafka-server-start.sh -daemon /home/hadoop/kafka/config/server.properties

[hadoop@hadoop-master /soft/kafka]$ jps
58301 Kafka

Другие связанные команды:

Остановить службу: kafka-server-stop.sh

6. Кластер

Кластер Kafka, в основном, обратите внимание на два аспекта. Один — это файл конфигурации (server.properties) для каждого узла, а другой — путь, по которому хранятся файлы журналов. Но если вы не заботитесь о логах, этот аспект можно игнорировать. На этот раз мы все же увеличиваем сложность и разворачиваем 3 сервисных узла на одной машине. Давай, Сан Нянь. . .

Почему вы всегда получаете одну единицу, когда вы тренируетесь, слишком хлопотно иметь несколько единиц. Во-вторых, потому что такая информация все еще относительно редка в Интернете. Если вам нужно более одного приглашенного офицера, после прочтения этой статьи вы можете применить свою изобретательность и получить его самостоятельно. Тогда это не имеет ко мне никакого отношения, разве ты не изумительна~

  1. Добавьте три новых файла server.properties и поместите их в папку кластера следующим образом:
# 高能提醒使用hadoop用户
[hadoop@hadoop-master /soft/kafka]$ mkdir -p ~/kafka/cluster
[hadoop@hadoop-master /soft/kafka]$ cp /soft/kafka/config/server.properties ~/kafka/cluster/server-1.properties
[hadoop@hadoop-master /soft/kafka]$ cp /soft/kafka/config/server.properties ~/kafka/cluster/server-2.properties
[hadoop@hadoop-master /soft/kafka]$ cp /soft/kafka/config/server.properties ~/kafka/cluster/server-3.properties
  1. Отредактируйте три файла конфигурации, в основном измените содержимое broker.id, listeners, log.dirs.

    server-1.properties

[hadoop@hadoop-master /soft/kafka]$ vi ~/kafka/cluster/server-1.properties
broker.id=1
listeners=PLAINTEXT://hadoop-master:9093
log.dirs=/home/hadoop/kafka/cluster/server-1/data
zookeeper.connect=hadoop-master:2181,hadoop-master2:2181,hadoop-dn1:2181
执行保存: Esc :wq

сервер-2.properties

[hadoop@hadoop-master /soft/kafka]$ vi ~/kafka/cluster/server-2.properties
broker.id=2
listeners=PLAINTEXT://hadoop-master:9094
log.dirs=/home/hadoop/kafka/cluster/server-2/data
zookeeper.connect=hadoop-master:2181,hadoop-master2:2181,hadoop-dn1:2181
执行保存: Esc :wq

сервер-3.свойства

[hadoop@hadoop-master /soft/kafka]$ vi ~/kafka/cluster/server-3.properties
broker.id=3
listeners=PLAINTEXT://hadoop-master:9095
log.dirs=/home/hadoop/kafka/cluster/server-3/data
zookeeper.connect=hadoop-master:2181,hadoop-master2:2181,hadoop-dn1:2181
执行保存: Esc :wq
  1. Добавлен скрипт kafka-server-stop-single.sh для поддержки остановки одной службы. Ключ в том, чтобы заменить grep java на $1.properties
[hadoop@hadoop-master /soft/kafka]$ cp /soft/kafka/bin/kafka-server-stop.sh ~/kafka/kafka-server-stop-single.sh
[hadoop@hadoop-master /soft/kafka]$ vi ~/kafka/kafka-server-stop-single.sh
# 覆盖原命令
PIDS=$(ps ax | grep -i 'kafka\.Kafka' | grep $1.properties | grep -v grep | awk '{print $1}')
执行保存: Esc :wq
  1. Добавьте три новые службы запуска, в основном обратите внимание на переменные среды журнала и соответствующий файл server.properties.

​ кафка-1.сервис

# 高能提醒使用root用户
[root@hadoop-master /soft/kafka]# vi /etc/systemd/system/kafka-1.service
[Unit]
Description=kafka  
After=syslog.target network.target

[Service]
Type=forking
User=hadoop
Group=hadoop

Environment=JAVA_HOME=/soft/jdk
Environment=LOG_DIR=/home/hadoop/kafka/cluster/server-1/logs
ExecStart=/soft/kafka/bin/kafka-server-start.sh -daemon /home/hadoop/kafka/cluster/server-1.properties
ExecStop=/home/hadoop/kafka/kafka-server-stop-single.sh server-1

[Install]
WantedBy=multi-user.target
执行保存: Esc :wq
[root@hadoop-master /soft/kafka]# chmod 755 /etc/systemd/system/kafka-1.service
[root@hadoop-master /soft/kafka]# systemctl enable kafka-1
kafka-2.service
# 只摘取不一样的配置
Environment=JAVA_HOME=/soft/jdk
Environment=LOG_DIR=/home/hadoop/kafka/cluster/server-2/logs
ExecStart=/soft/kafka/bin/kafka-server-start.sh -daemon /home/hadoop/kafka/cluster/server-2.properties
ExecStop=/home/hadoop/kafka/kafka-server-stop-single.sh server-2
执行保存: Esc :wq
[root@hadoop-master /soft/kafka]# chmod 755 /etc/systemd/system/kafka-2.service
[root@hadoop-master /soft/kafka]# systemctl enable kafka-2
kafka-3.service
Environment=JAVA_HOME=/soft/jdk
Environment=LOG_DIR=/home/hadoop/kafka/cluster/server-3/logs
ExecStart=/soft/kafka/bin/kafka-server-start.sh -daemon /home/hadoop/kafka/cluster/server-3.properties
ExecStop=/home/hadoop/kafka/kafka-server-stop-single.sh server-3
执行保存: Esc :wq
[root@hadoop-master /soft/kafka]# chmod 755 /etc/systemd/system/kafka-3.service
[root@hadoop-master /soft/kafka]# systemctl enable kafka-3
  1. Попробуйте запустить и остановить эти три службы. Если вы не хотите играть, попробуйте снова отключить сервис.
  2. спать. . .

Семь, служба самозапуска

использовать пользователя root

[root@hadoop-master /soft/kafka]# vi /etc/systemd/system/kafka.service
# 或者 vi /lib/systemd/system/kafka.service
# 文件开始
[Unit]
Description=kafka  
After=syslog.target network.target

[Service]
Type=forking
User=hadoop
Group=hadoop
# 增加环境变量,或者在bin/kafka-run-class.sh中添加。不加的话,实验证明会报错
Environment=JAVA_HOME=/soft/jdk
Environment=LOG_DIR=/home/hadoop/kafka/logs
ExecStart=/soft/kafka/bin/kafka-server-start.sh -daemon /home/hadoop/kafka/config/server.properties
ExecStop=/soft/kafka/bin/kafka-server-stop.sh
# 此项会导致停止进程后,又自动启动服务,很霸道
#Restart=on-failure

[Install]
WantedBy=multi-user.target
执行保存: Esc :wq
[root@hadoop-master /soft/kafka]# chmod 755 /etc/systemd/system/kafka.service
[root@hadoop-master /soft/kafka]# systemctl enable kafka
[root@hadoop-master /soft/kafka]# service kafka start

Другие связанные команды:

  • Остановка: сервис кафка стоп
  • Посмотреть статус службы: статус службы kafka
  • После изменения содержимого конфигурации службы вступает в силу перезагрузка: systemctl daemon-reload
  • Отключить службу загрузки (удалять ли служебный файл после запрета, вы свободны): systemctl отключить kafka
  • Проверяем запущена ли служба: systemctl is-enabled kafka
  • Просмотрите список запущенных служб: systemctl list-unit-files --type=service | grep включен

Восемь, яма шанса встретиться

1. Процесс Кафки нельзя остановить

​ Я не сталкивался с этой проблемой во время развертывания, вот решение воротил онлайн, на случай, если кто-то из партнеров столкнется с этим.

Отредактируйте скрипт bin/kafka-server-stop.sh, решение: найдите идентификатор процесса Kafka из jps

# 参考行PIDS=$(ps ax | grep -i 'kafka\.Kafka' | grep java | grep -v grep | awk '{print $1}')
# 注释掉参考行,并增加以下内容代替,'kafka.Kafka'过滤字符可根据实际情况进行调整
PIDS=$(jps -lm | grep -i 'kafka.Kafka' | awk '{print $1}')
# 或者下面的命令
#PIDS=$(ps ax | grep -i 'Kafka' | grep java | grep -v grep | awk '{print $1}') 
执行保存: Esc :wq

приложение: