거울 소개 및 인수인계 세미나 BY COEARTH
거울 간단한 소개 Apt-get으로 패키지 받는 곳? Eclipse 패키지/플러그인 받는 곳? 아치 리눅스 한국 유일의 tier 1 미러? 거울
미러링 Ubuntu, Eclipse, Debian 등등의 사용자는 엄청나다. 이런 서비스들은 사용자에게 여러 파일들을 제공한다. Eclipse: 설치 파일, 업데이트 파일, … Ubuntu, Debian: 패키지 저장소, OS 이미지 파일, … 이 파일들이 모두 한 서버에 저장되어 있다면… 전세계의 모든 사용자들이 한 서버에 몰리게 됨 서버 폭발! 미러 서버는 주 서버의 트래픽을 적절히 분산시킨다.
목차 미러링하고 있는 서비스 소개 FTP 서버 소개 FTP 서버 구조 미러링 추가하기/중단하기/삭제하기 보안 관련 사항 Troubleshooting 메일 처리하기 / 중요한 메일링 리스트 선배들 도움 받을 수 있는 곳 중요한 사람들 해야할 일들
미러링하고 있는 서비스 소개 가장 많이 사용하는 것 우분투 페도라 데비안 오픈수세 CentOS 이클립스 정도?
서버 소개 하드디스크 12개를 RAID-6로 묶어 18TiB의 저장 공간 확보 램 24Gib, 랜선 2 * 1Gbps (현재 40G랜카드가 장착되어 있으나, 드라이버 문제 때문에 사용 불가능) Http, FTP, rsync 프로토콜을 통한 접속을 지원 트래픽 양은 HTTP > FTP > rsync
Server 소프트웨어 소개 HTTP FTP Rsync Lightttpd 사용 Vsftpd 사용 Rsync 사용 주로 다른 미러에 미러를 제공하기 위한 수단
FTP 서버 구조 디렉토리 구조만 잘 알면 됨!
/mirror/ 거울에 관련된 파일들이 있다 Mirror 디렉토리 전체는 git으로 관리된다 패키지 관리 스크립트 셀제 패키지 데이터 패키지 메타데이터 http://ftp.kaist.ac.kr/ 웹 사이트 Mirror 디렉토리 전체는 git으로 관리된다 https://github.com/sparcs-kaist/ftp.kaist.ac.kr 참고 몇몇 디렉토리는 /srv/로 링크된다 /mirror/ftp/ -> /srv/ftp/, /mirror/www/ -> /srv/www/ RAID6로 18TiB를 마운트
/mirror/bin/ 패키지 추가나 사용량 통계 등을 내는 각종 스크립트들이 있다. create-pkg: 패키지 추가하기. check-anomalies: 로그를 보고 이상한 점을 알려준다. publish-status: 현재 상태를 업데이트 해 JSON으로 저장. get: URL에 따라 미러링할 컨텐츠를 받아온다. (get.ftp, get.http, get.rsync) 대부분의 스크립트는 bash로 짜여져 있음. create-pkg를 제외하고는 주기적으로 자동 실행되거나 다른 스크립트 에서 참조될 뿐, 직접 실행할 일은 거의 없다. /mirror/lib/: 미러링과 관련된 각종 함수들이 구현되어 있다. sync.sh <- pkg.sh <- geoul.sh
/mirror/pkgs/ 거울에서 미러링하는 패키지들에 대한 메타데이터가 담겨 있다. http://ftp.kaist.ac.kr/geoul/pkgs/... /mirror/pkgs/fedora/: Fedora 미러링에 대한 정보 ./sync: 실제 싱크를 시작하는 스크립트 ./name: 패키지 이름 ./source: 데이터를 받아 오는 곳 ./frequency: 싱크 주기 ISO 8601 시간 포맷을 따른다. ./links: 패키지와 연관된 프로젝트 페이지 ./data/: 실제로 미러링하는 패키지 데이터 ./du.P#X.png: 디스크 사용량 ./usage.P#X.png: 트래픽 사용량 다른 특이사항을 적는 ./note나 원본 파일임을 알리는 빈 ./original 파일이 있을 수 있다.
/mirror/ftp/ 실제로 미러링되는 데이터가 있는 폴더. /mirror/ftp/fedora/: Fedora 컨텐츠(iso, rpm 파일 등등)를 담고 있다. /mirror/ftp/vim/: Vim 홈페이지를 미러링하고 있다. ./robots.txt: 웹 크롤러 접근을 제어하기 위해 HTTP 서버로서 제 공하는 파일 기본적으로 모든 디렉토리를 차단 ./ls-lR: 다른 미러를 위해 FTP 서버로서 제공하는 파일
/mirror/log/ 미러링과 관련된 로그가 있는 폴더. ./sync: 싱크와 관련된 로그들을 저장 ./usage: 트래픽 그래프를 저장 ./size: 디스크 사용량 그래프를 저장 ./unified: HTTP 서버 등 서비스의 로그를 저장 현재 로그가 있고 연도/월별 폴더에 예전 로그들이 gzip 압축되어 있음
/mirror/www/ ./self: http://ftp.kaist.ac.kr 거울에 관련된 정보들을 볼 수 있다. @kaist_ftp 트위터 피드 트래픽, 디스크 공간 사용량 현재 패키지 싱크 상황 index.html은 index.html.in으로부터 생성된다. ul#contents 하위의 패키지 목록들을 자동으로 생성한다. make index.html ./debian, ./ubuntu: 각각의 프로젝트 HTTP 미러링
/mirror/etc/ 거울에서 쓰는 다양한 프로그램/데몬의 설정 등을 담고 있음. /mirror/etc/noupdate lighttpd.conf rsyncd.conf vsftpd.conf crontab.node, crontab.leader 주기적으로 상태 업데이트, 정체된 싱크 취소 등의 일을 한다. 주기적인 싱크: crontab.node에 설정 되어 있다. /mirror/bin/maintain-sync를 3분마다 실행 /mirror/etc/noupdate 존재하면 싱크를 수행하지 않는다. (/mirror/lib/geoul.sh의 system_not_degraded로 점검중인지 확인)
패키지 추가하기 /mirror/bin/create-pkg에 패키지 ID를 인자로 준다. 패키지 ID: /mirror/pkgs/아래에 이 이름으로 디렉토리가 생성된다. Name: 표시할 패키지 이름 Directory Name: ftp.kaist.ac.kr에 노출할 폴더 이름 /mirror/ftp/하에 이 이름으로 디렉토리가 생성된다. 생성되지 않는다면 직접 생성 해 줘야 된다. 권한 설정 꼭 확인! (폴더 소유자가 mirror여야 함) Source URL: 싱크받아올 곳 Frequency: 싱크 주기 보통 하루나 12시간 정도로 잡는다. Homepage URL: 패키지와 연관된 프로젝트의 웹 사이트
패키지 확인하기 기본적으로 새 패키지를 생성하면 frequency가 아닌 frequency.disabled가 생 성된다. 바로 자동적으로 싱크되지 않는다. /mirror/pkgs/ID/에서 설정을 확인한다. 필수적인 모든 파일들(name, source, frequency.disabled)이 있는지 확인한다. /mirror/ftp/DIRNAME/이 존재하는지 확인한다. frequency.disabled를 frequency로 옮긴다. frequency가 있으면 여기에 적힌 주기대로 자동적으로 싱크가 수행된다. Fedora같은 몇몇 패키지는 추가적인 sync 작업을 필요로 한다. ./sync 파일을 적절히 수정하자. 모든 게 정상이라면 패키지 싱크를 수행한다.
패키지 싱크받기 /mirror/pkgs/ID/ 안에서 ./sync now를 실행한다. 기본적으로 /mirror/lib/sync.sh를 불러오고 /mirror/bin/get을 실행한다. 디렉토리 안의 source에 따라 알아서 rsync, wget등을 실행한다. 싱크가 시작되면 /mirror/log/sync/에서 로그를 볼 수 있다. 오류가 난다면 http://ftp.kaist.ac.kr/geoul/sync/ 아래에서 로그를 찾아 보자. http://ftp.kaist.ac.kr/ 에 있는 목록에서 로그를 바로 열 수도 있다. 싱크가 진행중일 때는 lock 파일이 생성된다. 한 패키지를 여러 번 sync하려 할 때 생기는 경쟁 조건이 방지된다. 이미 진행중인 싱크를 중단할 때에는 ./sync stop을 쓴다.
싱크 할 때 팁 싱크 도중에 터미널을 꺼버리면 싱크가 멈춰버림 현재 ftp 서버에는 screen이 설치되어 있음 ./sync now 을 실행하고 Ctrl-A D 를 누르면 가상 터미널에서 분리됨 그 다음 터미널을 꺼도 됩니다.
패키지 삭제하기 그냥 /mirror/pkgs/의 해당 패키지를 삭제하면 된다. 물론, /mirror/ftp/등에 있는 (/mirror/pkgs/data/) 데이터는 직접 찾아서 삭 제해 줘야 된다. 깃허브의 검색 기능 사용하면 해당 페키지 설정 파일들이 어디에 위치해 있는지 쉽게 파악하기 가능! 일일이 찾아서 지워주자 index.html을 다시 make해 주는 것을 잊으면 안 된다. How? /mirror/www/self/ 에서 make 해주면 된다
새로운 계정 생성하기 FTP 서버의 경우 보안을 위해서 sparcs서버에서의 접속만 허용하고 있 음 접속도 오직 Public Key를 이용해야만 접속 가능 관리자 권한도 휠과 분리해서 관리, LDAP 연동 돼있지 않음 계정 만드는 과정) useradd 로 계정 만들기 Ssh-keygen 으로 private key/public key 만들기 (2048 byte 이상의 rsa key권 장), 스팍스 서버에서 만들기 /home/[유저이름]/.ssh/authorized_keys 에 pubic key 추가 Sshd_config에 해당 계정 추가 Visudo를 이용해 새로운 계정 추가 항상 비밀번호는 최대한 길고, 다른 사이트에서 사용하지 않은 것으로 하기
방화벽 관리하기 스팍스 대부분 서비스와 다르게 ftp는 netfilter/iptables로 방화벽 설정이 되어있음 Iptables –L 로 현재 방화벽 설정을 볼 수 있다 Iptables-save > /etc/iptables.rules 로 방화벽 설정 저장 가능 데비안 푸시 서버 ip가 바뀌는 경우 방화벽에서 막으므로 새로운 ip로 접근이 가능하도록 바꿔주기
TroubLESHOOTING 패키지 싱크가 안 될 때 로그를 확인해본다. WEB으로도 쉽게 확인 가능
이 경우 미러링 하는 서버가 접속이 안되서 (Network is unreachable) 싱크가 안되고 있다 Ex) 일본 서버 (ftp.jaist.ac.jp) 등을 고려해본다.
싱크 위치 바꾸는 방법 /mirror/pkgs/[패키지 이름]/ 폴더로 이동 Source 파일 변경해주기
Debian의 경우 싱크 안될 때 Debian의 경우 archvsync라는 프로그램을 따로 이용해서 싱크가 돌아감 푸시가 제대로 오는지 확인 (방화벽 등에 문제가 있을 수 있음)
한꺼번에 너무 많은 파일이 삭제돼서 안될 때 Eclipse와 같은 경우 파일이 많이 삭제 경우가 많음 소프트웨어 새 버전이 업데이트되어 옛 버전이 지워졌을 수도… 혹시 모를 비정상적인 싱크를 방지하기 위한 대비책 하지만 정상적인 경우라면 강제로 싱크를 해줄 필요가 있음
/mirror/pkgs/[패키지 이름]/ 폴더로 이동 환경변수를 주고 sync now를 실행하기 GET_NO_MAXDELETE=true ./sync now 최후의 수단으로는 /mirror/ftp/[패키지 이름]를 날려버릴 수 있다 극단적인 해결방법이므로 확실히 무언가 심각하게 꼬였을 때에만 고려한다
몇몇 파일을 미러링할 수 없을 때 임시파일 등의 권한이 잘못되어 미러링 할 수 없을 때가 있다 그쪽 서버 문제이므로 exclude 목록에 추가하는 것 이상으로 해줘야 될 일 은 없다 로그를 보고 무슨 파일이 문제를 일으키는지 확인하자
중요한 사람들? 코렌 (Koren) KOREN NOC Helpdesk Tel : 02-6191-2081 네트워크 광 단자 빌린 곳 인터넷 망을 제공하는 곳 인터넷에 문제가 생기면 연락할 필요가 있음 <연락 주소> KOREN NOC Helpdesk Tel : 02-6191-2081 E-mail : noc@koren.kr
FTP로 메일 온 것 처리하기 학교 외부 사람들도 FTP를 많이 사용함, 그래서 간간히 메일이 옴 미러 추가 요청, 서비스 장애 요청, 속도 느리다는 불만 등등? (당연하게도) 신속하게 처리해 줄 필요가 있음 일단 edalias로 geoul 메일링을 구독하자
이런식으로 반드시 CC에 ftp@ftp.kaist.ac.kr를 붙여준다 그래야 다른 거울 구성원들이 메일에 답장을 했는지 알 수 있어서 중복된 답변을 피할 수 있다.
선배들 도움 받기 스랙의 #ftp-issues 에서 질문하기. 거울이면 반드시 들어오세요 메일을 통해 질문하기. (cc에 ftp@ftp.kaist.ac.kr) 붙이면 됩니다 석주 先輩에 질문하면 아마 도와줄 수도?
해당 배포판 미러 관리자에게 도움받기 우분투, 페도라 등등 개별적인 배포판의 미러링 문제가 있을 때, 직접 미러 관리자에게 물어보는게 가장 확실한 대답을 들을 수 있 음 예) arch-mirrors@archlinux.org 에 메일을 보내면 아치리눅스 미러링 관련된 질문의 대답을 얻을 수 있음 mirrors@debian.org 에 메일을 보내면 데비안 관려된 질문, 대답을 얻을 수 있음 누구의 흑역사도 그대로 인터넷으로 공개되어있으니 한번 메일링 리스트에 서 찾아보세요. (힌트) https://lists.debian.org/debian-mirrors/ 에서 찾아보 기
해야할 일들 OS 업데이트 거울 깃허브 위키 활성화 사이트 리뉴얼 HTTPS(TLS) 적용 이것 때문에 보안 패치, 40G 네트워크 카드를 사용하지 못하고 있음 거울 깃허브 위키 활성화 쉽게 내용들을 찾아볼 수 있게 만들어서 인수인계/문제 해결이 쉽도록 사이트 리뉴얼 https://mirrors.tuna.tsinghua.edu.cn/ 가 정말 깔끔하게 잘 적용 HTTPS(TLS) 적용 OS 업그레이드 등 적용하기 이전에는 힘들 수도 있을 것 같음
해야할 일들 필요 없는 패키지 정리하기 40G 인터넷으로 전환 서버 업그레이드 및 하드디스크 용량 업그레이드 일부 이미 진행되었음 (medibuntu, freebsd-kr) 40G 인터넷으로 전환 OS 업데이트 ㅠㅠ 서버 업그레이드 및 하드디스크 용량 업그레이드 서버 사용한지 거의 10년이 다 되감 하드 용량과 성능이 부족함. 간간히 엄청 느려지는 경우가 있음 ZFS 사용해보기? SSD로 cachin하면 하드디스크 botleneck 문제도 해결 될 수 있을 것 같음….. (서버 업그레이드 한다는 가정 하에)
참고자료 Differ 거울 세미나 (감사합니다…)