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

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

Ключ

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

Оглавление

Описание

...

...

Сервис Eltex Polly предоставляет приложение для создания опросов на веб-портале при подключении hotspot-пользователей в схемах с ТД и BRAS.

...

Рекомендуется схема работы с применением реверсного прокси nginx.


Управление сервисом

...

Установка

Для работы сервиса необходима установка схемы на сервер БД:

Блок кода
languagebash
themeRDark
# apt install eltex-polly-db

...

Блок кода
languagebash
themeRDark
# apt install eltex-polly

Остановка/запуск сервиса

ДействиеКомандаОтвет
Проверка состоянияservice eltex-polly status

Сервис запущен

Подсказка

Active: active (running)

Cервис не запущен

Предупреждение

Active: failed


Запуск сервисаservice eltex-polly start

Сервис успешно запущен

Подсказка

Active: active (running)


Остановка сервисаservice eltex-polly stop

Сервис успешно остановлен

Подсказка

Active: failed


Перезапуск сервисаservice eltex-polly restart

Сервис успешно перезапущен

Подсказка

Active: active (running)




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

...

/etc/eltex-polly/application.conf

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

Блок кода
languagejs
themeRDark
title/etc/eltex-polly/application.conf
collapsetrue
access {
  secret = password
}

database {
  host = localhost
  port = 3306
  name = eltex_poll
  user = javauser
  password = javapassword

  pool {
    # Time to wait for a connection
    connectionTimeout = 10s
    # Time to wait for connection validation
    validationTimeout = 3s

    min = 1
    max = 5
  }

  cache {
    enabled = true
    expireAfterWrite = 3m
    maximumSize = 500
  }

  resources {
    readChunkSize = 256k
    writeChunkSize = 256k
  }
}

images {
  maxSize = 15MB
  cache {
    expireAfterWrite = 30s
    storagePath = /tmp/eltex-polly/cache/
  }
}
  • Секретный ключ для доступа:
Без форматирования
access {
  secret = password
}
  • Основные параметры для подключения к БД:
Блок кода
database {
  host = localhost            IP-адрес БД
  port = 3306                 Порт обращения к БД
  name = eltex_poll           Название БД
  user = javauser             Имя пользователя
  password = javapassword     Пароль
...
  • Настройка пула подключений к БД:
Блок кода
  pool {
    # Time to wait for a connection
    connectionTimeout = 10s                      Время ожидания подключения к БД
    # Time to wait for connection validation    
    validationTimeout = 3s                       Время ожидания валидации

    min = 1                                      Минимальное количество подключений к БД
    max = 5                                      Максимальное количество подключений к БД
  }
  • Настройки кэша:
Блок кода
  cache {
    enabled = true           Активация записи
    expireAfterWrite = 3m    Время хранения
    maximumSize = 500        Максимальный размер
  }
  • Настройка количества данных для чтения и записи:
Блок кода
  resources {
    readChunkSize = 256k
    writeChunkSize = 256k
  }
  • Настройка изображений:
Блок кода
images {
  maxSize = 15MB                             Максимальный размер загружаемого изображения
  cache {
    expireAfterWrite = 30s
    storagePath = /tmp/eltex-polly/cache/
  }
}


/etc/default/eltex-polly

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

Блок кода
title/etc/default/eltex-polly
collapsetrue
# Eltex-Polly daemon parameters

# HTTP Port for use by Eltex Polly
HTTP_PORT=9089
GRPC_PORT=9088

# Initial size of Java heap
JAVA_INIT_HEAP=16m
# Maximum size of Java heap
JAVA_MAX_HEAP=128m

# Additional arguments to pass to java
JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-polly"
  • Порты для работы сервиса:
Без форматирования
# HTTP Port for use by Eltex Polly
HTTP_PORT=9089
GRPC_PORT=9088
  • Количество памяти, выделяемое приложению при старте сервиса:
Без форматирования
# Initial size of Java heap
JAVA_INIT_HEAP=16m
  • Максимальное количество памяти, которое может арендовать сервис:
Без форматирования
# Maximum size of Java heap
JAVA_MAX_HEAP=256m
  • Дополнительные опции запуска java:
Без форматирования
# Additional arguments to pass to java
JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-polly"


/etc/eltex-polly/log4j2.xml

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

Блок кода
languagexml
title/etc/eltex-polly/log4j2.xml
collapsetrue
<?xml version="1.0" encoding="UTF-8"?>

<Configuration monitorInterval="10">

    <Properties>
        <Property name="rootLevel">${env:LOG_LEVEL:-ERROR}</Property>

        <Property name="baseDir">/var/log/eltex-polly</Property>
        <Property name="maxFileSize">20 MB</Property>
        <Property name="accumulatedFileSize">10 GB</Property>
        <Property name="lastModified">4d</Property>
        <Property name="maxCount">20</Property>
        <Property name="logPattern">%d{ISO8601} [%t] %-5p %logger{12} %C{1}.%M(line:%L). %m%n</Property>
        <Property name="dateSuffix">%d{yyyyMMdd}</Property>

        <Property name="consoleLevel">${env:CONSOLE_LEVEL:-OFF}</Property>

        <Property name="gelfLevel">${env:GELF_LEVEL:-OFF}</Property>
        <Property name="gelfHost">${env:GELF_HOST:-udp:lab3-test.eltex.loc}</Property>
        <Property name="gelfPort">${env:GELF_PORT:-12201}</Property>
    </Properties>

    <Appenders>

        <Console name="STDERR" target="System.err">
            <PatternLayout pattern="${logPattern}"/>
        </Console>

        <RollingFile name="RollingFile"
                     fileName="${baseDir}/polly.log"
                     filePattern="${baseDir}/log/polly-%i.log.gz">
            <PatternLayout pattern="${logPattern}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="${maxFileSize}"/>
                <OnStartupTriggeringPolicy />
            </Policies>
            <DefaultRolloverStrategy max="${maxCount}">
                <Delete basePath="${baseDir}" maxDepth="3">
                    <IfFileName glob="*/polly-*.log.gz">
                        <IfAny>
                            <IfAccumulatedFileSize exceeds="${accumulatedFileSize}" />
                            <IfLastModified age="${lastModified}" />
                        </IfAny>
                    </IfFileName>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>

        <Gelf name="Gelf" host="${gelfHost}" port="${gelfPort}" version="1.1" facility="eltex-polly"
              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{12}" />
            <Field name="location" pattern="%C{1}.%M(line:%L)" />
        </Gelf>

    </Appenders>

    <Loggers>
        <Root level="${rootLevel}">
            <AppenderRef ref="RollingFile"/>
            <AppenderRef ref="STDERR" level="${consoleLevel}"/>
            <AppenderRef ref="Gelf" level="${gelfLevel}"/>
        </Root>

        <!--SQL logger-->
        <Logger name="org.jooq.tools.LoggerListener" level="OFF"/>

        <Logger name="org.springframework" level="ERROR"/>
        <Logger name="org.hibernate"       level="ERROR"/>
        <Logger name="com.zaxxer.hikari"   level="ERROR"/>
        <Logger name="io.netty"            level="ERROR"/>
        <Logger name="io.grpc"             level="ERROR"/>

        <!--Disabled loggers-->
        <Logger name="org.apache"          level="OFF"/>
    </Loggers>

</Configuration>

  • Интервал автоматического перечитывания конфигурации логгера:
Без форматирования
<Configuration monitorInterval="10">
  • Уровень логирования:
Без форматирования
<Property name="rootLevel">${env:LOG_LEVEL:-ERROR}</Property>
  • Базовая директория хранения логов:
Без форматирования
<Property name="baseDir">/var/log/eltex-polly</Property>
  • Максимально допустимый размер файла (при его превышении создается новый файл, а старый архивируется):
Без форматирования
<Property name="maxFileSize">20 MB</Property>
  • Суммарный размер логов (текущий файл + архивные). При его превышении наиболее старые файлы будут удаляться:
Без форматирования
<Property name="accumulatedFileSize">10 GB</Property>
  • Срок хранения логов, файлы модифицированные раннее этого срока будут удаляться:
Без форматирования
<Property name="lastModified">4d</Property>
  • Максимальное количество архивных файлов, при его превышении наиболее старые файлы будут перезаписываться:
Без форматирования
<Property name="maxCount">20</Property>
  • Блок настройки перенаправления логов в Graylog (уровень логирования, адрес, порт):
Без форматирования
<Property name="gelfLevel">${env:GELF_LEVEL:-OFF}</Property>
<Property name="gelfHost">${env:GELF_HOST:-udp:lab3-test.eltex.loc}</Property>
<Property name="gelfPort">${env:GELF_PORT:-12201}</Property>



Взаимодействие с другими сервисами

...

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

Ниже представлена конфигурация nginx. 

Подразумевается, что сервисы запущены на следующих портах:

СервисПорт

eltex-portal-constructor

9001
eltex-portal9000
eltex-polly9089

В случае необходимости следует изменить адреса и порты в конфигеконфигурационном файле

Если eltex-portal и eltex-portal-constructor установлены на разных хостах, то nginx необходимо установить на каждом из них и настроить соответствующие location.

Блок кода
themeRDark
title/etc/nginx/conf.d/softwlc.conf
collapsetrue
server {
    listen 8080;
    listen [::]:8080;

    gzip off;

	proxy_cache_background_update on;
	proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
    proxy_cache_revalidate on;
    proxy_cache_min_uses 2;

    client_max_body_size 25m;

    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;

    
    # Eltex Portal section
    location ~* /eltex_portal/(gif|jpeg|jpg|png|svg|js|css|fonts)/ {
        proxy_cache eltex_cache;
        proxy_ignore_headers Cache-Control Expires;
        proxy_cache_valid any 1h;
        # адрес eltex portal
        proxy_pass http://127.0.0.1:9000;

    }

    location ~* /eltex_portal/(portal/download/shared/[0-9]+|img/) {
        proxy_cache eltex_cache;
        proxy_ignore_headers Cache-Control Expires;
        proxy_cache_valid 404 302 304 5m;
        proxy_cache_valid any 24h;
        # адрес eltex portal
        proxy_pass http://127.0.0.1:9000;
    }

    location ~* /eltex_portal/(portal/download/private|portal)/ {
        proxy_cache eltex_cache;
        proxy_ignore_headers Cache-Control Expires;
        proxy_cache_valid 404 302 304 5m;
        proxy_cache_valid any 1h;
        # адрес eltex portal
        proxy_pass http://127.0.0.1:9000;
    }

    location /eltex_portal/ {
        proxy_pass http://127.0.0.1:9000;
    }

    location /eltex_portal/polly {
        rewrite ^(/eltex_portal)/(.*)$ /$2 break;
        proxy_cookie_path /polly /eltex_portal/polly;
		# адрес eltex polly
        proxy_pass http://127.0.0.1:9089;
    }

    # Eltex Portal Constructor section
    location ~* /epadmin/(portal/download/[0-9]+|portal/download/shared/[0-9]+|font-awesome|img|js|css) {
        proxy_cache eltex_cache;
        proxy_cache_valid any 24h;
        # адрес eltex portal constructor
        proxy_pass http://127.0.0.1:9001;
    }

    location /epadmin {
        proxy_pass http://127.0.0.1:9001;
    }

    location /ep-demo {
        proxy_pass http://127.0.0.1:9001;
    }

    location /epadmin/polly {
        rewrite ^(/epadmin)/(.*)$ /$2 break;
        proxy_cookie_path /polly /epadmin/polly;
		# адрес eltex polly
        proxy_pass http://127.0.0.1:9089;
    }


    location / { 
        deny all; 
    }
}

Конфигурационные файлы eltex-polly

/etc/eltex-polly/application.conf - основной конфигурационный файл сервиса

Блок кода
themeRDark
access {
  secret = password
}

database {
  host = localhost
  port = 3306
  name = eltex_poll
  user = javauser
  password = javapassword

  pool {
    # Time to wait for a connection
    connectionTimeout = 10s
    # Time to wait for connection validation
    validationTimeout = 3s

    min = 1
    max = 5
  }

  cache {
    enabled = true
    expireAfterWrite = 3m
    maximumSize = 500
  }

  resources {
    readChunkSize = 256k
    writeChunkSize = 256k
  }
}

images {
  maxSize = 15MB
  cache {
    expireAfterWrite = 30s
    storagePath = /tmp/eltex-polly/cache/
  }
}

/etc/default/eltex-polly - содержит параметры, необходимые для инициализации сервиса

Блок кода
themeRDark
# Eltex-Polly daemon parameters

# HTTP Port for use by Eltex Polly
HTTP_PORT=9089
GRPC_PORT=9088

# Initial size of Java heap
JAVA_INIT_HEAP=16m
# Maximum size of Java heap
JAVA_MAX_HEAP=128m

# Additional arguments to pass to java
JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-polly"


Настройка доступа к сервису опросов в Конструкторе порталов

...

  1. Перейти в Личный кабинет
  2. Перейти в меню Сервисы и тарифы → Тарифы, выбрать фильтр Точки Доступа, создать новый тарифный план, либо отредактировать существующий
  3. В качестве первого сценария необходимо указать URL-адрес в виде http://<portal-ip-address>:<portal_port>/eltex_portal/poll-redirect. Дальнейшие сценарии можно задать в стандартном виде (например, доступ в интернет в сценарии 2 в течение 1 минуты, третий сценарий - возврат на портал и повторная авторизация клиента).

    Примечание

    Для корректной работы в тарифе должны присутствовать не менее двух сценариев


  4. Убедиться, что на всех точка доступа домена указан AP Alias.

    Параметр должен быть одинаковым на всех точках платформы. Настройку можно выполнить непосредственно на ТД, через групповые операции или при помощи правила инициализации ТД.
  5. Зайти в Конструктор порталов, выбрать необходимый портал. В разделе меню Тарифы выбрать созданный тарифный план, задать название тарифа на портале, сохранить изменения.
  6. Перейти в раздел меню Опросы, создать необходимый опрос, привязать его к порталу.
  7. После аутентификации на портале пользователь будет перенаправлен на сервис опросов, если в базе для него найдётся подходящий опрос по языку, домену, расписанию, и если он ещё не проходил данный опрос.

...