티스토리 뷰

LAYER 4 & 7

squid 기본 개념 정리

초보의 CHOMAN 2015.06.12 11:00

tcpdump 를 떳을때 아래와 같이 있으면 프록시 거쳐서 패킷이 들어온거다.

Via: 1.1 proxy.XXXXXX.com:80 (squid)
X-Forwarded-For: XXX.XXX.115.201
Cache-Control: max-age=259200

[apache Log] 에서 실제아이피로 찍을려면 아래와 같이 수정하거나 추가해주자!

(httpd.conf)
LogFormat "%v %{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" X-Forwarded-For

(httpd.conf or httpd-vhost.conf)
CustomLog /var/log/apache/www.example.com-xforwarded.log X-Forwarded-For


트래픽이 한 80MB 찍게 되면 아래 메세지와 함께 서버 1대로는 무리 (기가 랜, 듀얼코어, 2G RAM, SATA)

Dec 7 17:00:13 DNS-LB2 kernel: TCP: too many of orphaned sockets
Dec 7 17:00:18 DNS-LB2 kernel:last message repeated 2 times
Dec 7 17:00:18 DNS-LB2 kernel: Out of socket memory
Dec 7 17:00:19 DNS-LB2 kernel: TCP: too many of orphaned sockets


아래 확장자들은 자주 변경되는 경우 바로 업데이트 되어야 하므로 캐싱을 안하는것이 나을듯 하다? 

/etc/squid/squid.conf
acl QUERY urlpath_regex cgi-bin \? php php3 htm html jsp js css asp aspx swf jpg gif xml
cache deny QUERY


스퀴드 로그들

cache.log

 

squid 에 대한 동작 Flow 에 대한 로그 파일
cache 에 대한 debug log 확인 가능
option 을 설정하여 cache 기능을 시험하면 squid 전체 Flow에 대한 dqbug 메세지 확인가능함

Excess data from "xxx" (초과 데이타 / 해당 파일이 존재하지 않을때?)

→ request_header_max_size 5 KB ==> 헤더사이트 수정으로 해결 가능

Request not yet fully sent "xxx" (요청에 대해서 완전히 전송하지 못함)

httpSendRequestEntryDone: Likely proxy abuse detected 'IP' -> '도메인 정보 링크' (클라이언트가 프록시를 통해
접근하는것 같다?)


 

access.log

GET, PUT Method에 데한 access 결과를 표시



store.log

캐시 Data를 Swap File에 Write하는지에 대한 정보 출력

 

RELEASE - FILE이 RELEASE 되었음

SWAPOUT - File이 생성되었음

SWAPIN - File에 접근하였음

SWAPOUT 에서 Fileno가 00000015 이면 /usr/local/squid/cache/00/00 에 Fileno 00000015 file 이 생성되었다는 뜻
Fileno가 00020017 이면 /usr/local/squid/cache/00/02 에 Fileno 00000017 file 이 생성되었다는 뜻



squid.pid

동작하는 squid 의 pid가 출력


cache directory

Swap 파일에 대한 정보


캐쉬기능


PUT

URL과 해당 Data을 저장

 

Cache 서버가 Proxy로부터 URL과 URL의 Content를 수신하였을때 해당 URL과 URL의 Content를 저장하는 기능 

Cache Server가 Proxy Server로부터 URL과 해당 URL의 Content를 수신하면 먼저 해당 URL의 Header 부분을 검사

Header 부분을 검사하여 캐시 가능한 Content일 경우 해당 URL을 Disk에 저장

이때 컨텐츠 크기가 2048 이하일때는 Ram Disk에 저장되고 2048 이상일때는 URL에 해당되는 Content는 

물리적인 Disk 인 /usr/local/squid/cache 의 디렉토리에 저장된다. 

만약 캐시가능한 데이터인데도 저장 공간이 부족할 시에는 LRU(Least Recnet Unit) 정책을 따라 가장 오래 저장된 

캐시데이터가 삭제된다. 

만약 데이터가 삭제되었는데도 남은 공간이 컨텐츠 크기보다 작으면 그 데이터는 저장되지 않는다.




GET

URL에 대한 데이터 요구시 해당데이터를 검색하여 전송

 

GET 기능은 cache에 저장된 URL의 Content를 Proxy Server로 가져오기 위한 기능

Proxy Server에서 URL의 정보를 가져오기 위해 GET URL HTTP/1.0 같이 입력

위와 같이 입력시 Cache Server에 해당 URL이 없으면 NOK, 해당 URL이 있으면 Cache Server에서는 해당 URL이 

저장된 File 위치를 검색한 후 해당 File에 저장되어 있는 Content를 Proxy Server로 전송

만약 해당 URL과 URL에 해당하는 Content가 있어도 유효기간이 지난 데이터를 요구하면 

해당 URL과 URL에 해당되는 Content를 삭제후 Proxy Server로 NOK 메시지를 전송




squid 장점 단점

 

장 점

Caching된 페이지에 대한 요청의 지연시간이 1/4정도로 줄음

전체망의 부하(load)와 Remote 서버의 부하가 줄어듬

Remote 서버가 작동하지 않을때도 caching된 자료를 받아볼 수 있음

단 점

페이지의 old version을 Return할 수 있음

Caching되지 않은 페이지에 대해선 지연 증가


'LAYER 4 & 7' 카테고리의 다른 글

squid.conf 옵션 정리  (0) 2015.06.12
Squid result codes  (0) 2015.06.12
squid 기본 개념 정리  (0) 2015.06.12
squid 3.X 설치 예제  (0) 2015.06.12
squid 프로세스 재시작 스크립트  (0) 2015.06.12
squid 설치 및 셋팅  (0) 2015.06.11
댓글
댓글쓰기 폼