Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Блок кода
languagebash
themeMidnight
titleОтвет
collapsetrue
{
   "_links" : {
      "healthbeans" : {
         "templatedhref" : false"http://100.110.1.201:9098/actuator/beans",
         "hreftemplated" : "http://<IP-address>:9098/actuator/health"false
      },
      "healthconfigprops-pathprefix" : {
         "templated" : true,
         "href" : "http://<IP-address>100.110.1.201:9098/actuator/healthconfigprops/{*pathprefix}"
      },
      "cachesenv-cachetoMatch" : {
         "templatedhref" : true"http://100.110.1.201:9098/actuator/env/{toMatch}",
         "hreftemplated" : "http://<IP-address>:9098/actuator/caches/{cache}"true
      },
      "selfhealth-path" : {
         "href" : "http://<IP-address>100.110.1.201:9098/actuator/health/{*path}",
         "templated" : falsetrue
      },
      "httptracecaches" : {
         "templated" : false,
         "href" : "http://<IP-address>100.110.1.201:9098/actuator/httptracecaches",
      },
  "templated" : false  "info" : {
  },       "env-toMatchtemplated" : {false,
         "href" : "http://<IP-address>100.110.1.201:9098/actuator/env/{toMatch}info",
         "templated" : true
      },
      "configpropshttptrace" : {
         "href" : "http://<IP-address>100.110.1.201:9098/actuator/configpropshttptrace",
         "templated" : false
      },
      "infoself" : {
         "hreftemplated" : "http://<IP-address>:9098/actuator/info"false,
         "templatedhref" : false"http://100.110.1.201:9098/actuator"
      },
      "configprops-prefixenv" : {
         "templatedhref" : true"http://100.110.1.201:9098/actuator/env",
         "hreftemplated" : "http://<IP-address>:9098/actuator/configprops/{prefix}"false
      },
      "threaddumpconfigprops" : {
         "hreftemplated" : "http://<IP-address>:9098/actuator/threaddump"false,
         "templatedhref" : false"http://100.110.1.201:9098/actuator/configprops"
      },
      "heapdumphealth" : {
         "templated" : false,
         "href" : "http://<IP-address>100.110.1.201:9098/actuator/heapdumphealth"
      },
      "envthreaddump" : {
         "href" : "http://<IP-address>100.110.1.201:9098/actuator/envthreaddump",
         "templated" : false
      },
      "cachesheapdump" : {
         "href" : "http://<IP-address>100.110.1.201:9098/actuator/cachesheapdump",
         "templated" : false
      },
      "beanscaches-cache" : {
         "templatedhref" : false"http://100.110.1.201:9098/actuator/caches/{cache}",
         "hreftemplated" : "http://<IP-address>:9098/actuator/beans"true
      }
   }
}



Конфигурация

...

Основной конфигурационный файл

Блок кода
languageyml
themeRDark
title/etc/eltex-papaya/config/application.yaml
collapsetrue
server:
  port: 9098

portal:
  baseUrl: http://localhost<IP-address_portal>:9000/eltex_portal/
  connectionTimeoutMs: 1000
  totalConnections: 1

jwt:
  configuration:
    algorithm: RS256
    keyLength: 2048
    privateKeyFilePath: "/etc/eltex-papaya/keys/private.key"
    publicKeyFilePath: "/etc/eltex-papaya/keys/public.key"
    keyIdFilePath: "/etc/eltex-papaya/keys/keyId.txt"

discovery:
  cacheTtlSeconds: 600
  url: "https://m-c.tele2.ru/discovery<URL_Discovery>"
  clientSecret: "fzh5zEB8746o0Ht8<Client_Secret>"
  clientId: "discovery-Eltex<Client_ID>"
  redirectUrl: "http://localhost<URL_Redirect>"

openid:
  configCacheTtlSeconds: 600
  authCacheTtlSeconds: 600
  otpAuthCacheTtlSeconds: 600
  notificationUri: "http://92.125.152.58:9098/notify/<URL_Notify>"
  acrValue: "2"
  version: "mc_si_r2_v1.0"


caching:
  # We use this if we want replication. If it's disabled we don't need any network configuration
  replicationEnabled: false
  # Enable or disable multicast clustering
  multicastEnabled: false
  # Enable or disable auto detection
  autoDetectionEnabled: false
  # The address outside of the NAT network of a Docker Container, for example
  # Leave this section empty and hazelcast chooses it's itself
  publicAddress: ""
  # Port of the public node
  port: 57025703
  # Do we need to propagate to further ports
  portAutoIncrement: false
  # Count of ports to propagate if portAutoIncrement is true
  portCount: 1
  # Available methods are:
  # HOSTNAME - you need to specify the HOSTNAME environment variable inside your container that contains host and
  # can be resolved to an IP Address
  # IP_ADDRESS - you need to specify interfaceIp variable in this configuration or INTERFACE_IP variable in docker
  # environment
  # BIND_TO_ALL - hazelcast tries to bind itself to all known interfaces
  # By Default IP_ADDRESS is used in Deb package and HOSTNAME in Docker environment
  interfaceBindingMethod: "IP_ADDRESS"
  # The IP Address by which we select binding interface in hazelcast.
  # Works only if interfaceBindingMethods is INTERFACE_IP
  interfaceIp: "127.0.0.1<IP-address>"
  # List of the member servers of this cache cluster. You can list comma-separated IPv4, IPv6 addresses
  # and resolvable hosthosts with ports separated by colon. NotIf resolvableport hostsnot configured - port from configuration parameter below
  # will be used as default for all cluster nodes.
  # Not resolvable hosts will be logged in error log.
  servers:
    # List hosts, ips here
    []

spring:
  cloud:
    discovery:
      client:
        composite-indicator:
          enabled: false

management:
  health:
    defaults:
      enabled: false
  trace:
    http:
      enabled: true
  endpoint:
    health:
      show-details: always
  endpoints:
    web:
      exposure:
        # Actuator info
        # Useful for inspecting deployed beans, watching metrics, watching caches info
        # Also we can use it to create heapdump, threaddump, shutdown application and etc.
        include: health, beans, info, caches, prometheus, env, threaddump, heapdump, configprops, httptrace


  • Прослушиваемый сервисом порт:

...

Блок кода
languageyml
portal:
  baseUrl: http://localhost<IP-address_portal>:9000/eltex_portal/    # URL сервиса Captive Portal, на котором будет происходить аутентификация пользователей
  connectionTimeoutMs: 1000                       # Время ожидания подключения в милисекундах
  totalConnections: 1                             # Максимальное количество одновременных подключений

...

Блок кода
languageyml
discovery:
  url: "https://https://m-c.tele2.ru/discovery/"  <URL_Discovery>"                          # URL Discovery-сервиса
  cacheTtlSeconds: 600                            # Время хранения кэша в секундах
  clientSecret: "<secret><Client_Secret>"                        # Ключ подключения
  clientId: "<id><Client_ID>"                                # ID подключения
  redirectUrl: "http://localhost<URL_Redirect>"                   # URL перенапрвления
  • Парамеры подключения OpenID:

...

Блок кода
languageyml
caching:
  replicationEnabled: false                     # Статус активации репликации
  multicastEnabled: false                       # Статус активации мультикаста
  autoDetectionEnabled: false                   # Cтатус активации автообнаружение нод
  publicAddress: ""                             # Публичный адрес текущей ноды
  port: 57025703                                    # Порт доступа к ноде
  portAutoIncrement: false                      # Автоинкремент портов
  portCount: 1                                  # Максимум портов для автоинкремента;
  interfaceBindingMethod: "IP_ADDRESS"          # Метод биндинга. Доступные методы:
                                                ##  HOSTNAME — для этого режима необходимо задать переменную окружения HOSTNAME, которая может зарезолвиться в IP-адрес
                                                ##  IP_ADDRESS — для этого режима необходимо задать значение переменной CACHING_INTERFACEIP
                                                ##  BIND_TO_ALL — в этом режиме Hazelcast попытается использовать все доступные интерфейсы
                                                ## IP_ADDRESS используется для Deb пакетов, HOSTNAME используется в Docker environment
  interfaceIp: "127.0.0.1"                      # IP-адрес интерфейса для биндинга
  servers:
    ["172.16.0.1", "papaya-replicated-2"]       # Cписок членов кластера в виде IPv4, IPv6 или hostname  
  • Параметры управления:
Блок кода
languageyml
management:   trace:     http:       enabled: true        # Cписок членов кластера в виде IPv4, IPv6

  • Параметры управления:
Блок кода
languageyml
management:
  health:
    defaults:
      enabled: false
  trace:
    http:
      enabled: true
  endpoint:
    health:
      show-details: always
                          # Активация трассировки
  endpoints:
    web:
      exposure:
        # Actuator info
        # Useful for inspecting deployed beans, watching metrics, watching caches info
        # Also we can use it to create heapdump, threaddump, shutdown application and etc.
        include: health, beans, info, caches, prometheus, env, threaddump, heapdump, configprops, httptrace
  # Список параметров для отображения в трассировке


Настройка логирования

Блок кода
languagexml
themeRDark
title/etc/eltex-papaya/log4j2.xml
collapsetrue
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Properties>
        <Property name="maxSize" value="10MB"/>
        <Property name="maxCount" value="10"/>
        <Property name="logDir" value="/var/log/eltex-papaya"/>
        <Property name="defaultPattern" value="%d{ISO8601} [%t] %-5p %logger{1} %C{1}.%M(line:%L). %m%n"/>
        <Property name="gelfHost" value="udp:localhost"/>
        <Property name="gelfPort" value="12201"/>
        <Property name="gelfLevel" value="OFF"/>
        <Property name="filenamePrefix" value="eltex-papaya"/>
    </Properties>

    <Appenders>
        <RollingFile name="SPRING-INFO"
                     fileName="${logDir}/${filenamePrefix}-spring.log"
                     filePattern="${logDir}/spring/%d{yyyyMMdd}.%i.log">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <pattern>${defaultPattern}</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="${maxSize}"/>
            </Policies>
            <DefaultRolloverStrategy max="${maxCount}"/>
        </RollingFile>

        <RollingFile name="SERVICE"
                     fileName="${logDir}/${filenamePrefix}.log"
                     filePattern="${logDir}/service/%d{yyyyMMdd}.%i.log">
            <PatternLayout>
                <pattern>${defaultPattern}</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="${maxSize}"/>
            </Policies>
            <DefaultRolloverStrategy max="${maxCount}"/>
        </RollingFile>

        <RollingFile name="HAZELCAST"
                     fileName="${logDir}/${filenamePrefix}-hazelcast.log"
                     filePattern="${logDir}/hazelcast/%d{yyyyMMdd}.%i.log">
            <PatternLayout>
                <pattern>${defaultPattern}</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="${maxSize}"/>
            </Policies>
            <DefaultRolloverStrategy max="${maxCount}"/>
        </RollingFile>

        <Gelf name="Gelf"
              host="${gelfHost}"
              port="${gelfPort}"
              version="1.1"
              facility="${filenamePrefix}"
              extractStackTrace="true"
              originHost="%host{fqdn}"
              maximumMessageSize="8192">
            <Field name="thread" pattern="%t"/>
            <Field name="level" pattern="%level"/>
            <Field name="severity" pattern="%-5level"/>
            <Field name="logger" pattern="%logger{1}"/>
            <Field name="location" pattern="%C{1}.%M(line:%L)"/>
        </Gelf>
    </Appenders>

    <Loggers>
        <Root level="info">
            <AppenderRef ref="Gelf" level="${gelfLevel}"/>
        </Root>

        <Logger name="org.springframework" level="info">
            <AppenderRef ref="SPRING-INFO"/>
        </Logger>

        <Logger name="org.eltex.softwlc.papaya" level="info">
            <AppenderRef ref="SERVICE"/>
        </Logger>

        <Logger name="com.hazelcast" level="info">
            <AppenderRef ref="HAZELCAST"/>
        </Logger>
    </Loggers>
</ConfigurationConfiguration>


  • Максимально допустимый размер файла (при его превышении создается новый файл, а старый архивируется):

...

Блок кода
languageyml
    <Loggers>
        <Root level="debuginfo">


Настройки инициализации сервиса

...

Блок кода
languageyml
themeRDark
titledocker-compose.yml
version: "3"
services:
  eltex-papaya:
    ports:
      - "${PAPAYA_SERVER_PORT}:${PAPAYA_SERVER_PORT}"
      - "${CACHING_PORT}:${CACHING_PORT}"
      #- "${PAPAYA_DEBUG_PORT}:${PAPAYA_DEBUG_PORT}"
    container_name: eltex-papaya
    image: ${ELTEX_HUB}/eltex-papaya:${SWLC_VERSION}
    volumes:
      - ${PAPAYA_CONFIG_DIR}/keys/:${PAPAYA_CONFIG_DIR}/keys/
    environment:
      # Порт внутри контейнера. По умолчанию 9098
      - SERVER_PORT=${PAPAYA_SERVER_PORT}
      # Порт удаленного дебага
      - PAPAYA_DEBUG_PORT=${PAPAYA_DEBUG_PORT}
      # URL сервиса Captive Portal, на котором будет происходить аутентификация пользователей
      - PORTAL_BASEURL=${PORTAL_BASEURL}
      # Таймаут подключения к Captive Portal
      - PORTAL_CONNECTIONTIMEOUTMS=${PORTAL_CONNECTIONTIMEOUTMS}
      # Число одновременных подключений к Captive Portal
      - PORTAL_TOTALCONNECTIONS=${PORTAL_TOTALCONNECTIONS}
      # Алгоритм генерации ключей
      - JWT_CONFIGURATION_ALGORITHM=${JWT_CONFIGURATION_ALGORITHM}
      # Длина ключа в битах
      - JWT_CONFIGURATION_KEYLENGTH=${JWT_CONFIGURATION_KEYLENGTH}
      # Путь к приватному ключу
      - JWT_CONFIGURATION_PRIVATEKEYFILEPATH=${JWT_CONFIGURATION_PRIVATEKEYFILEPATH}
      # Путь к публичному ключу
      - JWT_CONFIGURATION_PUBLICKEYFILEPATH=${JWT_CONFIGURATION_PUBLICKEYFILEPATH}
      # Путь к файлу, содержащему keyId ключа
      - JWT_CONFIGURATION_KEYIDFILEPATH=${JWT_CONFIGURATION_KEYIDFILEPATH}
      # Discovery
      # Время жизни записи в кэше запросов Discovery
      - DISCOVERY_CACHETTLSECONDS=${DISCOVERY_CACHETTLSECONDS}
      # Адрес сервиса Discovery
      - DISCOVERY_URL=${DISCOVERY_URL}
      # Секрет для авторизации
      - DISCOVERY_CLIENTSECRET=${DISCOVERY_CLIENTSECRET}
      # Идентификатор клиента для авторизации
      - DISCOVERY_CLIENTID=${DISCOVERY_CLIENTID}
      # Зарегистрированный URL для перенаправления
      - DISCOVERY_REDIRECTURL=${DISCOVERY_REDIRECTURL}

       # Open ID
      # Время жизни записи в кэше конфигураций MobileID
      - OPENID_CONFIGCACHETTLSECONDS=${OPENID_CONFIGCACHETTLSECONDS}
      # Время жизни записи в кэше авторизаций MobileID
      - OPENID_AUTHCACHETTLSECONDS=${OPENID_AUTHCACHETTLSECONDS}
      # Время жизни записи в кэше авторизаций по MobileID OTP
      - OPENID_OTPAUTHCACHETTLSECONDS=${OPENID_OTPAUTHCACHETTLSECONDS}
      # Адрес для обратных уведомлений от IDGW
      - OPENID_NOTIFICATIONURI=${OPENID_NOTIFICATIONURI}
      # Список запрашиваемых LoA
      - OPENID_ACRVALUE=${OPENID_ACRVALUE}
      # Версия приложения MobileID
      - OPENID_VERSION=${OPENID_VERSION}

       # Настройки Hazelcast
      # Репликация
      - CACHING_REPLICATIONENABLED=${CACHING_REPLICATIONENABLED}
      # Мультикаст
      - CACHING_MULTICASTENABLED=${CACHING_MULTICASTENABLED}
      # Автообнаружение нод
      - CACHING_AUTODETECTIONENABLED=${CACHING_AUTODETECTIONENABLED}
      # Публичный адрес текущей ноды
      - CACHING_PUBLICADDRESS=${CACHING_PUBLICADDRESS}
      # Порт доступа к ноде
      - CACHING_PORT=${CACHING_PORT}
      # Автоинкремент портов
      - CACHING_PORTAUTOINCREMENT=${CACHING_PORTAUTOINCREMENT}
      # Максимум портов для автоинкремента
      - CACHING_PORTCOUNT=${CACHING_PORTCOUNT}
      # Доступные методы биндинга:
      # HOSTNAME - для этого режима необходимо задать переменную окружения HOSTNAME которая может зарезолвиться в IP адрес
      # IP_ADDRESS - для этого режима необходимо задать значение переменной CACHING_INTERFACEIP
      # BIND_TO_ALL - в этом режиме Hazelcast попытается использовать все доступные интерфейсы
      # IP_ADDRESS используется для Deb пакетов, HOSTNAME используется в Docker environment
      - CACHING_INTERFACEBINDINGMETHOD=${CACHING_INTERFACEBINDINGMETHOD}
      - CACHING_INTERFACEIP=${CACHING_INTERFACEIP}
      # список членов кластера в виде IPv4, IPv6 или hostname
      - CACHING_SERVERS=${CACHING_SERVERS}
#      - CACHING_SERVERS_0=${CACHING_SERVERS_0}
#      - CACHING_SERVERS_1=${CACHING_SERVERS_1}



      # Изначальный размер хипа
      - PAPAYA_JAVA_INIT_HEAP=${PAPAYA_JAVA_INIT_HEAP}
      # Максимальный размер хипа
      - PAPAYA_JAVA_MAX_HEAP=${PAPAYA_JAVA_MAX_HEAP}
      # Путь, куда нужно складывать heap-dump в случае падения приложения
      - PAPAYA_HEAP_DUMP_PATH=${PAPAYA_HEAP_DUMP_PATH}
      # Внутренний путь до конфигурации сервиса
      - PAPAYA_CONFIG_DIR=${PAPAYA_CONFIG_DIR}

       # Настройки логирования
      - PAPAYA_LOG_LEVEL=${PAPAYA_LOG_LEVEL}
      - PAPAYA_CONSOLE_LEVEL=${PAPAYA_CONSOLE_LEVEL}

       # Настройки Graylog
      - GELF_LEVEL=${GELF_LEVEL}
      - GELF_HOST=${GELF_HOST}
      - GELF_PORT=${GELF_PORT}

...

Блок кода
languageyml
themeRDark
title.env
# Docker-репозиторий, где находится образ eltex-papaya.
# Для разработки: lab3.eltex.loc:5000
# Публичный: hub.eltex-co.ru/softwlc
ELTEX_HUB=hub.eltex-co.ru/softwlc


# Версия сервиса, которую нужно развернуть
# На feature-ветке — вида 1.23-<название_ветки>
SWLC_VERSION=1.23-<tag>


# Внешний порт контейнера eltex-papaya
PAPAYA_SERVER_PORT=9098


# Порт для удаленного дебага
PAPAYA_DEBUG_PORT=5015


# URL сервиса Captive Portal, на котором будет происходить аутентификация пользователей
PORTAL_BASEURL=http://<IP-address>address_portal>:9000/eltex_portal/
# Таймаут подключения к Captive Portal
PORTAL_CONNECTIONTIMEOUTMS=1000
# Число одновременных подключений к Captive Portal
PORTAL_TOTALCONNECTIONS=1
# Алгоритм генерации ключей
JWT_CONFIGURATION_ALGORITHM=RS256
# Длина ключа в битах
JWT_CONFIGURATION_KEYLENGTH=2048
# Путь к приватному ключу
JWT_CONFIGURATION_PRIVATEKEYFILEPATH=/etc/eltex-papaya/keys/private.key
# Путь к публичному ключу
JWT_CONFIGURATION_PUBLICKEYFILEPATH=/etc/eltex-papaya/keys/public.key
# Путь к файлу, содержащему keyId ключа
JWT_CONFIGURATION_KEYIDFILEPATH=/etc/eltex-papaya/keys/keyId.txt
# Discovery
# Время жизни записи в кэше запросов Discovery
DISCOVERY_CACHETTLSECONDS=600
# Адрес сервиса Discovery
DISCOVERY_URL=https://m-c.tele2.ru/discovery<URL_Discovery>
# Секрет для авторизации
DISCOVERY_CLIENTSECRET=<client-secret>"<Client_Secret>"
# Идентификатор клиента для авторизации
DISCOVERY_CLIENTID=<client-id>"<Client_ID>"
# Зарегистрированный URL для перенаправления
DISCOVERY_REDIRECTURL=<Redirect"<URL_Redirect>"
URL>
 
# Open ID
# Время жизни записи в кэше конфигураций MobileID
OPENID_CONFIGCACHETTLSECONDS=600
# Время жизни записи в кэше авторизаций MobileID
OPENID_AUTHCACHETTLSECONDS=600
# Время жизни записи в кэше авторизаций по MobileID OTP
OPENID_OTPAUTHCACHETTLSECONDS=600
# Адрес для обратных уведомлений от IDGW
OPENID_NOTIFICATIONURI=http://<PUBLIC_IP>:9098/notify
# Список запрашиваемых LoA
OPENID_ACRVALUE=2
# Версия приложения MobileID
OPENID_VERSION=mc_si_r2_v1.0


# Настройки Hazelcast
# Репликация
CACHING_REPLICATIONENABLED=false
# Мультикаст
CACHING_MULTICASTENABLED=false
# Автообнаружение нод
CACHING_AUTODETECTIONENABLED=false
# Публичный адрес текущей ноды
CACHING_PUBLICADDRESS=""
# Порт доступа к ноде
CACHING_PORT=57025703
# Автоинкремент портов
CACHING_PORTAUTOINCREMENT=false
# Максимум портов для автоинкремента
CACHING_PORTCOUNT=1
# Доступные методы биндинга:
# HOSTNAME - для этого режима необходимо задать переменную окружения HOSTNAME которая может зарезолвиться в IP адрес
# IP_ADDRESS - для этого режима необходимо задать значение переменной CACHING_INTERFACEIP
# BIND_TO_ALL - в этом режиме Hazelcast попытается использовать все доступные интерфейсы
# IP_ADDRESS используется для Deb пакетов, HOSTNAME используется в Docker environment
CACHING_INTERFACEBINDINGMETHOD=IP_ADDRESS
CACHING_INTERFACEIP=127.0.0.1
# список членов кластера в виде IPv4, IPv6 или hostname
CACHING_SERVERS=


# Изначальный размер хипа
PAPAYA_JAVA_INIT_HEAP=8m


# Максимальный размер хипа
PAPAYA_JAVA_MAX_HEAP=64m


# Путь, куда нужно складывать heap-dump в случае падения приложения
PAPAYA_HEAP_DUMP_PATH=/var/log/eltex-papaya


# Внутренний путь до конфигурации сервиса
PAPAYA_CONFIG_DIR=/etc/eltex-papaya


# Настройки логирования
PAPAYA_LOG_LEVEL=INFO
PAPAYA_CONSOLE_LEVEL=INFO


# Настройки Graylog
# Вместо <graylog_server_ip> нужно указать настоящий адрес сервера Graylog или localhost
GELF_LEVEL=OFF
GELF_HOST=udp:localhost
GELF_PORT=12201


Описание переменных окружения

...

  • CACHING_REPLICATIONENABLED — статус активации репликация;
  • CACHING_MULTICASTENABLED — статус активации мультикаста;
  • CACHING_AUTODETECTIONENABLED — статус активации автообнаружение нод;
  • CACHING_PUBLICADDRESS — публичный адрес текущей ноды;
  • CACHING_PORT — порт доступа к ноде;
  • CACHING_PORTAUTOINCREMENT — автоинкремент портов;
  • CACHING_PORTCOUNT — максимум портов для автоинкремента;
  • CACHING_INTERFACEBINDINGMETHOD — Метод биндинга. Доступные методы:
    • HOSTNAME — для этого режима необходимо задать переменную окружения HOSTNAME, которая может зарезолвиться в IP-адрес
    • IP_ADDRESS — для этого режима необходимо задать значение переменной CACHING_INTERFACEIP
    • BIND_TO_ALL — в этом режиме Hazelcast попытается использовать все доступные интерфейсы
      IP_ADDRESS используется для Deb пакетов, HOSTNAME используется в Docker environment
  • CACHING_INTERFACEIP — IP-адрес интерфейса для биндинга:
  • CACHING_SERVERSсписок членов второй член кластера в виде IPv4, IPv6 или hostname, если в кластере используются 2 ноды:
  • CACHING_SERVERS_0 - IP-адрес текущей ноды, если в кластере используется более 2 нод:
  • CACHING_SERVERS_<N> - IP-адрес N ноды, если в кластере используется более 2 нод.


Параметры инициализации сервиса

...

Расшифровка логов papaya

Пользователь отклонил системное уведомление о входе на портал, либо оператор не смог его прислать.OpenIdAuthorizationService.processNotifyRequest$suspendImpl(line:145). User not authorized because of: authorization_error:user denies the request or authentication fails
Слишком долго ждали нажатия "ОК", либо вовсе его не нажали. Неуспешная авторизация.OpenIdAuthorizationService.processNotifyRequest$suspendImpl(line:145). User not authorized because of: authorization_error:Subscriber consent waiting time expired
Получено уведомление о статусе авторизации пользователя MobileID. Внутри ID сессии и номер телефона, если пользователь находится в кэше.OpenIdAuthorizationService.processNotifyRequest$suspendImpl(line:143). Received notify with request id 3485f838-9f7c-4349-9f54-a35d6f8ab49f. Phone 79585150889
Успешно отправили запрос на авторизацию пользователя с номером телефона в MobileID. Ждём уведомления от MobileID.OpenIdAuthorizationService.processMobileIdAuth$suspendImpl(line:198). Auth success for 79585150889. Waiting for auth notification

Получили от портала запрос на авторизацию с представленным номером телефона.

Замечание: нельзя одновременно авторизоваться с одним номером телефона на двух устройствах. MobileID держит только одну сессию за время, так что на одном из устройств будет неуспех.

OpenIdAuthorizationService.processMobileIdAuth$suspendImpl(line:184). Received auth request for phone 79585150889
Ответ на запрос проверки SMS-кода по схеме Пользователь -> Портал -> Папайа -> MobileID. В данном случае введённый SMS-код верный.OpenIdAuthorizationService.processMobileIdOtpAuth$suspendImpl(line:241). SMS status is correct for c8f4e1a4-0a71-4eaf-bae5-74491c2076cd : 79930086782
Получен SMS-код от портала на проверку в MobileID.OpenIdAuthorizationService.processMobileIdOtpAuth$suspendImpl(line:222). Received sms code from portal service. Phone 79930086782
Статус проверки SMS - введённый код неверный.penIdAuthorizationService.processMobileIdOtpAuth$suspendImpl(line:241). SMS status is incorrect for c8f4e1a4-0a71-4eaf-bae5-74491c2076cd : 79930086782
Код из SMS неверный. Оставшееся количество попыток: 2.
Это сообщение, которое приходит в папаю из MobileID.
penIdAuthorizationService$performOtpAuthRequest$2.invokeSuspend(line:128). Error while sending auth request to MobileID platform 5135:FORBIDDEN: remaining attempts: 2
Сообщение от MobileID - превышено число попыток проверки SMS-кода.OpenIdAuthorizationService$performOtpAuthRequest$2.invokeSuspend(line:128). Error while sending auth request to MobileID platform 5136:LIMIT_REACHED
MobileID открыл сессию OTP для пользователя с представленным номером. Ожидаем ввода пользователя на портале, после этого проверяем SMS-код.OpenIdAuthorizationService.processOtpNotifyRequest$suspendImpl(line:162). Received OTP notify with request id c8f4e1a4-0a71-4eaf-bae5-74491c2076cd. Phone 79930086782
Не можем отправить запрос на авторизацию пользователя с таким номером, так как его оператор не подключен к MobileID, либо не подключен в профиле С-П на Discovery.OpenIdDiscoveryService$sendDiscoveryRequest$2.invokeSuspend(line:61). Can't perform discovery with specified phone 79293810070. Details: 404 NOT_FOUND "Not_Found_Entity:There is no organization with the specified MSISDN"
Превысили число проверок SMS-кода на MobileID. OTP-сессия завершилась неуспешно.OpenIdAuthorizationService.processNotifyRequest$suspendImpl(line:145). User not authorized because of: authorization_error:OTP authentication failed
Исчерпали число попыток для проверки СМС. OTP-сессия после этого закрывается и получаем ошибку авторизации.OpenIdAuthorizationService.processMobileIdOtpAuth$suspendImpl(line:241). SMS status is limit_reached for 185de01e-6637-46d3-92ab-6b4905e13a71 : 79930086782




Настройка кластера

...

Настройка кластера при использовании deb-пакетов

Настройка выполняется в файле /etc/eltex-papaya/config/application.yml в разделе "caching".

Алгоритм минимальной настройки:

  1. Включить репликацию:
Блок кода
languageyml
  replicationEnabled: true

2. Указать тип привязки:

Блок кода
languageyml
  interfaceBindingMethod: "IP_ADDRESS"

3. Указать IP-адрес интерфейса привязки:

Блок кода
languageyml
interfaceIp: "100.110.1.201"

4. Перечислить участников кластера:

Блок кода
languageyml
  servers:
    [100.110.1.201:5703, 100.110.2.50:5703]

Параметры необходимо настроить на всех нодах и перезапустить сервис на всех серверах-участниках.


Настройка кластера при использовании двух docker-контейнеров

Настройка параметров выполняется в файле переменных окружения .env.

Алгоритм минимальной настройки:

  1. Включить репликацию:
Блок кода
languageyml
  CACHING_REPLICATIONENABLED=true

2. Указать публичный адрес сервера:

Блок кода
languageyml
CACHING_PUBLICADDRESS=100.110.1.201

3. Указать тип привязки:

Блок кода
languageyml
CACHING_INTERFACEBINDINGMETHOD=HOSTNAME

4. Указать IP-адрес второй ноды

Блок кода
languageyml
CACHING_SERVERS=100.110.2.50

Параметры необходимо настроить на всех нодах и перезапустить контейнер на всех серверах-участниках.

Настройка кластера при использовании более двух docker-контейнеров

Настройка параметров выполняется в файле переменных окружения .env.

Алгоритм минимальной настройки:

  1. Включить репликацию:
Блок кода
languageyml
  CACHING_REPLICATIONENABLED=true

2. Указать публичный адрес сервера:

Блок кода
languageyml
CACHING_PUBLICADDRESS=100.110.1.201

3. Указать тип привязки:

Блок кода
languageyml
CACHING_INTERFACEBINDINGMETHOD=HOSTNAME

4. Указать IP-адрес текущей ноды

Блок кода
languageyml
CACHING_SERVERS_0=100.110.1.201

5. Указать IP-адрес второй ноды

Блок кода
languageyml
CACHING_SERVERS_1=100.110.2.50

6. Указать IP-адрес третей ноды

Блок кода
languageyml
CACHING_SERVERS_2=100.110.2.56

7. Добавить в docker-compose.yml новые переменные и удалить старую:

Блок кода
languageyml
#      - CACHING_SERVERS=${CACHING_SERVERS}
      - CACHING_SERVERS_0=${CACHING_SERVERS_0}
      - CACHING_SERVERS_1=${CACHING_SERVERS_1}
      - CACHING_SERVERS_2=${CACHING_SERVERS_2}

Параметры необходимо настроить на всех нодах и перезапустить контейнер на всех серверах-участниках.


Проверка состояния кластера

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

Блок кода
languagebash
themeRDark
root@ubuntu:~/papaya# curl -X GET http://100.110.1.201:9098/actuator/health/hazelcast | json_pp
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   415  100   415    0     0  25937      0 --:--:-- --:--:-- --:--:-- 25937
{
   "details" : {
      "members" : [
         {
            "uuid" : "15e43aae-fe31-4804-bd57-b8a46bcf1bf1",
            "localMember" : false,
            "address" : "[100.110.2.50]:5703",
            "liteMember" : false,
            "memberVersion" : "4.2.5"
         },
         {
            "localMember" : true,
            "uuid" : "739d7ea4-d6e4-46c3-a86c-080ec2d0fc69",
            "address" : "[100.110.1.201]:5703",
            "memberVersion" : "4.2.5",
            "liteMember" : false
         }
      ],
      "uuid" : "739d7ea4-d6e4-46c3-a86c-080ec2d0fc69",
      "state" : "ACTIVE",
      "name" : "competent_hermann"
   },
   "status" : "UP"
}

Команда является единой для всех видов запуска.