Исправление односторонних отношений Left-Right¶
Перед созданием соглашения о репликации в LDAP-каталоге сначала создается такая сущность, как сегмент. Как только Topology плагин контроллера видит относящийся к нему сегмент, для которого не создано соглашение, он создает такое соглашение. Сначала создается соглашение в одном направлении, затем в обратном, и при наличии двух взаимонаправленных сегментов они удаляются и создается третий сегмент, у которого направление Both.
Если в домене наблюдается однонаправленное соглашение о репликации, т.е. стрелочка только в одну сторону, и не становится двунаправленной, это означает, что второй сегмент не был создан и для устранения проблемы его нужно создать вручную.
Найти однонаправленные Left-Right сегменты и записать их в файл.
sudo i
set +o history
ldapsearch -Q -xLLL -D "cn=directory manager" -w "AstraLinux_176" -b "cn=domain,cn=topology,cn=ipa,cn=etc,dc=ald,dc=company,dc=lan" "(ipaReplTopoSegmentDirection=left-right)" > direction.ldif
set -o history
exit
Создать python скрипт parcing_topology.py командой, а также этот файл можно скачать в личном кабинете:
nano parcing_topology.py
Сохранить файл с таким содержимым:
with open('direction.ldif') as f:
lines = f.readlines()
ldif_change=""
text_block=""
for line in lines:
text_block=f"{text_block}{line}"
if "ipaReplTopoSegmentLeftNode" in line:
left_node=line.split(":")[1].strip()
if "ipaReplTopoSegmentRightNode" in line:
right_node=line.split(":")[1].strip()
if not line.strip():
text_block=text_block.replace(f"{left_node}-to-{right_node}",f"{right_node}-to-{left_node}")
text_block=text_block.replace(f"ipaReplTopoSegmentLeftNode: {left_node}",f"ipaReplTopoSegmentLeftNode: {right_node}")
text_block=text_block.replace(f"ipaReplTopoSegmentRightNode: {right_node}",f"ipaReplTopoSegmentRightNode: {left_node}")
ldif_change+=f"{text_block}"
text_block=""
with open('add_direction.ldif','w') as f:
f.write(ldif_change)
Запустить следующий скрипт в той же папке и убедиться, что скрипт отработал корректно.
python3 parcing_topology.py
Теперь внести изменения из LDIF-файла в каталог от пользователя admin:
ldapadd -f add_direction.ldif
Проверить, что в системе не осталось Left-Right сегментов.
sudo i
set +o history
ldapsearch -xLLL -D "cn=Directory Manager" -w "AstraLinux_176" -b "cn=domain,cn=topology,cn=ipa,cn=etc,dc=ald,dc=company,dc=lan" "(ipaReplTopoSegmentDirection=left-right)"
set -o history
exit
Перезагрузить сервис ipa или последовательно все серверы, где были проблемы с односторонними соглашениями, для того, чтобы плагин Topology создал недостающие соглашения.
sudo ipactl restart
Соглашение создается, но не всегда запускается репликация после рестарта реплик. Как решение можно использовать команду:
ipa-replica-manage force-sync --from