Versions Compared

Key

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

Table of Contents

Info
  • DRX 의 CLI 명령체계에 대한 설명과 응용 연동에 따른 프로그래밍 관점의 명령체계와 응용 연동을 위한 고려사항에 대해 기술합니다.

...


개요

DRX CLI는 복제 리소스에 대한 상태 조회와 제어/통지 명령어로 구분하며 drx-ctl 유틸리티를 통해 플랫폼에 관계없이 동일한 방식으로 인터페이스를 제공하며 리소스에 대한 상태 조회, 제어, 통지를 제공합니다.

  • 조회 명령은 리소스에 대한 일반적인 요약정보를 출력하며 -v 옵션을 명령줄에 포함할 경우 상세정보를 출력합니다.
  • 제어 명령은 DRX를 리소스 단위로 기동시키고 중지시키는 설정을 동적으로 할 수 있는 명령입니다. DRX 리소스를 시작하고 중지하거나 특정 설정을 변경합니다.
  • 통지 명령은 DRX에서 발생하는 실시간 상태 변경 상황을 리소스 단위로 출력하는 명령입니다. 한번 수행하여 종료될 때까지 발생하는 이벤트를 수신하고 그 결과를 콘솔에 출력하는 기능을 제공합니다출력합니다.

...


CLI

DRX의 CLI는 조회, 제어, 통지로 분류됩니다분류합니다. 

CLI의 명령어 형식은 drx-ctl {옵션} [명령어] [명령어 인자...]입니다. "명령어"와 "명령어 인자"를 통해서 출력 종류가 결정되며 상세 모드(-v) 를 선택하는 "옵션"은 생략 가능합니다. "명령어 인자"에는 접속 이름(connect name) 또는 리소스(resource)를 사용할 수 있습니다.CLI의 출력 형식은 "명령어"에 따라서 다양하며 "명령어 인자"로 원하는 출력 가 들어가고 출력 항목을 지정할 수 있습니다.

...

목록


분류항목옵션명령Alias비고
조회




DRX 버전N/Adrx-ctl versionverdrx 버전
DRX 상태"drx-ctl info-DRX 프로세스의 기동 또는 중지 상태
라이선스"drx-ctl licenselic라이선스 정보
리소스 구성"drx-ctl dump [res|all]-

리소스 구성, drx.conf

  • 리소스 구성 파일을 drbdadm bsradm 유틸에서 처리하기에 resource를 입력
리소스 구동"drx-ctl show [res|conn|all]-동작중인 설정 정보
연결-v

drx-ctl connection [res|conn|all]

co
  • 연결 정보
  • 상세모드 (-v) : IP, Up Since, 화살표 제거
통계-vdrx-ctl statistics [res|conn|all]st
  • 통계 정보
  • 상세모드 (-v) : Tx/Rx packet, 압축/암호화 Cur, Min, Max
BAB -vdrx-ctl memusage [res|conn|all] mem
  • BAB 버퍼 정보
  • 상세모드 (-v) : Begin, End, BAB Latency
로그N/Adrx-ctl log  [res|conn|all] -
  • 현재 기록중인 로그 파일을 출력
  • Rolling한 로그 파일은 출력안함
제어

리소스 up"drx-ctl up [res|conn|all]-리소스 기동
리소스 down"drx-ctl down [res|conn|all]-리소스 중지
리소스 adjust"drx-ctl adjust [res|conn|all] -리소스 설정 갱신 및 재 시작
압축"drx-ctl set compress [type] [level] [res|conn|all] -리소스 압축 설정
암호화"drx-ctl set crypto [on or off] [res|conn|all-리소스 암호화 설정
bwlimit"drx-ctl set bwlimit [limit] [res|conn|all-
  • 단위 : Bytes Per Second (K, M, G 사용가능)
  • limit : 입력한 리소스의 Bandwidth 
라이선스"drx-ctl set license [file-path]-
  • file-path : 라이선스 파일 경로
  • 지정한 경로의 라이선스 유효성 확인 후 교체
  • Valid한 라이선스로의 교체 시 종료된 DRX는 유지
통계 초기화"drx-ctl reset statistics [res|conn|all] st
  • 옵션 치환 : statistics만 st로 처리
통지DRX 이벤트 통지NAdrx-ctl events {conn|all}-통지 이벤트

...


통지 목록


이벤트유형항목타입타깃DATA설명
공통기동startcommon[start] 이벤트 통지 시작
stopcommon[stop] 이벤트 통지 종료
shutdown[success or fail]명령어에 의한 종료
적용setlicense[temporary, permanent, invalid] 사용자가 설정한 라이선스
loglevel[none, trace, debug, info, warning, critical] 로그 레벨(파일, 콘솔)
개별연결up[connect name ][success or fail] 연결 활성화 결과
down[connect name ][success or fail] 연결 삭제 결과
[drx or drbdbsr]_accept[connect name ][IP:Port] accept 결과
[accept or connector]_state[connect name ]

[stopped/stopping, waiting, bridging/bridged, 

connecting/connected, establishing/established] 

연결 상태와 결과

state 주체와 connect name을 추가

설정set[connect name ]compressor [none, zlib, lz4, qat] [level] 압축 설정
[connect name ]crypto [none, openssl] 암호화 설정
[connect name ]bwlimit [size] 리소스의 Bandwidth
reset[connect name ][success or fail] 통계 수치 초기화
상태packet[connect name ][receive_fail] [origin size] [receive size] 

실패만 통지

compress[connect name ][compress or decompress]_fail [origin size] [receive size] [return value]

실패만 통지

crypto[connect name ][encrypto or decrypto]_fail [origin size] [receive size] [return value]

실패만 통지

...

고려사항

  • DRX 에 대한 제어명령은 비동기적으로 수행합니다. CLI 제어 명령이 수행되어 리턴된 시점이 반환된 시점에 상태제어가 최종 완료되었음을 의미하지는 완료 되었음을 보장하지 않습니다. 따라서 제어명령 수행이후 수행 이후 조회명령을 통해 상태가 정상적으로 변경되었는지 확인하는 과정을 추가로 수행해야 정상 수행여부를 확인해야 합니다.
    • 상태 변경에 대한 완료를 통보받으려면 통지 명령을 수행하여 DRX의 이벤트를 실시간 통보받을 수 있는 방식으로 인터페이싱할 완료 통보가 필요할 경우 통지 명령을 통해 이벤트 수신으로 연계할 수 있습니다.
  • drx-ctl 명령은 이를 수신하는 drx 서버에서 기본적으로 한 번에 하나의 명령만 수행하므로 수행할 수 있습니다. 다수의 명령이 drx로 동시에 전달될 경우 전달되면 큐잉된 일부 명령에 대한 타임아웃이 발생할 수 있습니다. 타임아웃을 피하기 위해선 drx-ctl 명령이 순차적으로 수행하도록 보장해줄 필요가 있습니다수행한 명령들이 완료 시점을 기준으로 순차적으로 수행하도록 보장해야 합니다.

    • drx-ctl의 반환값은 아래와 같습니다. 


      반환값설명
      WindowsLinux
      drx-ctl 

      00성공
      -1255실패
      -2254타임아웃
      -3253DRX가 실행 안됨(not working)
      128-128잘못된 옵션 (Invalid argument)

...

    • 리눅스에서는 반환 값이 0~255로 제한되므로 음수 값은 256를 더하여 표현됩니다.


운영 

DRX 는 리소스 정보를 파일로 구성하고 drx-ctl 명령을 통해 각 리소스별로 제어합니다.

...

  1. 리소스 구성
  2. DRX 서비스 시작
  3. BAB사이즈를 잘못 설정해서 재설정
    1. 리소스 r0 down 
    2. 리소스 r0 의 BAB 사이즈를 700M로 변경
    3. 리소스 r0 up
  4. 동작중인 리소스에 LZ4 압축 알고리즘을 적용
    1. "drx-ctl set compress lz4 1 r0" 명령어 입력
    2. "drx-ctl mem r0" 명령어로 리소스 r0의 BAB 사용률을 확인
    3. 영구적으로 압축 설정을 적용하기 위해서 리소스 파일에 설정을 추가

5. CLI 출력 양식

...



사용 예


조회 

  • drx-ctl version
      옵션 치환 : ver
    • DRX의 버전 정보를 출력합니다. 

      출력 샘플

      Code Block
      themeDJango
      titleversion
      collapsetrue
      < 개발 버전 >
      [root@c69-r1 dgkim]# drx-ctl ver
      drx     : Test version: Nov 29 2018, 16:13:46
      
      [root@c69-r1 dgkim]#
      
      < 배포(TEST빌드) 버전 >
      [root@c69-r1 dgkim]# drx-ctl ver
      drx     : 1.2(2018-11-29_16-52-41_TEST1) GIT-hash: b62c996 Nov 29 2018, 16:55:04
      
      [root@c69-r1 dgkim]#
      


  • drx-ctl license옵션 치환 : lic
    • 라이선스 정보를 출력합니다. 

      출력 샘플

      Code Block
      themeDJango
      titlelicense
      collapsetrue
      [root@c73-p1 drbdbsr.d]# drx-ctl lic
      Product type : DRX
      License status : Temporary, Expire date: 30-nov-2018, Validity day: 9
      
      [root@c73-p1 drbdbsr.d]#


  • drx-ctl dump [res|all]
    • 리소스의 설정과 drx.conf의 설정을 출력합니다. 
    • 리소스 구성 파일을 drbdadm bsradm 유틸에서 처리하기에 resource를 입력합니다.
    • drx.conf의 내용은 "<DRX configuration>"에 출력되며 ini형식(이름=값)으로 출력됩니다. 

      출력 샘플


      Code Block
      themeDJango
      titledump
      collapsetrue
      [root@c73-p1 drbdbsr.d]# drx-ctl dump all
      # /etc/drbdbsr.conf
      global {
          usage-count yes;
      }
      
      common {
      }
      
      # resource r0 on c73-p1: ignored, not stacked
      # defined at /etc/drbdbsr.d/r0.res:1
      resource r0 {
          device               /dev/drbd0bsr0 minor 0;
          disk                 /dev/sdd1;
          meta-disk        /dev/sdb1;
          on c74-1 {
              node-id 1;
          }
          on c74-3 {
              node-id 3;
          }
          connection DR-1-3 {
              host c74-1         address         ipv4 31.1.1.164:6677         via proxy on c73-p1 {
                  inside           ipv4 31.1.1.191:6678;
                  outside          ipv4 31.1.1.191:6679;
              }
              host c74-3         address         ipv4 31.1.1.166:6677         via proxy on c73-p2 {
                  inside           ipv4 31.1.1.192:6678;
                  outside          ipv4 31.1.1.192:6679;
              }
          }
          net {
              protocol           A;
              on-congestion    pull-ahead;
              sndbuf-size      10M;
              congestion-fill  480M;
          }
          proxy {
              memlimit         500M;
          }
      }
      
      # resource r0-1 on c73-p1: ignored, not stacked
      # defined at /etc/drbdbsr.d/r0.res:36
      resource r0-1 {
          device               /dev/drbd1bsr1 minor 1;
          disk                 /dev/sdd2;
          meta-disk        /dev/sdb2;
          on c74-2 {
              node-id 2;
          }
          on c74-3 {
              node-id 3;
          }
          connection DR-2-3 {
              host c74-2         address         ipv4 31.1.1.165:6680         via proxy on c73-p1 {
                  inside           ipv4 31.1.1.191:6681;
                  outside          ipv4 31.1.1.191:6682;
              }
              host c74-3         address         ipv4 31.1.1.166:6680         via proxy on c73-p2 {
                  inside           ipv4 31.1.1.192:6681;
                  outside          ipv4 31.1.1.192:6682;
              }
          }
          net {
              protocol           A;
              on-congestion    pull-ahead;
              sndbuf-size      10M;
              congestion-fill  480M;
          }
          proxy {
              memlimit         500M;
          }
      }
      
      
      <DRX configuration>
      lang=korean
      proxy-type=1
      loglevel-file=debug
      
      [root@c73-p1 drbdbsr.d]#


  • drx-ctl show [res|conn|all]
    • 프로세스에서 사용중인 설정 값들을 출력합니다. 
    • 전역 설정 항목은 "<DRX configuration>"에 출력되며 ini형식(이름=값)으로 출력됩니다. 
    • 노드 설정 항목은 bwlimit와 min-raw-block-size이며 가독성을 위해서 테이블 형식으로 출력됩니다. 

      출력 샘플

       


      Code Block
      themeDJango
      titleshow
      collapsetrue
      [root@c73-p1 dgkim]# drx-ctl show all
      ------------------------------------------------
      Name                 bwlimit min-raw-block-size 
      ------------------------------------------------
      DR-1-3-c73-p2-c73-p1 1048576 256               
      ------------------------------------------------
      DR-2-3-c73-p2-c73-p1 102400  64                 
      ------------------------------------------------
      <DRX configuration>
      language=korean
      base-dir=not set
      drbdbsr-conf=not set
      connect-timeout=3
      init-timeout=10
      loglevel-file=debug
      loglevel-stdout=info
      logfile-max-size=10.00 MB
      logfile-max-count=10
      performance-log-enable=disable
      ip-verification=on
      process-thread-count=auto
      
      [root@c73-p1 dgkim]#


  • drx-ctl connections [res|conn|all]
      옵션 치환 : co
    • 상세 옵션 : -v 
    • 리소스의 연결 정보를 출력합니다. 
      • 일반 모드 : IP Address 생략, 연결 화살표 출력

      • 상세 모드 : IP Address 출력, 연결 화살표 생략
      출력 샘플

    • Code Block
      themeDJango
      titleconnections
      collapsetrue
      < 일반 모드 >
      [root@74qatroot@74-p1 ~]# drx-ctl co all
      -------------------------------------------------------------------------------------------------
      Name                 Type local-drbdbsr-ip State          local-drx-ip State          remote-drx-ip
      -------------------------------------------------------------------------------------------------
      r0-74qat74-p2-74qat74-p1 meta (local-drbdbsr)  -established-> (local-drx)  <-bridged----- (remote-drx)
      r0-74qat74-p2-74qat74-p1 data (local-drbdbsr)  <-established- (local-drx)  -----bridged-> (remote-drx)
      -------------------------------------------------------------------------------------------------
       All connections : 2, Established : 2
      [root@74qatroot@74-p1 ~]#
      
      < 상세 모드 >
      [root@74qatroot@74-p1 ~]# drx-ctl co all -v
      ----------------------------------------------------------------------------------------------------------------------------------
      Name                 Type local-drbdbsr-ip   State       local-drx-ip                    State   remote-drx-ip   Up since
      ----------------------------------------------------------------------------------------------------------------------------------
      r0-74qat74-p2-74qat74-p1 meta 31.1.1.121:8800 established 31.1.1.138:8801/31.1.1.138:8802 bridged 31.1.1.139:8802 -
      r0-74qat74-p2-74qat74-p1 data 31.1.1.121:8800 established 31.1.1.138:8801/31.1.1.138:8802 bridged 31.1.1.139:8802 2018-11-23 18:07:49
      ----------------------------------------------------------------------------------------------------------------------------------
       All connections : 2, Established : 2
      [root@74qatroot@74-p1 ~]#


  • drx-ctl statistics [res|conn|all]
      옵션 치환 : st
    • 일반 모드 : TX, RX 속도, 압축/해제/암호화 평균 Latency를 출력합니다. 
    • 상세 모드 : TX/RX의 RAW데이터, 압축/해제/암호화의 현재값, 최대값, 최소값 출력합니다. 
    • 사용자 출력 모드 : 사용자가 원하는 column을 출력합니다. 
    • Human Readable(B, KB, MB, GB)로 출력되는 단위를 KiloBytes로 고정하며 표기를 생략합니다. KiloBytes 보다 작은 값은 0으로 표기합니다.
    •  옵션
      • 상세 모드 옵션 : v 
      • 사용자 출력 옵션 : --filter
    • 축약어 설명


      축약어설명축약어설명축약어설명
      txTX speedratiocompress average ratioecencrypto
      rxRX speedcurcompress current ratio dcdecrypto
      t-netTX-Network 전송 사이즈worstcompress worst ratio

      t-rawTX RAW 사이즈bestcompress best ratio

      r-rawRX-Network 전송 사이즈cpcompress

      r-netRX RAW 사이즈dedecompress
      출력 샘플




    • Code Block
      themeDJango
      titlestatistics
      collapsetrue
      < 일반 모드 > 
      C:\Users\Administrator>drx-ctl st all
      ---------------------------------------------------------------
      name              type tx rx ratio cp-avg ec-avg dc-avg de-avg
      ---------------------------------------------------------------
      w1-w2-w16-2-w16-1 meta 0  0
      w1-w2-w16-2-w16-1 data 0  0  0.00  0      0      0      0
      ---------------------------------------------------------------
       All connections : 2, Established : 2
      
      C:\Users\Administrator>
      
      < 상세 모드 >
      C:\Users\Administrator>drx-ctl st all -v
      -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      name              type tx rx t-raw t-net r-raw r-net ratio cur  best worst cp-avg cp-cur cp-min cp-max ec-avg ec-cur ec-min ec-max dc-avg dc-cur dc-min dc-max de-avg de-cur de-min de-max
      -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      w1-w2-w16-2-w16-1 meta 0  0
      w1-w2-w16-2-w16-1 data 90 0  63118 63135 0     0     0.00  0.00 0.00 0.00  0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0
      -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       All connections : 2, Established : 2
      
      C:\Users\Administrator>
      
      < 사용자 출력 모드 >
      C:\Users\Administrator>drx-ctl st all -v --filter=name,tx,rx,cp-avg,cp-cur,cp-min,cp-max
      ----------------------------------------------------
      name              tx rx cp-avg cp-cur cp-min cp-max
      ----------------------------------------------------
      w1-w2-w16-2-w16-1 0  0
      w1-w2-w16-2-w16-1 0  0  0      0      0      0
      ----------------------------------------------------
       All connections : 2, Established : 2
      
      C:\Users\Administrator>
      
      


  • drx-ctl memusage [res|conn|all] 
    • 리소스의 BAB 정보를 출력합니다. 
    • Human Readable(B, KB, MB, GB)로 출력되는 단위를 KiloBytes로 고정하며 표기를 생략합니다. KiloBytes 보다 작은 값은 0으로 표기합니다.옵션 치환 : mem
    • 상세 모드 
      • 옵션 : v
      • 연결된 리소스의 BAB Latency(TX, RX, 압축/해제) 정보를 출력합니다. 
      출력 샘플

    • Code Block
      themeDJango
      titlememusage
      collapsetrue
      < 일반 모드 >
      [root@c73-p1 dgkim]# drx-ctl mem all
      --------------------------------------------------------------------------------------
      Name                 Capacity Use (Size)                                  Full Counts 
      --------------------------------------------------------------------------------------
      DR-1-3-c73-p2-c73-p1 716800   [>>>>>>>.....................] 23% (163277) 0           
                           10240    [............................]  0% (0)      -           
      --------------------------------------------------------------------------------------
      DR-2-3-c73-p2-c73-p1 512000   [............................]  0% (0)      0           
                           10240    [............................]  0% (0)      -           
      --------------------------------------------------------------------------------------
       Active bab counts : 2
      
      <상세 모드>
      [root@c73-p1 dgkim]# drx-ctl mem all -v
      ----------------------------------------------------------------------------------------------------------
      Name                 Capacity Begin     End       Use (Size)                                  Full Counts 
      ----------------------------------------------------------------------------------------------------------
      DR-1-3-c73-p2-c73-p1 716800   340236152 504137496 [>>>>>>>.....................] 22% (160060) 0           
                           10240    0         0         [............................]  0% (0)      -           
      ----------------------------------------------------------------------------------------------------------
      DR-2-3-c73-p2-c73-p1 512000   64273922  64273922  [............................]  0% (0)      0           
                           10240    0         0         [............................]  0% (0)      -           
      ----------------------------------------------------------------------------------------------------------
       Active bab counts : 2
      ----------------------------------------------------------------------------------------------------------
      name                 Latency    cur             avg             max             min             
      ----------------------------------------------------------------------------------------------------------
      DR-1-3-c73-p2-c73-p1 TX BAB     00:00:00.000000 00:00:00.443516 00:00:06.765142 00:00:00.000101 
                           RX BAB     00:00:00.000000 00:00:00.000000 00:00:00.000000 00:00:00.000000 
                           Compress   00:00:00.000088 00:00:00.000087 00:00:00.001439 00:00:00.000001 
                           Decompress 00:00:00.000000 00:00:00.000000 00:00:00.000000 00:00:00.000000 
      ----------------------------------------------------------------------------------------------------------
      DR-2-3-c73-p2-c73-p1 TX BAB     00:00:00.000000 00:00:00.001627 00:00:00.004173 00:00:00.000261 
                           RX BAB     00:00:00.000000 00:00:00.000000 00:00:00.000000 00:00:00.000000 
                           Compress   00:00:00.000000 00:00:00.000113 00:00:00.001440 00:00:00.000001 
                           Decompress 00:00:00.000000 00:00:00.000000 00:00:00.000000 00:00:00.000000 
      ----------------------------------------------------------------------------------------------------------
       Active bab counts : 2
      [root@c73-p1 dgkim]#
      
      


  • drx-ctl log  [res|conn|all] 
    • 기록중인 로그의 내용을 출력합니다. 
    • 옵션
      • 옵션을 입력하지 않으면 공통(main) 로그만 출력됩니다. 
      • res|conn|all : 모든 리소스 또는 입력한 리소스의 로그를 출력합니다.
      • m : main 로그를 출력합니다.
      • n [숫자] : 마지막 n개의 로그를 출력합니다. 
      출력 샘플

    • Code Block
      themeDJango
      titlelog
      collapsetrue
      < main 로그 출력 >
      [root@c69-r1 ~]# drx-ctl log
      Online mode. (main)
      I1126 08:50:17.448040 t30088 main] Resource create complete (success: 2, failed: 0)
      ^C[root@c69-r1 ~]#
      
      
      < 리소스별 로그 출력 >
      [root@c69-r1 ~]# drx-ctl log r0
      Online mode. (without main, r0-c69-r2-c69-r1)
      D1126 08:53:50.977215 t30109 r0-c69-r2-c69-r1:ad:o] <<=== drxp_type::ping
      ^C[root@c69-r1 ~]#
      [root@c69-r1 ~]# drx-ctl log r0_1
      Online mode. (without main, r0_1-c69-r3-c69-r1)
      D1126 08:54:08.696168 t30133 r0_1-c69-r3-c69-r1:cd:o] <<=== drxp_type::ping
      D1126 08:54:14.707857 t30129 r0_1-c69-r3-c69-r1:am:o]  ===>> send stream payload_len (16) meta
      D1126 08:54:14.708035 t30127 r0_1-c69-r3-c69-r1:am:o] <<=== drxp_type::stream (crypto:NONE) (compress:NONE) [16]
      D1126 08:54:14.708129 t30128 r0_1-c69-r3-c69-r1:am:o]  ===>> send stream payload_len (16) meta
      D1126 08:54:14.708208 t30127 r0_1-c69-r3-c69-r1:am:o] <<=== drxp_type::stream (crypto:NONE) (compress:NONE) [16]
      ^C[root@c69-r1 ~]#
      
      
      < main로그와 모든 리소스의 로그 출력 >
      [root@c69-r1 ~]# drx-ctl log -m all
      Online mode. (main, r0-c69-r2-c69-r1, r0_1-c69-r3-c69-r1)
      D1126 08:54:24.708287 t30126 r0_1-c69-r3-c69-r1:am:o] <<=== drxp_type::stream (crypto:NONE) (compress:NONE) [16]
      ^C[root@c69-r1 ~]#
      [root@c69-r1 ~]#
      
      
      < 마지막 10개의 로그와 모든 리소스(r0, r0_1)의 로그 출력 >
      [root@c69-r1 ~]# drx-ctl log -m -n 10 all
      Online mode. (main, r0-c69-r2-c69-r1, r0_1-c69-r3-c69-r1)
      D1126 08:54:34.708110 t30129 r0_1-c69-r3-c69-r1:am:o] <<=== drxp_type::stream (crypto:NONE) (compress:NONE) [16]
      D1126 08:54:34.708215 t30126 r0_1-c69-r3-c69-r1:am:o]  ===>> send stream payload_len (16) meta
      D1126 08:54:34.708425 t30127 r0_1-c69-r3-c69-r1:am:o] <<=== drxp_type::stream (crypto:NONE) (compress:NONE) [16]
      D1126 08:54:38.992691 t30114 r0-c69-r2-c69-r1:cm:o] <<=== drxp_type::stream (crypto:NONE) (compress:NONE) [16]
      D1126 08:54:38.992832 t30114 r0-c69-r2-c69-r1:cm:o]  ===>> send stream payload_len (16) meta
      D1126 08:54:40.696530 t30131 r0_1-c69-r3-c69-r1:cd:o] <<=== drxp_type::ping
      D1126 08:54:44.707844 t30127 r0_1-c69-r3-c69-r1:am:o]  ===>> send stream payload_len (16) meta
      D1126 08:54:44.708060 t30129 r0_1-c69-r3-c69-r1:am:o] <<=== drxp_type::stream (crypto:NONE) (compress:NONE) [16]
      D1126 08:54:44.708151 t30126 r0_1-c69-r3-c69-r1:am:o]  ===>> send stream payload_len (16) meta
      D1126 08:54:44.708223 t30129 r0_1-c69-r3-c69-r1:am:o] <<=== drxp_type::stream (crypto:NONE) (compress:NONE) [16]
      ^C[root@c69-r1 ~]#
      [root@c69-r1 ~]#

...


제어

  • drx-ctl up [res|conn|all]
    • 입력한 리소스를 up 합니다. 설정 샘플

    • Code Block
      themeDJango
      titleup
      collapsetrue
      < 개별 리소스 up >
      [root@c73-p1 dgkim]# drx-ctl up r0
      DR-1-3-c73-p2-c73-p1: up.
      Result: 1 resource(s) up.
      
      [root@c73-p1 dgkim]#
      
      < 모든 리소스 up >
      [root@c73-p1 dgkim]# drx-ctl up all
      DR-1-3-c73-p2-c73-p1: up.
      DR-2-3-c73-p2-c73-p1: up.
      Result: 2 resource(s) up.
      
      [root@c73-p1 dgkim]#
      
      


  • drx-ctl down [res|conn|all]
    • 입력한 리소스를 down 합니다.설정 샘플

    • Code Block
      themeDJango
      titledown
      collapsetrue
      < 개별 리소스 down >
      [root@c73-p1 dgkim]# drx-ctl down r0
      DR-1-3-c73-p2-c73-p1: resource down.
      Result: 1 resource(s) down.
      
      [root@c73-p1 dgkim]#
      
      < 모든 리소스 down >
      [root@c73-p1 dgkim]# drx-ctl down all
      DR-1-3-c73-p2-c73-p1: resource down.
      DR-2-3-c73-p2-c73-p1: resource down.
      Result: 2 resource(s) down.
      
      [root@c73-p1 dgkim]#
       


  • drx-ctl adjust [res|conn|all] 
    • 동작중인 리소스는 갱신(update)하고, down된 리소스는 up합니다.설정 샘플

    • Code Block
      themeDJango
      titleadjust
      collapsetrue
      [root@c73-p1 drbdbsr.d]# drx-ctl adjust all
      DR-1-3-c73-p2-c73-p1: up.
      DR-2-3-c73-p2-c73-p1: up.
      Result: 2 resource(s) updated.
      
      [root@c73-p1 drbdbsr.d]#


    • 동작중인 리소스의 BAB 사이즈는 변경할 수 없습니다. 
    • 에러 예시오류 출력 예

      Code Block
      themeDJango
      titleadjust error
      collapsetrue
      [root@c73-p1 drbdbsr.d]# drx-ctl adjust all 
      DR-1-3-c73-p2-c73-p1:ad: Can't change memory limit of active resource.
      DR-1-3-c73-p2-c73-p1:cm: Can't change memory limit of active resource.
      DR-1-3-c73-p2-c73-p1: updated.
      DR-2-3-c73-p2-c73-p1: updated.
      Result: 2 resource(s) updated.
      
      [root@c73-p1 drbdbsr.d]#


  • drx-ctl set compress [type] [level] [res|conn|all] 
    • 입력한 리소스의 압축 플러그인을 설정합니다. 
    • 옵션

      압축 종류방식압축률 설정 범위ETC
      NONE--OFF
      IQAHW1~9-
      ZLIBSW1~9-
      LZ4SW1~9-


    • 설정 샘플

      Code Block
      themeDJango
      titleset compress
      collapsetrue
      < 리소스 r0만 압축 플러그인을 LZ4로 설정 >
      [root@c73-p1 dgkim]# drx-ctl set compress lz4 1 DR-1-3-c73-p2-c73-p1
      Result: 1 resource(s) updated.
      
      [root@c73-p1 dgkim]#
      
      <로그 출력>
      I1126 17:31:10.271886 t77473 DR-1-3-c73-p2-c73-p1:ad] Set compressor: LZ4
      I1126 17:31:10.271918 t77473 DR-1-3-c73-p2-c73-p1:ad] Set compressor level: 1
      I1126 17:31:10.271924 t77473 DR-1-3-c73-p2-c73-p1:cm] Set compressor: LZ4
      I1126 17:31:10.271925 t77473 DR-1-3-c73-p2-c73-p1:cm] Set compressor level: 1
      
      
      < 리소스 r0의 압축 플러그인을 비활성화 >
      [root@c73-p1 dgkim]# drx-ctl set compress none 1 DR-1-3-c73-p2-c73-p1
      DR-1-3-c73-p2-c73-p1: updated.
      Result: 1 resource(s) updated.
      
      [root@c73-p1 dgkim]#
      
      <로그 출력>
      I1126 17:31:37.741765 t77473 DR-1-3-c73-p2-c73-p1:ad] Set compressor: NONE
      I1126 17:31:37.741795 t77473 DR-1-3-c73-p2-c73-p1:ad] Set compressor level: 1
      I1126 17:31:37.741800 t77473 DR-1-3-c73-p2-c73-p1:cm] Set compressor: NONE
      I1126 17:31:37.741802 t77473 DR-1-3-c73-p2-c73-p1:cm] Set compressor level: 1
      
      
      
      < 모든(2개) 리소스의 압축 플러그인을 LZ4로 설정 >
      [root@c73-p1 dgkim]# drx-ctl set compress lz4 1 all
      Result: 2 resource(s) updated.
      
      [root@c73-p1 dgkim]#
      
      <로그 출력>
      I1126 17:32:30.656067 t77473 DR-1-3-c73-p2-c73-p1:ad] Set compressor: LZ4
      I1126 17:32:30.656089 t77473 DR-1-3-c73-p2-c73-p1:ad] Set compressor level: 1
      I1126 17:32:30.656095 t77473 DR-1-3-c73-p2-c73-p1:cm] Set compressor: LZ4
      I1126 17:32:30.656118 t77473 DR-2-3-c73-p2-c73-p1:am] Set compressor: LZ4
      I1126 17:32:30.656096 t77473 DR-1-3-c73-p2-c73-p1:cm] Set compressor level: 1
      I1126 17:32:30.656133 t77473 DR-2-3-c73-p2-c73-p1:am] Set compressor level: 1
      I1126 17:32:30.656138 t77473 DR-2-3-c73-p2-c73-p1:cd] Set compressor: LZ4
      I1126 17:32:30.656139 t77473 DR-2-3-c73-p2-c73-p1:cd] Set compressor level: 1
      
      


  • drx-ctl set crypto [on or off] [res|conn|all] 
    • 입력한 리소스의 암호화 플러그인을 설정합니다. 
    • 설정 샘플


      Code Block
      themeDJango
      titleset crypto
      collapsetrue
      < 리소스 r0만 암호화 플러그인을 활성화 > 
      [root@c73-p1 dgkim]# drx-ctl set crypto on DR-1-3-c73-p2-c73-p1
      DR-1-3-c73-p2-c73-p1: updated.
      Result: 1 resource(s) updated.
      
      [root@c73-p1 dgkim]#
      
      <로그 출력>
      I1126 17:10:10.611963 t77473 DR-1-3-c73-p2-c73-p1:ad] Set crypto: OPENSSL
      I1126 17:10:10.611987 t77473 DR-1-3-c73-p2-c73-p1:cm] Set crypto: OPENSSL
      
      
      < 모든 리소스의 암호화 플러그인을 활성화 > 
      [root@c73-p1 dgkim]# drx-ctl set crypto on all
      DR-2-3-c73-p2-c73-p1: updated.
      Result: 2 resource(s) updated.
      
      [root@c73-p1 dgkim]#
      
      <로그 출력>
      I1126 17:08:26.156687 t77473 DR-1-3-c73-p2-c73-p1:ad] Set crypto: OPENSSL
      I1126 17:08:26.156713 t77473 DR-2-3-c73-p2-c73-p1:am] Set crypto: OPENSSL
      I1126 17:08:26.156702 t77473 DR-1-3-c73-p2-c73-p1:cm] Set crypto: OPENSSL
      I1126 17:08:26.156719 t77473 DR-2-3-c73-p2-c73-p1:cd] Set crypto: OPENSSL
      
      
      < 모든 리소스의 암호화 플러그인을 비활성화 > 
      [root@c73-p1 dgkim]# drx-ctl set crypto off all
      DR-1-3-c73-p2-c73-p1: updated.
      DR-2-3-c73-p2-c73-p1: updated.
      Result: 2 resource(s) updated.
      
      [root@c73-p1 dgkim]# 
      
      <로그 출력>
      I1206 14:12:59.701227 t81344 DR-1-3-c73-p2-c73-p1:am] Set crypto: NONE
      I1206 14:12:59.701250 t81344 DR-1-3-c73-p2-c73-p1:cd] Set crypto: NONE
      I1206 14:12:59.701305 t81344 DR-2-3-c73-p2-c73-p1:ad] Set crypto: NONE
      I1206 14:12:59.701315 t81344 DR-2-3-c73-p2-c73-p1:cm] Set crypto: NONE
      
      


  • drx-ctl set bwlimit [limit] [res|conn|all] 
    • 입력한 리소스의 B/W를 설정합니다. 
    • 설정 샘플

      Code Block
      themeDJango
      titleset bwlimit
      collapsetrue
      < 리소스 r0의 B/W를 1G로 설정 >
      [root@c73-p1 dgkim]# drx-ctl set bwlimit 1G DR-1-3-c73-p2-c73-p1
      DR-1-3-c73-p2-c73-p1: updated.
      Result: 1 resource(s) updated.
      
      [root@c73-p1 dgkim]#
      
      <로그 출력>
      I1126 17:21:11.633557 t77473 DR-1-3-c73-p2-c73-p1:ad] Set bandwidth limit: 1.00 GB
      I1126 17:21:11.633573 t77473 DR-1-3-c73-p2-c73-p1:cm] Set bandwidth limit: 1.00 GB
      
      
      < 모든 리소스의 B/W를 100M로 설정 >
      [root@c73-p1 dgkim]# drx-ctl set bwlimit 100M all
      DR-1-3-c73-p2-c73-p1: updated.
      DR-2-3-c73-p2-c73-p1: updated.
      Result: 2 resource(s) updated.
      
      [root@c73-p1 dgkim]#
      
      <로그 출력>
      I1126 17:20:55.431890 t77473 DR-1-3-c73-p2-c73-p1:ad] Set bandwidth limit: 100.00 MB
      I1126 17:20:55.431916 t77473 DR-1-3-c73-p2-c73-p1:cm] Set bandwidth limit: 100.00 MB
      I1126 17:20:55.431964 t77473 DR-2-3-c73-p2-c73-p1:am] Set bandwidth limit: 100.00 MB
      I1126 17:20:55.431984 t77473 DR-2-3-c73-p2-c73-p1:cd] Set bandwidth limit: 100.00 MB
      
      


  • drx-ctl set license [file-path]
    • 지정한 경로의 라이선스 유효성을 확인한 후, 기본 경로의 라이선스 정보를 변경합니다. 
    • 유효한 라이선스로 변경시 리소스의 연결을 유지해야하므로 DRX 프로세스의 동작을 변경하지 않습니다. 
    • 설정 샘플


      Code Block
      themeDJango
      titleset license
      collapsetrue
      C:\Users\Administrator>drx-ctl set license drx.lic
      License status : Temporary, Expire date: 30-nov-2018, Validity day: 4
      Result: done.
      
      
      C:\Users\Administrator>
      
      <로그 출력>
      I1127 09:28:40.374185 t5880 main] Verify license is available
      I1127 09:28:40.374185 t5880 main:license] Checking license for [C:\Users\Administrator\drx.lic]
      I1127 09:28:40.374185 t5880 main:license] License Status: Temporary, Expire date: 30-nov-2018, Validity day: 4
      I1127 09:28:40.389865 t5880 main] License applied


  • drx-ctl reset statistics [res|conn|all] 
    • 입력한 리소스의 통계값을 초기화 합니다. 옵션 치환 : st
    • 설정 샘플


      Code Block
      themeDJango
      titlereset statistics
      collapsetrue
      < 리소스 r0만 통계값을 초기화 >
      [root@c73-p1 dgkim]# drx-ctl reset st DR-1-3-c73-p2-c73-p1
      DR-1-3-c73-p2-c73-p1: reseted.
      Result: 1 resource(s) reseted.
      
      [root@c73-p1 dgkim]#
      
      < 모든 리소스의 통계값을 초기화 >
      [root@c73-p1 dgkim]# drx-ctl reset st all
      DR-1-3-c73-p2-c73-p1: reseted.
      DR-2-3-c73-p2-c73-p1: reseted.
      Result: 2 resource(s) reseted.
      
      [root@c73-p1 dgkim]#
      
      

...


통지

DRX 프로세스에서 발생한 Event를 Client(drx-ctl)에서 수신할 수 있습니다. 

  • drx-ctl events {conn|all}
    • 옵션

      • 공란 : 공용 이벤트만 출력
      • all : 모든 이벤트 출력
      • connect name : 입력한 리소스의 이벤트를 출력 출력
      샘플

    • Code Block
      themeDJango
      titleevents
      collapsetrue
      < 공용 이벤트만 수신 >
      [root@c73-p1 drbdbsr.d]# drx-ctl events 
      [system] connected
      [2018-11-27 11:22:38.933] start common
      
      
      < 입력한 리소스의 이벤트만 수신 >
      [root@c73-p1 drbdbsr.d]# drx-ctl events DR-1-3-c73-p2-c73-p1
      [system] connected
      
      
      < 모든 리소스의 이벤트를 수신 >
      [root@c73-p1 drbdbsr.d]# drx-ctl events all
      [system] connected
      [2018-11-27 10:43:12.831] start common
      
      
    이벤트 목록 

이벤트타입설명
공통start이벤트 통지 시작


Code Block
themeDJango
titlestart
collapsetrue
[root@c73-p1 
drbd
bsr.d]# drx-ctl events 
[system] connected
[2018-11-27 11:22:38.933] start common


stop이벤트 통지 종료


Code Block
themeDJango
titlestop
collapsetrue
[2018-11-27 11:12:39.098] stop common


shutdown명령어로 종료


Code Block
themeDJango
titleshutdown
collapsetrue
[2018-11-27 11:12:39.076] shutdown success


set license설정한 라이선스
  • 임시(temporary), 정식(permanent), 유효하지 않은 라이선스(invalid)
Code Block
themeDJango
titleset license
collapsetrue
[2018-11-27 13:17:58.806] set license temporary


set loglevel로그 레벨(파일, 콘솔)


Code Block
themeDJango
titleset loglevel
collapsetrue
[2018-11-27 13:44:31.681] set loglevel-file trace
[2018-11-27 13:44:41.496] set loglevel-file debug
[2018-11-27 13:44:44.328] set loglevel-file info
[2018-11-27 13:44:46.088] set loglevel-file warning
[2018-11-27 13:44:47.968] set loglevel-file error
[2018-11-27 13:44:48.104] set loglevel-file critical
[2018-11-27 13:44:57.776] set loglevel-file off


개별up활성화


Code Block
themeDJango
titleup
collapsetrue
[2018-11-27 13:50:29.151] up DR-1-3-c73-p2-c73-p1 success


down비활성화


Code Block
themeDJango
titledown
collapsetrue
[2018-11-27 13:46:37.141] down DR-1-3-c73-p2-c73-p1 success


acceptIP Accept 결과


Code Block
themeDJango
titleaccetp state
collapsetrue
[2018-11-27 13:50:29.659] drx_accept DR-1-3-c73-p2-c73-p1 31.1.1.192:33476
[2018-11-27 13:50:34.298] 
drbd
bsr_accept DR-1-3-c73-p2-c73-p1 31.1.1.164:40557


conn연결 상태와 결과


Code Block
themeDJango
titleconn state
collapsetrue
[2018-11-27 14:23:39.120] acceptor_state DR-1-3-c73-p2-c73-p1 bridging
[2018-11-27 14:23:39.121] connector_state DR-1-3-c73-p2-c73-p1 bridging
[2018-11-27 14:23:39.123] connector_state DR-1-3-c73-p2-c73-p1 bridged
[2018-11-27 14:23:39.222] connector_state DR-1-3-c73-p2-c73-p1 connecting
[2018-11-27 14:23:39.328] acceptor_state DR-1-3-c73-p2-c73-p1 bridged
[2018-11-27 14:23:39.422] acceptor_state DR-1-3-c73-p2-c73-p1 waiting
[2018-11-27 14:23:43.960] acceptor_state DR-1-3-c73-p2-c73-p1 connected
[2018-11-27 14:23:43.960] acceptor_state DR-1-3-c73-p2-c73-p1 establishing
[2018-11-27 14:23:44.038] acceptor_state DR-1-3-c73-p2-c73-p1 established
[2018-11-27 14:23:44.069] connector_state DR-1-3-c73-p2-c73-p1 establishing
[2018-11-27 14:23:44.069] connector_state DR-1-3-c73-p2-c73-p1 established


set압축 


Code Block
themeDJango
titleset compress
collapsetrue
[2018-11-27 15:27:26.895] set DR-1-3-c73-p2-c73-p1 compressor NONE
[2018-11-27 15:27:50.308] set DR-1-3-c73-p2-c73-p1 compressor LZ4 1
[2018-11-27 15:30:34.584] set DR-1-3-c73-p2-c73-p1 compressor ZLIB 1
[2018-11-27 17:48:31.204] set DR-1-3-c73-p2-c73-p1 compressor IQA 1


암호화 


Code Block
themeDJango
titleset crypto
collapsetrue
[2018-11-27 17:50:32.851] set DR-1-3-c73-p2-c73-p1 crypto OPENSSL
[2018-11-27 17:50:46.264] set DR-1-3-c73-p2-c73-p1 crypto NONE


Bandwidth


Code Block
themeDJango
titleset bwlimit
collapsetrue
[2018-11-27 17:56:07.698] set DR-1-3-c73-p2-c73-p1 bwlimit 1073741824
[2018-11-27 17:58:12.380] set DR-1-3-c73-p2-c73-p1 bwlimit 104857600


reset통계 수치 초기화


Code Block
themeDJango
titlereset statistics
collapsetrue
[2018-11-27 17:58:52.962] reset DR-1-3-c73-p2-c73-p1 success


packet

송/수신 실패


Code Block
themeDJango
titlepacket error
collapsetrue
[2018-11-28 11:12:19.953] packet DR-1-3-c73-p2-c73-p1 receive_fail 15 15


compress

실패만 통지


Code Block
themeDJango
titlecompress error
collapsetrue
[2018-11-28 09:43:04.543] compress DR-1-3-c73-p2-c73-p1 compress_fail 80 1048576 0
[2018-11-28 10:28:30.629] compress DR-1-3-c73-p1-c73-p2 decompress_fail 47 1048576 0


crypto

실패만 통지


Code Block
themeDJango
titlecrypto error
collapsetrue
[2018-11-28 10:28:42.186] crypto DR-2-3-c73-p2-c73-p1 encrypto_fail 41 1048576 48
[2018-11-28 10:28:42.081] crypto DR-2-3-c73-p1-c73-p2 decrypto_fail 96 1048576 80


...