mybpm!
Скачать в формате: PDF pdf DOCX word

4) Установка эластика по топологии Elastic3-F2

В этом руководстве кластер Elastic Search будет развёртываться на серверах: master1 master2 master3 - в вашем случае это могут быть другие сервера.

Кластер будет разворачиваться мимо kubernetes - как отдельные сервисы, управляемые подсистемой systemd.

4.1) Предварительные требование

Необходимо иметь три сервера, на которые будем устанавливать кластер эластика.

Необходимо иметь ssh-доступ к этим серверам. В нашем случае доступ к серверам будет осуществляться с помощью команд:

ssh master1
ssh master2
ssh master3

Также в дальнейшем используется, что эти сервера имеют следующие IP-адреса:

master1 - 192.168.17.131
master2 - 192.168.17.132 
master3 - 192.168.17.133

4.2) Установка OpenJDK

Zookeeper написан на языке программирования Java и поэтому он нуждается в JVM-е, и её нужно установить. Для этого запустите команды:

ssh master1 sudo apt install -y openjdk-17-jre
ssh master2 sudo apt install -y openjdk-17-jre
ssh master3 sudo apt install -y openjdk-17-jre

4.3) Скачивание и проверка дистрибутивов

Также зайдите на своём компьютере в директорию dist

cd dist

Если её нет, то создайте. И скачайте последнюю версию программы со страницы:

https://www.elastic.co/downloads/elasticsearch

Для Linux x86_64

Например, такими командами:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.6.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.6.2-linux-x86_64.tar.gz.sha512

Проверяем скаченный дистрибутив на отсутствие ошибок скачивания:

sha512sum -c elasticsearch-8.6.2-linux-x86_64.tar.gz.sha512

4.4) Копирование дистрибутивов на сервера

Предполагается, что на серверах уже есть директория dist в домашней директории пользователя. Если нет, то создайте:

ssh master1 mkdir dist
ssh master2 mkdir dist
ssh master3 mkdir dist

Дальше нужно скопировать скаченный архив на сервера, где он будет устанавливаться:

scp elasticsearch-8.6.2-linux-x86_64.tar.gz master1:dist/
scp elasticsearch-8.6.2-linux-x86_64.tar.gz master2:dist/
scp elasticsearch-8.6.2-linux-x86_64.tar.gz master3:dist/

Теперь его нужно установить. Далее будет описано как установить его на один сервер. Вам нужно будут это сделать для всех серверов, кластера Elastic Search.

4.5) Установка на один сервер

Заходим на сервер и в папку dist:

ssh master1
cd dist

Все программы в системах Unix, которые устанавливаются вручную, устанавливаются в директорию /opt. (Ubuntu является Linux-ом, а Linux является Unix-ом)

Убедитесь, что она существует. Если нет, то создайте её.

sudo mkdir -p /opt/

Вы находитесь в директории ~/dist. Распакуйте дистрибутив:

tar xvf elasticsearch-8.6.2-linux-x86_64.tar.gz

Появиться директория:

elasticsearch-8.6.2

Перенесите её в opt:

sudo mv ./elasticsearch-8.6.2 /opt/

Далее перейдём в папку /opt

cd /opt

Создаём пользователя, из под которого будет работать сервер:

sudo useradd elastic

Поменяйте владельца файлов на root и поправьте некоторые права:

sudo chown -Rv root:elastic ./elasticsearch-8.6.2
sudo chmod g+w ./elasticsearch-8.6.2/config

Делаем символическую ссылку (чтобы в последствии было проще обновлять версию)

sudo ln -s elasticsearch-8.6.2 elastic

Теперь переходим в папку kafka

cd /opt/elastic/

Создаём директорию, где будут храниться данные и логи:

sudo mkdir -p /data/elastic/data
sudo mkdir -p /data/elastic/logs

У вас эта директория может оказаться где-то в другом месте. Если так, то в дальнейшем не забудьте менять эту директорию на нужную вам.

Передадим их в собственность пользователя kafka:

sudo chown -Rv elastic: /data/elastic

Перенаправим логи:

sudo rmdir logs
sudo ln -s /data/elastic/logs logs

Теперь нужно настроить конфиг Elastic Search:

sudo mcedit -b config/elasticsearch.yml

И меняем его текст на следующий:

cluster.name: mybpm-cluster
node.name: node-1
path.data: /data/elastic/data
path.logs: /data/elastic/logs
bootstrap.memory_lock: true
network.host: 192.168.17.131
http.port: 9200
discovery.seed_hosts: ["192.168.17.131", "192.168.17.132", "192.168.17.133"]
cluster.initial_master_nodes: ["node-1", "node-2"]
readiness.port: 9399
xpack.security.enabled: false
#action.destructive_requires_name: false

Нужно поменять node-1 по таблице:

Сервер Значение параметра
master1 node-1
master2 node-2
master3 node-3

Также в параметре network.host: 192.168.17.131 настроить IP-адрес текущего сервера

Ещё нужно настроить память для Java, для этого редактируем файл:

sudo mcedit -b config/jvm.options

В открывшемся файле находим строки, где задаётся -Xms и -Xmx и устанавливаем там нужное значение например:

-Xms4g
-Xmx4g

Проследите, чтобы перед ними не было знака решётка (#) - если он есть, удалите.

Нужно для пользователя elastic прописать разрешения - откройте файл:

sudo mcedit -b /etc/security/limits.d/elastic.conf

И вставьте туда текст:

elastic soft memlock unlimited
elastic hard memlock unlimited

Теперь временно расширьте параметр:

echo 262144 | sudo tee /proc/sys/vm/max_map_count

И зафиксируем его - откройте файл:

sudo mcedit -b /etc/sysctl.d/20-elastic.conf

И внесите в него текст:

vm.max_map_count = 262144

Активируем настройку:

sudo sysctl -p

Сделаем пробный запуск сервера Elastic Search выполнив команду:

sudo -u elastic bin/elasticsearch

Далее посыпятся логи - логи должны остановиться и сервер остаться запущенным. Если так, то всё ок. Иначе нужно исправлять ошибки

Ctrl+C и сервер остановиться.

4.6) Настройка systemd

Теперь нужно настроить сервис в операционной системе. Для этого создайте файл:

sudo mcedit -b /etc/systemd/system/elastic.service

И вставьте в него текст:

[Unit]
Description=Elastic Search
Requires=network.target
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
User=elastic
Group=elastic
LimitMEMLOCK=infinity
StandardOutput=syslog
StandardError=syslog
WorkingDirectory=/opt/elastic
ExecStart=/opt/elastic/bin/elasticsearch
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s -TERM $MAINPID
TimeoutStopSec=30
# When a JVM receives a SIGTERM signal it exits with code 143
SuccessExitStatus=143 0
Type=simple
Restart=on-failure
RestartSec=10
PIDFile=/data/elastic/elastic.pid

MemoryHigh=4000M
MemoryMax=4000M

[Install]
WantedBy=multi-user.target

После этого запустите:

sudo systemctl daemon-reload

И активируйте новый сервис:

sudo systemctl enable elastic

Ну а теперь запустите сам сервер как сервис в операционной системе:

sudo systemctl start elastic

Посмотреть статус сервиса можно командой:

sudo systemctl status elastic

Должно вылететь что-то типа:

● elastic.service - Elastic Search
 Loaded: loaded (/etc/systemd/system/elastic.service; enabled; vendor preset: enabled)
 Active: active (running) since Thu 2023-03-16 07:43:01 UTC; 7min ago
Main PID: 399189 (java)
Tasks: 73 (limit: 9402)
Memory: 2.5G (high: 3.9G max: 3.9G available: 1.3G)
CPU: 34.047s
CGroup: /system.slice/elastic.service
├─399189 /opt/elastic/jdk/bin/java -Xms4m -Xmx64m -XX:+UseSerialGC -Dcli.name=server 
  -Dcli.script=/opt/elastic/bin/elasticsearch -Dcli.libs=lib/tools/server-cli 
  -Des.path.home=/opt/elastic -Des.path.conf=/opt/elastic/config -Des.distribution.type=tar 
  -cp "/opt/elastic/lib/*:/opt/elastic/lib/cli-launcher/*" org.elasticsearch.launcher.CliToolLauncher
├─399254 /opt/elasticsearch-8.6.2/jdk/bin/java -Des.networkaddress.cache.ttl=60 
  -Des.networkaddress.cache.negative.ttl=10 -Djava.security.manager=allow -XX:+AlwaysPreTouch 
  -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow 
  -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 
  -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Dlog4j2.formatMsgNoLookups=true 
  -Djava.locale.providers=SPI,COMPAT --add-opens=java.base/java.io=ALL-UNNAMED -Xms2g -Xmx2g -XX:+UseG1GC 
  -Djava.io.tmpdir=/tmp/elasticsearch-1937012648588012979 -XX:+HeapDumpOnOutOfMemoryError 
  -XX:+ExitOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log 
  "-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m" 
  -XX:MaxDirectMemorySize=1073741824 -XX:G1HeapRegionSize=4m -XX:InitiatingHeapOccupancyPercent=30 
  -XX:G1ReservePercent=15 -Des.distribution.type=tar --module-path /opt/elasticsearch-8.6.2/lib 
  --add-modules=jdk.net -m org.elasticsearch.server/org.elasticsearch.bootstrap.Elasticsearch
└─399297 /opt/elastic/modules/x-pack-ml/platform/linux-x86_64/bin/controller