자습서: Linux 가상 머신의 가용성 그룹 수신기 구성
적용 대상:Azure VM 기반 SQL Server
이 자습서에서는 Azure에서 Red Hat Enterprise Linux(RHEL), SUSE Linux Enterprise Server(SLES) 및 Ubuntu용 SQL Server on Linux VM(Virtual Machine)에 대한 AG(가용성 그룹) 수신기를 만드는 방법에 대한 단계를 설명합니다.
이 문서에서 배울 내용은 다음과 같습니다.
- Azure Portal에서 부하 분산 장치 만들기
- 부하 분산 장치에 대한 백 엔드 풀 구성
- 부하 분산 장치에 대한 프로브 만들기
- 부하 분산 규칙 설정
- 클러스터에 부하 분산 장치 리소스 만들기
- AG 수신기 만들기
- 수신기에 대한 연결 테스트
- 장애 조치(failover) 테스트
참고 항목
바이어스 없는 통신
이 문서에는 이 컨텍스트에서 사용될 때 Microsoft가 불쾌한 표현으로 간주하는 용어인 슬레이브 용어에 대한 참조가 포함되어 있습니다. 이 용어가 이 문서에 나타나는 이유는 현재 소프트웨어에 나타나기 때문입니다. 소프트웨어에서 이 용어가 제거되면 문서에서 제거할 것입니다.
전제 조건
Azure Portal에서 부하 분산 장치 만들기
다음 지침은 부하 분산 장치 및 가용성 그룹 수신기 구성(Azure VM 기반 SQL Server) 문서의 Azure Portal에서 부하 분산 장치 만들기 및 구성의 1~4단계를 안내합니다.
부하 분산 장치 만들기
Azure 포털에서 SQL Server 가상 머신을 포함하는 리소스 그룹을 엽니다.
리소스 그룹에서 추가를 선택합니다.
부하 분산 장치를 검색한 후 검색 결과에서 Microsoft에서 게시하는 부하 분산 장치를 선택합니다.
부하 분산 장치 창에서 만들기를 선택합니다.
부하 분산 장치 만들기 대화 상자에서 다음과 같이 부하 분산 장치를 구성합니다.
설정 값 이름 부하 분산 장치를 나타내는 텍스트 이름입니다. 예들 들어 sqlLB
입니다.형식 내부 가상 네트워크 이전에 만든 기본 가상 머신의 이름은 VM1VNET
입니다.서브넷 SQL Server 인스턴스가 있는 서브넷을 선택합니다. 기본값은 VM1Subnet
이어야 합니다.IP 주소 할당 정적 개인 IP 주소 클러스터에서 만든 virtualip
IP 주소를 사용합니다.구독 리소스 그룹에 사용된 구독을 사용합니다. 리소스 그룹 SQL Server 인스턴스가 있는 리소스 그룹을 선택합니다. 위치 SQL Server 인스턴스가 있는 Azure 위치를 선택합니다.
백 엔드 풀 구성
Azure에서 백 엔드 주소 풀 백 엔드 풀이 호출됩니다. 이 경우 백 엔드 풀은 AG에 있는 세 SQL Server 인스턴스의 주소입니다.
리소스 그룹에서 만든 부하 분산 장치를 클릭합니다.
설정에서 백 엔드 풀을 선택합니다.
백 엔드 풀에서 추가를 선택하여 백 엔드 주소 풀을 만듭니다.
백 엔드 풀 추가에서 이름에 백 엔드 풀의 이름을 입력합니다.
다음에 연결됨에서 가상 머신을 선택합니다.
환경에서 각 가상 머신을 선택하고 각 선택 영역에 적절한 IP 주소를 연결합니다.
추가를 선택합니다.
프로브 만들기
프로브는 Azure에서 현재 AG 수신기를 소유하는 SQL Server 인스턴스를 확인하는 방법을 정의합니다. Azure는 프로브를 만들 때 정의한 포트의 IP 주소를 기반으로 서비스를 프로브합니다.
부하 분산 장치 설정 창에서 상태 프로브를 선택합니다.
상태 프로브 창에서 추가를 선택합니다.
프로브 추가 창에서 프로브를 구성합니다. 다음 값을 사용하여 프로브를 구성합니다.
설정 값 이름 프로브를 나타내는 텍스트 이름입니다. 예들 들어 SQLAlwaysOnEndPointProbe
입니다.프로토콜 TCP
포트 사용 가능한 포트를 사용할 수 있습니다. 예들 들어 59999
입니다.Interval 5
비정상 임계값 2
확인을 선택합니다.
모든 가상 머신에 로그인하고 다음 명령을 사용하여 프로브 포트를 엽니다.
sudo firewall-cmd --zone=public --add-port=59999/tcp --permanent sudo firewall-cmd --reload
Azure는 프로브를 만든 후 AG에 대한 수신기가 있는 SQL Server 인스턴스를 테스트하는 데 프로브를 사용합니다.
부하 분산 규칙 설정
부하 분산 규칙은 부하 분산 장치가 트래픽을 SQL Server 인스턴스로 라우트하는 방법을 구성합니다. 이 부하 분산 장치의 경우 세 개의 SQL Server 인스턴스 중 하나만 한 번에 AG 수신기 리소스를 소유하므로 Direct Server Return(DSR)을 사용하도록 설정합니다.
부하 분산 장치 설정 창에서 부하 분산 규칙을 선택합니다.
부하 분산 규칙 창에서 추가를 선택합니다.
부하 분산 규칙 추가 창에서 부하 분산 규칙을 구성합니다. 다음 설정을 사용합니다.
설정 값 이름 부하 분산 규칙을 나타내는 텍스트 이름입니다. 예들 들어 SQLAlwaysOnEndPointListener
입니다.프로토콜 TCP 포트 1433
백 엔드 포트 1433
. 이 규칙은 부동 IP(Direct Server Return(DSR))를 사용하므로 이 값은 무시됩니다.프로브 이 부하 분산 장치에 대해 만든 프로브의 이름을 사용합니다. 세션 지속성 없음 유휴 제한 시간(분) 4
부동 IP(Direct Server Return) Enabled 확인을 선택합니다.
Azure에서 부하 분산 규칙이 구성됩니다. 이제 AG에 대한 수신기를 호스트하는 SQL Server 인스턴스로 트래픽을 라우트하도록 부하 분산 장치가 구성되었습니다.
현재 리소스 그룹에는 모든 SQL Server 컴퓨터에 연결되는 부하 분산 장치가 있습니다. 부하 분산 장치에는 SQL Server Always On AG 수신기에 대한 IP 주소도 있으므로 모든 컴퓨터가 AG에 대한 요청에 응답할 수 있습니다.
가용성 그룹 수신기 리소스 만들기
Pacemaker에서 부하 분산 장치 리소스를 만들기 전에 먼저 수신기 리소스를 만듭니다.
sudo crm configure primitive virtualip \
ocf:heartbeat:IPaddr2 \
params ip=x.y.z.a
이전 예에서 x.y.z.a
는 부하 분산 장치 프런트 엔드 IP 주소를 나타냅니다.
클러스터에 부하 분산 장치 리소스 만들기
구성 중인 배포에 대한 지침을 따릅니다.
주 가상 머신에 로그인합니다. Azure 부하 분산 장치 프로브 포트(이 예에서는 가 사용됨)를 활성화하려면 리소스를 만들어야 합니다. 다음 명령을 실행합니다.
sudo pcs resource create azure_load_balancer azure-lb port=59999
virtualip
및azure_load_balancer
리소스를 포함하는 그룹을 만듭니다.sudo pcs resource group add virtualip_group azure_load_balancer virtualip
제약 조건 추가
Azure 부하 분산 장치 IP 주소와 AG 리소스가 동일한 노드에서 실행되도록 공동 배치 제약 조건을 구성해야 합니다. 다음 명령을 실행합니다.
sudo pcs constraint colocation add azure_load_balancer ag_cluster-master INFINITY with-rsc-role=Master
AG 리소스가 Azure Load Balancer IP 주소보다 먼저 실행 중 상태가 되도록 하려면 정렬 제약 조건을 만듭니다. 공동 배치 제약 조건은 정렬 제약 조건을 암시하지만 정렬 제약 조건이 적용됩니다.
sudo pcs constraint order promote ag_cluster-master then start azure_load_balancer
제약 조건을 확인하려면 다음 명령을 실행합니다.
sudo pcs constraint list --full
다음 출력이 표시됩니다.
Location Constraints: Ordering Constraints: promote ag_cluster-master then start virtualip (kind:Mandatory) (id:order-ag_cluster-master-virtualip-mandatory) promote ag_cluster-master then start azure_load_balancer (kind:Mandatory) (id:order-ag_cluster-master-azure_load_balancer-mandatory) Colocation Constraints: virtualip with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-virtualip-ag_cluster-master-INFINITY) azure_load_balancer with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-azure_load_balancer-ag_cluster-master-INFINITY) Ticket Constraints:
가용성 그룹 수신기 만들기
주 노드의 sqlcmd 또는 SSMS에서 다음 명령을 실행합니다. 아래에 사용된 IP 주소를
virtualip
IP 주소로 바꿉니다.SQL Server 2022 이상 버전:
ALTER AVAILABILITY GROUP [ag1] ADD LISTENER 'ag1-listener' ( WITH IP(( '10.0.0.7', '0.0.0.0' )), PORT = 1433 ); GO
SQL Server 2017 및 SQL Server 2019:
ALTER AVAILABILITY GROUP [ag1] ADD LISTENER 'ag1-listener' ( WITH IP(( '10.0.0.7', '255.255.255.255' )), PORT = 1433 ); GO
각 VM 노드에 로그인합니다. 다음 명령을 사용하여 호스트 파일을 열고 각 컴퓨터에서
ag1-listener
에 대한 호스트 이름 확인을 설정합니다.sudo vi /etc/hosts
vi 편집기에서
i
를 입력하여 텍스트를 삽입하고, 빈 줄에ag1-listener
의 IP를 추가합니다. 그런 다음, IP 옆의 공백 뒤에ag1-listener
를 추가합니다.<IP of ag1-listener> ag1-listener
vi 편집기를 종료하려면 먼저 Esc 키를 누른 다음,
:wq
명령을 입력하여 파일을 작성하고 종료합니다. 각 노드에서 이를 수행합니다.
수신기 및 장애 조치(failover) 테스트
이 섹션에서는 SQL Server AG 수신기에 로그인하고 장애 조치(failover)를 테스트하는 방법을 설명합니다.
가용성 그룹 수신기를 사용하여 SQL Server에 대한 로그인 테스트
sqlcmd를 사용하여 AG 수신기 이름을 사용하여 SQL Server의 주 노드에 로그인합니다.
- 이전에 만든 로그인을 사용하고
<YourPassword>
를 올바른 암호로 바꿉니다. 다음 예제에서는 SQL Server로 사용하여 만든sa
로그인을 사용합니다.
sqlcmd -S ag1-listener -U sa -P <YourPassword>
- 이전에 만든 로그인을 사용하고
연결된 서버의 이름을 확인합니다. sqlcmd에서 다음 명령을 실행합니다.
SELECT @@SERVERNAME;
출력에 현재 주 노드가 표시됩니다. 장애 조치(failover)를 테스트한 적이 없다면
VM1
이어야 합니다.exit
명령을 입력하여 SQL Server 세션을 종료합니다.
장애 조치(failover) 테스트
다음 명령을 실행하여 주 복제본을
<VM2>
또는 다른 복제본으로 수동으로 장애 조치(failover)합니다.<VM2>
를 서버 이름의 값으로 바꿉니다.sudo pcs resource move ag_cluster-master <VM2> --master
제약 조건을 확인하면 수동 장애 조치로 인해 다른 제약 조건이 추가되었음을 알 수 있습니다.
sudo pcs constraint list --full
ID가
cli-prefer-ag_cluster-master
인 제약 조건이 추가되었습니다.다음 명령을 사용하여 ID가
cli-prefer-ag_cluster-master
인 제약 조건을 제거합니다.sudo pcs constraint remove cli-prefer-ag_cluster-master
sudo pcs resource
명령을 사용하여 클러스터 리소스를 확인합니다. 그러면 이제 주 인스턴스가<VM2>
임을 알 수 있습니다.참고 항목
이 문서에는 Microsoft에서 더 이상 사용하지 않는 용어인 슬레이브라는 용어에 대한 참조가 포함되어 있습니다. 소프트웨어에서 용어가 제거되면 이 문서에서 해당 용어가 제거됩니다.
[<username>@<VM1> ~]$ sudo pcs resource Master/Slave Set: ag_cluster-master [ag_cluster] Masters: [ <VM2> ] Slaves: [ <VM1> <VM3> ] Resource Group: virtualip_group azure_load_balancer (ocf::heartbeat:azure-lb): Started <VM2> virtualip (ocf::heartbeat:IPaddr2): Started <VM2>
sqlcmd를 사용하여 수신기 이름으로 주 복제본에 로그인합니다.
- 이전에 만든 로그인을 사용하고
<YourPassword>
를 올바른 암호로 바꿉니다. 다음 예제에서는 SQL Server로 사용하여 만든sa
로그인을 사용합니다.
sqlcmd -S ag1-listener -U sa -P <YourPassword>
- 이전에 만든 로그인을 사용하고
연결된 서버를 확인합니다. sqlcmd에서 다음 명령을 실행합니다.
SELECT @@SERVERNAME;
이제 장애 조치(failover)한 VM에 연결되어 있음을 확인할 수 있습니다.
다음 단계
SQL Server 인스턴스에 가용성 그룹 수신기를 활용하려면 부하 분산 장치를 만들고 구성해야 합니다.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기