Versions Compared

Key

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

Table of Contents

...

  • Windows 용 DRX 설치 시 Visual Studio 2013용 Visual C++ 재배포 가능 패키지 (이하 VS2013 재배포 패키지) 설치 관련 문제
    • 문제 현상 
      • DRX 설치 후 자동 추가 설치하는 "VS2013 재배포 패키지" 설치 오류 현상
      • 원인: VS2013 재배포 패키지 관련 자체 결함.
    • 해결 방법

      • Windows Server 2012 R2

        • 설명 : "VS2013 재배포 패키지"는 Windows Server 2012 R2의 경우 KB2883200(Windows Update)이 필요합니다.
        • 해결 방법: 윈도우 업데이트 KB2883200가 설치되어 있는지 확인합니다. 설치가 안되어 있다면 윈도우 업데이트를 통해서 추가 설치 합니다. 
      • Windows Server 2008 R2 SP1
        • 설명 : 0x800b010a 에러가 발생합니다. 

          • Code Block
            [0AD8:05C0][2018-07-26T15:33:04]e000: Error 0x800b010a: Failed authenticode verification of payload: C:\ProgramData\Package Cache\.unverified\vcRuntimeMinimum_x64
            [0AD8:05C0][2018-07-26T15:33:04]e000: Error 0x800b010a: Failed to verify signature of payload: vcRuntimeMinimum_x64
            [0AD8:05C0][2018-07-26T15:33:04]e310: Failed to verify payload: vcRuntimeMinimum_x64 at path: C:\ProgramData\Package Cache\.unverified\vcRuntimeMinimum_x64, error: 0x800b010a. Deleting file.


        • 해결 방법: 윈도우 업데이트에서 ".NET Framwork 3.5.1"항목을 추가 업데이트 합니다.

...

  • UTF-8 with BOM으로 인한 설정 읽기 실패
    • 문제 현상

      • drx.conf 읽기 실패

        Code Block
        titleDRX 로그
        E1120 16:37:02.690660 t42053 config] Failed to load [/opt/DRX/drx.conf]. /opt/DRX/drx.conf(1): '=' character not found in line


      • bsr 설정 읽기 실패

        Code Block
        titleDRX 로그
        E1120 16:37:52.810044 t42132 config] Failed to get drbd configuration: Can't get drbd configuration. (exit_code: 2560)
        E1120 16:37:52.810068 t42132 config] Output: drbd.d/1/r0.res:1: Parse error: 'global | common | resource | skip | include' expected,
        E1120 16:37:52.810070 t42132 config] Output: but got '▒'


      • 원인: BOM 정보로 인해 설정 파일 파싱에 실패함.
    • 해결 방법

      • Centos 6, 7
        • file 명령을 통해 파일의 인코딩을 확인합니다.

          Code Block
          [root@drxdev1 test]# file r1.res
          r1.res: UTF-8 Unicode (with BOM) text, with CRLF line terminators


        • vi 를 통한 수정
          • vi로 파일을 열고 다음을 입력한 뒤 저장합니다.
            :set nobomb
      • Windows
        • 메모장(notepad)로 파일을 열고 '다른이름으로 저장'을 통해 인코딩을 'ANSI'로 변경합니다.

연결 불가

DRX 연결이 성립되지 않는 원인은 다양할 수 있기 때문에 다음은 복제 연결 구성 절차의 순서를 따라가며 세부적으로 점검해야 합니다. 다음은 Linux 기준의 구성 순서로 점검하는 과정을 설명했습니다(Linux 기준으로 설명했지만 Windows 도 과정은 동일합니다). 

네트워크 환경

  • 노드의 방화벽 정책 허용 목록에 bsr의 IP와 drx의 ip가 설정되어 있는지 확인 합니다

...

Centos 6

...

  • .

...

Centos 7

Code Block
포트 추가하는 명령어 : firewall-cmd --permanent --zone=public --add-port=\{허용할 포트\}/tcp 
방화벽 재시작 명령어 : firewall-cmd --reload
열린 port 확인 명령어 : firewall-cmd --zone=public --list-all

...

-A INPUT -p tcp -s \{소스 아이피\} -d \{목적지 아이피\} --dport \{허용할 포트\} -j ACCEPT
  • 루프백 ping확인
    • 루프백 주소(127.0.0.1)로는 ping 응답이 있지만 로컬 ip 주소로는 ping 응답이 없을 경우 네트워크 환경 구성에 문제가 있는 상태 입니다. 이럴 경우 네트워크 관리자에게 문의해야 합니다.

...

버전

버전 호환성을 확인합니다.

  • drbd

...

  • 8.4.8 이상
  • drbd util

...

  • 8.9.10 이상

...

  • fsr 1.4 이상
  • bsr 1.0 이상\
  • 로컬 drx 와 원격 drx 의 버전이 같은지 확인
Code Block
[root@c65-3 build_files]# lsmod | grep drbd
drbd                  374888  3 
[root@c65-3 build_files]# 
Info

BSR 은 버전에 관계없이 DRX 연동에 문제가 없습니다.

DRX 버전 확인

로컬노드의 DRX 버전과 원격노드의 DRX 버전이 동일한지 확인합니다. DRX는 버전 간 하위호환성을 제공하지만 되도록 동일한 버전의 DRX 로 구성하는 것을 권장합니다.

리소스 설정 확인

...

복제 구성 설정

  1. 리소스 구성파일이 ANSI 또는 UTF8 형식으로 저장되어 있는지 확인합니다.(UTF8 with BOM 형식을 지원하지 않습니다.)
  2. hostname 설정 확인: hostname 변경 시 정상 적용 됬는 지 여부에 대해 주의해야 합니다.리소스 별 개별 port 사용 여부: 포트 중복 사용이 을 변경했다면 구성파일에도 정상 적용됬는 지 확인합니다.
  3. 구성파일 내의 통신 포트 중복이 없는지 확인 합니다.

BSR 구성

  1. BSR의 리소스 구성을 DRX와 연동하지 않고 BSR간 직접 연결하도록 변경하여 정상 연결되는 지 확인 합니다.
  2. drbdsetup bsrsetup show 로 BSR에 로드된 ip가 리소스 파일에 설정된 ip와 동일한지 확인합니다.
  3. global 항목에 wfc-timeout 설정여부를 확인합니다. 설정이 되어 있지 않을 시 wfc-timeout 값을 1로 설정합니다.
  4. 리소스의 "net" 항목에 ping-timeout의 값을 추가합니다. 기본값은 500ms이며 넉넉하게 30(3초)으로 설정합니다.

DRX 구성

...

단계별로 연결 확인하기


  1. 로컬 drx 와 원격 drx 간의 연결

    1. bsr의 리소스들을 모두 standalone상태로 변경 합니다: bsradm disconnect r0
    2. drx를 설치하고 drxsvc를 start한 상태에서 drx간의 연결을 확인합니다.  
    3. netstat 출력물에서 drx ip와 포트가 LISTEN/ESTABLISHE/TIME_WAIT인지 여부를 확인합니다.
    4. 정상적일 drx 서비스를 시작하여 양측 drx 를 연결합니다.
    5. netstat 에서 drx ip/포트의 연결상태를 확인합니다.(연결된 상태는 ESTABLISHED)
    6. 정상일 경우 리소스의 연결 상태는 bridged 상태 입니다.
      1. 때의 bsr 상태는 standalone 이며 drx 가 bsr과 연결하기 위한 상태는 시점에 drx 는 bsr로 연결을 시도하는 connecting/waiting 상태로 전환됩니다. 
      양노드의
      1. 바뀌고 bsr 은 아직 standalone 입니다.
    7. 양측 drx의 상태가 아직도 bridging이라면 drx간에 연결을 시도하는 상태이며 일정시간이 지나도 변화가 없다면 WAN 구간 상의 연결을 먼저 점검해 봐야 합니다.
      1. icmp ping 은 보통 방화벽 정책에 의해 차단되어 있을 가능성이 있기 때문에 drxsim등을 통한 있으므로 ping 으로 연결 상태를 섣불리 판단하지 마세요. 네트워크 연결 점검 도구나 drx에 포함된 drxsim 등을 통해 로컬과 원격간의 TCP 연결 가능여부를 확인합니다가능 여부를 확인합니다.
    8. bsr 리소스 구성을 drx와 연동하지 않고 bsr간 직접 연결하도록 변경하여 정상 연결되는 지 확인 합니다. 정상 연결된다면 drx 연결의 문제입니다.
  2. bsr - drx 사이의 연결
    1. standalone이었던 bsr 리소스의 상태를 connecting상태로 변경한다. → 변경합니다( bsradm connect 명령어로 상태를 변경 합니다.
      • cat /proc/kmsg/의 로그에서 리소스의 상태가 Connecting으로 변경되는지 확인합니다.
      정상 상황일 )
      1. 정상일 경우 bsr과 drx가
      연결되면
      1. established 로
      연결이 성립됩니다
      1. 연결됩니다.
    2. 만약 bsr의 status가 connecting이고 연결이 성립되지 않는다면 netstat 출력물에서 bsr ip가 LISTEN상태인지 확인합니다. 
    3. local drx가 local bsr ip로 SYN_SENT를 시도하는지 확인합니다.
      1. TCP의 상태변경이 신속하게 바뀔 수 있기 때문에 netstat에 SYN_SENT 상태 출력이 파악되지 않을 수도 있습니다.
      2. netstat의 결과를 다음과 같은 스크립트 형태로 지속적으로 모니터링 합니다.

        Code Block
        $> while(true); do date; netstat -nap | grep 779 | sort -k 3; sleep 1; clear; done
        Thu Aug 23 08:51:23 PDT 2018
        tcp        0      0 192.168.100.3:35814         192.168.100.3:7792          ESTABLISHED -                   
        tcp        0      0 192.168.100.3:7791          0.0.0.0:*                   LISTEN      -                   
        tcp        0      0 192.168.100.3:7792          192.168.100.3:35814         ESTABLISHED 8033/drx            
        tcp        0      0 192.168.100.3:7793          192.168.100.2:60676         ESTABLISHED 8033/drx            
        tcp        0      0 192.168.100.3:7795          0.0.0.0:*                   LISTEN      8033/drx            
        tcp        0      0 192.168.100.3:7796          192.168.100.2:43684         ESTABLISHED 8033/drx            
        tcp        0      1 10.10.0.182:50460           31.1.1.2:7793               SYN_SENT    8033/drx            
        tcp        0      1 10.10.0.182:57966           31.1.1.2:7796               SYN_SENT    8033/drx            
        unix  3      [ ]         STREAM     CONNECTED     18779  2477/gconfd-2       
        unix  3      [ ]         STREAM     CONNECTED     20779  2512/gnome-panel    
        
        


    4. bsr과 drx가 연결되면 netstat 출력물에서 리소스의 bsr ip와 drx의 ip가 eastablished 상태가 되는지 확인합니다.
    5. drx 로그에 실패(Ex. connection refuse)에 대한 로그가 있는지 확인합니다.
    로그
  3. 수집
  4. cat /etc/sysconfig/network-scripts/ifcfg-* 명령어로 출력되는 결과물을 수집합니다.
  5. /var/log/messages
  6. service iptables status
  7. ip a 명령어로 출력되는 결과물이 단계에 까지 이르면 서포트 파일을 수집하여 로그를 확보하고 담당자에게 분석을 요청합니다.


VIP 연결 불가

만약 VIP 를 사용하는 Active/Standby 양 노드에서 동일한 VIP 를 통해 소켓 Bind 가 수행될 경우 양노드 간의 통신 간섭이 발생할 수 있습니다. 따라서 DRX를 VIP로 연동(SDR, MDR 등)할 경우 대기 노드의 DRX는 반드시 기동을 중지해야 하고, 대기노드로 페일오버 후 리소스를 up 하기 이전에 DRX 를 기동시켜야 연결이 원활하게 수행될 수 있습니다중지해야 두어야 합니다.

대기노드로 페일오버를 하게 되면 반대로 Active의 DRX를 내리고(down) Standby의 리소스를 시작(up) 하기 전에 DRX 를 시작시켜야 연결이 원활합니다.