- PVSM.RU - https://www.pvsm.ru -
.png)
В недавно опубликованной статье [1] TerAnYu [2] описал как производил миграцию домена с Samba на Active Directory. Способ был выбран, на мой взгляд, очень интересный, но, к сожалению, при миграции небольшого домена (автор упоминает в тексте статьи о 70 пользователях офиса) многие интересные проблемы остались «за кадром».
Я, в свою очередь, постараюсь абстрагироваться от скриптов дампа/восстановления пользователей и сконцентрироваться на описании возникших проблем и их решения. Быть может описанный опыт поможет кому-нибудь сократить трудозатраты на подготовку миграции.
И, конечно, я слукавил — простой будет, но самый минимальный.
Чтобы предупредить все дальнейшие вопросы про Samba отвечу:
Изначально заложенная (нами в нашей инсталляции, а не разработчиками) в домен на Samba архитектура имела некоторые просчёты, которые проявили себя при масштабировании домена. Когда встала необходимость полной реструктуризации домена, взвесив все «за» и «против», руководство приняло решение вместо реорганизации Samba мигрировать на Active Directory.
Этот вопрос далее считаю закрытым.
Опишу вкратце концепцию миграции:
Теперь рассмотрим каждый этап по-порядку.
Этот перечень должен быть все зависимости собираетесь ли вы куда-то мигрировать или нет. Всегда важно знать кто и как использует Ваш домен. Список должен содержать информацию о:
Этот список потребуется Вам при перенастройке сервисов.
Они потребуются и подготовить их следует заранее (мы ведь не хотим, чтобы бизнес простаивал!).
Что изменится? Вполне логично, что просле переезда у Вас останется ещё большое количество linux систем, которые необходимо
будет интегрировать в новый домен (быть может от большей части этих систем вы и не собираетесь избавляться)
Тут начинаются интересные моменты.
Samba не контролирует уникальности SID. Поэтому в большом, распределённом домене Вы можете получить несколько объектов безопасности с одинаковым SID. Как-правило это следствие ошибки администратора и эту ошибку надо исправлять немедленно! Наличие нескольких объектов безопасности с одинаковым SID недопустимо (но, к сожалению, в доменах Samba я не раз сталкивался с таким явлением)
В типовой (по мануалу из интернета) инсталляции samba RID начинают выдаваться с 1000. К сожалению, описанным выше методом Вы не сможете мигрировать объекты безопасности с RID меньше чем примерно 1034 (каюсь — запамятовал точное число, но его легко выяснить — поставьте чистый контроллер нового домена и посмотрите последний RID). При создании домена Active Directory создаётся ряд служебных объектов безопасности и они «занимают» эти самые первые RID
В этих двух описанных случаях решение одно:
Вы ведь заранее выгрузили и проанализировали дамп домена на Samba? До часа X еще далеко? Значит есть время не спеша разобраться во всех конфликтных ситуациях и исправить их с минимальными простоями для бизнеса.
Во-первых — постарайтесь, чтобы на сервере до повышения роли не было посторонних локальных групп и пользователей (иначе они увеличат числа изначально занятых RID) — это может случиться, если вы будете использовать какой-нибудь типовой образ сервера.
Во-вторых надо достать newsid. На официальном сайте её удалили [4], но, как говорится, что попало в интернет…
Да, подготавливать новый домен вы можете рядом с существующем (я крайне это рекомендую), вы же не намерены сохранять старое NETBIOS имя домена?!
При переводе ПК в новый домен (да и при синхронизации паролей) Вам потребуется, чтобы имена в обоих доменах корректно разрешались на любом компьютере в вашей инфраструктуре. Имеет смысл настроить Conditional Forwarding на DNS серверах, обслуживающих оба домена.
Тут хорошо иметь дамп домена, отсортированный по RID.
Выбор средства для импорта дампа — за Вами. Я изначально набросал скрипт на VBScript, но в итоге пришлось переписать всё на C# — иначе получалось очень медленно (перед часом X я проводил тестовую миграцию не один раз для выявления потенциальных проблем). Импорт всех данных прошёл у меня примерно за половину суток (это с некоторыми ухищрениями — о них далее).
Когда домен старый и когда домен большой велика вероятность фрагментации пула RID (в Вашем дампе домена, отсортированном по RID могут быть большие пропуски: пользователи/группы/компьютеры были заведены, а затем удалены) — логично решение:
Создавать пользователя, получать его RID, удалять пользователя. Если RID-1 равно RID следующего пользователя из дампа — заводить пользователя из дампа, иначе повторять цикл «накрутки» RID.
Решение логичное, но оченькатастрофически медленное.
Размер пула RID по-умолчанию — 500. Есть хороший механизм invalidateRidPool [5], который заставляет сервер запросить у RID Master новый пул.
Использование invalidateRidPool позволило нам значительно сократить время на «прокрутку» RID, а также облегчило следующую проблему.
К сожалению, после «накрутки» RID в Active Directory Остаётся очень много tombstone [6] из-за них ntds.dit приобретает колоссальные размеры и его репликация на удалённые площадки начинает выглядеть головной болью. Как от них избавиться и облегчить ntds.dit? Только естественным путём.
tombstoneLifetime [6] задаёт время жизни удалённого объекта в Active Directory (не путать с объектами в Recucle Bin — это разные вещи) минимальное значение, которое может быть установлено — 2 дня (значение по-умолчанию — 180 дней), т.е. из база будут удаляться удалённые объекты старше двух дней. Если установить tombstoneLifetime = 2 и подождать два дня… удалится только первые 5000 tombstones. Tombstones удаляются в результате выполнения процедуры Garbage Collection. Процедура эта самостоятельно запускается раз в 12 часов и удаляет не более 5000 объектов за раз. Чтобы очистить большее количество tombstones потребуется выполнить несколько раз Garbage Collection: сократив интервал запуска [7], либо вызвав процедуру принудительно. [8]
После этого обязательно верните значение tombstoneLifetime и сделайте offline дефрагментацию ntds.dit
Вариантов «как это сделать» несколько:
В общем выбирать Вам. Я предпочитаю первый вариант.
Все предыдущие этапы никак не влияли на работу домена. Это была только подготовка, которую можно проводить месяцами, не мешая работе бизнеса. Оставшиеся два этапа придётся делать в согласованный с бизнесом интервал простоя. При соответствующей подготовке и наличии необходимого количества рук простой реально сократить до нескольких ночей (в зависимости от размеров домена, может быть и до нескольких часов).
Тут важно знать простой в работе каких сервис и каких пользователей критичен, а какие могут подождать — в общем Вам надо знать бизнес процессы Вашей компании.
Проверьте ещё раз настройки нового домена: IP-подсети, сайты, политики, настройка синхронизации времени с внешнего источника на вашем эмуляторе PDC.
Проверьте что с ваших рабочих станций корректно разворачиваются DNS имена обоих доменов.
Если OC на членах домена XP/2003 и выше — проблем особых не будет — они легко переводятся сразу в новый домен с помощью JoinDomainOrWorkgroup [11]
Для 2000-х придётся сделать промежуточную перезагрузку (вывести из домена-перезагрузить-ввести в домен)
Здесь Вы можете воспользоваться любой доступной Вам системой централизованного управления, либо написать собственные скрипты (они получатся довольно простые). Не забудьте, что для перевода ПК из домена в домен Вам потребуется учётная запись с соответствующими привилегиями как в домене, так и на самих ПК.
Да, не забудьте в настройка DHCP сервера изменить адреса DNS-ов на новые (Вы ведь намерены использовать AD-интегрированные зоны MS DNS не так ли?) Сам DHCP сервер можно сразу не мигрировать (вы потеряете не много функционала) — его можно будет безболезненно заменить на продукт от Microsoft позже.
Вы же подготовили новые файлы конфигурации(инструкции по перенастройке), протестировали новые настройки на макете — так что проблем возникнуть не должно.
Потратив много времени на подготовку, около 3-4 дней на импорт объектов безопасности можно перевести компанию с Samba на Active Directory за 1 — несколько ночей.
Если у Вас есть другое видение/опыт подобной миграции — поделитесь пожалуйста — очень интересно проанализировать свои действия, узнать, что можно было бы сделать лучше.
Естественно я затронул только общие проблемы и особенности — двух одинаковых компаний не бывает и везде будут свои уникальные загвоздки.
Автор: Slipeer
Источник [12]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/windows/30332
Ссылки в тексте:
[1] статье: http://habrahabr.ru/post/173985/
[2] TerAnYu: http://habrahabr.ru/users/teranyu/
[3] newsid: http://download.chip.eu/ru/NewSID_163121.html
[4] На официальном сайте её удалили: http://technet.microsoft.com/en-us/sysinternals/bb897418.aspx
[5] invalidateRidPool: http://msdn.microsoft.com/en-us/library/cc223300.aspx
[6] tombstone: http://technet.microsoft.com/en-us/library/cc784932%28v=ws.10%29.aspx
[7] сократив интервал запуска: http://technet.microsoft.com/en-us/library/bb727062.aspx#E0LE0AA
[8] вызвав процедуру принудительно.: http://msdn.microsoft.com/en-us/library/cc223317.aspx
[9] скрипт проверки сложности пароля: http://smb-conf.ru/check-password-script-g.html
[10] у Вас есть возможность узнать пароли своих пользователей.: http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CDYQFjAA&url=http%3A%2F%2Fwww.openwall.com%2Fjohn%2F&ei=ZwFQUe2oNsmatQbDsIHwCg&usg=AFQjCNFrCSIEQUjDNDqEEFWYWSjUb6yA8g&sig2=xDiCLTohTxznfK7i3lmAJA&bvm=bv.44158598,d.Yms
[11] JoinDomainOrWorkgroup: http://msdn.microsoft.com/en-us/library/windows/desktop/aa392154%28v=vs.85%29.aspx
[12] Источник: http://habrahabr.ru/post/174139/
Нажмите здесь для печати.