Partager via


[Dongclee의 2011년 12월 첫 번째 포스팅] Windows Server 2008 R2의 MPIO를 사용하여 iSCSI 스토리지에 대한 이중화 구성 방안

안녕하세요…

이동철입니다.

이제 2011년도 마지막 12월에 들어섰네요… 무섭게 시간이 흘러가네요… 요즘 세상이 하도 어수선한데,, 이럴 때 일수록 다들 초심으로 돌아가서 본연의 책임과 역할을 수행해야 할 시점인 것 같습니다.

아마도 오늘 포스팅이 2011년 마지막 일 것 같습니다. 연초에 제가 한 달에 한 건씩의 포스팅을하기로 마음먹었는데, 약속을 지킨 것 같아 기쁜 마음입니다.

오늘 포스팅 내용은 Windows Server 2008 R2에서의 MPIO 구현입니다. MPIO(Multi-Path I/O)는 서버와 스토리지의 접근에 있어서, high availability를 구현하기 위한 업계 표준 기술입니다. 예를 들어, EMC의 Powerpath , Hitachi의 HDLM 과 같은 소프트웨어가 MPIO 소프트웨어 대표적인 제품들입니다. 즉, 이 소프트웨어를 사용하게 되면, 서버와 스토리지 사이의 접근에 있어서, HBA(Host Bus Adapter) 카드 2장을 마치 하나의 HBA 카드로 인식시킬 수 있습니다. 이런 구성에서 하나의 HBA 카드의 손상이 있을 경우, 나머지 하나의 HBA 카드가 여전히 스토리지를 접근 할 수 있기 때문에, 서버와 스토리지의 high availability를 구현할 수 있습니다.

그러나, 종종 third-party의 MPIO 소프트웨어들이 Windows Server 와 호환성에 문제가 있어, MPIO 구성의 어려움을 IT 관리자 분들은 경험하셨을 겁니다.

그래서, Windows Server 2008에서부터 OS 차원에서 MPIO 소프트웨어를 직접 제공하기 시작했습니다. 물론, Windows Server 2008의 MPIO를 지원하는 DSM(Device Specific Module) 드라이버를 third-party 업체에서 지원해야 합니다. 예를 들어, EMC 및 Hitachi 같은 스토리지 업체에서는 Windows Server 2008 의 MPIO를 사용하기 위해서는 자사의 DSM을 제공해야 합니다. 만약, IT 관리자 분들이 Windows Server 2008 의 MPIO를 사용하고자 한다면, 스토리지 업체에 MPIO를 지원하는 DSM 드라이버 존재 여부를 반드시 확인해야 합니다.

저는 Windows Server 2008 의 MPIO를 구현하기 위해서 별도의 스토리지를 준비할 수 없어서, Microsoft 사의 iSCSI Target v3.3 ( https://www.microsoft.com/download/en/details.aspx?id=19867 )을 사용하여 iSCSI 스토리지에 대한 MPIO 구성을 테스트 해 보았습니다. iSCSI 는 NIC을 사용하여 스토리지에 접근하는 방식이기 때문에, iSCSI Target 역할 서버 및 이를 접근하는 iSCSI Initiator 역할의 서버들 각각 iSCSI 트래픽 전용 네트워크 카드를 최소 2장 이상 확보해야 합니다.

제가 구성한 데모 환경 및 필요 서버군들은 아래와 같습니다.

 

위와 같이 iSCSI 스토리지에 대한 MPIO 구성을 step-by-step 가이드로 만들어 보았습니다.

만약, 고속의 SAN 스토리지가 필요하지 않은 환경이라면, 아래와 같은 조합으로 별도의 비용없이 스토리지의 MPIO 구성을 할 수 있습니다. 이 부분에 대한 판단을 IT 관리자 분들이 잘 하신다면, 상당한 비용 절약을 할 수 있습니다.

  • Microsoft iSCSI Target v3.3
  • Microsoft MPIO

 제가 아래와 같이 특정 iSCSI Initiator 의 MPIO로 구성된 NIC 중에서 한 개의 연결이 단절되더라도, 여전히 iSCSI 스토리지에 중단없이 연결 가능합니다.

 

이상과 같이 포스팅을 마칩니다.

12월 잘 마무리하시고 2012년 1월에 새로운 아티클로 찾아뵙도록 하겠습니다.

여러분들 모두 Merry Christmas & Happy New Year

 

 

 

MPIO 설치 및 구성 written by dongclee.pdf

Comments

  • Anonymous
    January 01, 2003
    감사하게도 이정훈 부장님이 지수님의 질문에 답변을 하셨네요,, 이정훈 부장님 감사합니다. 송년회 당연히 한 번 해야죠,, 허원 과장 통해서 S+ 한 번 보내주세요.. ^-^ 감사합니다.

  • Anonymous
    January 01, 2003
    지수님 김승섭님... 제가 없는 사이에 두분께서 심도있는 논의를 진행하셨네요... 저도 몇 가지 첨언하자면,,, 제가 iSCSI Private Network 이라고 표현한 건 바로 iSCSI 트래픽, 즉, iSCSI 스토리지 접근용 전용 네트워크를 의미합니다. 문서를 잘 읽어보시면, iSCSI Target 서버에서 iSCSI 용 포트는 101.1.1.x 네트워크와 102.1.1.x 네트워크에만 바인딩 시켰습니다. 즉, 서비스용도인 10.1.1.x 네트워크 대역은 iSCSI 트래픽이 전혀 발생하지 않습니다. 기타 다른 질문 있으시면 언제든 환영합니다.

  • Anonymous
    January 01, 2003
    지수님... 질문 충분히 이해되구요... 예로 들어주신 MPIO 로 구성될 iSCSI 네트워크 전용으로 172.16.100.x 및 172.16.101.x 를 사용하신다면,,, 예를 들어, 아래와 같이 구성하시면 됩니다. iSCSI initiator 1 (Failover Cluster Node 1)   iSCSI 전용 #1 : 172.16.100.1   iSCSI 전용 #2 : 172.16.101.1   서비스 전용  : 192,168,0,1 iSCSI initiator 2 (Failover Cluster Node 2)   iSCSI 전용 #1 : 172.16.100.2   iSCSI 전용 #2 : 172.16.101.2   서비스 전용  : 192,168,0,2 iSCSI Target   iSCSI 전용 #1 : 172.16.100.3   iSCSI 전용 #2 : 172.16.101.3 위와 같이 구성하시고, 이러한 환경에서 Failover Clustering을 구성하실려면,,, Cluster IP : 192.168.0.3 MSDTC IP : 192.168.0.4 SQL Service IP : 192.168.0.5 즉, MSDTC, Cluster, SQL IP 등은 iSCSI 전용 네트워크와 겹치지 않는 iSCSI Initiator의 서비스 전용 네트워크와 동일한 네트워크 대역의 IP를 하나씩 할당하시면 됩니다. 이해가 되셨는지 모르겠네요.... 수고하세요

  • Anonymous
    January 01, 2003
    @Blade 님 질문에 간단히 답을 드리자면,,,, 제가 생각하는 idea 이니, 다른 방법이 있을 수도 있을 것 같습니다. Data Storage 역할을 수행하는 iSCSI Target 2대의 서버에 DFS-R을 구축하고, 준비하신 다른 iSCSI Target 서버로 복제하시면 될 것 같습니다. 질문에 답이 될지 모르겠네요,, 궁금하신 사항있으시면 다시 문의 주세요,,,

  • Anonymous
    January 01, 2003
    지수님 이해가 되셨다니 다행이군요... 참고로 iSCSI Initiator 2대의 서버에는 추가적으로 Failover Clustering을 위한 heartbeat를 추가적으로 구성하시면 더 좋겠죠... 예를 들어 iSCSI initiator 1 (Failover Cluster Node 1)  iSCSI 전용 #1 : 172.16.100.1  iSCSI 전용 #2 : 172.16.101.1  서비스 전용  : 192,168,0,1  Failover Clustering Heart beat 전용 : 1.0.0.1 iSCSI initiator 2 (Failover Cluster Node 2)  iSCSI 전용 #1 : 172.16.100.2  iSCSI 전용 #2 : 172.16.101.2  서비스 전용  : 192,168,0,   Failover Clustering Heart beat 전용 : 1.0.0.2 그리고, 되도록이면 AD 와 iSCSI Target은 별도로 구성하시길 권장합니다. 정 형편이 어려우시면 어쩔 수 없지만 ^-^ 추운 날씨에 건강 유의하세요

  • Anonymous
    January 01, 2003
    물리적인 서버 구성 환경에서는 별도의 Heartbeat NIC의 구성을 권장합니다. 다만 위의 사례는 가상환경에서 구현하다보니 별도의 Heartbeat을 구현하지 않으신것 같고(Public NIC에서 Heartbeat 통신이 가능하므로), iSCSI Private Network은 일반적으로 생각하는 SAN으로 생각하시면 될것 같습니다. 2개의 서로 다른 iSCSI Private Network 을 이용해 MultiPath IO를 구현하는 것으로 생각하시면 될것 같습니다.

  • Anonymous
    January 01, 2003
    뭐 괜찮습니다. 그려 어렵지 않은 질문들이라서,,, 저도 많이 아는 건 아는데, 그래도 아는 질문해 주셔서 답변 드립니다. 제 권장 사항은 무조건 AD, iSCSI Target 및 SQL 전부 분리된 물리적 기계에 위치하는게 좋을 것 같습니다. 꼭, 물리적인 기계의 제약이 있다면, DB 서버에 AD를 위치시키는 것 보다는 iSCSI Target 쪽에 AD를 위치시키는게 좀 나아 보입니다. 그런데, 절대 이게 정답은 아닐지도 모릅니다.

  • Anonymous
    January 01, 2003
    우연히 방문해서 끼어들게 됩니다. 용서해 주시길...

  1. Hearbeat은 Windows server 2003에서 독립적으로 필요했고요. windows server 2008부터는 모든 네트워크로 Heartbeat를 할 수 있기 때문에 독립적인 Heartbeat는 필요 없습니다. 필요한 것은 2개 이상의 Heartbeat을 수행할 수 있는 네트워크이지요.
  2. iSCSI는 일반 네트워크 연결하고 동일하기 때문에 함께 사용해도 동작은 합니다. 하지만, 문제가 발생했을 때, 마이크로소프트에서 지원하지는 않습니다. 따라서, iSCSI는 본 블로그 저자가 밝혔듯이, iSCSI용도로만 사용해야 합니다.
  3. iSCSI 전용 어댑터란 아마도 iSCSI 처리를 하드웨어에서 할 수 있는 NIC를 말씀하시는 것 같은데, 차이는 성능상의 차이밖에 없을 것입니다. 어느 정도 성능을 원하시는지 모르겠지만, 일단 기본 NIC로 성능 테스트를 수행해 보시고 성능 요구가 더 필요하실 때, iSCSI 처리를 하드웨어적으로 할 수 있는 NIC로 하시는 방법이 나을 것 같습니다. 이동철 부장님, 송년회 한번 하셔야죠... ^^;
  • Anonymous
    December 06, 2011
    comment를 달았는데 제대로 안되서 다시 작성합니다. 위의 자료를 보다가 궁금한점이 있어서 문의 드립니다. iSCSI Private Network라고 표현하셨는데, 혹시 기존 자료나 다른자료에서 Heartbeat라고 표현하는것과 같은 뜻인지요? 아님 위의 구성에 heartbeat 구성은 별도로 또 해야 되는지요?

  • Anonymous
    December 07, 2011
    답변 감사드립니다. 물리적인 환경에서 모두 이중화를 해야 된다면 iSCSI 네트워크와 Heartbeat, Public 까지해서 총 6개의 NIC 필요하겠네요. 제대로 이해 한게 맞는지.. 아직 넘 서툰 엔지니어입니다. ㅋㅋ 편안한 저녁 보내세요

  • Anonymous
    December 08, 2011
    답변 감사드립니다. 한가지 더 질문 드려도 될런지요?? 꼭 iSCSI 전용 어덥터를 사용해야되는건지? 제가 듣기로는 요즘 PCI Express 2.0 이상 NIC의 경우 지원 가능하다고 하는데 맞는지요?? 편안한 저녁시간 보내세요

  • Anonymous
    December 15, 2011
    질문이 또 생겨서 글 남겨요.. 항상 정성스러운 답변 감사드립니다. 많이 배우고 있지만, 아직 미숙한 부분이 넘 많네요. ㅋㅋ 질문을 드리겠습니다. 만약 예시로 보여 주신 MPIO 환경이라면 iscsi 네트워크의 IP 대역(172.16.100.x , 172.16.101.x)이 각기 다를 경우 클러스터 구성하면서 Cluster IP, MSDTC, SQL IP도 각각 이중으로 설정해야 되나요? 아님 두 대역중 하나를 선택해서 기존과 겹치지 않게 3개를 설정해야 되나요? 질문이 이해가 되시는지요?

  • Anonymous
    December 15, 2011
    아.. 넘 감사합니다. 이해 잘됐습니다. 사실은 위의 구성에 다가 Heartbeat NIC까지 구성 하려니 좀 복잡해서 여러가지 여쭤봤습니다. 그리고, AD 와 iSCSI Target 서버를 같은 서버에 구성해도 무방 한지요? 크게 무리가 없어야 될거 같은데... 수고하세요

  • Anonymous
    December 15, 2011
    정말 감사드립니다. 넘 많은 도움을 받았습니다. 항상 건강하시고 행복한 하루 보내세요 감사합니다.

  • Anonymous
    December 15, 2011
    넘 친절하게 답변을 주셔서 저도 모르게 넘 귀찮게 해드리는건 아닌지 모르겠네요.. ㅋㅋ 마지막으로 한가지만 더 여쭤봐도 될까요 ? ㅋㅋ 저희 회사의 기존 구성이 DB * 2 + SAN Storage 입니다. DB 서버 2대에 서로 AD를 올려서 이중화를 하고 있는데, 재부팅시 엄청나게 오래걸린다고 하더라구요.. 그래서,  AD와 iSCSI Target를 별도로 구성하길 권장하셔서 같은 서버에 안 올린다면, 저희 회사 처럼 구성해도 무리가 없을까요?? 아님 AD와 iSCSI Target에 같이 올리는게 더 나은지요? 날씨가 넘 추워요.. 감기 조심하세요 감사합니다.

  • Anonymous
    December 19, 2011
    안녕하세요

  • 2대의 XenServer 5.6 SP2 - iSCSI Initiator
  • 2대의 iSCSI Target 3.3 - Failover Cluster (iSCSI Target & iSCSI Initiator)
  • 2대의 iSCSI Target 3.3 - Data Storage Data Storage 역활을 하는 3번째 iSCSI Target 3.3에서 생성한 가상디스크(LUN 0)를 다른 iSCSI Target 3.3 서버로 Data Replication 하는 방법이 있는지 알고 싶습니다. 감사합니다.