Ubuntu 클러스터 및 가용성 그룹 리소스 구성Configure Ubuntu Cluster and Availability Group Resource

이 항목 적용 대상: 예SQL Server (Linux 전용)없음Azure SQL Database없음Azure SQL Data Warehouse없음 병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (Linux only)noAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

이 문서에서는 Ubuntu에서 3 노드 클러스터를 만들고 이전에 만든된 가용성 그룹에 클러스터 리소스로 추가 하는 방법을 설명 합니다.This document explains how to create a three-node cluster on Ubuntu and add a previously created availability group as a resource in the cluster. 고가용성을 위해 Linux에서 가용성 그룹을 필요한 3 개의 노드가-참조 가용성 그룹 구성에 대 한 높은 가용성 및 데이터 보호합니다.For high availability, an availability group on Linux requires three nodes - see High availability and data protection for availability group configurations.

참고

이 시점에서 Linux의 Pacemaker 사용 하 여 SQL Server의 통합은 Windows에 WSFC를 사용 하 여으로 결합 없습니다.At this point, SQL Server's integration with Pacemaker on Linux is not as coupled as with WSFC on Windows. sql에서 클러스터의 현재 상태에 대 한 지식이 없는, 모든 오케스트레이션에서는 외부가 되며 서비스는 독립 실행형 인스턴스로 Pacemaker에 의해 제어 됩니다.From within SQL, there is no knowledge about the presence of the cluster, all orchestration is outside in, and the service is controlled as a standalone instance by Pacemaker. 또한 가상 네트워크 이름은 WSFC 관련, Pacemaker에 동일한 동등한 옵션이 없습니다.Also, virtual network name is specific to WSFC, there is no equivalent of the same in Pacemaker. Always On 동적 관리 뷰 클러스터 정보를 쿼리 하는 빈 행을 반환 합니다.Always On dynamic management views that query cluster information return empty rows. 장애 조치 후 투명 하 게 연결에 사용 하려면 수신기를 만들 수 있습니다 하지만 (다음 섹션에서 설명)으로 가상 IP 리소스를 만드는 데 사용 된 IP를 사용 하 여 DNS 서버에서 수신기 이름의 수동으로 등록 해야 합니다.You can still create a listener to use it for transparent reconnection after failover, but you have to manually register the listener name in the DNS server with the IP used to create the virtual IP resource (as explained in the following sections).

다음 섹션에서는 장애 조치 클러스터 솔루션을 설정 하는 단계를 안내 합니다.The following sections walk through the steps to set up a failover cluster solution.

로드맵Roadmap

고가용성을 위해 Linux 서버에서 가용성 그룹을 만드는 단계는 Windows Server 장애 조치 클러스터에 대 한 단계와 다릅니다.The steps to create an availability group on Linux servers for high availability are different from the steps on a Windows Server failover cluster. 다음과 같은 단계를 간략히 설명 합니다.The following list describes the high-level steps:

  1. SQL Server 클러스터 노드에서 구성합니다.Configure SQL Server on the cluster nodes.

  2. 가용성 그룹을 만들합니다.Create the availability group.

  3. Pacemaker와 같은 클러스터 리소스 관리자를 구성 합니다.Configure a cluster resource manager, like Pacemaker. 이러한 지침은이 문서에 있습니다.These instructions are in this document.

    클러스터 리소스 관리자를 구성 하는 방법은 특정 Linux 배포에 따라 달라 집니다.The way to configure a cluster resource manager depends on the specific Linux distribution.

    중요

    프로덕션 환경에 같은 고가용성에 대 한 STONITH는 펜싱 에이전트가 필요합니다.Production environments require a fencing agent, like STONITH for high availability. 이 문서의 데모는 펜싱 에이전트를 사용 하지 마세요.The demonstrations in this documentation do not use fencing agents. 데모 테스트 및 유효성 검사에만 됩니다.The demonstrations are for testing and validation only.

    Linux 클러스터는 클러스터를 알려진된 상태로 반환할 펜싱을 사용 합니다.A Linux cluster uses fencing to return the cluster to a known state. 펜스를 구성 하는 방법은 배포 및 환경에 따라 달라 집니다.The way to configure fencing depends on the distribution and the environment. 이때 펜싱 일부 클라우드 환경에서는 제공 되지 않습니다.At this time, fencing is not available in some cloud environments. 참조 RHEL 높은 가용성 클러스터-가상화 플랫폼에 대 한 지원 정책을 자세한 내용은 합니다.See Support Policies for RHEL High Availability Clusters - Virtualization Platforms for more information.

  4. 가용성 그룹에 클러스터 리소스로 추가합니다.Add the availability group as a resource in the cluster.

설치 하 고 각 클러스터 노드에서 Pacemaker 구성Install and configure Pacemaker on each cluster node

  1. 모든 노드에서 방화벽 포트를 엽니다.On all nodes open the firewall ports. Pacemaker 고가용성 서비스, SQL Server 인스턴스 및 가용성 그룹 끝점에 대 한 포트를 엽니다.Open the port for the Pacemaker high-availability service, SQL Server instance, and the availability group endpoint. SQL Server를 실행 하는 서버에 대 한 기본 TCP 포트는 1433입니다.The default TCP port for server running SQL Server is 1433.

    sudo ufw allow 2224/tcp
    sudo ufw allow 3121/tcp
    sudo ufw allow 21064/tcp
    sudo ufw allow 5405/udp
    
    sudo ufw allow 1433/tcp # Replace with TDS endpoint
    sudo ufw allow 5022/tcp # Replace with DATA_MIRRORING endpoint
    
    sudo ufw reload
    

    또는 방화벽을 비활성화할 수 있습니다.Alternatively, you can just disable the firewall:

    sudo ufw disable
    
  2. Pacemaker 패키지를 설치 합니다.Install Pacemaker packages. 모든 노드에서 다음 명령을 실행 합니다.On all nodes, run the following commands:

    sudo apt-get install pacemaker pcs fence-agents resource-agents
    
  3. Pacemaker 및 Corosync 패키지를 설치할 때 생성된 기본 사용자의 암호를 설정합니다.Set the password for the default user that is created when installing Pacemaker and Corosync packages. 모든 노드에서 같은 암호를 사용합니다.Use the same password on all nodes.

    sudo passwd hacluster
    

사용 및 pcsd 서비스 및 Pacemaker를 시작 합니다.Enable and start pcsd service and Pacemaker

다음 명령을 사용 하도록 설정 하 고 pcsd 서비스 및 pacemaker를 시작 합니다.The following command enables and starts pcsd service and pacemaker. 모든 노드에서 실행 합니다.Run on all nodes. 이 노드를를 다시 부팅 한 후 클러스터에 다시 조인할 수 있습니다.This allows the nodes to rejoin the cluster after reboot.

sudo systemctl enable pcsd
sudo systemctl start pcsd
sudo systemctl enable pacemaker

참고

Enable pacemaker 명령 'pacemaker 기본 시작 중단 없는 runlevels를 포함 합니다.' 오류가 발생 하 여 완료 될 수 있습니다.Enable pacemaker command may complete with the error 'pacemaker Default-Start contains no runlevels, aborting.' 이 무시 해도 됩니다 클러스터 구성을 계속 진행할 수 있습니다.This is harmless, cluster configuration can continue.

클러스터 만들기Create the Cluster

  1. 모든 노드에서 모든 기존 클러스터 구성을 제거 합니다.Remove any existing cluster configuration from all nodes.

    동시에 pacemaker, corosync 및 pc를 설치 하 고 서비스의 모든 3이 실행을 시작 하는 실행 중인 'sudo apt-get install pc'.Running 'sudo apt-get install pcs' installs pacemaker, corosync, and pcs at the same time and starts running all 3 of the services. Corosync를 시작 템플릿을 생성 합니다. ' / etc/cluster/corosync.conf' 파일입니다.Starting corosync generates a template '/etc/cluster/corosync.conf' file. 이 파일을 성공 하는 다음 단계에 있으면 안 됩니다-pacemaker를 중지 하려면이 문제를 해결 하므로 / corosync 삭제 하 고 ' / etc/cluster/corosync.conf', 한 다음 다음 단계를 성공적으로 완료 합니다.To have next steps succeed this file should not exist – so the workaround is to stop pacemaker / corosync and delete '/etc/cluster/corosync.conf', and then next steps complete successfully. 동일한 작업을 수행 'pcs cluster 제거' 및로 사용 하 여 시간 초기 클러스터 설치 단계입니다.'pcs cluster destroy' does the same thing, and you can use it as a one time initial cluster setup step.

    다음 명령은 기존 클러스터 구성 파일을 제거 하 고 모든 클러스터 서비스를 중지 합니다.The following command removes any existing cluster configuration files and stops all cluster services. 이 클러스터를 영구적으로 제거합니다.This permanently destroys the cluster. 사전 프로덕션 환경에서 첫 번째 단계로 실행 합니다.Run it as a first step in a pre-production environment. 참고 pacemaker 서비스 및 다시 사용 하도록 설정 하는 요구는 'pcs cluster 삭제' 사용할 수 없습니다.Note that 'pcs cluster destroy' disabled the pacemaker service and needs to be reenabled. 모든 노드에서 다음 명령을 실행합니다.Run the following command on all nodes.

    경고

    이 명령은 기존 클러스터 리소스를 제거합니다.The command destroys any existing cluster resources.

    sudo pcs cluster destroy 
    sudo systemctl enable pacemaker
    
  2. 클러스터를 만듭니다.Create the cluster.

    경고

    클러스터링 공급 업체 조사를 시작 하는 알려진된 문제로 인해 클러스터 ('pc 클러스터 시작') 다음 오류로 인해 실패 합니다.Due to a known issue that the clustering vendor is investigating, starting the cluster ('pcs cluster start') fails with following error. 클러스터 설치 명령을 실행할 때 만들어진는 무엇이 /etc/corosync/corosync.conf에 구성 된 로그 파일 때문입니다.This is because the log file configured in /etc/corosync/corosync.conf which is created when the cluster setup command is run, is wrong. 이 문제를 해결 하려면 로그 파일을 변경 합니다. /var/log/corosync/corosync.log 합니다.To work around this issue, change the log file to: /var/log/corosync/corosync.log. 또는 /var/log/cluster/corosync.log 파일을 만들 수 있습니다.Alternatively you could create the /var/log/cluster/corosync.log file.

    Job for corosync.service failed because the control process exited with error code. 
    See "systemctl status corosync.service" and "journalctl -xe" for details.
    

다음 명령은 3 개 노드 클러스터를 만듭니다.The following command creates a three-node cluster. 스크립트를 실행하기 전에 < ... > 사이의 값을 바꿉니다.Before you run the script, replace the values between < ... >. 주 노드에서 다음 명령을 실행 합니다.Run the following command on the primary node.

sudo pcs cluster auth <node1> <node2> <node3> -u hacluster -p <password for hacluster>
sudo pcs cluster setup --name <clusterName> <node1> <node2…> <node3>
sudo pcs cluster start --all
sudo pcs cluster enable --all

참고

이전에 같은 노드에서 클러스터를 구성한 경우 'pcs cluster setup'을 실행할 때 '--force' 옵션을 사용해야 합니다.If you previously configured a cluster on the same nodes, you need to use '--force' option when running 'pcs cluster setup'. 이 방법은 'pcs cluster destroy'를 실행하는 것과 같고 'sudo systemctl enable pacemaker'를 사용하여 Pacemaker 서비스를 다시 사용하도록 설정해야 합니다.Note this is equivalent to running 'pcs cluster destroy' and pacemaker service needs to be reenabled using 'sudo systemctl enable pacemaker'.

펜싱 (STONITH) 구성Configure fencing (STONITH)

Pacemaker 클러스터 공급 업체는 STONITH를 사용 하도록 설정 및 지원 되는 클러스터 설치를 구성 하는 펜싱 장치에 필요 합니다.Pacemaker cluster vendors require STONITH to be enabled and a fencing device configured for a supported cluster setup. Cluster resource manager는 노드 또는 노드 리소스의 상태를 확인할 수 없습니다, 하는 경우 펜스를 알려진된 상태로 클러스터를 다시 표시 하려면 사용 됩니다.When the cluster resource manager cannot determine the state of a node or of a resource on a node, fencing is used to bring the cluster to a known state again. 리소스 수준 펜싱 주로 리소스를 구성 하 여 가동 중지 시에도 없는 데이터 손상이 있는지 확인 합니다.Resource level fencing ensures mainly that there is no data corruption in case of an outage by configuring a resource. 리소스 수준 펜싱을 사용할 수 있습니다 예를 들어, 오래 된 경우 처럼 노드에서 디스크를 표시 하려면 (복제 된 블록 장치 Distributed) DRBD를 사용 하 여 통신 링크 중단 합니다.You can use resource level fencing, for instance, with DRBD (Distributed Replicated Block Device) to mark the disk on a node as outdated when the communication link goes down. 노드 수준 펜싱 노드 리소스 실행 되지 않도록 보장 합니다.Node level fencing ensures that a node does not run any resources. 노드를 다시 설정 하 여 이렇게 하 고는 Pacemaker 구현의 STONITH (약자인 "헤드에 있는 다른 노드가 특이") 이라고 합니다. 키를 누릅니다.This is done by resetting the node and the Pacemaker implementation of it is called STONITH (which stands for "shoot the other node in the head"). 무정전 전원 공급 장치 또는 관리를 서버에 대 한 카드 인터페이스 예를 들어, pacemaker 다양 한 펜스 장치를 지원 합니다.Pacemaker supports a great variety of fencing devices, e.g. an uninterruptible power supply or management interface cards for servers. 자세한 내용은 처음부터 Pacemaker 클러스터펜싱 및 StonithFor more information, see Pacemaker Clusters from Scratch and Fencing and Stonith

구성 펜싱 노드 수준 환경에 따라 크게 달라 집니다, 있으므로 (구성할 수 있습니다 나중)이이 자습서에 대 한 비활성화 했습니다.Because the node level fencing configuration depends heavily on your environment, we disable it for this tutorial (it can be configured at a later time). 주 노드에서 다음 스크립트를 실행 합니다.Run the following script on the primary node:

sudo pcs property set stonith-enabled=false

중요

STONITH를 사용 하지 않도록 설정 하는 것은 테스트 목적에 대해서만 합니다.Disabling STONITH is just for testing purposes. 프로덕션 환경에서 Pacemaker를 사용 하려는 경우 환경에 따라 STONITH 구현 계획을 계속 사용 합니다.If you plan to use Pacemaker in a production environment, you should plan a STONITH implementation depending on your environment and keep it enabled. 참고가 시점에 모든 클라우드 환경 (Azure 포함) 또는 Hyper-v에 대 한 펜스 에이전트가 없습니다.Note that at this point there are no fencing agents for any cloud environments (including Azure) or Hyper-V. 검사가 클러스터 공급 업체는 이러한 환경에서 실행 중인 프로덕션 클러스터에 대 한 지원을 제공 하지 않습니다.Consequentially, the cluster vendor does not offer support for running production clusters in these environments.

클러스터 속성 클러스터-다시 확인-간격 설정Set cluster property cluster-recheck-interval

cluster-recheck-interval 리소스 매개 변수, 제약 조건 또는 다른 클러스터 옵션에 대 한 변경 내용에 대 한 클러스터 확인 하는 폴링 간격을 나타냅니다.cluster-recheck-interval indicates the polling interval at which the cluster checks for changes in the resource parameters, constraints or other cluster options. 클러스터를 연결 된 간격으로 복제본을 다시 시작 하려고 복제본이 다운 되 면 합니다 failure-timeout 값 및 cluster-recheck-interval 값입니다.If a replica goes down, the cluster tries to restart the replica at an interval that is bound by the failure-timeout value and the cluster-recheck-interval value. 예를 들어 경우 failure-timeout 60 초로 설정 됩니다 및 cluster-recheck-interval 설정 120 초 이내 60 초 보다 큰 간격을 120 초로 다시 시작 시도 됩니다.For example, if failure-timeout is set to 60 seconds and cluster-recheck-interval is set to 120 seconds, the restart is tried at an interval that is greater than 60 seconds but less than 120 seconds. 오류 제한 60s와 클러스터-다시 확인-간격은 60 초 보다 큰 값으로 설정 하는 것이 좋습니다.We recommend that you set failure-timeout to 60s and cluster-recheck-interval to a value that is greater than 60 seconds. 클러스터 다시 확인 간격을 작은 값으로 설정 하는 것은 좋지 않습니다.Setting cluster-recheck-interval to a small value is not recommended.

속성 값을 업데이트 하려면 2 minutes 실행:To update the property value to 2 minutes run:

sudo pcs property set cluster-recheck-interval=2min

중요

Pacemaker 클러스터에서 관리 하는 가용성 그룹 리소스가 이미 있는 경우에 최신 사용 가능한 Pacemaker 패키지 1.1.18-11.el7를 사용 하는 모든 분산 발생 경우 설정을 시작 실패-는-치명적이 지 클러스터에 대 한 동작 변경 참고 해당 값은 false입니다.If you already have an availability group resource managed by a Pacemaker cluster, note that all distributions that use the latest available Pacemaker package 1.1.18-11.el7 introduce a behavior change for the start-failure-is-fatal cluster setting when its value is false. 이 변경에 장애 조치 워크플로 적용 합니다.This change affects the failover workflow. 주 복제본 중단이 발생 하는 경우 클러스터는 사용 가능한 보조 복제본 중 하나에 장애 조치 해야 합니다.If a primary replica experiences an outage, the cluster is expected to failover to one of the available secondary replicas. 대신 사용자 클러스터 유지 실패 한 주 복제본을 시작 하는 것을 알 수 있습니다.Instead, users will notice that the cluster keeps trying to start the failed primary replica. 해당 기본 되지 온라인 상태가 되 면 (때문에 영구 작동 중단)를 클러스터 하지 장애 조치 다른 사용 가능한 보조 복제본으로 합니다.If that primary never comes online (because of a permanent outage), the cluster never fails over to another available secondary replica. 이러한 변경으로 인해 시작 실패-는-치명적이 지 설정 하려면 이전에 권장 되는 구성이 더 이상 유효 하며 설정의 기본 값으로 다시 되돌릴 true합니다.Because of this change, a previously recommended configuration to set start-failure-is-fatal is no longer valid and the setting needs to be reverted back to its default value of true. AG 리소스를 포함 하도록 업데이트 해야 하는 또한는 failover-timeout 속성입니다.Additionally, the AG resource needs to be updated to include the failover-timeout property.

속성 값을 업데이트 하려면 true 실행:To update the property value to true run:

sudo pcs property set start-failure-is-fatal=true

기존 AG 리소스 속성을 업데이트 failure-timeout60s 실행 (대체 ag1 가용성 그룹 리소스의 이름):Update your existing AG resource property failure-timeout to 60s run (replace ag1 with the name of your availability group resource):

pcs resource update ag1 meta failure-timeout=60s

Pacemaker를 사용 하 여 통합에 대 한 SQL Server 리소스 에이전트를 설치 합니다.Install SQL Server resource agent for integration with Pacemaker

모든 노드에서 다음 명령을 실행합니다.Run the following commands on all nodes.

sudo apt-get install mssql-server-ha

Pacemaker 용 SQL Server 로그인 만들기Create a SQL Server login for Pacemaker

  1. 모든 SQL Server에서 Pacemaker를 위한 서버 로그인을 만듭니다.On all SQL Servers, create a Server login for Pacemaker. 다음 Transact-SQL이 로그인을 만듭니다.The following Transact-SQL creates a login:

    USE [master]
    GO
    CREATE LOGIN [pacemakerLogin] with PASSWORD= N'ComplexP@$$w0rd!'
    
    ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin]
    

    또는 더 세부적인 수준에서 권한을 설정할 수 있습니다.Alternatively, you can set the permissions at a more granular level. Pacemaker 로그인에는 가용성 그룹 관리를 위한 변경, 제어 및 보기 정의 권한을 비롯하여 로그인을 통해 sp_server_diagnostics를 실행하기 위한 서버 상태 보기가 필요합니다.The Pacemaker login requires ALTER, CONTROL, and VIEW DEFINITION PERMISSION for managing the availability group as well as VIEW SERVER STATE for the login to be able to run sp_server_diagnostics. 자세한 내용은 가용성 그룹 사용 권한 부여(Transact SQL)sp_server_diagnostic 권한을 참조하세요.For more information, see GRANT Availability Group Permissions (Transact-SQL) and sp_server_diagnostic permissions.

    다음 Transact-SQL은 Pacemaker 로그인에 필요한 권한을 부여합니다.The following Transact-SQL grants only the required permission to the Pacemaker login. 이 문에서 아래 'ag1'은 클러스터 리소스로 추가될 가용성 그룹의 이름입니다.In the statement below 'ag1' is the name of the availability group that will be added as a cluster resource.

    GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::ag1 TO pacemakerLogin
    GRANT VIEW SERVER STATE TO pacemakerLogin
    
  2. 모든 SQL Server에서 SQL Server 로그인을 위한 자격 증명을 저장합니다.On all SQL Servers, save the credentials for the SQL Server login.

    echo 'pacemakerLogin' >> ~/pacemaker-passwd
    echo 'ComplexP@$$w0rd!' >> ~/pacemaker-passwd
    sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd
    sudo chown root:root /var/opt/mssql/secrets/passwd
    sudo chmod 400 /var/opt/mssql/secrets/passwd # Only readable by root
    

가용성 그룹 리소스 만들기Create availability group resource

가용성 그룹 리소스를 만들려면 사용 하 여 pcs resource create 명령 및 리소스 속성을 설정 합니다.To create the availability group resource, use pcs resource create command and set the resource properties. 아래 명령을 만듭니다는 ocf:mssql:ag 형식 리소스 이름의 가용성 그룹에 대 한 마스터/슬레이브 ag1합니다.Below command creates a ocf:mssql:ag master/slave type resource for availability group with name ag1.

sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=30s --master meta notify=true

참고

리소스를 만들 때와 이후 정기적으로 Pacemaker 리소스 에이전트는 가용성 그룹에서 REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT의 값을 가용성 그룹의 구성을 바탕으로 자동으로 설정합니다.When you create the resource, and periodically afterwards, the Pacemaker resource agent automatically sets the value of REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT on the availability group based on the availability group's configuration. 예를 들어 가용성 그룹에 세 개의 동기 복제본이 있는 경우 에이전트는 REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT1로 설정합니다.For example, if the availability group has three synchronous replicas, the agent will set REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT to 1. 자세한 내용 및 추가 구성 옵션은 High availability and data protection for availability group configurations(가용성 그룹 구성을 위한 고가용성 및 데이터 보호)를 참조하세요.For details and additional configuration options, see High availability and data protection for availability group configurations.

가상 IP 리소스 만들기Create virtual IP resource

가상 IP 주소 리소스를 만들려면 노드 하나에서 다음 명령을 실행 합니다.To create the virtual IP address resource, run the following command on one node. 네트워크에서 사용 가능한 정적 IP 주소를 사용 합니다.Use an available static IP address from the network. 스크립트를 실행 하기 전에 사이의 값을 바꿉니다 < ... > 유효한 IP 주소를 사용 합니다.Before you run the script, replace the values between < ... > with a valid IP address.

sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 ip=<10.128.16.240>

Pacemaker에서 해당 가상 서버 이름이 없습니다.There is no virtual server name equivalent in Pacemaker. 문자열 서버 이름으로 가리키는 연결 문자열을 사용 하 고 IP 주소를 사용 하지 하려면 DNS의 ip 리소스 이름과 원하는 가상 서버를 등록 합니다.To use a connection string that points to a string server name and not use the IP address, register the IP resource address and desired virtual server name in DNS. DR 구성에 대 한 기본 및 DR 사이트에서 DNS 서버를 사용 하 여 원하는 가상 서버 이름 및 IP 주소를 등록 합니다.For DR configurations, register the desired virtual server name and IP address with the DNS servers on both primary and DR site.

공동 배치 제약 조건 추가Add colocation constraint

Pacemaker 클러스터에서 리소스를 실행할 위치를 선택 하는 등 거의 모든 의사 결정은 점수를 비교 하 여 수행 됩니다.Almost every decision in a Pacemaker cluster, like choosing where a resource should run, is done by comparing scores. 리소스 당 점수 계산 하 고 클러스터 리소스 관리자가 특정 리소스에 대 한 점수가 가장 높은 노드를 선택 합니다.Scores are calculated per resource, and the cluster resource manager chooses the node with the highest score for a particular resource. (노드는 리소스에 대 한 음수 점수 있으면 리소스 수 없습니다. 해당 노드에서 실행 합니다.) 클러스터의 결정을 구성 하려면 제약 조건을 사용 합니다.(If a node has a negative score for a resource, the resource cannot run on that node.) Use constraints to configure the decisions of the cluster. 제한에는 점수는.Constraints have a score. 제약 조건에는 무한대 보다 낮은 점수를 인지만 권장 합니다.If a constraint has a score lower than INFINITY, it is only a recommendation. 무한대의 점수를 반드시 의미 합니다.A score of INFINITY means it is mandatory. 주 복제본과 가상 ip 리소스를 동일한 호스트에서이 되도록 무한대의 점수를 사용 하 여 공동 배치 제약 조건을 정의 합니다.To ensure that primary replica and the virtual ip resource are on the same host, define a colocation constraint with a score of INFINITY. 공동 배치 제약 조건을 추가할 노드 하나에서 다음 명령을 실행 합니다.To add the colocation constraint, run the following command on one node.

sudo pcs constraint colocation add virtualip ag_cluster-master INFINITY with-rsc-role=Master

정렬 제약 조건을 추가 합니다.Add ordering constraint

공동 배치 제약 조건을 암시적 순서 제약 조건이 있습니다.The colocation constraint has an implicit ordering constraint. 가용성 그룹 리소스를 이동 하기 전에 가상 IP 리소스를 이동 합니다.It moves the virtual IP resource before it moves the availability group resource. 기본적으로 이벤트 순서는:By default the sequence of events is:

  1. 사용자 문제 pcs resource move 가용성 그룹에 주 노드 1에서 노드 2로 합니다.User issues pcs resource move to the availability group primary from node1 to node2.
  2. Node1의 가상 IP 리소스를 중지합니다.The virtual IP resource stops on node1.
  3. 가상 IP 리소스를 노드 2에서 시작합니다.The virtual IP resource starts on node2.

    참고

    이 시점에서 IP 주소 일시적으로 node2로 node2는 여전히 이전 장애 조치 하는 동안 보조 합니다.At this point, the IP address temporarily points to node2 while node2 is still a pre-failover secondary.

  4. Node1의 기본 가용성 그룹 보조 복제본이 강등 합니다.The availability group primary on node1 is demoted to secondary.

  5. Node2의 보조 가용성 그룹은 기본으로 승격 됩니다.The availability group secondary on node2 is promoted to primary.

IP 주소를 사전 장애 조치 보조 노드를 일시적으로 가리키는 방지 하려면 정렬 제약 조건을 추가 합니다.To prevent the IP address from temporarily pointing to the node with the pre-failover secondary, add an ordering constraint.

정렬 제약 조건을 추가할 노드 하나에서 다음 명령을 실행 합니다.To add an ordering constraint, run the following command on one node:

sudo pcs constraint order promote ag_cluster-master then start virtualip

중요

클러스터를 구성 하 고를 클러스터 리소스로 가용성 그룹을 추가한 후에 가용성 그룹 리소스를 장애 조치할 Transact SQL을 사용할 수 없습니다.After you configure the cluster and add the availability group as a cluster resource, you cannot use Transact-SQL to fail over the availability group resources. Linux의 SQL Server 클러스터 리소스 연계 되지 않습니다와 긴밀 하 게 운영 체제에는 서버 장애 조치 클러스터 (WSFC (Windows) 같습니다.SQL Server cluster resources on Linux are not coupled as tightly with the operating system as they are on a Windows Server Failover Cluster (WSFC). SQL Server 서비스를 클러스터의 현재 상태 인식 없습니다.SQL Server service is not aware of the presence of the cluster. 모든 오케스트레이션은 클러스터 관리 도구를 통해 수행 됩니다.All orchestration is done through the cluster management tools. RHEL 또는 Ubuntu에서 사용 하 여 pcs입니다.In RHEL or Ubuntu use pcs.

다음 단계Next steps

HA 가용성 그룹을 작동Operate HA availability group