Основные сведения о доступности 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.
- Группы доступности для SQL Server на Linux
- Экземпляры отказоустойчивого кластера — SQL Server на Linux
- Начало работы с доставкой журналов в Linux
В Windows экземпляр FCI всегда должен находиться в отказоустойчивом кластере Windows Server (WSFC). В зависимости от сценария развертывания группа доступности обычно требует базового WSFC, за исключением нового варианта None в SQL Server 2017 (14.x). WSFC не существует в Linux. Реализация кластеризации в Linux обсуждается в Pacemaker для групп доступности и экземпляров отказоустойчивого кластера в Linux.
Краткое руководство по Linux
Хотя некоторые установки Linux могут быть установлены с интерфейсом, большинство из них не имеют значения, что означает, что почти все на уровне операционной системы выполняется с помощью командной строки. Эта командная строка в среде Linux называется оболочкой bash.
В Linux многие команды должны запускаться с повышенными привилегиями, что соответствует выполнению многих задач в Windows Server с правами администратора. Существует два основных метода выполнения задач с повышенными привилегиями.
Выполнение в контексте соответствующего пользователя. Чтобы сменить пользователя, используйте команду
su
. Еслиsu
выполняется самостоятельно без имени пользователя, если вы знаете пароль, вы находитесь в оболочке какroot
.Наиболее распространенным и безопасным способом является предварительное использование
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 |