아파치 2.x 에서의 트래픽 제한
출처 : http://linux.tini4u.net/stories.php?story=07/01/12/8248075
글쓴이: 티니 (2007년 01월 12일 오전 12:10) 읽은수: 434
--------------------------------------------------------------------------------------
- 작성자 : 김혁중(티니) [sky(golbangi or at)tini4u.net]
- 작성일 : 2007-01-11
- 사이트 : http://linux.tini4u.net/
- 원제목 : 아파치 2.x 에서의 트래픽 제한
- 환 경 : CentOS 4.4, apache 2.2
- 키워드 : mod_cband
--------------------------------------------------------------------------------------
지난 강좌에서 아파치 1.x에서의 트래픽을 제한하는 모듈을 설명해 드렸습니다.
하지만 throttle 모듈은 아파치 1.x에서만 작동하기 때문에 아파치 2.x를 사용하시는 분들은
사용할 수 없다는 최대단점이 있습니다.
또한 최근엔 Legacy 딱지가 붙은 아파치 1.x보다는 최신버전인 아파치 2.x를 사용하시는 분들이
꽤 많기 때문에 그런 분들은 트래픽 제한을 하는데 있어 곤란함을 겪을 수 있습니다.
그렇지만 아파치 2.x에서도 트래픽을 제한할 수 있는 모듈이 있습니다. 바로 cband 모듈 인데요.
이 모듈은 throttle과 매우 흡사한 기능과 구조를 가지고 있지만, 트래픽을 제한하는 기능 말고도
또 한가지의 기능이 있습니다.
바로 대역폭을 제한하는 bandwidth 기능 입니다.
기존 아파치 1.x에서는 트래픽제한은 throttle 모듈을, 대역폭제한은 bandwidth 모듈을 이용했습니다.
그러나 아파치 2.x에서는 cband 모듈을 이용함으로써 두가지의 기능을 모두 사용할 수 있습니다.
또한 xml 형태로의 데이터까지 얻을 수 있기 때문에 관리자 입장에서 매우 반가울 수 밖에 없습니다.
1. mod_cband 설치 (최신버전: http://cband.linux.pl/)
[root@localhost]# wget http://cband.linux.pl/download/mod-cband-0.9.7.5.tgz [root@localhost]# tar xfz mod-cband-0.9.7.5.tgz [root@localhost]# cd mod-cband-0.9.7.5 [root@localhost]# ./configure --with-apxs=/usr/sbin/apxs [root@localhost]# make [root@localhost]# make install |
2. 아파치 환경설정에서의 cband 설정
cband 모듈 또한 throttle와 마찬가지로 3rd-party 모듈이기 때문에 아파치에서 설정을 합니다.
|
※ SetHandler 설명
cband-status -> 관리자 페이지 입니다. 따라서 접근을 허용할 IP를 입력해주셔야 됩니다.
cband-me -> 사용자 페이지 입니다.
3. cband 적용
cband는 각 호스트에 대해서 여러가지 지시자를 사용하여 설정 할 수 있습니다.
아래는 여러가지 지시자중 하나인 가장 많이 사용되는 CbandLimit을 사용한 예제 입니다.
|
※ 위 설정은 1Day 동안 100M의 트래픽을 허용하겠다는 설정입니다.
|
※ 위 설정은 foobar 유저에게 1Day 동안 100M의 트래픽을 허용하겠다는 설정이며,
foobar.com과 foobar2.com에서 foobar 유저의 트래픽을 공유해서 사용하겠다는 것입니다.
4. cband 단위
- 전송속도 단위
kbps, Mbps, Gbps - bits per second, 의미: 1024, 1024*1024, 1024*1024*1024 bps kb/s, Mb/s, Gb/s - bytes per second, 의미: 1024, 1024*1024, 1024*1024*1024 b/s 기본값 : kbps |
- 트래픽 제한 단위
K, M, G - bytes, 의미: 1000, 1000*1000, 1000*1000*1000 bytes Ki, Mi, Gi - bytes, 의미: 1024, 1024*1024, 1024*1024*1024 bytes 기본값: K |
- 시간 단위
S, M, H, D, W - 초, 분, 시간, 일, 주. 의미: 1, 60, 3600, 86400, 604800 Seconds 기본값: S |
5. cband 지시자
이름: CBandDefaultExceededURL 설명: 제한을 초과했을때 보여줄 URL 문맥: Server config 문법: CBandDefaultExceededURL [URL] 예제: CBandDefaultExceededURL http://foobar.com/503.html |
이름: CBandDefaultExceededCode 설명: 제한을 초과했을시 보여줄 에러 코드 문맥: Server config 문법: CBandDefaultExceededCode [HTTP_CODE] 예제: CBandDefaultExceededCode 509 |
이름: CBandScoreFlushPeriod 설명: scoreboard 파일에 기록할 요청수를 정하나, cband 퍼포먼스에 영향을 미칩니다. 기본값: 1 문맥: Server config 문법: CBandScoreFlushPeriod [요청수] 예제: CBandScoreFlushPeriod 100 100번의 요청이 들어오면 scoreboard 파일에 한번 기록합니다. |
이름: CBandSpeed 설명: 가상호스트 도메인의 최대 속도, 요청수, 접속수 설정 문맥: <Virtualhost> 문법: CBandSpeed [kbps] [rps] [max_conn] kbps - 초당 최대 전송속도 rps - 초당 최대 요청수 max_conn - 최대 동시 접속수 예제: CBandSpeed 1024 10 30 호스트에 대해 1024kbps 전송속도로 제한하며, 초당 10개의 요청을 처리하고, 동시 접속을 30개로 제한합니다. |
이름: CBandRemoteSpeed 설명: 호스트 접속자의 최대속도, 요청수, 접속수 제한 문맥: <Virtualhost> 문법: CBandRemoteSpeed [kbps] [rps] [max_conn] kbps - 초당 최대 전송속도 rps - 초당 최대 요청수 max_conn - 최대 동시 접속수 예제: CBandRemoteSpeed 20kb/s 3 3 호스트 접속자에 대해 1024kbps 전송속도로 제한하며, 초당 10개의 요청을 처리하고, 동시 접속을 30개로 제한합니다. |
이름: CBandClassRemoteSpeed 설명: IP class의 최대속도, 요청수, 접속수 제한 문맥: <Virtualhost> 문법: CBandClassRemoteSpeed [class_name] [kbps] [rps] kbps - 초당 최대 전송속도 rps - 초당 최대 요청수 max_conn - 최대 동시 접속수 예제: <CBandClass googlebot_class> CBandClassDst 66.249.64/24 CBandClassDst 66.249.65/24 CBandClassDst 66.249.79/24 </CBandClass> CBandClassRemoteSpeed googlebot_class 20kb/s 2 3 googlebot_class 클래스에 대해 20kb/s 전송속도로 제한하며, 초당 10개의 요청을 처리하고, 동시 접속을 30개로 제한합니다. |
이름: CBandRandomPulse 설명: 속도 제한을 위해서 임의의 파형을 생성한 다음 처리하는 방법입니다. 문맥: Global 문법: CBandRandomPulse [On/Off] 예제: CBandRandomPulse On |
이름: CBandLimit 설명: 제한할 전송량을 설정한다. 문맥: <Virtualhost> 문법: CBandLimit [limit] limit - 전송량, 사용단위: K(kilo), M(mega), G(giga), Ki(kibi), Mi(mebi), Gi(gibi) 예제: CBandLimit 10M 전송량을 10M(10*1000*1000bytes)로 제한한다. CBandLimit 10Mi 전송량을 10M(10*1024*1024bytes)로 제한한다. |
이름: CBandClassLimit 설명: IP class에 대해 제한할 전송량 설정 문맥: <Virtualhost> 문법: CBandClassLimit [class_name limit] class_name - 클래스 이름 limit - 전송량, 사용단위: K(kilo), M(mega), G(giga), Ki(kibi), Mi(mebi), Gi(gibi) |
이름: CBandExceededURL 설명: 제한을 초과했을때 보여줄 URL 문맥: <Virtualhost> 문법: CBandExceededURL [URL] 예제: CBandExceededURL http://foobar.com/503.html |
이름 : CBandExceededSpeed 설명: 전송량을 초과했을때의 전송속도 제한 설정 문맥: <Virtualhost> 문법: CBandExceededSpeed [kbps] [rps] [max_conn] kbps - 초당 최대 전송속도 rps - 초당 최대 요청수 max_conn - 최대 동시 접속수 |
이름: CBandScoreboard 설명: 가상호스트의 scoreboard 파일 지정 문맥: <Virtualhost> 문법: CBandScoreboard [path] |
이름: CBandPeriod 설명: 제한기간 문맥: <Virtualhost> 문법: CBandPeriod [period] period - 사용단위: S(초), M(분), H(시간), D(일), W(주) 예제: CBandPeriod 1D |
이름 : CBandPeriodSlice 설명: 기간을 나눌 기간 명시 기본값: slice_len = limit 문법: CBandPeriodSlice [slice_length] 예제: CBandLimit 100G CBandPeriod 4W CBandPeriodSlice 1W 지정된 제한값을 1주일 단위로 나누어 사용 합니다. 위 설정을 해석하면 4주는 1주일 단위로 나누며, 용량은 100G/4주=25G로 사용 합니다. |
이름: <CBandUser> 설명: 새로운 cband 가상 사용자 설정 문맥: Server config 문법: <CBandUser user_name> |
이름: CBandUserSpeed 설명: cband 가상 사용자의 속도, 요청수, 동시 접속수 제한 문맥: <CBandUser> 문법: CBandUserSpeed [kbps] [rps] [max_conn] kbps - 초당 최대 전송속도 rps - 초당 최대 요청수 max_conn - 최대 동시 접속수 예제: CBandUserSpeed 100kb/s 10 5 |
이름: CBandUserLimit 설명: cband 가상 사용자의 전송 용량 제한 문맥: <CBandUser> 문법: CBandUserLimit [limit] limit - 사용용량, 사용단위: K(kilo), M(mega), G(giga), Ki(kibi), Mi(mebi), Gi(gibi) 예제: CBandUserLimit 10M 전송량을 10M(10*1000*1000bytes)로 제한한다. CBandUserLimit 10Mi 전송량을 10M(10*1024*1024bytes)로 제한한다. |
이름: CBandUserClassLimit 설명: cband 가상 사용자의 IP class에 대해 제한할 전송량 설정 문맥: <CBandUser> 문법: CBandUserClassLimit [class_name] [limit] class_name - 클래스 이름 limit - 전송량, 사용단위: K(kilo), M(mega), G(giga), Ki(kibi), Mi(mebi), Gi(gibi) |
이름 : CBandUserExceededURL 설명: cband 가상 사용자의 제한을 초과했을때 보여줄 URL 문맥: <CBandUser> 문법: CBandUserExceededURL URL 예제: CBandDefaultExceededURL http://foobar.com/503.html |
이름: CBandUserExceededSpeed 설명: cband 가상 사용자의 전송량을 초과했을때의 전송속도 제한 설정 문맥: <CBandUser> 문법: CBandUserExceededSpeed [kbps] [rps] [max_conn] kbps - 초당 최대 전송속도 rps - 초당 최대 요청수 max_conn - 최대 동시 접속수 |
이름: CBandUserScoreboard 설명: cband 가상 사용자의 scoreboard 파일 지정 문맥: <CBandUser> 문법: CBandUserScoreboard [path] |
이름: CBandUserPeriod 설명: cband 가상 사용자의 제한기간 문맥: <CBandUser> 문법: CBandUserPeriod [period] period - 사용단위: S(초), M(분), H(시간), D(일), W(주) 예제: CBandPeriod 1D |
이름: CBandUserPeriodSlice 설명: cband 가상 사용자의 기간을 나눌 기간 명시 기본값: slice_len = limit 문맥: <CBandUser> 문법: CBandUserPeriodSlice [slice_length] 예제: CBandLimit 100G CBandPeriod 4W CBandPeriodSlice 1W 지정된 제한값을 1주일 단위로 나누어 사용 합니다. 위 설정을 해석하면 4주는 1주일 단위로 나누며, 용량은 100G/4주=25G로 사용 합니다. |
6. 통계화면 보기
관리자모드 - http://foobar.com/cband-status
관리자모드(xml) - http://foobar.com/cband-status?xml
사용자모드 - http://foobar.com/cband-me
사용자모드(xml) - http://foobar.com/cband-me?xml
7. 통계화면에 아파치 인증 걸기
throttle 강좌에서도 말씀드렸지만 통계화면의 제한은 IP의 형태로 제한을 하는게 정설입니다.
그렇지만 IP가 자주 변경되는 분들은 매번 IP를 변경해주는것도 하나의 일이 될 수 있습니다.
따라서 이런 경우에는 아파치 인증을 걸어서 사용하시면 편리할 것입니다.
|
'리눅스 > APACHE' 카테고리의 다른 글
ssl 보안 서버 구동시 암호묻지 않기 (0) | 2015.01.16 |
---|---|
서치엔진(robot.txt )을 피하는 방법 (0) | 2015.01.16 |
아파치 1.x 에서의 트래픽 제한 (0) | 2015.01.16 |
yum 으로 APM 설치하기 (0) | 2015.01.16 |
[ERROR] libphp5.so: cannot restore segment prot after reloc: Permission denied (0) | 2015.01.16 |