Определение
Репликация — это дублирование снимков из одной системы FreeNAS на другой компьютер. Когда на исходном компьютере создается новый снимок, он автоматически реплицируется на конечный компьютер. Репликация обычно используется для хранения копии файлов в отдельной системе, причем эта система иногда находится в другом физическом месте.
Для базовой конфигурации требуется исходная система с исходными данными и системой назначения, в которой данные будут реплицированы. Целевая система готова к получению реплицированных данных, создается периодический снимок данных в исходной системе, а затем создается задача репликации. Поскольку моментальные снимки автоматически создаются на исходном компьютере, они автоматически реплицируются на конечный компьютер.
Примечание 1
Реплицированные данные не отображаются в принимающей системе до завершения задачи репликации.
Примечание 2
Целевой набор данных в принимающей системе автоматически создается в режиме только для чтения для защиты данных. Чтобы смонтировать или просмотреть данные в принимающей системе, создайте клон моментального снимка и используйте клон. Клоны создаются в режиме чтения / записи, что позволяет просматривать или монтировать их. См. «Снимки» для получения дополнительной информации о создании клонов.
Пример: Общая конфигурация — Common Configuration
Примеры, показанные здесь, используют одну и ту же настройку исходных и целевых компьютеров.
Alpha (Source)
Alpha — это исходный компьютер с реплицируемыми данными. Он находится по адресу 10.0.0.102. Том с именем alphavol уже создан, и на этом томе был создан набор данных с именем alphadata. Этот набор данных содержит файлы, которые будут сняты и скопированы на бета-версию.
Этот новый набор данных был создан для этого примера, но новый набор данных не требуется. У большинства пользователей уже есть наборы данных, содержащие данные, которые они хотят воспроизвести.
Создайте периодический снимок исходного набора данных, выбрав Storage ‣ Periodic Snapshot Tasks «Хранилище» ‣ «Задачи периодического моментального снимка». Нажмите на набор данных alphavol / alphadata, чтобы выделить его. Создайте периодический снимок, нажав Periodic Snapshot Tasks «Задачи периодического моментального снимка», затем Add Periodic Snapshot «Добавить периодический снимок», как показано на рисунке.
Этот пример создает моментальный снимок набора alphavol / alphadata каждые два часа с понедельника по пятницу между часами 9:00 и 18:00 (6:00 PM). Снимки автоматически удаляются после истечения срока их действия в две недели.
Beta (Destination)
Бета — это конечный компьютер, на котором копируются реплицированные данные. Он находится по IP-адресу 10.0.0.118. Том с именем betavol уже создан.
Снимки передаются с помощью SSH. Чтобы разрешить входящие соединения, эта услуга включена в бета-версии. Служба не требуется для исходящих подключений, поэтому для Alpha не требуется ее активировать.
Пример: FreeNAS для полуавтоматической установки FreeNAS
FreeNAS предлагает специальный полуавтоматический режим настройки, который упрощает настройку репликации. Создайте задачу репликации в Alpha, нажав Replication Tasks «Задачи репликации» и Add Replication «Добавить репликацию».
alphavol / alphadata выбирается как набор данных для репликации.
betavol — это тома назначения, в котором копируются снимки альфа-данных.
В раскрывающемся списке Setup mode установлен полуавтоматический режим, как показано на рисунке. IP-адрес бета-версии вводится в поле Remote hostname (Удаленное имя хоста). Имя хоста может быть введено здесь, если локальный DNS разрешает это имя хоста.
Примечание 3
Если WebGUI HTTP -> HTTPS Redirect был включен в System ‣ General на конечном компьютере, Remote HTTP/HTTPS Port должен быть установлен на HTTPS-порт (обычно 443), а Remote HTTPS должен быть включен при создании репликации на исходном компьютере.
Поле Remote Auth Token ожидает специальный токен с Beta-компьютера. В бета-версии выберите Storage ‣ Replication Tasks, затем нажмите Temporary Auth Token «Временный токен аутентификации». Диалоговое окно, показывающее токен временной авторизации, показано на рисунке.
Выделите временную строку токена авторизации с помощью мыши и скопируйте ее.
В системе Alpha вставьте скопированную строку токена авторизации в поле Remote Auth Token, как показано на рисунке.
Наконец, нажмите кнопку «ОК», чтобы создать задачу репликации. После создания каждого периодического моментального снимка задача репликации будет копировать ее в целевую систему. См. Limiting Replication Times «Ограничение времени тиражирования» для получения информации о том, как ограничить выполнение репликации.
Примечание 4
Маркер временной авторизации действует только в течение нескольких минут. Если отображается токен, отображается недействительное сообщение, получите новый токен авторизации из системы назначения, очистите поле Remote Auth Token и вставьте новый.
Пример: FreeNAS для FreeNAS Выделенная репликация пользователей
Выделенный пользователь может использоваться для репликации, а не для пользователя root. В этом примере показан процесс с использованием полуавтоматической настройки репликации между двумя системами FreeNAS с выделенным пользователем с именем repluser. Аутентификация ключа SSH используется, чтобы позволить пользователю удаленно регистрироваться без пароля.
В этом примере задача периодического моментального снимка еще не создана. Если периодический снимок, показанный в примерной конфигурации, уже создан, перейдите в Storage ‣ Periodic Snapshot Tasks, нажмите «Задача», чтобы выбрать его, и нажмите «Удалить», чтобы удалить его, прежде чем продолжить.
В Alpha выберите Account ‣ Users («Аккаунт» ‣ «Пользователи»). Нажмите Add User «Добавить пользователя». Введите repluser для Username, введите /mnt/alphavol/repluser в поле Create Home Directory In («Создать домашний каталог»), введите Replication Dedicated User для Full Name и установите параметр Disable password login. Оставьте остальные поля по умолчанию, но обратите внимание на User ID. Нажмите «ОК», чтобы создать пользователя.
В Beta должен быть создан тот же выделенный пользователь, который был создан на компьютере-отправителе. Выберите Account ‣ Users. Нажмите Add User. Введите User ID из Alpha, repluser для Username, введите /mnt/betavol/repluser в поле Create Home Directory In, введите Replication Dedicated User для Full Name и установите параметр Disable password login. Оставьте остальные поля по умолчанию. Нажмите «ОК», чтобы создать пользователя.
Набор данных с тем же именем, что и оригинал, должен быть создан на конечном компьютере Beta. Выберите Storage ‣ Volumes, нажмите «betavol», затем щелкните значок Create Dataset внизу. Введите alphadata в качестве Dataset Name (имени набора данных), затем нажмите Add Dataset (Добавить набор данных).
Пользователю репликации должны быть предоставлены разрешения для набора данных назначения. Еще в Beta откройте оболочку (Shell) и введите следующую команду:
zfs allow -ldu repluser create,destroy,diff,mount,readonly,receive,release,send,userprop betavol/alphadata
Набор данных назначения также должен быть установлен только для чтения. Введите эту команду в командной консоли:
zfs set readonly=on betavol/alphadata
Закройте оболочку, набрав exit и нажав Enter.
Пользователь репликации также должен иметь возможность монтировать наборы данных. Пока в Beta зайдите в System ‣ Tunables. Нажмите Add Tunable (Добавить перестраиваемый). Введите vfs.usermount для Variable, 1 для Value и выберите Sysctl в раскрывающемся списке Type. Нажмите «ОК», чтобы сохранить настраиваемые параметры.
Вернитесь на Alpha, создайте периодический снимок исходного набора данных, выбрав Storage ‣ Periodic Snapshot Tasks. Нажмите на набор данных alphavol / alphadata, чтобы выделить его. Создайте периодический снимок, нажав Periodic Snapshot Tasks (Задачи периодического моментального снимка), затем Add Periodic Snapshot (Добавить периодический снимок).
Еще в Alpha создайте задачу репликации, нажав Replication Tasks (Задачи репликации) и Add Replication (Добавить репликацию). alphavol / alphadata выбирается как набор данных для репликации. betavol / alphadata — это тома назначения и набор данных, в которых копируются снимки альфа-данных.
В раскрывающемся списке Setup mode установлен полуавтоматический (Semi-automatic) режим. IP-адрес Beta вводится в поле Remote hostname (Удаленное имя хоста). Имя хоста может быть введено здесь, если локальный DNS разрешает это имя хоста.
Примечание 5
Если WebGUI HTTP -> HTTPS Redirect был включен в System ‣ General на конечном компьютере, Remote HTTP/HTTPS Port должен быть установлен на HTTPS-порт (обычно 443), а Remote HTTPS должен быть включен при создании репликации на исходном компьютере.
Поле Remote Auth Token ожидает специальный токен с бета-компьютера. В бета-версии выберите Storage ‣ Replication Tasks, затем нажмите Temporary Auth Token (Временный токен аутентификации). Диалоговое окно, показывающее токен временной авторизации, показано на рисунке 8.3.3.
Выделите временную строку токена авторизации с помощью мыши и скопируйте ее.
В системе Alpha вставьте скопированную строку токена авторизации в поле Remote Auth Token, как показано на рисунке 8.3.4.
Установите параметр Dedicated User (Выделенный пользователь). Выберите repluser в раскрывающемся списке Dedicated User (Выделенный пользователь).
Нажмите кнопку «ОК», чтобы создать задачу репликации.
Примечание 6
Маркер временной авторизации действует только в течение нескольких минут. Если отображается Token is invalid , получите новый токен авторизации из системы назначения, очистите поле токена удаленного Auth и вставьте новый.
Репликация начнется при выполнении задачи периодического моментального снимка.
Дополнительные репликации могут использовать тот же выделенный пользователь, который уже настроен. Разрешения и настройки только для чтения, выполненные через оболочку, должны быть установлены в каждом новом наборе данных назначения.
Пример: FreeNAS для FreeNAS или других систем, ручная настройка
В этом примере используется одна и та же базовая конфигурация исходных и целевых компьютеров, показанная выше, но конечный компьютер не должен быть системой FreeNAS. Другие операционные системы могут получать репликацию, если они поддерживают SSH, ZFS и те же функции, которые используются в исходной системе. Детали создания томов и наборов данных, включения SSH и копирования ключей шифрования будут отличаться, если конечный компьютер не является системой FreeNAS.
Шифрование ключей
Открытый ключ шифрования должен быть скопирован из Alpha в Beta, чтобы обеспечить безопасное соединение без подсказки пароля. В Alpha выберите Storage ‣ Replication Tasks ‣ View Public Key, создав окно, показанное на рисунке. С помощью мыши выделите ключевые данные, отображаемые в окне, затем скопируйте их.
В Beta выберите Account ‣ Users ‣ View Users. Нажмите на учетную запись root, чтобы выбрать ее, затем нажмите Modify User (Изменить пользователя). Вставьте скопированный ключ в поле SSH Public Key и нажмите «ОК», как показано на рисунке.
Вернитесь на Alpha, создайте задачу репликации, нажав Replication Tasks (Задачи репликации) и Add Replication (Добавить репликацию). alphavol / alphadata выбирается как набор данных для репликации. Точкой назначения является betavol.
Набор данных alphadata и снимки реплицируются там. IP-адрес Beta вводится в поле Remote hostname (Удаленное имя хоста), как показано на рисунке. Имя хоста может быть введено здесь, если локальный DNS разрешает это имя хоста.
Нажмите кнопку SSH Key Scan, чтобы получить ключи хоста SSH от Beta-версии и заполните поле Remote hostkey (Удаленная хост-клавиатура). Наконец, нажмите «ОК», чтобы создать задачу репликации. После создания каждого периодического моментального снимка задача репликации будет копировать ее в целевую систему. См. «Ограничение времени тиражирования» для получения информации о том, как ограничить выполнение репликации.
Параметры репликации — Replication Options
Volume/Dataset
Тип drop-down menu. На исходном компьютере с моментальными копиями снимков выберите существующий пул или набор данных ZFS с активной периодической задачей моментального снимка.
Remote ZFS Volume/Dataset
Тип string. Введите том ZFS или набор данных на удаленном или конечном компьютере, на котором будут храниться снимки. Пример: poolname/datasetname (имя пула / имя набора данных), а не точка монтирования или путь к файловой системе.
Recursively replicate child dataset’s snapshots
Тип checkbox. Если enabled, включает моментальные снимки дочерних наборов данных из первичного набора данных.
Delete stale snapshots
Тип checkbox. Установите для удаления предыдущих снимков из удаленной или целевой системы, которые больше не присутствуют на исходном компьютере.
Replication Stream Compression
Тип drop-down menu. Варианты: lz4 (самый быстрый), pigz (all rounder), plzip (наилучшее сжатие) или Off (без сжатия). Выбор алгоритма сжатия может уменьшить размер реплицируемых данных.
Limit (kB/s)
Тип integer. Ограничьте скорость репликации до указанного значения в килобитах в секунду. Значение по умолчанию 0 не ограничено.
Begin
Тип drop-down menu. Определите время для запуска задачи репликации.
End
Тип drop-down menu. Определите момент времени, с которого должна начинаться репликация. Запущенная задача репликации продолжается до тех пор, пока она не будет завершена.
Enabled
Тип checkbox. Снимите флажок, чтобы отключить запланированную задачу репликации, не удаляя ее.
Setup mode
Тип drop-down menu. Выберите режим конфигурации для удалёнки. Выбирается вручную или полуавтоматически. Примечание: полуавтоматическое работает только с удаленной версией 9.10.2 или новее.
Remote hostname
Тип string. Введите IP-адрес или DNS-имя удаленной системы для получения данных репликации.
Remote port
Тип string. Введите номер порта, используемый сервером SSH на удаленном или конечном компьютере.
Dedicated User Enabled
Тип checkbox. Выберите, чтобы использовать учетную запись, отличную от root для репликации.
Dedicated User
Тип drop-down menu. Доступно только при проверке выделенного пользователя Dedicated User Enabled. Выберите учетную запись пользователя, которая будет использоваться для репликации.
Encryption Cipher
Тип drop-down menu. Standard, Fast, or Disabled. Стандартный, Быстрый или Отключенный.
Remote hostkey
Тип string. Используйте кнопку сканирования ключа SSH, чтобы получить ключ общедоступного хоста удаленного или конечного компьютера и заполнить это поле этим ключом.
Задача репликации выполняется после создания нового периодического моментального снимка. Периодический снимок и любые новые снимки вручную одного и того же набора данных реплицируются на конечный компьютер.
Когда было создано несколько повторений, задачи репликации выполняются последовательно, один за другим. Время завершения зависит от количества и размера снимков и ширины полосы пропускания между исходным и целевым компьютерами.
При первом запуске репликации он должен дублировать структуры данных из источника на конечный компьютер. Это может занять гораздо больше времени, чем последующие репликации, которые только отправляют различия в данных.
Внимание!
Снимки записывают инкрементные изменения в данных. Если принимающая система не имеет хотя бы одного моментального снимка, который может использоваться в качестве основы для инкрементных изменений моментальных снимков из отправляющей системы, нет способа идентифицировать только те данные, которые были изменены. В этой ситуации снимки в целевом наборе данных принимающей системы удаляются, поэтому можно создать полную исходную копию новых реплицированных данных.
Storage ‣ Replication Tasks отображает список задач репликации. Last snapshot sent to remote side (Последний снимок, отправленный в удаленный боковой столбец) показывает имя последнего моментального снимка, который был успешно реплицирован, и Status отображает текущее состояние каждой задачи репликации. Дисплей обновляется каждые пять секунд, всегда отображая последний статус.
Примечание
Ключ шифрования, который был скопирован с исходного компьютера (Alpha) на конечный компьютер (Beta), является открытым ключом RSA, находящимся в файле /data/ssh/replication.pub на исходном компьютере. Общий ключ хоста, используемый для идентификации конечного компьютера (Beta), находится в файле /etc/ssh/ssh_host_rsa_key.pub на конечном компьютере.
Шифрование репликации — Replication Encryption
По умолчанию «Стандартная настройка шифрования» (Encryption Cipher) обеспечивает хорошую безопасность. Fast менее безопасен, чем Standard, но может обеспечить разумную скорость передачи данных для устройств с ограниченной криптографической скоростью. Для сетей, где доверен весь путь между исходным и целевым компьютерами, опция Disabled может быть выбрана для отправки реплицированных данных без шифрования.
Ограничение времени репликации — Limiting Replication Times
Время начала и окончания задачи репликации позволяет ограничить возможность репликации. Эти времена могут быть установлены так, чтобы разрешать репликацию только после рабочего времени или в другое время, когда активность диска или сети не замедлит другие операции, такие как моментальные снимки или скрабы. Настройки по умолчанию позволяют реплицироваться в любое время.
Эти времена управляют, когда задача репликации разрешена для запуска, но не остановит задачу репликации, которая уже запущена. Как только задача репликации начнется, она будет работать до завершения.
Устранение неполадок репликации — Troubleshooting Replication
Репликация зависит от SSH, дисков, сети, сжатия и шифрования для работы. Сбой или неправильная конфигурация любого из них могут препятствовать успешной репликации.
SSH
SSH должен иметь возможность подключаться из исходной системы к целевой системе с помощью ключа шифрования.
Это можно протестировать из Shell, установив соединение SSH из исходной системы в целевую систему.
В предыдущем примере это соединение от Alpha до Beta в 10.0.0.118. Запустите оболочку на исходном компьютере (Alpha), затем введите следующую команду:
ssh -vv -i /data/ssh/replication 10.0.0.118
При первом соединении система может сказать:
No matching host key fingerprint found in DNS.
Are you sure you want to continue connecting (yes/no)?
Убедитесь, что это правильный компьютер назначения из предыдущей информации на экране и введите yes. На данный момент соединение с оболочкой SSH открыто для целевой системы Beta.
Если запрашивается пароль, аутентификация SSH не работает. См. Рисунок выше. Это ключевое значение должно присутствовать в файле /root/.ssh/authorized_keys на Beta назначения.
Файл /var/log/auth.log также может показывать диагностические ошибки для проблем входа на целевом компьютере.
Сжатие — Compression
Соответствующие программы сжатия и декомпрессии должны быть доступны как на исходном, так и на целевом компьютерах.
Это не проблема, когда на обоих компьютерах работает FreeNAS, но у других операционных систем, возможно, не установлены программы сжатия lz4, pigz или plzip, установленные по умолчанию. Простым способом диагностики проблемы является установка сжатия репликации (Replication Stream Compression) в Off.
Если репликация выполняется, выберите предпочтительный метод сжатия и проверьте /var/log/debug.log на систему FreeNAS на наличие ошибок.
Ручное тестирование — Manual Testing
В Alpha исходный компьютер, файл / var / log / messages также может отображать полезные сообщения, чтобы найти проблему.
На исходном компьютере Alpha откройте оболочку и вручную отправьте один снимок на конечный компьютер Beta. Снимок, используемый в этом примере, называется auto-20161206.1110-2w. Как и раньше, он расположен в наборе данных alphavol / alphadata. Символ @ отделяет имя набора данных от имени моментального снимка в команде.
zfs send alphavol/alphadata@auto-20161206.1110-2w | ssh -i /data/ssh/replication 10.0.0.118 zfs recv betavol
Если моментальный снимок этого имени уже существует на конечном компьютере, система откажется перезаписать его с помощью нового моментального снимка. Существующий снимок на конечном компьютере можно удалить, открыв оболочку в бета-версии и выполнив следующую команду:
zfs destroy -R betavol/alphadata@auto-20161206.1110-2w
Затем отправьте снимок вручную снова. Снимки в системе назначения, Beta, могут быть указаны в командной оболочке с помощью списка zfs list -t snapshot или перехода к Storage ‣ Snapshots
Сообщения об ошибках здесь могут указывать на любые оставшиеся проблемы.