Scale Out 문제 해결Troubleshoot Scale Out

SSIS Scale Out에는 SSIS 카탈로그 데이터베이스인 SSISDB, Scale Out 마스터 서비스 및 Scale Out 작업자 서비스 사이의 통신이 포함됩니다.SSIS Scale Out involves communication among the SSIS Catalog database SSISDB, the Scale Out Master service, and the Scale Out Worker service. 경우에 따라 구성 실수, 액세스 권한 부족 및 기타 이유로 인해 통신이 끊어질 수 있습니다.Sometimes this communication breaks due to configuration mistakes, lack of access permissions, and other reasons. 이 문서는 Scale Out 구성 문제를 해결하는 데 도움이 됩니다.This article helps you to troubleshoot issues with your Scale Out configuration.

발생한 증상을 조사하려면 문제가 해결될 때까지 아래 단계를 하나씩 수행합니다.To investigate the symptoms you encounter, follow the steps below one by one until your problem is resolved.

Scale Out 마스터 실패Scale Out Master fails

증상Symptoms

  • Scale Out 마스터에서 SSISDB에 연결할 수 없습니다.Scale Out Master cannot connect to SSISDB.

  • Scale Out 관리자에서 마스터 속성이 표시되지 않습니다.Master properties cannot show in Scale Out Manager.

  • 마스터 속성이 [catalog].[master_properties] 보기에 채워지지 않습니다.Master properties are not populated in the view [catalog].[master_properties].

해결 방법Solution

  1. Scale Out이 사용하도록 설정되어 있는지 확인합니다.Check whether Scale Out is enabled.

    SSMS의 개체 탐색기에서 SSISDB를 마우스 오른쪽 단추로 클릭하고 Scale Out 기능이 사용하도록 설정됨을 선택합니다.In SSMS, in Objecy Explorer, right-click SSISDB and check Scale Out feature is enabled.

    사용하도록 설정된 Scale Out

    속성 값이 False이면 [catalog].[enable_scaleout] 저장 프로시저를 호출하여 Scale Out을 사용하도록 설정합니다.If the property value is False, enable Scale Out by calling the stored procedure [catalog].[enable_scaleout].

  2. Scale Out 마스터 구성 파일에 지정된 SQL Server 이름이 올바른지 확인하고 Scale Out 마스터 서비스를 다시 시작합니다.Check whether the SQL Server name specified in the Scale Out Master configuration file is correct, and restart the Scale Out Master service.

Scale Out 작업자 실패Scale Out Worker fails

증상Symptoms

  • Scale Out 작업자에서 Scale Out 마스터에 연결할 수 없습니다.Scale Out Worker cannot connect to Scale Out Master.

  • Scale Out 관리자에서 Scale Out 작업자를 추가한 후에 이 Scale Out 작업자가 표시되지 않습니다.Scale Out Worker does not show after adding it in Scale Out Manager.

  • Scale Out 작업자가 [catalog].[worker_agents] 보기에 표시되지 않습니다.Scale Out Worker does not show in the view [catalog].[worker_agents].

  • Scale Out 작업자 서비스가 실행되고 있지만 Scale Out 작업자는 오프라인 상태에 있습니다.The Scale Out Worker service is running, but the Scale Out Worker is offline.

해결 방법Solution

\<drive\>:\Users\\*[account running worker service]*\AppData\Local\SSIS\Cluster\Agent에서 Scale Out 작업자 서비스 로그의 오류 메시지를 확인합니다.Check the error messages in the Scale Out Worker service log under \<drive\>:\Users\\*[account running worker service]*\AppData\Local\SSIS\Cluster\Agent.

수신 대기 중인 엔드포인트가 없음No endpoint listening

증상Symptoms

"System.ServiceModel.EndpointNotFoundException: 메시지를 수락할 수 있는 https://[컴퓨터 이름]:[포트]/ClusterManagement/에서 수신 대기 중인 엔드포인트가 없습니다.""System.ServiceModel.EndpointNotFoundException: There was no endpoint listening at https://[MachineName]:[Port]/ClusterManagement/ that could accept the message."

해결 방법Solution

  1. Scale Out 마스터 서비스 구성 파일에 지정된 포트 번호가 올바른지 확인하고 Scale Out 마스터 서비스를 다시 시작합니다.Check whether the port number specified in the Scale Out Master service configuration file is correct, and restart the Scale Out Master service.

  2. Scale Out 작업자 서비스 구성 파일에 지정된 마스터 엔드포인트가 올바른지 확인하고 Scale Out 작업자 서비스를 다시 시작합니다.Check whether the master endpoint specified in the Scale Out Worker service configuration is correct, and restart the Scale Out Worker service.

  3. Scale Out 마스터 노드에서 방화벽 포트가 열려 있는지 확인합니다.Check whether the firewall port is open on the Scale Out Master node.

  4. Scale Out 마스터 노드와 Scale Out 작업자 노드 사이의 다른 연결 문제가 있으면 모두 해결합니다.Resolve any other connection issues between the Scale Out Master node and the Scale Out Worker node.

트러스트 관계를 설정할 수 없는 경우Could not establish trust relationship

증상Symptoms

"System.ServiceModel.Security.SecurityNegotiationException: '[컴퓨터 이름]:[포트]' 권한이 있는 SSL/TLS 보안 채널에 대해 트러스트 관계를 설정할 수 없습니다."""System.ServiceModel.Security.SecurityNegotiationException: Could not establish trust relationship for the SSL/TLS secure channel with authority '[Machine Name]:[Port]'."

"System.Net.WebException: 기본 연결이 닫혔습니다. SSL/TLS 보안 채널에 대한 트러스트 관계를 설정할 수 없습니다.""System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."

"System.Security.Authentication.AuthenticationException: 유효성 검사 절차에 따르면 원격 인증서가 잘못되었습니다.""System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure."

해결 방법Solution

  1. 인증서가 아직 설치되지 않은 경우 Scale Out 작업자 노드에서 로컬 컴퓨터의 루트 인증서 저장소에 Scale Out 마스터 인증서를 설치하고 Worker Scale 작업자 서비스를 다시 시작합니다.Install the Scale Out Master certificate to the Root certificate store of the local computer on the Scale Out Worker node, if the certificate is not yet installed, and restart the Scale Out Worker service.

  2. 마스터 엔드포인트의 호스트 이름이 Scale Out 마스터 인증서의 CN에 포함되어 있는지 확인합니다.Check whether the host name in the master endpoint is included in the CNs of the Scale Out Master certificate. 그렇지 않으면 Scale Out 작업자 구성 파일에서 마스터 엔드포인트를 다시 설정하고 Scale Out 작업자 서비스를 다시 시작합니다.If not, reset the master endpoint in the Scale Out Worker configuration file, and restart the Scale Out Worker service.

    참고

    DNS 설정으로 인해 마스터 엔드포인트의 호스트 이름을 변경할 수 없는 경우 Scale Out 마스터 인증서를 변경해야 합니다.If it's not possible to change the host name of the master endpoint due to DNS settings, you have to change the Scale Out Master certificate. SSIS Scale Out에 대한 인증서 관리를 참조하세요.See Manage certificates for SSIS Scale Out.

  3. Scale Out 작업자 구성에 지정된 마스터 지문이 Scale Out 마스터 인증서의 지문과 일치하는지 확인합니다.Check whether the master thumbprint specified in the Scale Out Worker configuration matches the thumbprint of the Scale Out Master certificate.

보안 채널을 설정할 수 없는 경우Could not establish secure channel

증상Symptoms

"System.ServiceModel.Security.SecurityNegotiationException: '[컴퓨터 이름]:[포트]' 권한이 있는 SSL/TLS에 대한 보안 채널을 설정할 수 없습니다.""System.ServiceModel.Security.SecurityNegotiationException: Could not establish secure channel for SSL/TLS with authority '[Machine Name]:[Port]'."

"System.Net.WebException: 요청이 중단되었습니다, SSL/TLS 보안 채널을 만들 수 없습니다.""System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel."

해결 방법Solution

아래 명령으로 Scale Out 작업자 서비스를 실행하는 계정에 Scale Out 작업자 인증서에 대한 액세스 권한이 있는지 확인합니다.Check whether the account running the Scale Out Worker service has access to the Scale Out Worker certificate by running the following command:

winhttpcertcfg.exe -l -c LOCAL_MACHINE\MY -s {CN of the worker certificate}

계정에 액세스 권한이 없는 경우 다음 명령을 실행하여 액세스 권한을 부여하고 Scale Out 작업자 서비스를 다시 시작합니다.If the account does not have access, grant access by running the folloowing command, and restart Scale Out Worker service.

winhttpcertcfg.exe -g -c LOCAL_MACHINE\My -s {CN of the worker certificate} -a {the account running Scale Out Worker service}

HTTP 요청이 금지된 경우HTTP request forbidden

증상Symptoms

"System.ServiceModel.Security.MessageSecurityException: HTTP 요청이 클라이언트 인증 체계 'Anonymous'에서 금지되었습니다.""System.ServiceModel.Security.MessageSecurityException: The HTTP request was forbidden with client authentication scheme 'Anonymous'."

"System.Net.WebException: 원격 서버에서 (403) 사용할 수 없음 오류를 반환했습니다.""System.Net.WebException: The remote server returned an error: (403) Forbidden."

해결 방법Solution

  1. 인증서가 아직 설치되지 않은 경우 Scale Out 마스터 노드에서 로컬 컴퓨터의 루트 인증서 저장소에 Scale Out 작업자 인증서를 설치하고 Worker Scale 작업자 서비스를 다시 시작합니다.Install the Scale Out Worker certificate to the Root certificate store of the local computer on the Scale Out Master node, if the certificate is not yet installed, and restart the Scale Out Worker service.

  2. Scale Out 마스터 노드에 있는 로컬 컴퓨터의 루트 인증서 저장소에서 쓸모 없는 인증서를 정리합니다.Clean up useless certificates in the Root certificate store of the local computer on Sthe cale Out Master node.

  3. Scale Out 마스터 노드에서 다음 레지스트리 항목을 추가하여 TLS/SSL 핸드셰이크 프로세스 중에 신뢰할 수 있는 루트 인증 기관 목록을 더 이상 보내지 않도록 Schannel을 구성합니다.Configure Schannel to no longer send the list of trusted root certification authorities during the TLS/SSL handshake process by adding the following registry entry on the Scale Out Master node.

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

    값 이름: SendTrustedIssuerListValue name: SendTrustedIssuerList

    값 형식: REG_DWORDValue type: REG_DWORD

    값 데이터: 0(False)Value data: 0 (False)

HTTP 요청 오류HTTP request error

증상Symptoms

"System.ServiceModel.CommunicationException: https://[컴퓨터 이름]:[포트]/ClusterManagement/에 대한 HTTP 요청을 수행하는 동안 오류가 발생했습니다. 이것은 HTTPS 경우에 서버 인증서가 HTTP.SYS로 제대로 구성되지 않았기 때문일 수 있습니다. 클라이언트와 서버 사이에 보안 바인딩이 불일치하기 때문일 수도 있습니다.""System.ServiceModel.CommunicationException: An error occurred while making the HTTP request to https://[Machine Name]:[Port]/ClusterManagement/. This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case. This could also be caused by a mismatch of the security binding between the client and the server."

해결 방법Solution

  1. 다음 명령을 실행하여 Scale Out 마스터 인증서가 마스터 노드의 마스터 엔드포인트의 포트에 올바르게 바인딩되어 있는지 확인합니다.Check whether the Scale Out Master certificate is bound to the port in the master endpoint correctly on the master node by running the following command:

    netsh http show sslcert ipport=0.0.0.0:{Master port}
    

    표시된 인증서 해시가 Scale Out 마스터 인증서 지문과 일치하는지 확인합니다.Check whether the certificate hash displayed matches the Scale Out Master certificate thumbprint. 바인딩이 올바르지 않은 경우 다음 명령을 실행하여 바인딩을 다시 설정하고 Scale Out 작업자 서비스를 다시 시작합니다.If the binding is not correct, reset the binding by running the following commands, and restart Scale Out Worker service.

    netsh http delete sslcert ipport=0.0.0.0:{Master port}
    netsh http add sslcert ipport=0.0.0.0:{Master port} certhash={Master certificate thumbprint} certstorename=Root  appid={random guid}
    

인증서 저장소를 열 수 없는 경우Cannot open certificate store

증상Symptoms

Scale Out 관리자에서 Scale Out 작업자를 Scale Out 마스터에 연결할 때 "컴퓨터에서 인증서 저장소를 열 수 없음"이라는 오류 메시지와 함께 유효성 검사가 실패했습니다.Validation fails when connecting a Scale Out Worker to the Scale Out Master in Scale Out Manager with the error message, "Cannot open certificate store on the machine."

해결 방법Solution

  1. Scale Out 관리자를 관리자 권한으로 실행합니다.Run Scale Out Manager as administrator. SSMS로 Scale Out 관리자를 열면 관리자로 SSMS를 실행해야 합니다.If you open Scale Out Manager with SSMS, you have to run SSMS as administrator.

  2. 실행되고 있지 않으면 컴퓨터에서 원격 레지스트리 서비스를 시작합니다.Start the Remote Registry service on the computer if it is not running.

실행이 시작되지 않는 경우Execution doesn't start

증상Symptoms

Scale Out에서 실행이 시작되지 않습니다.Execution in Scale Out does not start.

해결 방법Solution

[catalog].[worker_agents] 보기에서 패키지를 실행하도록 선택한 컴퓨터의 상태를 확인합니다.Check the status of the computers you selected to run the package in the view [catalog].[worker_agents]. 하나 이상의 작업자가 온라인 상태여야 하며 사용하도록 설정되어 있어야 합니다.At least one worker must be online and enabled.

로그가 없음No log

증상Symptoms

패키지가 성공적으로 실행되었지만 메시지가 기록되지 않았습니다.Packages run successfully, but there no messages are logged.

해결 방법Solution

SSISDB를 호스팅하는 SQL Server 인스턴스에서 SQL Server 인증이 허용되는지 확인합니다.Check whether SQL Server Authentication is allowed by the SQL Server instance that hosts SSISDB.

참고

Scale Out 로깅에 대한 계정을 변경한 경우 Scale Out 로깅에 대한 계정 변경을 참조하고 로깅에 사용된 연결 문자열을 확인합니다.If you have changed the account for Scale Out logging, see Change the Account for Scale Out Logging and verify the connection string used for logging.

오류 메시지가 도움이 되지 않는 경우Error messages aren't helpful

증상Symptoms

패키지 실행 보고서의 오류 메시지가 문제를 해결하는 데 충분하지 않습니다.The error messages in the package execution report are not sufficient for troubleshooting.

해결 방법Solution

WorkerSettings.config에 구성된 TasksRootFolder에서 더 많은 실행 로그를 찾을 수 있습니다.More execution logs can be found under the TasksRootFolder configured in WorkerSettings.config. 기본적으로 이 폴더는 \<drive\>:\Users\\[account]\AppData\Local\SSIS\ScaleOut\Tasks입니다.By default, this folder is \<drive\>:\Users\\[account]\AppData\Local\SSIS\ScaleOut\Tasks. [계정]은 기본값인 SSISScaleOutWorker140을 사용하여 Scale Out 작업자 서비스를 실행하는 계정입니다.The [account] is the account running the Scale Out Worker service, with default value SSISScaleOutWorker140.

[execution id]를 사용하여 패키지 실행 로그를 찾으려면 다음 Transact-SQL 명령을 실행하여 [task id]를 가져옵니다.To locate the log for the package execution with [execution ID], execute the following Transact-SQL command to get the [task ID]. 그런 다음 TasksRootFolder에서 [task ID]가 포함된 하위 폴더 이름을 찾습니다.Then, find the subfolder name that contains [task ID] under TasksRootFolder.

SELECT [TaskId]
FROM [SSISDB].[internal].[tasks] tasks, [SSISDB].[internal].[executions] executions 
WHERE executions.execution_id = *Your Execution Id* AND tasks.JobId = executions.job_id

경고

이 쿼리는 문제 해결 목적으로만 사용됩니다.This query is for troubleshooting purpose only. 쿼리에서 참조되는 내부 보기는 앞으로 변경됩니다.The internal views referenced in the query are to change in the future.

다음 단계Next steps

자세한 내용은 SSIS Scale Out 설정 및 구성에 대한 다음 문서를 참조하세요.For more info, see the following articles about setting up and configuring SSIS Scale Out: