Updated:

Trouble shooting DAK

1. Uploadqueue vsftpd 오동작 수정

  • Uploadqueue docker image를 제작 완료하여 테스트를 하던 도중 uploadqueue로의 패키지 업로드가 정상적으로 되지 않는 문제를 발견
  • Uploadqueue에서는 파일 전송을 받기 위해서 vsftpd를 사용하고 있는데, vsftpd가 container가 아닌 host에서 동작할 때는 문제가 발생하지 않는 것으로 보아 container안에서 동작할 때에 필요한 네트워크 설정이 있는 것으로 보임
  • 문제의 원인은 vsftpd가 container 내부에서 동작하는 경우, FPT server와 FTP client의 handshake 과정에서 FTP client가 파일을 전송하기 위해 FTP server로부터 받는 host의 IP의 정보가 container namespace에서 사용하는 IP이기 때문
  • docker container는 기본적으로 bridge를 사용하여 host와 container의 network namespace를 분리
  • 이에 따라, container안에서 동작하는 vsftpd가 host의 IP를 전달할 수 있도록 host와 container의 network namespace를 같이 사용하도록 조치
$ cat docker-compose.yml
...
network_mode: "host"
...

2. DAK docker image 오류 수정

  • DAK을 docker image로 구동할 경우, hostname에 영향을 받는 부분이 있음을 확인
  • hostname과config/dak/dak.conf의 Generate-Index-Diffs에 명시되어있는 Archive 값이 같아야 정상적으로 동작하는 것을 확인
  • 현재 사내에서 운영중인 dak는 hostname이 ftp-master로 설정이 되어있어야 동작하도록 되어있으므로, hostname을 ftp-master로 설정하도록 docker-compose 옵션 추가
  • 상세: dak에서는 패키지들의 directory path (ex. incoming package, release package, etc.)를 archive라는 db table로 관리하고 있으며, 그 중 release package에 대한 record 이름은 container의 hostname으로 설정하도록 되어있음
$ cat docker-compose.yml
...
hostname: ftp-master
...

3. DAK directory 추가 생성

  • 일부 directory가 setup 과정에서 생성되지 않아서 정상적으로 스크립트가 동작하지 않아 directory 수동으로 생성
$ mkdir -p /srv/dak/queue/byhand/COMMENTS (role : byhand package comment directory)
$ mkdir -p /srv/dak/tiffani (role : temp directory)
$ mkdir -p /srv/dak/ftp/indices/files/components (role : indexing directory)
$ mkdir -p /srv/dak/mirror/ftp-master (role : mirror directory)

Leave a comment