Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
outlinetrue

개요

DRBD는 하나의 리소스에 대해 두 개의 채널로 동작한다. 각 채널은 연결 방향이 서로 반대로 수립되어, 서버/클라이언트로 구분할 수 없는 P2P구조로 동작한다.

DRBD의 통신을 중계하기 위해서 DRX도 두 개의 채널을 사용하는데, DRX간 연결 과정이 더해지면 연결이 총 6개로 늘어난다.
로컬 DRX에서는 원격 DRX와 원격 DRBD의 연결 상태를 제외한 4개의 연결만 확인 할 수 있다.

연결 구조

Code Block
languagetext
themeRDark
titledrx-ctl show
Command id (5) : show
================================================================================================================================================================================
Name                             Type   Status         local-drbd-ip            listen-lan-ip            local-drx-wan-ip         remote-drx-ip            Up since
================================================================================================================================================================================
p-s-DESKTOP-L141PH6-drxdev1      meta   established    192.168.35.111:7789      192.168.35.101:7790      192.168.35.101:7791      192.168.35.1:7791        -
p-s-DESKTOP-L141PH6-drxdev1      data   established    192.168.35.111:7789      192.168.35.101:7790      192.168.35.101:7791      192.168.35.1:7791        2018-08-30 14:51:34
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 All connections : 2

...

각각의 채널은 DRX간 연결시 채널 유형(meta/data)이 정해지지 않은 상태이며, DRBD와의 연결이 수립되면 DRBD로부터 채널 유형을 받게 된다.

접속 상태

분류상태 값채널설명동작
DRX간 연결bridging전체원격 DRX와 연결 시도 중연결이 완료되면 bridged 상태로 전환
bridged전체원격 DRX와 연결됨상태 변경 후 즉시 waiting/connecting 상태로 전환
DRBD와의 연결waitingAcceptorDRBD의 연결을 기다리는 중DRBD와 연결되면 connected 상태로 전환
connectingConnectorDRBD로 연결 중

원격 DRX로부터 채널 유형을 받아 DRBD에 접속
DRBD와 연결되면 establishing 상태로 전환

connectedAcceptorDRBD로부터 DRBD로부터 채널 유형을 받아 원격 DRX에 전달하고 establishing 상태로 전환
establishing전체연결 수립중Connector: 원격 DRX로 연결 수립 이벤트를 전달하고 established 상태로 전환
Acceptor: 원격 DRX로부터 연결 수립 이벤트를 받으면 established 상태로 전환
established전체연결이 수립됨DRBD의 통신 데이터를 중계한다
연결 중지close_pending전체연결을 닫기 전의 정리 단계BAB에 남아있는 데이터를 전달하고 stopping 상태로 전환
stopping전체연결 닫는 중현재 연결을 닫고 stopped 상태로 전환
stopped전체연결이 닫힘재 연결을 준비하고 bridging 상태로 전환

일반적인 상태변화 순서

정상적인 연결시 채널별 상태 변화는 다음과 같다.

...

  • 로컬 DRBD와의 연결이 끊긴 경우
    1. 연결 종료를 위해 두 채널 모두 stopping 상태로 전환된다. (data 채널은 BAB를 비우기 위해 먼저 close pending 상태를 거치게 된다.)
    2. 연결을 종료하는 작업이 완료되면 stopped 상태로 전환된다.
    3. 로컬 DRBD와의 재 연결을 위해 connecting / waiting 상태로 전환된다.
  • 원격 DRBD와 원격 DRX 사이의 연결이 끊긴 경우
    1. 위의 로컬 DRBD와의 연결이 끊긴 경우의 상황이 원격 DRX에서 발생하면서, 로컬 DRX도 같은 순서로 stopping, stopped를 거쳐 connecting / waiting 상태로 전환된다.
    2. 로컬 DRBD는 재 연결이 가능하므로 즉시 DRBD로부터 접속이 이루어진다.
      1. Acceptor에 DRBD가 연결되어 connected를 거쳐 establishing 상태로 전환된다.
      2. Connector는 원격 DRX가 원격 DRBD와 연결되지 않았으므로 connecting 상태로 유지된다.
  • 원격 DRX와의 연결이 끊기는 경우
    1. 연결 종료를 위해 두 채널 모두 stopping 상태로 전환된다. (data 채널은 BAB를 비우기 위해 먼저 close pending 상태를 거치게 된다.)
    2. 연결을 종료하는 작업이 완료되면 stopped 상태로 전환된다.
    3. 원격 DRX와의 재 연결을 위해 bridging 상태로 전환된다.

상태값에 따른 동작 상황 분석

Acceptor 채널Connector 채널상황 분석
bridgingbridging원격 DRX가 종료되었거나, 로컬 DRX와 원격 DRX가 서로에게 접속할 수 없다.
bridgingconnecting로컬 DRX에 원격 DRX가 접속할 수 없다.
waitingbridging원격 DRX에 접속할 수 없다.
waitingconnecting로컬 DRBD의 리소스가 연결중 상태가 아니거나 로컬 DRX에 접속할 수 없다.
establishingconnecting로컬 DRBD는 연결되나 원격 DRX가 원격 DRBD에 연결할 수 없다.
establishedconnecting로컬 DRBD에서 로컬 DRX에는 연결이 되지만 로컬 DRX가 로컬 DRBD에 연결할 수 없다.
establishingestablished원격 DRBD에서 원격 DRX에는 연결이 되지만 원격 DRX가 원격 DRBD에 연결할 수 없다.
waitingestablished로컬 DRX에서 로컬 DRBD로 연결은 되지만 로컬 DRBD가 로컬 DRX에 연결할 수 없다.
establishedconnecting원격 DRX에서 원격 DRBD로 연결은 되지만 원격 DRBD가 원격 DRX에 연결할 수 없다.

...