Table of Contents |
---|
DRX를 구성하기 위한 각 단계별 절차에서 구성하는 절차상에서 발생할 수 있는 문제들에 대한 해결 가이드들 제공합니다.
...
설치 오류
- 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"항목을 추가 업데이트 합니다.
- 설명 : 0x800b010a 에러가 발생합니다.
- 문제 현상
...
리소스 시작 불가
- UTF-8 with BOM으로 인한 설정 읽기 실패
문제 현상
drx.conf 읽기 실패
Code Block title DRX 로그 E1120 16:37:02.690660 t42053 config] Failed to load [/opt/DRX/drx.conf]. /opt/DRX/drx.conf(1): '=' character not found in line
drbd bsr 설정 읽기 실패
Code Block title DRX 로그 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
- vi로 파일을 열고 다음을 입력한 뒤 저장합니다.
- Windows
- 메모장(notepad)로 파일을 열고 '다른이름으로 저장'을 통해 인코딩을 'ANSI'로 변경합니다.
- Centos 6, 7
문제3. DRX 연결이 안됩니다.
...
연결 불가
다음은 복제 연결 구성 절차의 순서를 따라가며 세부적으로 점검하는 과정을 설명했습니다(Linux 기준으로 설명했지만 Windows 도 과정은 동일합니다).
네트워크 환경
- 노드의 방화벽 정책 허용 목록에
...
- bsr의 IP와 drx의 ip가 설정되어 있는지 확인 합니다.
...
Centos 6
/etc/sysconfig/iptables 파일에 설정할 내용을 추가합니다.
Code Block |
---|
-A INPUT -p tcp -s \{소스 아이피\} -d \{목적지 아이피\} --dport \{허용할 포트\} -j ACCEPT |
Centos 7
...
...
포트 추가하는 명령어 : firewall-cmd --permanent --zone=public --add-port=\{허용할 포트\}/tcp
방화벽 재시작 명령어 : firewall-cmd --reload
열린 port 확인 명령어 : firewall-cmd --zone=public --list-all
- 루프백 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]# |
DRX 버전 확인
로컬노드의 DRX 버전과 원격노드의 DRX 버전이 동일한지 확인합니다. DRX는 버전 간 하위호환성을 제공하지만 되도록 동일한 버전의 DRX 로 구성하는 것을 권장합니다.
리소스 설정 확인
...
복제 구성 설정
- 리소스 구성파일이 ANSI 또는 UTF8 형식으로 저장되어 있는지 확인합니다.→ (UTF8 with BOM 형식을 지원하지 않습니다.)
- hostname 설정 확인: hostname 변경 시 정상 적용 됬는 지 여부에 대해 주의해야 합니다.리소스 별 개별 port 사용 여부: 포트 중복 사용이 을 변경했다면 구성파일에도 정상 적용됬는 지 확인합니다.
- 구성파일 내의 통신 포트 중복이 없는지 확인 합니다.
DRBD 구성
- DRBD의 리소스 구성을 DRX와 연동하지 않고 DRBD간 직접 연결하도록 변경하여 정상 연결되는 지 확인 합니다.
- drbdsetup bsrsetup show 로 drbd에 BSR에 로드된 ip가 리소스 파일에 설정된 ip와 동일한지 확인합니다.
- global 항목에 wfc-timeout 설정여부를 확인합니다. 설정이 되어 있지 않을 시 wfc-timeout 값을 1로 설정합니다.
- 리소스의 "net" 항목에 ping-timeout의 값을 추가합니다. 기본값은 500ms이며 넉넉하게 30(3초)으로 설정합니다.
DRX 구성
...
단계별로 연결 확인하기
로컬 drx 와 원격 drx 간의 연결
- bsr의 리소스들을 모두 standalone상태로 변경 합니다: drbdadm bsradm disconnect r0
- drx를 설치하고 drxsvc를 start한 상태에서 drx간의 연결을 확인합니다.
- netstat 출력물에서 drx ip와 포트가 LISTEN/ESTABLISHE/TIME_WAIT인지 여부를 확인합니다.
- 정상적일 drx 서비스를 시작하여 양측 drx 를 연결합니다.
- netstat 에서 drx ip/포트의 연결상태를 확인합니다.(연결된 상태는 ESTABLISHED)
- 정상일 경우 리소스의 연결 상태는 bridged 상태 입니다.
- 이 때의 drbd 상태는 standalone 이며 drx 가 drbd와 연결하기 위한 상태는 시점에 drx 는 bsr로 연결을 시도하는 connecting/waiting 상태로 전환됩니다.
- 바뀌고 bsr 은 아직 standalone 입니다.
- 양측 drx의 상태가 아직도 bridging이라면 drx간에 연결을 시도하는 상태이며 일정시간이 지나도 변화가 없다면 WAN 구간 상의 연결을 먼저 점검해 봐야 합니다.
- icmp ping 은 보통 방화벽 정책에 의해 차단되어 있을 가능성이 있기 때문에 drbdsim 을 통한 TCP 연결을 수행해 볼 필요가 있습니다.
- standalone이었던 drbd 리소스의 상태를 connecting상태로 변경한다. → drbdadm connect 명령어로 상태를 변경 합니다.
- cat /proc/kmsg/의 로그에서 리소스의 상태가 WFConnection으로 변경되는지 확인합니다.
- 정상 상황일 경우 drbd와 drx가 연결되면 established 로 연결이 성립됩니다.
- 만약 drbd의
- 있으므로 ping 으로 연결 상태를 섣불리 판단하지 마세요. 네트워크 연결 점검 도구나 drx에 포함된 drxsim 등을 통해 로컬과 원격간의 TCP 연결 가능 여부를 확인합니다.
- bsr 리소스 구성을 drx와 연동하지 않고 bsr간 직접 연결하도록 변경하여 정상 연결되는 지 확인 합니다. 정상 연결된다면 drx 연결의 문제입니다.
- bsr 과 drx 사이의 연결
- standalone이었던 bsr 리소스의 상태를 connecting상태로 변경합니다( bsradm connect)
- 정상일 경우 bsr과 drx가 established 로 연결됩니다.
- 만약 bsr의 status가 connecting이고 연결이 성립되지 않는다면 netstat 출력물에서 drbd bsr ip가 LISTEN상태인지 확인합니다.
- local drx가 local drbd bsr ip로 SYN_SENT를 시도하는지 확인합니다.
- TCP의 상태변경이 신속하게 바뀔 수 있기 때문에 netstat에 SYN_SENT 상태 출력이 파악되지 않을 수도 있습니다.
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
- drbd와 bsr과 drx가 연결되면 netstat 출력물에서 리소스의 drbd bsr ip와 drx의 ip가 eastablished 상태가 되는지 확인합니다.
- drx 로그에 실패(Ex. connection refuse)에 대한 로그가 있는지 확인합니다.
- standalone이었던 bsr 리소스의 상태를 connecting상태로 변경합니다( bsradm connect)
- 로그 수집
- cat /etc/sysconfig/network-scripts/ifcfg-* 명령어로 출력되는 결과물을 수집합니다.
- /var/log/messages
- service iptables status
- ip a 명령어로 출력되는 결과물
문제4. Virtual IP로 구성 시 DRX 연결이 잘 안됩니다.
...
- 이 단계에 까지 이르면 서포트 파일을 수집하여 로그를 확보하고 담당자에게 분석을 요청합니다.
VIP 연결 불가
VIP 를 사용하는 Active/Standby 양 노드에서 동일한 VIP 를 통해 소켓 Bind 가 수행될 경우 양노드 간의 통신 간섭이 발생할 수 있습니다. VIP로 연동(SDR, MDR 등)할 경우 drbd 리소스가 down 된 대기 노드의 DRX는 기동을 중지해야 하고 리소스가 up 되는 시점에 DRX 를 기동시켜야 연결이 원할합니다중지해야 두어야 합니다.
대기노드로 페일오버를 하게 되면 반대로 Active의 DRX를 내리고(down) Standby의 리소스를 시작(up) 하기 전에 DRX 를 시작시켜야 연결이 원활합니다.