Linux 배포의 SQL Server 가용성 기본 사항

적용 대상:SQL Server - Linux

SQL Server 2017(14.x)부터 SQL Server는 Linux 및 Windows에서 모두 지원됩니다. Windows 기반 SQL Server 배포와 마찬가지로 SQL Server 데이터베이스 및 인스턴스는 Linux에서 가용성이 높아야 합니다. 이 문서에서는 Windows 기반 설치의 일부 차이뿐만 아니라 고가용성 Linux 기반 SQL Server 데이터베이스 및 인스턴스를 계획하고 배포하는 기술적 측면을 설명합니다. Linux 전문가는 SQL Server를 처음 사용하고 SQL Server 전문가는 Linux를 처음 사용할 수 있으므로 이 문서에서는 때때로 일부 사용자에게는 익숙하고 다른 사용자에게는 익숙하지 않을 수 있는 개념을 소개합니다.

Linux 배포에 대한 SQL Server 가용성 옵션

백업 및 복원 외에도 Windows 기반 배포와 동일한 세 가지 가용성 기능을 Linux에서 사용할 수 있습니다.

Windows에서 FCI에는 항상 기본 WSFC(Windows Server 장애 조치(failover) 클러스터)가 필요합니다. 배포 시나리오에 따라 AG에는 일반적으로 기본 WSFC가 필요합니다. 단, SQL Server 2017(14.x)에는 새로운 없음 변형이 포함됩니다. Linux에는 WSFC가 없습니다. Linux의 클러스터링 구현은 Linux의 가용성 그룹 및 장애 조치(failover) 클러스터 인스턴스에 대한 Pacemaker에서 설명합니다.

빠른 Linux 입문

일부 Linux 설치는 인터페이스와 함께 설치될 수 있지만 대부분은 그렇지 않습니다. 즉, 운영 체제 계층의 거의 모든 것이 명령줄을 통해 수행됩니다. 일반적으로 Linux 환경에서 이 명령줄은 ‘bash 셸’이라는 용어로 사용됩니다.

Windows Server에서 많은 작업을 관리자 권한으로 수행해야 하는 것처럼 Linux에서는 많은 명령을 상승된 권한으로 실행해야 합니다. 상승된 권한으로 실행해야 하는 두 가지 주요 방법이 있습니다.

  1. 적절한 사용자의 컨텍스트에서 실행합니다. 다른 사용자로 변경하려면 su 명령을 사용합니다. 사용자 이름 없이 su만 실행되는 경우 암호를 알고 있다면 이제 ‘루트’로 셸에 있는 것입니다.

  2. 명령을 실행하는 더 일반적이고 보안이 고려된 방법은 실행하기 전에 sudo를 사용하는 것입니다. 이 문서의 많은 예제에서는 sudo를 사용합니다.

몇 가지 일반적인 명령은 각각 온라인으로 조사할 수 있는 다양한 스위치 및 옵션을 포함합니다.

  • cd - 디렉터리 변경
  • chmod - 파일 또는 디렉터리의 권한 변경
  • chown - 파일 또는 디렉터리의 소유권 변경
  • ls - 디렉터리의 콘텐츠 표시
  • mkdir - 드라이브에 폴더(디렉터리) 만들기
  • mv - 파일을 다른 위치로 이동
  • ps - 모든 작업 프로세스 표시
  • rm - 서버에서 로컬로 파일 삭제
  • rmdir - 폴더(디렉터리) 삭제
  • systemctl - 서비스 시작, 중지 또는 사용
  • 텍스트 편집기 명령입니다. Linux에는 vi 및 emacs와 같은 다양한 텍스트 편집기 옵션이 있습니다.

Linux에서 SQL Server의 가용성 구성에 대한 일반 작업

이 섹션에서는 모든 Linux 기반 SQL Server 배포에 공통적인 작업에 대해 설명합니다.

파일을 복사할 수 있는지 확인

한 서버에서 다른 서버로 파일을 복사하는 작업은 Linux에서 SQL Server를 사용하는 사용자가 수행할 수 있어야 합니다. 이 작업은 AG 구성에 매우 중요합니다.

권한 문제와 같은 항목은 Linux 및 Windows 기반 설치에 있을 수 있습니다. 그러나 Windows의 서버에서 서버로 복사하는 방법에 익숙한 사람들은 Linux에서 수행하는 방법에 익숙하지 않을 수 있습니다. 일반적인 방법은 Secure Copy의 약어인 명령줄 유틸리티 scp를 사용하는 것입니다. 내부적으로는 scp는 OpenSSH를 사용합니다. SSH는 Secure Shell의 약어입니다. Linux 배포에 따라 OpenSSH 자체가 설치되지 않을 수 있습니다. 그렇지 않으면 OpenSSH가 먼저 설치되어야 합니다. OpenSSH 구성에 대한 자세한 내용은 각 배포에 대한 다음 링크의 정보를 참조하세요.

scp를 사용할 때 원본 또는 대상이 아닌 경우에는 서버의 자격 증명을 제공해야 합니다. 예를 들어 다음을 사용하면

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

MyAGCert.cer 파일이 다른 서버에 지정된 폴더로 복사됩니다. 파일을 복사하려면 파일의 사용 권한과 소유권이 있어야 하므로 chown 복사하기 전에 사용해야 할 수도 있습니다. 마찬가지로 받는 쪽에 있는 해당 사용자는 파일을 조작하려면 액세스 권한이 필요합니다. 예를 들어 해당 인증서 파일을 복원하려면 mssql 사용자가 해당 파일에 액세스할 수 있어야 합니다.

SMB(서버 메시지 블록)의 Linux 변형인 Samba는 UNC 경로(예: \\SERVERNAME\SHARE)를 통해 액세스하는 공유를 만드는 데 사용될 수도 있습니다. Samba 구성에 대한 자세한 내용은 각 배포에 대한 다음 링크의 정보를 참조하세요.

Windows 기반 SMB 공유를 사용할 수도 있으며, Samba의 클라이언트 부분이 SQL Server를 호스트하는 Linux 서버에서 제대로 구성되고 공유에 적절한 액세스 권한이 있는 경우에는 SMB 공유가 Linux 기반일 필요가 없습니다. 혼합 환경에 있는 사용자의 경우 Linux 기반 SQL Server 배포에 기존 인프라를 사용하는 것이 한 가지 방법입니다.

한 가지 중요한 점은 배포된 Samba 버전이 SMB 3.0 규격이어야 한다는 것입니다. SMB 지원이 SQL Server 2012(11.x)에 추가된 경우 모든 공유가 SMB 3.0을 지원해야 했습니다. 공유에 Windows Server가 아닌 Samba를 사용하면 Samba 기반 공유는 Samba 4.0 이상을 사용해야 하며, SMB 3.1.1을 지원하는 4.3 이상을 사용하는 것이 가장 좋습니다. SMB 및 Linux에 대한 자세한 내용은 SMB3 in Samba(Samba의 SMB3)를 참조하세요.

마지막으로, NFS(네트워크 파일 시스템) 공유를 사용할 수 있습니다. NFS는 SQL Server의 Windows 기반 배포에서 사용할 수 없으며 Linux 기반 배포에만 사용할 수 있습니다.

방화벽 구성

Windows와 마찬가지로 Linux 배포에는 기본 제공 방화벽이 있습니다. 회사에서 서버에 외부 방화벽을 사용하는 경우 Linux에서 방화벽을 사용하지 않도록 설정하는 것이 허용될 수 있습니다. 그러나 방화벽이 사용하도록 설정된 위치에 관계없이 포트가 열려 있어야 합니다. 다음 표에서는 Linux에서 고가용성 SQL Server 배포에 필요한 공통 포트를 설명합니다.

포트 번호 Type Description
111 TCP/UDP NFS - rpcbind/sunrpc
135 TCP Samba(사용되는 경우) - 엔드포인트 매퍼
137 UDP Samba(사용되는 경우) - NetBIOS 이름 서비스
138 UDP Samba(사용되는 경우) - NetBIOS 데이터그램
139 TCP Samba(사용되는 경우) - NetBIOS 세션
445 TCP Samba(사용되는 경우) - SMB over 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 - AG 엔드포인트에 사용되는 기본 포트이며, 엔드포인트를 만들 때 변경할 수 있음
5403 TCP Pacemaker
5404 UDP Pacemaker - 멀티캐스트 UDP를 사용하는 경우 Corosync에 필요함
5405 UDP Pacemaker - Corosync에 필요함
21064 TCP Pacemaker - DLM을 사용하는 리소스에 필요함
변수 TCP AG 엔드포인트 포트이며, 기본값은 5022임
변수 TCP NFS - LOCKD_TCPPORT에 대한 포트(RHEL의 경우 /etc/sysconfig/nfs에 있음)
변수 UDP NFS - LOCKD_UDPPORT에 대한 포트(RHEL의 경우 /etc/sysconfig/nfs에 있음)
변수 TCP/UDP NFS - MOUNTD_PORT에 대한 포트(RHEL의 경우 /etc/sysconfig/nfs에 있음)
변수 TCP/UDP NFS - STATD_PORT에 대한 포트(RHEL의 경우 /etc/sysconfig/nfs에 있음)

Samba에서 사용할 수 있는 추가 포트는 Samba 포트 사용량을 참조하세요.

반대로, Linux에서 서비스 이름을 포트 대신 예외로 추가할 수도 있습니다(예: Pacemaker에 대한 high-availability). 이 방법을 사용하려면 이름에 대한 배포를 참조하세요. 예를 들어 RHEL에서 Pacemaker에 추가할 명령은 다음과 같습니다.

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

방화벽 설명서

가용성을 위한 SQL Server 패키지 설치

Windows 기반 SQL Server 설치에서 일부 구성 요소는 기본 엔진 설치에도 설치되지만 다른 구성 요소는 설치되지 않습니다. Linux에서는 SQL Server 엔진만 설치 프로세스의 일부로 설치됩니다. 다른 모든 항목은 선택 사항입니다. Linux에서 고가용성 SQL Server 인스턴스의 경우 다음 두 개의 패키지가 SQL Server와 함께 설치됩니다.

  • SQL Server 에이전트(mssql-server-agent)
  • HA(고가용성) 패키지(mssql-server-ha)

SQL Server 에이전트는 기술적으로 선택 사항이지만 작업을 위한 SQL Server 스케줄러이며 로그 전달에 필요하므로 설치하는 것이 좋습니다.

CU 4 이상 버전의 SQL Server 2017(14.x)에서 SQL Server 에이전트는 데이터베이스 엔진 패키지에 포함되어 있지만 여전히 사용하도록 설정해야 합니다. Windows 기반 설치에서 SQL Server 에이전트는 선택 사항이 아닙니다.

참고

SQL Server를 처음 사용하는 사용자의 경우 SQL Server 에이전트는 SQL Server의 기본 제공 작업 스케줄러입니다. DBA가 백업 및 기타 SQL Server 유지 관리와 같은 작업을 예약하는 일반적인 방법입니다. SQL Server 에이전트가 완전히 다른 서비스인 SQL Server의 Windows 기반 설치와 달리, Linux에서 SQL Server 에이전트는 SQL Server 자체의 컨텍스트에서 실행됩니다.

Windows 기반 구성에서 구성된 AG 또는 FCI는 클러스터를 인식합니다. 클러스터 인식은 SQL Server가 WSFC에서 인식하는 특정 리소스 DLL(FCI에 대한 sqagtres.dllsqsrvres.dll, AG에 대한 hadrres.dll)을 포함하며 WSFC에서 SQL Server 클러스터형 기능이 시작되어 제대로 실행되는지 확인하는 데 사용된다는 것을 의미합니다. 클러스터링은 SQL Server뿐 아니라 Linux 자체에 대해서도 외부이므로, Microsoft에서는 Linux 기반 AG 및 FCI 배포에 해당하는 리소스 DLL을 코딩해야 했습니다. 이는 Pacemaker의 SQL Server 리소스 에이전트라고도 하는 mssql-server-ha 패키지입니다. mssql-server-ha 패키지를 설치하려면 SQL Server on Linux용 Pacemaker 클러스터 배포를 참조하세요.

SQL Server on Linux, SQL Server 전체 텍스트 검색(mssql-server-fts) 및 SQL Server Integration Services(mssql-server-is)의 다른 선택적 패키지는 FCI 또는 AG의 고가용성에 필요하지 않습니다.

SQL Server 고가용성 및 재해 복구 파트너

SQL Server 서비스에 대한 고가용성 및 재해 복구를 제공하려면 다양한 업계 최고의 도구 중에서 선택합니다. 이 섹션에서는 SQL Server를 지원하는 고가용성 및 재해 복구 솔루션이 있는 Microsoft 파트너 회사를 강조 표시합니다.

파트너 Description
DH2i DxEnterprise는 Windows, Linux 및 Docker용 스마트 가용성 소프트웨어로, 계획되지 않은 가장 가까운 계획 및 계획되지 않은 가동 중지 시간을 달성하고, 막대한 비용을 절감하고, 관리를 대폭 간소화하며, 물리적 및 논리적 통합을 모두 수행할 수 있습니다.

- AKS에서 SQL Server 컨테이너용 DH2i를 사용해 가용성 그룹 배포
- 자습서: DH2i DxEnterprise를 사용하여 3개 노드 Always On 가용성 그룹 설정
HPE Serviceguard HPE SGLX는 장애 조치(failover) 클러스터 인스턴스 및 Always On 가용성 그룹에 대한 상황에 맞는 모니터링 및 복구 옵션을 제공합니다. 데이터 무결성 및 성능 저하 없이 HPE SGLX의 가동 시간을 극대화합니다.

- 자습서: Linux용 HPE Serviceguard를 사용하여 3개 노드 Always On 가용성 그룹 설정.
Pacemaker Pacemaker는 오픈 소스 고가용성 클러스터 리소스 관리자입니다. 오픈 소스 그룹 통신 시스템인 Corosync를 통해 Pacemaker는 구성 요소 오류를 감지하고 필요한 장애 조치(failover) 절차를 오케스트레이션하여 애플리케이션 중단을 최소화할 수 있습니다.

- Linux의 AG 및 FCI용 Pacemaker
- SQL Server on Linux용 Pacemaker 클러스터 배포