StreamInsight Server 서버에 게시 및 연결

 

StreamInsight 클라이언트 프로그램에서는 포함된 StreamInsight in-process 서버를 사용하거나 원격 서버에 연결할 수 있습니다. 두 경우 모두 서버 개체를 사용하여 StreamInsight 응용 프로그램을 만들고 이벤트 원본 및 싱크와 같은 엔터티를 정의합니다. 원격 서버 인스턴스에 연결하려면 호스팅된 StreamInsight 서버가 웹 서비스 관리 효율성 인터페이스를 표시해야 합니다.

in-process로 호스팅하는 경우 StreamInsight 서버는 다음 호출을 통해 작성됩니다.

Server server = Server.Create(…);  

또는 StreamInsight 클라이언트가 별도의 프로세스로 실행되는 원격 서버에 연결할 수 있습니다. 다음 예에서는 클라이언트가 특정 끝점 주소로 식별되는 서버에 연결합니다.

Server server = Server.Connect(new System.ServiceModel.EndpointAddress(@"http://localhost/StreamInsight/MyInstance"));  

이 예에서는 인스턴스 이름이 “MyInstance”인 설치된 StreamInsight 서비스에 연결합니다. StreamInsight 서버(설치된 서비스 또는 사용자 지정 서버 응용 프로그램)에 연결하려면 연결하려는 사용자가 서버 인스턴스에 해당하는 그룹에 있어야 합니다. 이 그룹 및 StreamInsight 서비스에 대한 자세한 내용은 설치(StreamInsight)를 참조하십시오.

Connect() 메서드가 성공하려면 원격 서버가 지정된 URI(Uniform Resource Identifier)에서 웹 서비스 끝점을 통해 해당 관리 효율성 인터페이스를 표시해야 합니다. 예를 들어 클라이언트 응용 프로그램인 StreamInsight 이벤트 흐름 디버거는 활성 서버의 끝점에 연결하는 경우 후속 디버깅을 위해 쿼리 및 기타 서버 수준 개체에 대한 진단 정보를 검색하거나 실행 중인 쿼리에서 이벤트를 기록할 수 있습니다.

StreamInsight를 설치할 때 StreamInsight Host Windows 서비스를 구성하면 원격 서버의 역할을 하는 그 서비스에 연결할 수 있습니다. 응용 프로그램은 다음 예와 같이 웹 서비스 끝점을 추가하여 호스팅되는 StreamInsight 서버의 관리 효율성 인터페이스를 표시할 수 있습니다. 이 예에서는 "MyInstance"라는 등록된 StreamInsight 인스턴스가 있다고 가정합니다.

Server server = Server.Create("MyInstance");  
ServiceHost host = new ServiceHost(server.CreateManagementService());  
host.AddServiceEndpoint(typeof(IManagementService),  
                        new WSHttpBinding(SecurityMode.Message),  
                        "http://localhost:8090/MyStreamInsightServer");  
host.Open();  
...  
host.Close;  

관리 서비스를 사용하려면 Microsoft.ComplexEventProcessing.ManagementService.dll에 대한 참조를 추가하고 해당 네임스페이스를 지정해야 합니다.

StreamInsight에서는 웹 서비스 인터페이스에 WCF(Windows Communication Foundation)를 사용합니다. WCF 구성에 대한 자세한 설명은 이 설명서에서 다루지 않지만 웹 서비스를 표시할 때 다음 사항을 고려하십시오.

  • 지정한 URL로 바인딩하려면 이 URL이 응용 프로그램을 실행하는 사용자 계정에 대해 예약되어야 합니다. StreamInsight 응용 프로그램을 관리자 권한으로 실행하지 않은 경우는 높은 권한의 명령 셀에서 다음 명령을 실행해야 합니다.

    netsh http add urlacl url=http://+:8090/MyStreamInsightServer user=<domain\userid>  
    
    

    netsh를 통해 URL을 예약하려면 항상 포트 이름을 지정해야 합니다. 아직 사용되지 않은 포트를 선택합니다. 현재 예약된 URL을 나열하려면 다음 명령을 사용합니다.

    netsh http show urlacl  
    
    

    URL 예약에 사용한 와일드카드는 바인딩의 HostNameComparisonMode 매개 변수에 적용됩니다. 바인딩의 기본 일치 모드는 StrongWildcard입니다. 예를 들어 서버의 끝점 지정에 "localhost"를 사용하여 로컬 클라이언트에 대해서만 연결을 허용하기 위해 정확한 호스트 이름 일치를 사용하려면 먼저 해당하는 일치 모드를 설정해야 합니다.

    WSHttpBinding binding = new WSHttpBinding(SecurityMode.Message);  
    binding.HostNameComparisonMode = HostNameComparisonMode.Exact;  
    host.AddServiceEndpoint(typeof(IManagementService),  
            binding,  
            "http://localhost:8090/MyStreamInsightServer");  
    
    

    다른 모든 WCF 속성과 마찬가지로 이 속성도 app.config에서 지정할 수 있습니다.

    그런 다음 netsh 명령을 사용하여 해당 URL 범위도 예약해야 합니다.

    netsh http add urlacl url=http://localhost:8090/MyStreamInsightServer user=<domain\userid>  
    
    
  • 이전 예에서는 끝점 구성을 프로그래밍 방식으로 지정했습니다. 또는 WCF를 기반으로 하는 다른 응용 프로그램에서처럼 app.config 파일을 통해 끝점을 구성할 수 있습니다. 예를 들어 설치된 StreamInsight 서비스는 등록된 각 인스턴스에 대해 이러한 선언적 구성을 사용합니다. 구성 파일은 StreamInsight 설치 폴더의 Host\<instance_name>에 있으며 이름은 StreamInsightHost.exe.config입니다.

  • Windows XP 및 Windows Server 2003에서는 netsh를 사용할 수 없습니다. 대신 Windows Server 2003 지원 도구를 설치하고 "<drive>:Program Files\Support Tools\”의 httpcfg 명령을 사용하여 URL을 예약해야 합니다. 예를 들어 네트워크 서비스 계정에 대해 와일드카드 URL을 예약하려면 다음과 같이 합니다.

    httpcfg set urlacl /u http://+:80/StreamInsight/MyStreamInsightServer /a "D:(A;;GX;;;NS)"  
    
    

네트워크를 통한 연결을 위해 웹 서비스를 표시할 때는 다음과 같은 관련 정보를 고려하십시오.

  • 설치되어 있는 StreamInsight 서비스는 기본적으로 로컬 연결만 허용합니다. 설치된 서비스의 웹 서비스를 localhost가 아닌 다른 컴퓨터에 표시해야 할 경우 위에 설명된 단계에 따라 다음을 수행해야 합니다.

    1. 서비스의 URL 예약을 명시적인 "localhost"에서 와일드카드 "+"로 변경합니다.

    2. 서비스의 app.config에서 호스트 이름 일치를 StrongWildcard로 변경합니다.

  • 원격 연결을 사용하도록 설정할 때는 지정한 포트를 서버의 방화벽에서 열어야 합니다.

  • 컴퓨터 이름을 사용하여 네트워크를 통해 클라이언트를 원격 서버 인스턴스에 연결할 때는 IP 주소를 사용할 경우 NTLM 대신 Kerberos를 인증에 사용합니다. 따라서 연결하기 전에 클라이언트가 끝점에 대한 UPN(사용자 계정 이름) ID를 설정해야 합니다.

    EndpointIdentity ei = EndpointIdentity.CreateUpnIdentity(WindowsIdentity.GetCurrent().Name);  
    EndpointAddress ea = new EndpointAddress(new Uri(@"http://machinename:8090/MyStreamInsightServer"), ei, (AddressHeaderCollection)null);  
    server = Server.Connect(ea);  
    
    

끝점 지정에 대한 자세한 내용은 WCF 설명서를 참조하십시오.

StreamInsight 서버 및 쿼리 모니터링
StreamInsight 이벤트 흐름 디버거 사용
StreamInsight 어댑터 전체 예

표시: