Многосерверная конфигурация

Для работы с многосерверной конфигурацией необходимо в application.properties задать:

  1. Настройки для работы с одной СУБД Postgres, указав:


passoffice.db.driver=org.postgresql.Driver
passoffice.db.port=5432
passoffice.db.url=jdbc:postgresql://localhost:5432/passoffice
passoffice.db.schema=passofficedb
passoffice.db.user=postgres
passoffice.db.pw=1
  1. Службой для создания межпроцессовых кэшей является Redis. В разделе Redis Settings задать:


redis.host=localhost
redis.port=6379
redis.database=0
redis.password=
redis.timeout=60000
redis.lock-expiration-timeout=86400000

при этом Redis должен быть запущен как Служба Windows или установлен в Docker. Запустить Redis в Docker можно командой: docker run --name redis -p 6379:6379 -d redis debug.

  1. Для взаимодействия между нодами используется Eureka, в разделе Service Discovery отредактировать при необходимости:


spring.application.name=passoffice
eureka.client.enabled=passoffice.cluster.enabled
eureka.client.service-url.default-zone=http://localhost:8761/eureka
eureka.instance.preferIpAddress=true
eureka.instance.instance-id=instance.id
eureka.instance.hostname=localhost
eureka.instance.ipAddress=localhost - ip, на котором запущен сервис Discovery.
  1. Запустить Service Discovery

  2. Запустить PassOfficeSrv.bat

  3. Запустить 2 сервер PassOfficeSrv.bat, предварительно указав в файле application.properties другие порт и instance_id


server.port=4202
instance.id=client1
  1. Выполнить вход в Бюро пропусков под разными операторами, все действия и изменения одного пользователя будут отображаться у другого и наоборот.

  2. Обратите внимание, сделегированные лидерскому узлу задачи попадают в канал Redis, который имеет буфер размером 8 мегабайт (значение по-умолчанию). В случае переполнения буфера соединение с лидером может быть закрыто. Во избежание данного вида проблем, есть возможность настройки размера буфера. Достаточно в конфигурационный файл redis.conf добавить следующую настройку:

client-output-buffer-limit pubsub <hard limit> <soft limit> <soft seconds>

Дополнительная информация находится по ссылке: https://redis.io/docs/reference/clients/#:~:text=Pub%2FSub%20clients%20have%20a,64%20megabyte%20per%2060%20seconds.

Для корректной работы всех возможностей PassOffice в многосерверной конфигурации, необходимо включить поддержку "липких сессий" (sticky sessions) на стороне балансировщика нагрузки.

Подробная информация по настройке Nginx в разделе «Enabling Session Persistence»: https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/

Last updated