Обзор обновления 1.01 для IDM Midpoint DEMO EPPL добавлены Multi-Nodes, стоп лист для логинов и исправлены ошибки

от автора

Вышло обновление 1.01 IDM Midpoint DEMO EPPL помимо исправления ошибок были добавлены новые функции:

— Ускоренная реконсиляция на нескольких Node

— Стоп лист для генерации логинов

— Бесконечные логины

Схема тоже чуть-чуть изменилась

Files: SVG PNG

Files: SVG PNG

Код на Github: IDM Midpoint DEMO EPPL 

Docker-образ: Docker Compose IDM Midpoint DEMO EPPL

К знакомству с новыми функциями надо приступать на чистом запуске Docker Compose проделав все этапы до демонстрационной части, но без реконсиляций с HR источником, описанные в Docker Demo IDM Midpoint EPPL c трудоустройствами, назначениями, проектами и LDAP

Версия Midpoint все еще 4.9.1 потому что в 4.9.2-3 Evolveum добавило BUG с filter в момент выбора Person of inrerest в GUI Request access — Fatal Error.

Ускоренная реконсиляция на нескольких Node

Они существуют! И не просто подсоединяются, но и делают что-то это видно по скачку использованию CPU на каждой из Node в Docket Desktop, и по сокращению длительности первой реконсиляции, а так же в самом Midpoint если посмотреть статистику в меню Subtasks…но нажимать на меню Subtasks нельзя сразу ошибка 500, но об этом позже.

Замер времени исполнения task реконсиляции

Ускорение от задействования Multi Node было замечено только при первой реконсиляции, и в тех случаях когда идет массированное создание чего-то в Midpoint с обновлением цепочки связанной Links.

Кстати не все можно повесть на Node вот тут описывается что можно: Work Definition (Types of Activities)

Для создания clustera в файл docker-compose.ymp оставляем только код

midpoint_server_A:     image: evolveum/midpoint:4.9.3-alpine     depends_on:       data_init:         condition: service_completed_successfully       midpoint_data:         condition: service_started     command: [ "/opt/midpoint/bin/midpoint.sh", "container" ]     ports:      - 8080:8080     environment:      - MP_SET_midpoint_repository_jdbcUsername=midpoint      - MP_SET_midpoint_repository_jdbcPassword=db.secret.pw.007      - MP_SET_midpoint_repository_jdbcUrl=jdbc:postgresql://midpoint_data:5432/midpoint      - MP_SET_midpoint_repository_database=postgresql      - MP_SET_midpoint_administrator_initialPassword=Test5ecr3t      - MP_UNSET_midpoint_repository_hibernateHbm2ddl=1      - MP_SET_midpoint_taskManager_clustered=true      - MP_SET_midpoint_nodeId=Alpha      - MP_NO_ENV_COMPAT=1     networks:      - net     volumes:      - midpoint_home:/opt/midpoint/var      - ./DATA/EPPL.xsd:/opt/midpoint/var/schema/EPPL.xsd      - ./DATA/EPPL_HR_DATA.csv:/opt/midpoint/var/info/EPPL_HR_DATA.csv

вместе прежнего midpoint_server:

И множим его сколько вам надо, убирая ports: и меняя

midpoint_server_A:

на

midpoint_server_Т:

a

- MP_SET_midpoint_nodeId=Alpha

на

- MP_SET_midpoint_nodeId=Teta

например

Можно и каждой Node прописать ports: тогда на них тоже можно будет заходить в GUI, и даже можно поднять балансировщик GUI на Nginx.

Запускаем Docker Compose и смотрим в ADMINISTRATION\Nodes\All Nodes.

А вот так они выглядят в Docker Desktop.

Теперь стартуем реконсиляционные таски как описывалось ранее, доходим до 04 и 05 и тут запускаем в соответствующих ресурсах:

04 Recon Employment as User [Multi-node]

05 Recon Position User [Multi-node]

Первый раз на нескольких нодах реконсилируется быстрее чем без Node… второй раз на нескольких Node будет медленнее чем на одной, потому что изменений, а по ним действий особых нет, а деление на корзины занимает гораздо больше времени чем просто вторая реконсиляция.

Зайдем в один из тасков ADMINISTRATION\Resources\All Resources\EPPL 03 POSITIONS USER\05 Recon Position User [Multi-node]\ и тут в Activity\Tailoring заполнено

Почему заполнено так, а не иначе…нет объяснения, скажу только что String segmentation единственная bucket которая работает (оказывает осязаемый эффект на процесс реконсиляции). Вот тут написано что и другие bucket должны бы работать Multi-node, partitioned and stateful tasks но не сегодня, на самых свежих примерах в github’e от Evolveum, 4-х годичной давности, может быть да, но сегодня нет.

Midpoint создает 10 корзин — повезло! У нас 3 ноды 10 корзин отлично, атрибут Number of buckets в String segmentation есть но, не оказывает осязаемый эффект на процесс реконсиляции, какие бы цифорки куда бы не были вставлены. Нам в DEMO опять же повезло что у нас есть атрибут number_eppl а там цифорки…

Этот Task создает на каждую ноду Subtask и там можно посмотреть статистику. Сразу после завершения реконсиляции нажать на 05 Recon Position User [Multi-node]\Subtasks нельзя ошибка 500.

Надо выйти в общий список тасков этого ресурса, туда Midpoint кинул таски для нод.

Вот тут уже можно заходить в каждый Worker и смотреть в Performance\Internal performance что да нода нагружена была!

Замечено что и без всяких настроек, task’и которые запускаются по таймеру кидаются на разные ноды!

Стоп лист для генерации логинов

Заходим под админом в ADMINISTRATION\Roles\nickName Roles тут у нас рукотворная роль.

Заполнено Name и Email, роль есть и Midpoint не может сгенерировать логин FArt.

И действительно заходим в GUI Midpoint под начальников:

Url: http://localhost:8080/midpoint/

Login: 600677

Password: Password123

Выбираем всех подчинённых с фамилией Арт и запрашиваем им роль [1] EMP001002 FR: Employment LDAP Account for Position.

Возвращаемся под админом и смотрим(не сразу Server Task еще не отработал) созданные аккаунты.

Смотрим в Full Name и сразу фильтруем по Art.

Сотрудника с логином FArt нет, есть сотрудник со следующим в переборе логином FLArt!

Бесконечные логины

Это тоже видно на предыдущем кадре. У нас 7 сотрудников с одинаковым ФИО, да еще и коротким, да еще и минус неприличный логин. Так что буквенные логины быстро кончается и начинается подставляться цифра. Единственная доступная нам в моменте цифра это количество итерация в переборе, поэтому 4-ому сотруднику дается цифра 5.

Коротко прочие улучшения

Наследование названия головного департамента из роли Компании. Изменена схема, головному департаменту назначена роль Компания и он получает из неё название головного департамента.

В поисковую панель добавлено personalNumber там где этого сильно не хватало, и галка Dep.Managers only в User Positions.

Перекрашена и переписана ошибка «not authorized for operation», чтобы не пугать сотрудников. Но прочие ошибки остались, но из них убраны подробности.

Картинка при удалении участника проекта из проекта


ссылка на оригинал статьи https://habr.com/ru/articles/928904/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *