Red Hat Enterprise Linux 공유 디스크 클러스터 SQL Server에 대 한 작동Operate Red Hat Enterprise Linux shared disk cluster for SQL Server

이 항목은 다음에 적용됩니다. 아니요Windows의 SQL Server예Linux의 SQL Server아니요Azure SQL Database아니요Azure SQL Data Warehouse아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: noSQL Server on WindowsyesSQL Server on LinuxnoAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

이 문서에서는 Red Hat Enterprise Linux를 사용 하 여 공유 디스크 장애 조치 클러스터에서 SQL Server에 대 한 다음 작업을 수행 하는 방법에 설명 합니다.This document describes how to do the following tasks for SQL Server on a shared disk failover cluster with Red Hat Enterprise Linux.

  • 수동으로 장애 조치 클러스터Manually failover the cluster
  • 장애 조치 클러스터 SQL Server 서비스를 모니터링 합니다.Monitor a failover cluster SQL Server service
  • 클러스터 노드 추가Add a cluster node
  • 클러스터 노드 제거Remove a cluster node
  • SQL Server 리소스를 모니터링 빈도 변경Change the SQL Server resource monitoring frequency

아키텍처 설명Architecture description

Red Hat Enterprise Linux (RHEL)를 기반으로 클러스터링 레이어 HA 추가 기능 기반으로 구축 Pacemaker합니다.The clustering layer is based on Red Hat Enterprise Linux (RHEL) HA add-on built on top of Pacemaker. Corosync 및 Pacemaker 클러스터 통신 및 리소스 관리를 조정 합니다.Corosync and Pacemaker coordinate cluster communications and resource management. SQL Server 인스턴스는 하나의 노드 또는 다른에서 활성입니다.The SQL Server instance is active on either one node or the other.

다음 다이어그램에서는 SQL Server를 사용 하 여 Linux 클러스터의 구성 요소를 보여 줍니다.The following diagram illustrates the components in a Linux cluster with SQL Server.

Red Hat Enterprise Linux 7 공유 디스크 SQL 클러스터

클러스터 구성, 리소스 에이전트 옵션 및 관리에 대 한 자세한 내용은 방문 RHEL 참조 설명서합니다.For more details on cluster configuration, resource agents options, and management, visit RHEL reference documentation.

장애 조치 클러스터를 수동으로Failover cluster manually

resource move 명령에서 대상 노드를 시작 하려면 리소스를 강제로 제약 조건을 만듭니다.The resource move command creates a constraint forcing the resource to start on the target node. 실행 한 후의 move 실행 리소스 명령을 clear 리소스를 다시 이동 하거나 자동으로 장애 조치 하는 리소스를 사용할 수 있도록 제한이 제거 됩니다.After executing the move command, executing resource clear will remove the constraint so it is possible to move the resource again or have the resource automatically fail over.

sudo pcs resource move <sqlResourceName> <targetNodeName>  
sudo pcs resource clear <sqlResourceName> 

다음 예제에서는 이동는 mssqlha 리소스가 이라는 노드로 sqlfcivm2, 나중에 리소스를 다른 노드로 이동할 수 있도록 제약 조건을 제거 합니다.The following example moves the mssqlha resource to a node named sqlfcivm2, and then removes the constraint so that the resource can move to a different node later.

sudo pcs resource move mssqlha sqlfcivm2 
sudo pcs resource clear mssqlha 

장애 조치 클러스터 SQL Server 서비스를 모니터링 합니다.Monitor a failover cluster SQL Server service

현재 클러스터 상태를 확인 합니다.View the current cluster status:

sudo pcs status  

클러스터 및 리소스의 실시간 상태 보기:View live status of cluster and resources:

sudo crm_mon 

리소스 에이전트 로그 보기/var/log/cluster/corosync.logView the resource agent logs at /var/log/cluster/corosync.log

클러스터에 노드 추가Add a node to a cluster

  1. 각 노드에 대 한 IP 주소를 확인 합니다.Check the IP address for each node. 다음 스크립트는 현재 노드의의 IP 주소를 보여 줍니다.The following script shows the IP address of your current node.

    ip addr show
    
  2. 새 노드는 15 자 하는 한 고유 이름을 지정 해야이 있습니다.The new node needs a unique name that is 15 characters or less. Red Hat Linux에서 기본적으로 컴퓨터 이름이 localhost.localdomain합니다.By default in Red Hat Linux the computer name is localhost.localdomain. 이 기본 이름은 고유 되지 않을 수 있습니다 및 너무 깁니다.This default name may not be unique and is too long. 새 노드에 다음 컴퓨터 이름을 설정 합니다.Set the computer name the new node. 컴퓨터 이름을 추가 하 여 설정 /etc/hosts합니다.Set the computer name by adding it to /etc/hosts. 다음 스크립트를 사용 하면 편집할 /etc/hostsvi합니다.The following script lets you edit /etc/hosts with vi.

    sudo vi /etc/hosts
    

    다음 예제와 /etc/hosts 라는 세 개의 노드에 대 한 추가 내용은 sqlfcivm1, sqlfcivm2, 및sqlfcivm3합니다.The following example shows /etc/hosts with additions for three nodes named sqlfcivm1, sqlfcivm2, andsqlfcivm3.

    127.0.0.1   localhost localhost4 localhost4.localdomain4
    ::1         localhost localhost6 localhost6.localdomain6
    10.128.18.128 fcivm1
    10.128.16.77 fcivm2
    10.128.14.26 fcivm3
    

    파일의 모든 노드에서 동일 해야 합니다.The file should be the same on every node.

  3. 새 노드의 SQL Server 서비스를 중지 합니다.Stop the SQL Server service on the new node.

  4. 공유 위치에 데이터베이스 파일 디렉터리를 탑재 하도록 지침을 따르세요.Follow the instructions to mount the database file directory to the shared location:

    NFS 서버에서 설치nfs-utilsFrom the NFS server, install nfs-utils

    sudo yum -y install nfs-utils 
    

    클라이언트 및 NFS 서버에 방화벽을 열고Open up the firewall on clients and NFS server

    sudo firewall-cmd --permanent --add-service=nfs
    sudo firewall-cmd --permanent --add-service=mountd
    sudo firewall-cmd --permanent --add-service=rpc-bind
    sudo firewall-cmd --reload
    

    Mount 명령을 포함 하도록 /etc/fstab 파일을 편집 합니다.Edit /etc/fstab file to include the mount command:

    <IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intr
    

    실행 mount -a 변경 내용을 적용 하려면에 대 한 합니다.Run mount -a for the changes to take effect.

  5. 새 노드에서 SQL Server 사용자 이름 및 Pacemaker 로그인 암호를 저장 하기 위해 파일을 만듭니다.On the new node, create a file to store the SQL Server username and password for the Pacemaker login. 다음 명령은 이 파일을 만들고 채웁니다.The following command creates and populates this file:

    sudo touch /var/opt/mssql/passwd
    sudo echo "<loginName>" >> /var/opt/mssql/secrets/passwd
    sudo echo "<loginPassword>" >> /var/opt/mssql/secrets/passwd
    sudo chown root:root /var/opt/mssql/passwd
    sudo chmod 600 /var/opt/mssql/passwd
    
  6. 새 노드에서 Pacemaker 방화벽 포트를 엽니다.On the new node, open the Pacemaker firewall ports. firewalld를 사용하여 이러한 포트를 열려면 다음 명령을 실행합니다.To open these ports with firewalld, run the following command:

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

    참고

    기본 제공된 고가용성 구성이 없는 또 다른 방화벽을 사용 중인 경우 Pacemaker가 클러스터의 다른 노드와 통신할 수 있으려면 다음 포트를 열어야 합니다.If you’re using another firewall that doesn’t have a built-in high-availability configuration, the following ports need to be opened for Pacemaker to be able to communicate with other nodes in the cluster

    • TCP: 포트 2224, 3121, 21064TCP: Ports 2224, 3121, 21064
    • UDP: 포트 5405UDP: Port 5405
  7. 새 노드에 Pacemaker 패키지를 설치 합니다.Install Pacemaker packages on the new node.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  8. Pacemaker 및 Corosync 패키지를 설치할 때 생성된 기본 사용자의 암호를 설정합니다.Set the password for for the default user that is created when installing Pacemaker and Corosync packages. 기존 노드와 동일한 암호를 사용 합니다.Use the same password as the existing nodes.

    sudo passwd hacluster
    
  9. pcsd 서비스 및 Pacemaker를 사용하도록 설정하고 시작합니다.Enable and start pcsd service and Pacemaker. 따라서 새 노드를 다시 부팅 한 후 클러스터에 다시 연결할 수 있습니다.This will allow the new node to rejoin the cluster after the reboot. 새 노드에서 다음 명령을 실행 합니다.Run the following command on the new node.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  10. SQL Server용 FCI 리소스 에이전트를 설치합니다.Install the FCI resource agent for SQL Server. 새 노드에서 다음 명령을 실행 합니다.Run the following commands on the new node.

    sudo yum install mssql-server-ha
    
  11. 클러스터에서 기존 노드에 새 노드를 인증 하 고 클러스터에 추가 합니다.On an existing node from the cluster, authenticate the new node and add it to the cluster:

    sudo pcs    cluster auth <nodeName3> -u hacluster 
    sudo pcs    cluster node add <nodeName3> 
    

    다음 예제에서는 광고 이라는 한 노드가 vm3 클러스터에 있습니다.The following example ads a node named vm3 to the cluster.

    sudo pcs    cluster auth  
    sudo pcs    cluster start 
    

클러스터에서 노드를 제거 합니다.Remove nodes from a cluster

다음 명령을 실행 하는 클러스터에서 노드를 삭제 합니다.To remove a node from a cluster run the following command:

sudo pcs    cluster node remove <nodeName>  

Sqlservr 리소스 모니터링 간격의 빈도 변경Change the frequency of sqlservr resource monitoring interval

sudo pcs    resource op monitor interval=<interval>s <sqlResourceName> 

다음 예제에서는 mssql 리소스에 대 한 2 초를 모니터링 하는 간격을 설정합니다.The following example sets the monitoring interval to 2 seconds for the mssql resource:

sudo pcs    resource op monitor interval=2s mssqlha 

Red Hat Enterprise Linux 공유 디스크 클러스터 SQL Server에 대 한 문제 해결Troubleshoot Red Hat Enterprise Linux shared disk cluster for SQL Server

클러스터 문제 해결에 세 개의 데몬 함께 클러스터 리소스를 관리 작동 방식을 이해 하려면 도움이 될 합니다.In troubleshooting the cluster it may help to understand how the three daemons work together to manage cluster resources.

데몬Daemon DescriptionDescription
CorosyncCorosync 쿼럼 멤버 자격 및 클러스터 노드 간 메시징을 제공 합니다.Provides quorum membership and messaging between cluster nodes.
PacemakerPacemaker Corosync 맨 위에 있는 하 고 리소스에 대 한 상태 시스템을 제공 합니다.Resides on top of Corosync and provides state machines for resources.
PCSDPCSD Pacemaker와 Corosync를 통해 관리 하는 pcs 도구Manages both Pacemaker and Corosync through the pcs tools

PCSD 사용 하기 위해 실행 해야 pcs 도구입니다.PCSD must be running in order to use pcs tools.

현재 클러스터 상태Current cluster status

sudo pcs status각 노드에 대 한 클러스터, 쿼럼, 노드, 리소스 및 데몬 상태에 대 한 기본 정보를 반환 합니다.sudo pcs status returns basic information about the cluster, quorum, nodes, resources, and daemon status for each node.

정상 pacemaker 쿼럼 출력의 예는 다음과 같습니다.An example of a healthy pacemaker quorum output would be:

Cluster name: MyAppSQL 
Last updated: Wed Oct 31 12:00:00 2016  Last change: Wed Oct 31 11:00:00 2016 by root via crm_resource on sqlvmnode1 
Stack: corosync 
Current DC: sqlvmnode1  (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum 
3 nodes and 1 resource configured 

Online: [ sqlvmnode1 sqlvmnode2 sqlvmnode3] 

Full list of resources: 

mssqlha (ocf::sql:fci): Started sqlvmnode1 

PCSD Status: 
sqlvmnode1: Online 
sqlvmnode2: Online 
sqlvmnode3: Online 

Daemon Status: 
corosync: active/disabled 
pacemaker: active/enabled 

예제에서는 partition with quorum 노드 과반수 쿼럼 온라인 임을 의미 합니다.In the example, partition with quorum means that a majority quorum of nodes is online. 클러스터에서 노드 과반수 쿼럼 손실 되 면 pcs status 돌아갑니다 partition WITHOUT quorum 않으며 리소스를 모두 중지 됩니다.If the cluster loses a majority quorum of nodes , pcs status will return partition WITHOUT quorum and all resources will be stopped.

online: [sqlvmnode1 sqlvmnode2 sqlvmnode3]현재 클러스터에 참여 하는 모든 노드의 이름을 반환 합니다.online: [sqlvmnode1 sqlvmnode2 sqlvmnode3] returns the name of all nodes currently participating in the cluster. 모든 노드가 참여 하지 않는 경우 pcs status 반환 OFFLINE: [<nodename>]합니다.If any nodes are not participating, pcs status returns OFFLINE: [<nodename>].

PCSD Status각 노드에 대해 클러스터 상태가 표시 됩니다.PCSD Status shows the cluster status for each node.

이유로 노드가 오프 라인 수 수 있습니다.Reasons why a node may be offline

노드가 오프 라인 상태일 때에 다음 항목을 확인 합니다.Check the following items when a node is offline.

  • 방화벽Firewall

    다음 포트가 열려 Pacemaker 통신할 수에 대 한 모든 노드에 있어야 합니다.The following ports need to be open on all nodes for Pacemaker to be able to communicate.

    • * * TCP: 2224 3121, 21064**TCP: 2224, 3121, 21064
  • Pacemaker 또는 Corosync 서비스 실행Pacemaker or Corosync services running

  • 노드 통신Node communication

  • 노드 이름 매핑Node name mappings

추가 리소스Additional resources

다음 단계Next steps

SQL Server에 대 한 Red Hat Enterprise Linux 공유 디스크 클러스터를 구성 합니다.Configure Red Hat Enterprise Linux shared disk cluster for SQL Server