SDLMUX 소프트웨어는 두 개의 네트워크 어댑터를 하나의 IP 인터페이스로 통합하여, 활성 어댑터의 링크가 끊기거나 어댑터에 장애가 발생할 경우 페일오버 기능을 제공합니다. 일단 설정만 완료되면 별도의 관리가 거의 필요하지 않지만, 몇 가지 유의해야 할 사항이 있습니다.
첫째, SDLMUX는 부하 분산 기능을 제공하지 않으며, 모든 트래픽은 활성 어댑터를 통해 송수신됩니다.
둘째, ftServer VSeries 하드웨어에서 활성 어댑터의 MAC 주소는 00:00:A8:4v:wx:yz 형식입니다. 여기서 00:00:A8은 IEEE에서 할당한 Stratus 조직 고유 식별자(OUI)입니다. "v"는 SDLMUX 장치가 초기화된 순서에 기반한 인덱스로, 0부터 시작합니다. "wx:yz" 값은 시스템 일련번호를 기반으로 합니다. 대기 상태 주소는 활성 주소와 네 번째 바이트의 상위 니블만 다르며, 4 대신 6으로 표시됩니다. 또한, 동일한 모듈에 있는 두 개의 활성(또는 대기) 어댑터 간 MAC 주소의 차이도 네 번째 바이트의 하위 니블에서만 나타납니다. 모든 MAC 주소 목록을 얻는 가장 쉬운 방법은 “MAC”을 조건으로 지정하여 analyze_system 요청 “dump_sdlmux”를 사용하는 것입니다(그림 1 참조).
as: match 'MAC' ; dump_sdlmux MAC address = 0000A8405A8B MAC address = 0000A8605A8B MAC address = 0000A8415A8B MAC address = 0000A8615A8B MAC address = 0000A8425A8B MAC address = 0000A8625A8B MAC address = 0000A8435A8B MAC address = 0000A8635A8Bas: |
그림 1
MAC 주소만으로는 큰 도움이 되지 않습니다. “MAC”이나 “#”을 기준으로 검색하면 MAC 주소와 SDLMUX 및 네트워크 어댑터 장치 이름을 확인할 수 있습니다. 이 목록에는 SDLMUX 파트너십에 속하지 않는 네트워크 어댑터는 포함되지 않는다는 점에 유의하십시오.
as: match 'MAC' -or '#' ; dump_sdlmux sdlmux device = #sdlmuxA.m16.10-5-0.11-5-0 MAC address = 0000A8405A8B Interface device = %phx_vos#enetA.m16.10-5-0 MAC address = 0000A8605A8B
sdlmux device = #sdlmuxA.m16.10-5-1.11-5-1 MAC address = 0000A8415A8B Interface device = %phx_vos#enetA.m16.10-5-1 MAC address = 0000A8615A8B
sdlmux device = #sdlmux.m16.11-2 MAC address = 0000A8425A8B Interface device = %phx_vos#enet.m16.11.11-2 MAC address = 0000A8625A8B
sdlmux device = #sdlmux.m16.11-3 MAC address = 0000A8435A8B Interface device = %phx_vos#enet.m16.10.11-3 MAC address = 0000A8635A8B Interface device = %phx_vos#enet.m16.11.11-3as: |
그림 2
셋째, SDLMUX 네트워크 어댑터는 네트워크 경로가 정상적으로 작동하는지 확인하기 위해 파트너 장치에 이더넷 802.2 LLC 프레임을 전송합니다. 이러한 테스트 프레임 5세트가 3초 간격으로 전송된 후, 33초의 간격이 이어집니다. 트레이스 1은 이러한 패턴의 세 번의 주기를 보여줍니다. 또한 트레이스 1에는 활성 어댑터(프레임 1)와 대기 어댑터(프레임 2)에서 전송된 실제 프레임도 표시되어 있습니다. 사이클을 더 쉽게 파악할 수 있도록 33초 간격 후에 전송된 프레임을 강조 표시했습니다. 이 프레임들은 이더넷 타입 II 프레임이나 IP 패킷이 아니며, 네트워크 어댑터에 연결된 스위치와 두 어댑터 사이의 경로에 있는 모든 스위치는 이러한 802.2 LLC 프레임을 차단하지 않는 구성으로 설정되어야 합니다.
|
No. delta Time Source Destination Protocol Info 1 0.000000 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 0000 00 00 a8 62 5a 8b 00 00 a8 42 5a 8b 00 1b ac ac ...bZ....BZ..... 0010 03 31 32 39 2e 31 2e 30 00 00 00 00 00 00 00 00 .129.1.0........ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 b1 60 74 48 .............`tH 2 0.000007 StratusC_62:5a:8b StratusC_42:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 0000 00 00 a8 42 5a 8b 00 00 a8 62 5a 8b 00 1b ac ac ...BZ....bZ..... 0010 03 31 32 39 2e 31 2e 30 00 00 00 00 00 00 00 00 .129.1.0........ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 45 23 24 c0 ............E#$. 3 2.999945 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 4 0.000007 StratusC_62:5a:8b StratusC_42:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 5 2.999943 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 6 0.000007 StratusC_62:5a:8b StratusC_42:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 7 2.999882 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 8 0.000007 StratusC_62:5a:8b StratusC_42:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 9 2.999946 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
11 32.99900 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 12 0.000007 StratusC_62:5a:8b StratusC_42:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 13 2.999945 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 14 0.000007 StratusC_62:5a:8b StratusC_42:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 15 2.999938 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 16 0.000007 StratusC_62:5a:8b StratusC_42:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 17 2.999942 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 18 0.000007 StratusC_62:5a:8b StratusC_42:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 19 2.999943 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 20 0.000008 StratusC_62:5a:8b StratusC_42:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 21 32.99900 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 22 0.000007 StratusC_62:5a:8b StratusC_42:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 23 2.999944 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 24 0.000007 StratusC_62:5a:8b StratusC_42:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 25 2.999947 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 26 0.000007 StratusC_62:5a:8b StratusC_42:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 27 2.999938 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 28 0.000007 StratusC_62:5a:8b StratusC_42:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 29 2.999946 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 30 0.000010 StratusC_62:5a:8b StratusC_42:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command 31 32.99900 StratusC_42:5a:8b StratusC_62:5a:8b LLC U, func=UI; DSAP 0xac Individual, SSAP 0xac Command |
트레이스 1
참고로, packet_monitor를 사용하여 이러한 테스트 프레임을 확인할 수는 없습니다. 이 프레임들은 packet_monitor가 스택에 접근하는 지점보다 더 아래쪽에서 전송되며, packet_monitor가 이를 읽기 전에 SDLMUX가 스택에서 해당 프레임들을 제거하기 때문입니다.
넷째, 각 어댑터가 서로 다른 스위치에 연결되어 있고 해당 스위치 간의 링크에 장애가 발생하거나 다른 이유로 테스트 프레임이 통과되지 않는 경우, syserr_log에 그림 3과 유사한 내용이 표시됩니다. 릴리스 16.2.1ak 및 17.0.0ah부터는 테스트 프레임 오류가 발생하면 SDLMUX가 해당 의심 인터페이스를 통해 마지막으로 성공적으로 ARP 응답을 받은 호스트에 ARP 요청을 트리거합니다. 응답을 받으면 활성 어댑터가 정상적으로 작동하고 있음을 확인하므로, 대기 어댑터를 재설정하여 작동하도록 시도합니다. 테스트 프레임을 차단하는 네트워크 문제가 있는 경우 어댑터를 재설정해도 소용이 없으며, 결국 어댑터는 MTBF 상태가 됩니다(그림 3의 08:08:10 타임스탬프 참조). dlmux_admin 명령은 고장 난 어댑터를 DOWN 상태로 보고하며(그림 4), 이 시점에는 테스트할 대상이 없으므로 추적 결과에는 테스트 프레임이 표시되지 않습니다. ARP 응답을 수신하지 못하거나 ARP 요청을 전송하지 않는 릴리스에서 문제가 발생하면, SDLMUX는 어댑터 간에 페일오버를 수행하고 새로운 대기 어댑터를 손상시킵니다. 다음 사이클 동안 테스트 프레임 전송이 다시 실패하고 ARP 응답을 수신하지 못하면 페일오버 및 손상 처리가 다시 수행됩니다. 결국 한 개의 어댑터가 MTBF 상태가 됩니다.
08:05:02 WARNING(64): SDLMUX: the devices in group #sdlmux.m16.11-208:05:02 WARNING(65): SDLMUX: are not exchanging test packets with each other08:05:02 WARNING(66): SDLMUX: but the active adapter is able to communicate wi+th other hosts!08:05:02 WARNING(67): SDLMUX: This indicates some sort of network or cabling i+ssue!08:05:02 WARNING(68): SDLMUX: breaking adapter %phx_vos#enet.m16.10.11-2: XID+communication issue08:05:02 PCI 10/11/2 enet.m16.10.11-2 Break Requested08:05:02 WARNING(69): SDLMUX: device name %phx_vos#enet.m16.10.11-2 is broken08:05:02 PCI 10/11/2 enet.m16.10.11-2 Adding08:05:04 PCI 10/11/2 enet.m16.10.11-2 Online08:05:04 WARNING(70): genet in (10/11/2) Link is Up.08:05:04 WARNING(71): SDLMUX: device %phx_vos#enet.m16.10.11-2 back to servic+e08:05:49 WARNING(72): SDLMUX: breaking adapter %phx_vos#enet.m16.10.11-2: XID+communication issue08:05:49 PCI 10/11/2 enet.m16.10.11-2 Break Requested08:05:49 WARNING(73): SDLMUX: device name %phx_vos#enet.m16.10.11-2 is broken08:05:49 PCI 10/11/2 enet.m16.10.11-2 Adding08:05:52 PCI 10/11/2 enet.m16.10.11-2 Online08:05:52 WARNING(74): genet in (10/11/2) Link is Up.08:05:52 WARNING(75): SDLMUX: device %phx_vos#enet.m16.10.11-2 back to servic+e08:07:22 WARNING(76): SDLMUX: the devices in group #sdlmux.m16.11-208:07:22 WARNING(77): SDLMUX: are not exchanging test packets with each other08:07:22 WARNING(78): SDLMUX: but the active adapter is able to communicate wi+th other hosts!08:07:22 WARNING(79): SDLMUX: This indicates some sort of network or cabling i+ssue!08:07:22 WARNING(80): SDLMUX: breaking adapter %phx_vos#enet.m16.10.11-2: XID+communication issue08:07:22 PCI 10/11/2 enet.m16.10.11-2 Break Requested08:07:22 WARNING(81): SDLMUX: device name %phx_vos#enet.m16.10.11-2 is broken08:07:22 PCI 10/11/2 enet.m16.10.11-2 Adding08:07:25 PCI 10/11/2 enet.m16.10.11-2 Online08:07:25 WARNING(82): genet in (10/11/2) Link is Up.08:07:25 WARNING(83): SDLMUX: device %phx_vos#enet.m16.10.11-2 back to servic+e08:08:10 WARNING(84): SDLMUX: breaking adapter %phx_vos#enet.m16.10.11-2: XID+communication issue08:08:10 PCI 10/11/2 enet.m16.10.11-2 Break Requested08:08:10 PCI 10/11/2 MTBF Failure08:08:10 WARNING(85): SDLMUX: device name %phx_vos#enet.m16.10.11-2 is broken |
그림 3
dlmux_admin #sdlmux.m16.11-2 sdlmux_statusGroup Name: #sdlmux.m16.11-2Device Name: %phx_vos#enet.m16.11.11-2Adapter State: ACTIVE UPPartner: %phx_vos#enet.m16.10.11-2Partner State: DOWN |
그림 4
어댑터를 다시 사용하려면 board_admin 명령어를 사용하여 어댑터를 다시 추가해야 합니다. 물론 근본적인 문제를 해결하지 않은 채 이 작업을 수행하면 어댑터는 다시 고장 날 것입니다.
board_admin 10/11/2 addboard_admin device_id: 10/11/2 action: addDo you want to continue? (yes, no) yesCommand completed. |
그림 5
다섯째, 활성 어댑터는 항상 동일한 MAC 주소를 가지므로, 장애 조치(failover)가 발생하면 MAC 주소가 한 스위치 포트에서 다른 포트로 이동하게 됩니다. 스위치 포트에 설정된 모든 보안 설정은 이러한 변경을 허용해야 합니다. 또한 스위치 포트는 다른 스위치 포트와 통신하여 다양한 설정을 협상하도록 구성될 수 있습니다. 이러한 협상은 스위치가 새로운 MAC 주소나 링크 복구와 같은 토폴로지 변화를 감지할 때 트리거될 수 있습니다. 이러한 설정이 협상될 때까지 스위치는 일반 프레임을 전달하지 않을 수 있습니다. SDLMUX 어댑터에 연결된 스위치 포트는 이러한 협상을 수행하지 않도록 구성해야 합니다. 또한 SDLMUX 어댑터에 연결된 스위치 포트는 스패닝 트리 프로토콜을 실행하지 않거나 학습 및 수신 대기 단계를 건너뛰도록 구성해야 합니다(Cisco에서는 이를 portfast라고 부릅니다). 학습 및 수신 대기 단계 동안 스위치는 일반 데이터 프레임을 전달하지 않습니다. 극단적인 경우, 이러한 설정으로 인한 지연 시간이 너무 길어 SDLMUX가 또 다른 장애 전환을 유발할 수도 있습니다.
마지막으로, 두 링크가 모두 정상적으로 작동하는지 확인하기 위해 어댑터의 링크 상태를 모니터링해야 합니다. 링크에 장애가 발생하더라도 시스템이 홈 서버에 신호를 보내지는 않으며, 시스템이 내결함성을 갖추고 있어 연결이 끊어지는 일은 없습니다. 이에 대해서는 이전 블로그 게시물인 ‘네트워크 어댑터 상태 모니터링’에서 다룬 바 있습니다.
