Основные сведения о доступности SQL Server для развертываний Linux

Область применения: SQL Server — Linux

Начиная с SQL Server 2017 (14.x), SQL Server поддерживается как в Linux, так и в Windows. Как и развертывания SQL Server под управлением Windows, базы данных и экземпляры SQL Server должны быть высокодоступными в Linux. В этой статье рассматриваются технические аспекты планирования и развертывания высокодоступных баз данных и экземпляров SQL Server под управлением Linux, а также некоторые отличия от установок на основе Windows. Так как SQL Server может быть новым для специалистов Linux, и Linux может быть новым для специалистов SQL Server, статья иногда вводит понятия, которые могут быть знакомы некоторым и незнакомым для других.

Параметры доступности SQL Server для развертываний Linux

Помимо резервного копирования и восстановления, в Linux поддерживаются те же три компонента доступности, что и в развертываниях на основе Windows.

В Windows экземпляр FCI всегда должен находиться в отказоустойчивом кластере Windows Server (WSFC). В зависимости от сценария развертывания группа доступности обычно требует базового WSFC, за исключением нового варианта None в SQL Server 2017 (14.x). WSFC не существует в Linux. Реализация кластеризации в Linux обсуждается в Pacemaker для групп доступности и экземпляров отказоустойчивого кластера в Linux.

Краткое руководство по Linux

Хотя некоторые установки Linux могут быть установлены с интерфейсом, большинство из них не имеют значения, что означает, что почти все на уровне операционной системы выполняется с помощью командной строки. Эта командная строка в среде Linux называется оболочкой bash.

В Linux многие команды должны запускаться с повышенными привилегиями, что соответствует выполнению многих задач в Windows Server с правами администратора. Существует два основных метода выполнения задач с повышенными привилегиями.

  1. Выполнение в контексте соответствующего пользователя. Чтобы сменить пользователя, используйте команду su. Если su выполняется самостоятельно без имени пользователя, если вы знаете пароль, вы находитесь в оболочке как root.

  2. Наиболее распространенным и безопасным способом является предварительное использование sudo. Вы увидите sudo во многих примерах в этой статье.

Ниже приводятся некоторые распространенные команды, у каждой из которых есть различные параметры, доступные для поиска в Интернете.

  • cd — изменение каталога
  • chmod — изменение разрешений для файла или каталога
  • chown — изменение владельца файла или каталога
  • ls — отображение содержимого каталога
  • mkdir — создание папки (каталога) на диске
  • mv — перемещение файла из одного места в другое
  • ps — отображение всех рабочих процессов
  • rm — удаление файла локально на сервере
  • rmdir — удаление папки (каталога)
  • systemctl — запуск, остановка или включение служб
  • Команды текстового редактора. В Linux существуют различные параметры текстового редактора, например vi и emacs.

Общие задачи для конфигураций доступности SQL Server на Linux

В этом разделе рассматриваются задачи, которые являются общими для всех развертываний SQL Server под управлением Linux.

Возможность копирования файлов

Копирование файлов с одного сервера на другой — это задача, которую любой пользователь, использующий SQL Server на Linux, должен иметь возможность. Она очень важна для конфигураций группы доступности.

Такие проблемы, как разрешения, могут существовать в Linux и на установках под управлением Windows. Тем не менее, знакомые с тем, как скопировать с сервера на сервер в Windows, возможно, не знакомы с тем, как это делается в Linux. Распространенным способом является использование служебной программы командной строки scp, которая расшифровывается как "secure copy" (безопасное копирование). В фоновом режиме scp использует OpenSSH. SSH означает "secure shell" (безопасная оболочка). В зависимости от дистрибутива Linux сам OpenSSH может быть не установлен. Если это не так, сначала необходимо установить OpenSSH. Дополнительные сведения о настройке OpenSSH см. по следующим ссылкам для каждого дистрибутива:

При использовании scpнеобходимо указать учетные данные сервера, если он не является источником или назначением. Например, следующая команда

scp MyAGCert.cer username@servername:/folder/subfolder

копирует файл MyAGCert.cer в папку, указанную на другом сервере. Для копирования файла необходимо иметь разрешения и, возможно, владение им, поэтому chown может потребоваться также использовать его. Кроме того, на принимающей стороне работать с файлом должен пользователь с надлежащими правами. Например, чтобы восстановить этот файл сертификата, пользователь mssql должен иметь к нему доступ.

Создавать общие ресурсы, доступ к которым осуществляется по UNC-путям, таким как \\SERVERNAME\SHARE, можно с помощью Samba, который является разновидностью протокола SMB в Linux. Дополнительные сведения о настройке Samba см. по следующим ссылкам для каждого дистрибутива:

Общие папки SMB на основе Windows также можно использовать; Общие папки SMB не должны быть основаны на Linux, если клиентская часть Samba настроена правильно на сервере Linux, на котором размещен SQL Server, и общий ресурс имеет правильный доступ. Для тех, кто в смешанной среде, это будет одним из способов использования существующей инфраструктуры для развертываний SQL Server на основе Linux.

Важно отметить, что версия развернутого пакета Samba должна быть совместима с SMB 3.0. При добавлении поддержки SMB в SQL Server 2012 (11.x) все общие папки должны поддерживать SMB 3.0. Если в качестве общего ресурса используется Samba, а не Windows Server, то общий ресурс на основе Samba должен поддерживать Samba 4.0 или более позднюю версию, а в идеале — 4.3 или более позднюю версию, которая поддерживает SMB 3.1.1. Сведения об SMB и Linux см. в документе об SMB3 в Samba.

Кроме того, можно использовать общий ресурс сетевой файловой системы (NFS). Использование NFS не является вариантом развертывания SQL Server на основе Windows и может использоваться только для развертываний на основе Linux.

Настройка брандмауэра

Как и в Windows, дистрибутивы Linux имеют встроенный брандмауэр. Если ваша компания использует внешний брандмауэр для серверов, отключение брандмауэров в Linux может быть приемлемым. Однако независимо от того, на какой платформе включен брандмауэр, необходимо открыть порты. В следующей таблице перечислены общие порты, необходимые для высокодоступных развертываний SQL Server в Linux.

Номер порта Тип Описание
111 TCP/UDP NFS — rpcbind/sunrpc
135 TCP Samba (если используется) — Mapper конечной точки
137 UDP Samba (если используется) — служба имен NetBIOS
138 UDP Samba (если используется) — датаграмма NetBIOS
139 TCP Samba (если используется) — сеанс NetBIOS
445 TCP Samba (если используется) — SMB по TCP
1433 TCP SQL Server — порт по умолчанию; При желании может измениться с помощью mssql-conf set network.tcpport <portnumber>
2049 TCP, UDP; NFS (если используется)
2224 TCP Pacemaker — используется pcsd
3121 TCP Pacemaker — требуется при наличии удаленных узлов Pacemaker
3260 TCP Инициатор iSCSI (если используется) — может быть изменен в /etc/iscsi/iscsid.config (RHEL), но должен соответствовать порту целевого объекта iSCSI.
5022 TCP SQL Server — порт по умолчанию, используемый для конечной точки группы доступности; при создании конечной точки можно изменить
5403 TCP Pacemaker
5404 UDP Pacemaker — требуется для Corosync при использовании многоадресного протокола UDP
5405 UDP Pacemaker — требуется для Corosync
21064 TCP Pacemaker — требуется для ресурсов, использующих DLM
«Переменная» TCP Порт конечной точки группы доступности, значение по умолчанию — 5022
«Переменная» TCP NFS — порт для LOCKD_TCPPORT (находится в /etc/sysconfig/nfs в RHEL)
«Переменная» UDP NFS — порт для LOCKD_UDPPORT (находится в /etc/sysconfig/nfs в RHEL)
«Переменная» TCP/UDP NFS — порт для MOUNTD_PORT (находится в /etc/sysconfig/nfs в RHEL)
«Переменная» TCP/UDP NFS — порт для STATD_PORT (находится в /etc/sysconfig/nfs в RHEL)

Дополнительные порты, которые могут использоваться Samba, см. в разделе "Использование портов Samba".

И наоборот, как исключение, вместо порта можно добавить имя службы в Linux. Например, high-availability для Pacemaker. Если вы хотите выбрать этот вариант, см. соответствующий дистрибутив. Например, в RHEL используется следующая команда для добавления в Pacemaker:

sudo firewall-cmd --permanent --add-service=high-availability

Документация по брандмауэру

Установка пакетов SQL Server для доступности

При установке SQL Server под управлением Windows некоторые компоненты устанавливаются даже в базовой установке ядра, а другие — нет. В Linux в процессе установки устанавливается только подсистема SQL Server. Все остальное является необязательным. Для экземпляров SQL Server с высоким уровнем доступности в Linux необходимо установить два пакета с SQL Server:

  • агент SQL Server (mssql-server-agent)
  • пакет высокого уровня доступности (HA) (mssql-server-ha)

Хотя агент SQL Server технически необязателен, это планировщик SQL Server для заданий и требуется для доставки журналов, поэтому рекомендуется установить.

В SQL Server 2017 (14.x) с накопительным пакетом обновления 4 и более поздних версий агент SQL Server включен в пакет ядро СУБД, но его все равно необходимо включить. В установках под управлением Windows агент SQL Server не является необязательным.

Примечание.

Для новых для SQL Server агент SQL Server — встроенный планировщик заданий SQL Server. Вы можете запланировать такие операции, как резервное копирование и другое обслуживание SQL Server. В отличие от установки SQL Server под управлением Windows, где агент SQL Server является совершенно другой службой в Linux, агент SQL Server выполняется в контексте самого SQL Server.

Группы доступности или экземпляры FCI, настраиваемые в конфигурации на основе Windows, поддерживают кластер. Осведомленность о кластере означает, что SQL Server имеет определенные библиотеки DLL ресурсов, о которых знает WSFC (sqagtres.dll и sqsrvres.dll для hadrres.dll групп управления доступом) и используется WSFC для обеспечения правильной работы, работы и функционирования кластеризованных функций SQL Server. Так как кластеризация является внешней не только для SQL Server, но и самой Linux, корпорация Майкрософт должна была закодировать эквивалент библиотеки DLL ресурсов для развертываний группы доступности на основе Linux и FCI. Это пакет, также известный mssql-server-ha как агент ресурсов SQL Server для Pacemaker. Чтобы установить mssql-server-ha пакет, см. раздел "Развертывание кластера Pacemaker для SQL Server на Linux".

Другие необязательные пакеты для SQL Server на Linux, полнотекстового поиска SQL Server (mssql-server-fts) и служб SQL Server Integration Services (mssql-server-is), не требуются для обеспечения высокой доступности для FCI или группы доступности.

Партнеры в области высокой доступности и аварийного восстановления SQL Server

В отрасли доступно множество передовых средств, позволяющих обеспечить высокую доступность и аварийное восстановление для служб SQL Server. В этом разделе рассматриваются партнерские компании Майкрософт с высоким уровнем доступности и решениями аварийного восстановления, поддерживающими SQL Server.

Партнер Description
DH2i DxEnterprise — это ПО для обеспечения смарт-доступности для Windows, Linux и Docker, которое помогает добиться почти нулевого запланированного и незапланированного простоя, позволяет реализовать огромный потенциал экономии затрат, значительно упрощает управление и обеспечивает как физическую, так и логическую консолидацию.

- Развертывание групп доступности с помощью DH2i DxEnterprise в Kubernetes
- Руководство. Настройка группы доступности AlwaysOn с помощью DH2i DxEnterprise
HPE Serviceguard HPE SGLX предлагает параметры мониторинга и восстановления с учетом контекста для экземпляра отказоустойчивого кластера и групп доступности AlwaysOn. С помощью HPE SGLX вы можете обеспечить максимальное время доступности, не жертвуя целостностью данных и производительностью.

- Руководство. Настройка группы доступности AlwaysOn с помощью HPE Serviceguard для Linux с тремя узлами.
Pacemaker Pacemaker — это открытый код диспетчер ресурсов кластера высокой доступности. С помощью Corosync система открытый код групповой связи Pacemaker может обнаруживать сбои компонентов и оркестрировать необходимые процедуры отработки отказа, чтобы свести к минимуму прерывания работы приложений.

- Pacemaker для групп доступности и экземпляров отказоустойчивого кластера в Linux
- Развертывание кластера Pacemaker для SQL Server на Linux