[퍼온 글] Apache + cband 다른 글

  제이쿼리 2010. 3. 31 오후 5:00:08 2010. 02. 18 (0)

1. 설치파일 받기
http://cband.linux.pl/download
(접속이 잘 안되니 첨부파일을 다운받아서 설치하면 됩니다.)


[Stable](안정화)버전중 높은 버전으로 다운로드 받으면 되며 글 쓰는 시점 가장 최근버전은 0.9.7.4이다.
젠투나 데비안, 페도라를 위한 패키지도 있으니 편한버전으로 다운로드받길 바란다.




2. 설치하기

● 설치하기에 앞서..
패키지 버전으로 설치할때는 상관없으나 만약 아파치를 컴파일하여 사용하고 있다면 컴파일시 동적모드(DSO)로 설치를 해주었는지 살펴보고 만약 정적모드(Static)로 설치하였다면 다시 컴파일 하여야 한다.



wget http://cband.linux.pl/download/mod-cband-0.9.7.5.tgz

tar -zxvf mod-cband-0.9.7.5.tgz

cd mod-cband-0.9.7.5

설정된 글씨체가 작게 설정되어있는관계로 설치전에 글씨체 크기를 좀 더 크게 해준다.

#vi /usr/local/src/mod-cband-0.9.7.5/src/mod_cband.c

2468 번째 줄

"body           { font-family: sans-serif; font-size: 0.9em; }\n"

"td             { padding-left: 0.5em; padding-right: 0.8em; }\n"
"div.section    { margin-top: 1.5em; margin-bottom: 0.8em; }\n"

-> 이부분을 적당한 크기로 수정해 주시면 됩니다.(이미 설치를 해버린 상태라면 make clean 후 make, make install)


./configure

make

make install

※ 정상적으로 설치가 되었다면, 아파치의 httpd.conf파일에 'LoadModule cband_module      modules/mod_cband.so' 해당 구문이 추가 되었을것이다.
추가되지 않았다면 정상적으로 설치가 되지 않은것이므로 확인을 하여야 한다.

※ configure할때 apxs관련 에러가 나올 경우가 있다.
이 경우에 apxs의 경로를 안다면 './configure --with-apxs=apxs경로'를 적어주면 된다.
만약 apxs의 경로를 모른다면 'which apxs'로 찾아보고 그래도 없다면 find를 사용하자.
find / -name apxs

 

혹은

#PATH=$PATH:/usr/local/apache/bin
#export path
해준 후 make 해줘도 됨.


3. 설정하기

mod_throttle의 throttle-status와 throttle-me의 역활을 할수 있게 설정한다.

httpd.conf 마지막줄에 아래의 구문을 추가하도록 한다.

--------------------------------- httpd.conf ----------------------------------

<Location /cband-status>
SetHandler cband-status
</Location>
<Location /cband-status-me>
SetHandler cband-status-me
</Location>

--------------------------------------------------------------------------------

설정을 완료하고 Apache를 재시작시키고 http://서버주소/cband-status로 접속해보면
throttle-status와는 좀 다른 살짝 복잡하고 알록달록한 페이지를 만날수 있다.

4. 설정하기2 (VirtualHost 트래픽제한하기)

대부분의 유저가 mod_throttle 및 mod_bandwidth를 사용하는 이유가 VirtualHost별 트래픽제한을 목적으로 두고 있을것이다.
mod_cband라고 설정방법이 크게 다르진 않다.

예제1) VirtualHost별 트래픽제한하기
<VirtualHost *>
.
.
CBandLimit 500Mi
CBandPeriod 1D

CBandExceededURL http://test.com/traffic_over.html

# test.com에 대해 1일에 500Mbyte 의 트레픽을 허용하며 그 트레픽을 초과하면 http://test.com/traffic_over.html 을 출력합니다.

</VirtualHost>

예제2) 여러개의 주소를 사용하는 사용자의 트래픽 묶어서 제한하기
<대부분 웹호스팅을 하거나 할 경우 한 사용자가 여러개의 도메인을 사용하는 경우가 많고, 그에 따라 여러개의 <VirtualHost> 를 가지게 되는 경우가 빈번합니다. 그럴 땐 어떻게 하느냐?

<CBandUser user>
   CBandUserLimit 300Mi
   CBandUserPeriod 1D
</CBandUser>
<VirtualHost *:80>
   ServerName oper.or.kr
   DocumentRoot /usr/local/www/data
   CBandUser user
</VirtualHost>
<VirtualHost *:80>
   ServerName ik.oper.or.kr
   DocumentRoot /usr/local/www/data
   CBandUser user
</VirtualHost>

  일종의 클래스 개념입니다. user 라는 클래서는 1일에 300Mbyte 의 전송량을 할당받고, oper.or.kr 과 ik.oper.or.kr 도메인이 user 클래스의 영향을 받는다는 구문입니다. CBandExceededURL 를 지정하지 않았기 때문에 트레픽을 초과하면 503 에러를 출력합니다.

  이 외에도 VirtualHost 별로 대역폭 설정 및 접속 IP 별로 대역폭 설정 등을 할 수 있지만, 그 부분은 다루지 않겠습니다. (왜냐? 역시 초보라..)
  설정을 다 하셨으면 apache 를 재시작해 주시고요. 이제 http://Domain/cband-status 와 http://Domain/cband-status-me 로 접속해 확인합니다. 물론 위에서 설정한 Domain 으로 접속해야겠죠?

  위 정보는 이곳에서 얻어왔습니다. 아래의 설정 값 역시 이곳에서.. ^^; (귀찮음?) 보다 자세한 것은 이곳을 한번 살펴보시고 해결이 안되신다면 코멘트로 질문 달아주시면 아는 것을 답변해 드리겠습니다.

1) 단위
  * 전송속도 단위
     o kbps, Mbps, Gbps - bits per second:1024, 1024*1024 , 1024*1024*1024 bps
     o kb/s, Mb/s, Gb/s - bytes persecond:  1024, 1024*1024, 1024*1024*1024 b/s
     o 기본 : kbps

  * 트래픽 쿼터 단위
     o K, M, G - bytes: 1000, 1000*1000,1000*1000*1000 bytes
     o Ki, Mi, Gi - bytes: 1024, 1024*1024,1024*1024*1024 bytes
     o 기본 : K

  * 시간(기간) 단위
     o S, M, H, D, W - 초, 분, 시간, 일, 주
     o 기본 : S

2) 지시자들
  (1) 이름 : CBandDefaultExceededURL
     설명 : 제한을 초과했을때보여줄 URL  (지정하지 않으면, 503 에러 페이지)
     문맥 : Serverconfig
      문법 :CBandDefaultExceededURL URL

  (2) 이름 : CBandDefaultExceededCode
     설명 : 제한을 초과했을시 보여줄 에러코드
     문맥 : Server config
     문법 :CBandDefaultExceededCode HTTP_CODE
     예제 :CBandDefaultExceededCode 509  

  (3) 이름 : CBandScoreFlushPeriod
     설명 : scoreboard 파일에기록할 요청수, mod_cband 의 성능에 영향을 준다.
     기본값 : 1
     문맥 : Server config
     문법 :CBandScoreFlushPeriod 요청수
     예제 :CBandScoreFlushPeriod 100  ( 매 100번의 요청에 한번씩 scoreboard 파일에 기록)

  (4) 이름 : CBandSpeed
     설명 : 가상호스트 도메인의 최대 속도,요청수, 접속수  설정
     문맥 :<Virtualhost>
     문법 : CBandSpeed kbpsrps max_conn
             kbps - 초당 최대 전송속도
             rps - 초당 최대 요청수
             max_conn - 최대 동시 접속수
     예제 : CBandSpeed 102410 30
             최대 1024kbps전송속도로 제한, 초당 10개의 요청 처리, 동시 접속을 30개로 제한.

  (5) 이름 : CBandRemoteSpeed
     설명 : 접속자(IP)의 최대속도,요청수, 접속수 제한 (CBandSpeed와 비슷하지만, 접속자당 설정)
     문맥 :<Virtualhost>
     문법 : CBandRemoteSpeedkbps rps max_conn
             kbps - 초당 최대 전송속도
             rps - 초당최대 요청수
             max_conn - 최대 동시 접속수
     예제 : CBandRemoteSpeed20kb/s 3 3
             접속자(ip)에대해 최대 20kb/s , 초당 3개의 요청, 동시 접속 3개로 제한.

  (6) 이름 : CBandClassRemoteSpeed
     설명 : 정의한 class(ip 범위)에대해 최대속도, 요청수, 접속수 제한
     문맥 :<Virtualhost>
     문법 :CBandClassRemoteSpeed class_name kbps rps
             class_name - 이미 정의한 클래스 이름 (IP범위)
             kbps - 초당 최대 전송속도
             rps - 초당 최대 요청수
             max_conn - 최대 동시 접속수
      예제 : <CBandClassgooglebot_class>
               CBandClassDst 66.249.64/24
               CBandClassDst 66.249.65/24
               CBandClassDst 66.249.79/24
             </CBandClass>
                   CBandClassRemoteSpeedgooglebot_class 20kb/s 2 3
                   위에서 정의한클래스(googlebot_class)의 요청에는 20kb/s 의 전송속도, 초당 3개의 요청, 동시 접속 3개로 제한.

  (7) 이름 : CBandRandomPulse
     설명 : 속도 제한을 위해서 임의의파형을 생성한 다음 처리하는 mod_cband의 처리 방법이다.
              부하가 많을때는 자동 Off된다.
     문맥 : Global
     문법 : CBandRandomPulseOn/Off

  (8) 이름 : CBandLimit
     설명 : 제한할 전송량을 설정한다.(기간은 CBandPeriod 에서 설정)
     문맥 :<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)로 제한한다.

  (9) 이름 : CBandClassLimit
     설명 : 정의한 class(ip범위)에대해 제한할 전송량 설정.
     문맥 :<Virtualhost>
     문법 : CBandClassLimitclass_name limit
             class_name - 이미 정의한 클래스 이름(ip범위)
             limit - 전송량, 사용단위: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi),Gi (gibi)

  (10) 이름 : CBandExceededURL
     설명 : 제한을 초과했을시 보여줄URL, 지정하지 않으면 503 에러 발생 (가상호스트에서)
     문맥 :<Virtualhost>
     문법 : CBandExceededURLURL

  (11) 이름 : CBandExceededSpeed
     설명 : 전송양을 초과했을시 , 전송속도제한 설정.
     문맥 :<Virtualhost>
     문법 :CBandExceededSpeed kbps rps max_conn
             kbps - 초당 최대 전송속도
             rps - 초당 최대 요청수
             max_conn - 최대 동시 접속수

  (12) 이름 : CBandScoreboard
     설명 : 가상호스트의 scoreboard파일 지정. (성능향상을 위해 필요)
     문맥 :<Virtualhost>
     문법 : CBandScoreboardpath
             (path는 아파치(www)권한으로 쓰기가능해야 함)

  (13) 이름 : CBandPeriod
     설명 : 용량제한기간(이 기간이 지나면,측정되었던 용량은 지워진다.)
     문맥 :<Virtualhost>
     문법 : CBandPeriod period
             period - 사용단위: S (초), M (분), H (시간), D (일), W (주)
     예제 : CBandPeriod1W  (1주일)
             CBandPeriod 14D  (14일)
             CBandPeriod 60M  (60분)

  (14) 이름 : CBandPeriodSlice
     설명 : 기간이 길때는 나눌 기간을명시한다.
     기본값 : slice_len = limit
     문맥 :<Virtualhost>
     문법 : CBandPeriodSliceslice_length
     예제 : CBandLimit 100G
             CBandPeriod 4W
             CBandPeriodSlice 1W
              4주는 1주일 단위로 나뉜다(4W/1W = 4). 용량은 100G/4=25G
              1주에 25G, 2주째 50G 이렇게 나눠 처리 된다.

  (15) 이름 : <CBandUser>
     설명 : 새로운 cband 가상 사용자설정
     문맥 : Server config
     문법 : <CBandUseruser_name>

  (16) 이름 : CBandUserSpeed
     설명 : cband 가상 사용자의 속도,요청수, 동시 접속수 제한
     문맥 : <CBandUser>
     문법 : CBandUserSpeedkbps rps max_conn
             kbps - 초당 최대 전송속도
             rps - 초당 최대 요청수
             max_conn - 최대 동시 접속수
     예제 : CBandUserSpeed100kb/s 10 5

  (17) 이름 : CBandUserLimit
     설명 : cband 가상 사용자의 저송용량 제한.
     문맥 : <CBandUser>
     문법 : CBandUserLimitlimit
             limit - 사용용량, 사용단위: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi)
     예제 : CBandUserLimit 10M
             CBandUserLimit 10Mi

  (18) 이름 : CBandUserClassLimit
     설명 : cband 가상 사용자의 정의한class(ip범위)에 대해 제한할 전송량 설정
     문맥 : <CBandUser>
     문법 :CBandUserClassLimit class_name limit
             class_name - 지정한 class(IP범위)이름
             limit -사용용량, 사용단위: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi),Gi (gibi)

  (19) 이름 : CBandUserExceededURL
     설명 : cband 가상 사용자의,제한을 초과했을시 보여줄 URL,
              지정하지 않으면 503 에러 발생 ( 가상호스트에서 )
     문맥 : <CBandUser>
     문법 :CBandUserExceededURL URL

  (20) 이름 : CBandUserExceededSpeed
     설명 : cband 가상 사용자의,전송양을 초과했을시 , 전송속도 제한 설정.
     문맥 : <CBandUser>
     문법 :CBandUserExceededSpeed kbps rps max_conn
             kbps - 초당 최대 전송속도
             rps - 초당 최대 요청수
             max_conn - 최대 동시 접속수

  (21) 이름 : CBandUserScoreboard
     설명 : cband 가상 사용자의,scoreboard 파일 지정.
     문맥 : <CBandUser>
     문법 :CBandUserScoreboard path
             (path는 아파치(www)권한으로 쓰기가능해야 함)

  (22) 이름 : CBandUserPeriod
     설명 : cband 가상 사용자의,용량제한기간(이 기간이 지나면, 측정되었던 용량은 지워진다.)
     문맥 : <CBandUser>
     문법 : CBandUserPeriodperiod
             period - 사용단위: S (초), M (분), H (시간), D (일), W (주)
     예제 : CBandUserPeriod 1W
             CBandUserPeriod 14D
             CBandUserPeriod 60M

  (23) 이름 : CBandUserPeriodSlice
     설명 : cband 가상 사용자의,기간을 나눌 기간 명시
     기본값 : slice_len = limit
     문맥 : <CBandUser>
     문법 :CBandUserPeriodSlice slice_length
     예제 : CBandUserLimit100G
             CBandUserPeriod 4W
             CBandUserPeriodSlice 1W
              4주는 1주일 단위로 나뉜다(4W/1W = 4). 용량은 100G/4=25G
              1주에 25G, 2주째 50G 이렇게 나눠 처리 된다.



## 참고문서
http://cband.linux.pl
http://www.howtoforge.com/mod_cband_apache2_bandwidth_quota_throttling
http://www.superuser.co.kr/home/lecture/index.php?leccode=10588

 

기본적인 사용에 mod_throttle과 다른점은 Period와 트래픽Limit을 따로 지정해준다는것 외에는 없는것 같다. 사용하는 단위도 M, G 로 별다를바 없다.
(단위에 대한 자세한 내용은 http://cband.linux.pl/documentation 에서 확인할수 있다.)

한가지 다른점을 들자면 mod_throttle사용시 여러VirtualHost를 묶을 경우 별다른 방법이 없어 그냥 Directory로 제한을 하곤 했는데(mod_throttle의 기능에 대해 자세히 알지 못해 이 방법을 사용했을수도 있음을 미리 밝힌다..-_-)
User를 명명해 묶을수 있다는 기쁨을 표하지만, 유저가 직접 확인할수 없다는부분에 대해서는 mod_throttle의 디렉토리로 묶는 방법과 같아 살짝 아쉽다.
이 부분에 대해서는 많은 삽질을 거쳐봐야 할것 같다.

Tags:
삭제 수정 댓글
2010. 8. 26 오후 6:17:43 (111.75.250.***)

brand new bag for g gucCi brand new bag for g high quality replIca handbags brand new bag for g best replica handbagS brand new bag for g dEsigner handbags brand new bag for g replica designer handbAgs

비밀번호를 입력하여 주세요


제목 [퍼온 글] Apache + cband 다른 글
내용
발송할 주소
선택 나의 트위터 친구 트위터
계정정보 아이디: / 패스워드 : / 친구 아이디:
내용 0