본문 바로가기

IT/소프트웨어 설치

apache mod_cband 설치 및 설정

다운로드1: http://sourceforge.net/projects/cband/files/latest/download 

다운로드2: http://linux.softpedia.com/get/Internet/HTTP-WWW-/mod-cband-4737.shtml#download


위아래 버전이 다르고 구글링할때 아래 0.9.7.5버전에 대한 레퍼런스가 많으니 밑에걸로 받는걸 추천함

참고로 2006년 November 이후 업데이트가 없음 두번째 링크가 최신 버전이었음..ㄷㄷ

(http://freecode.com/projects/mod_cband/)


1. 설치

 # cd /src/cband

 # tar vzxf mod-cband-0.9.7.5.tgz

 # cd mod-cband-0.9.7.5

 # ./configure

 # make

 # make install

* httpd를 yum으로 설치했다면 apxs가 없어서 ./configure가 안될것이다. 이때는 yum httpd-devel을 설치해주면 된다


설치확인

 # grep cband /etc/httpd/conf/httpd.conf  

 # ls /usr/lib64/httpd/modules/*cband*


2. httpd.conf 설정

 

<IfModule mod_cband.c>

     <Location /cband-status>

        SetHandler cband-status

    </Location>

    <Location /cband-status-me>

        SetHandler cband-status-me

    </Location>

    <Location /~*/cband-status-me>

        SetHandler cband-status-me

    </Location>

    <Location /cband-status>

        Order deny,allow

        Deny from all

        Allow from all

    </Location>

</IfModule>


* 이후 아파치를 올리고 http://서버ip/cband-status 로 확인


3. virtualhost 설정

 

<VitualHost 192.1681.136.135:80>

     DocumentRoot /var/www/html

     ServerName test.com

     ServerAlias www.test.com

     CBandSpeed 1024 5 30

 </VirtualHost>



결과 페이지

설정한 virtualhost에 대한 내용이 나온다. 위에 설정했던건 빨간색이랑 파란색 영역으로 보이고있다


하지만, 상용서버가 아닌이상 이게 제대로 동작하는지 확인이 어렵다. 그래서 부하를 주기위해 apache ab(apche benchmark) 툴을 사용했다

apache ab는 아파치 설치시 같이 설치된다(몇 버전 부터인지는 잘 모르겠다 apache2.2.15버전에는 있다..ㅈㅅㅈㅅ)


4. apache ab 실행화면

ab -n 1 http://192.168.136.135/ 실행화면


아까 초당 10번 이상 접속하는 것을 제한하는 설정을 했으니 ab로 시도해보자

는 실패.. 아 의도한건 이게 아닌데.. ab에서 몇몇건이 실패됐다라고 해야되는데... 다 성공이다.. 총 접속자를 30으로 해봐도 성공 했다고 나오네.. 이건 일단 나중에


5. 지시자 및 단위 설명 (필요시 찾아보세요!!)

  1) 단위.

    * 전송속도 단위

          o kbps, Mbps, Gbps - bits per second: 1024, 1024*1024 , 1024*1024*1024 bps

          o kb/s, Mb/s, Gb/s - bytes per second:  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 에러 페이지)

            문맥 : Server config

          문법 : 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 kbps rps max_conn

                kbps - 초당 최대 전송속도

                rps - 초당 최대 요청수

                max_conn - 최대 동시 접속수 

         예제 : CBandSpeed 1024 10 30

                 최대 1024kbps전송속도로 제한, 초당 10개의 요청 처리, 동시 접속을 30개로 제한.


     (5)이름 : CBandRemoteSpeed

         설명 : 접속자(IP)의 최대속도, 요청수, 접속수 제한 (CBandSpeed와 비슷하지만, 접속자당 설정)

         문맥 : <Virtualhost>

         문법 : CBandRemoteSpeed kbps rps max_conn

                  kbps - 초당 최대 전송속도

                  rps - 초당최대 요청수

                  max_conn - 최대 동시 접속수

         예제 : CBandRemoteSpeed 20kb/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 - 최대 동시 접속수

         예제 : <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 의 전송속도, 

                       초당 3개의 요청, 동시 접속 3개로 제한.


     (7)이름 : CBandRandomPulse

         설명 : 속도 제한을 위해서 임의의 파형을 생성한 다음 처리하는 mod_cband의 처리 방법이다.

                   부하가 많을때는 자동 Off된다.

         문맥 : Global

         문법 : CBandRandomPulse On/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>

         문법 : CBandClassLimit class_name limit

                  class_name - 이미 정의한 클래스 이름(ip범위)

                  limit - 전송량, 사용단위: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi)


   (10)이름 : CBandExceededURL

         설명 : 제한을 초과했을시 보여줄 URL, 지정하지 않으면 503 에러 발생 ( 가상호스트에서 ) 

         문맥 : <Virtualhost>

         문법 : CBandExceededURL URL


   (11)이름 : CBandExceededSpeed

         설명 : 전송양을 초과했을시 , 전송속도 제한 설정.

         문맥 : <Virtualhost>

         문법 : CBandExceededSpeed kbps rps max_conn

                  kbps - 초당 최대 전송속도

                  rps - 초당 최대 요청수

                  max_conn - 최대 동시 접속수


    (12)이름 : CBandScoreboard

         설명 : 가상호스트의 scoreboard 파일 지정. (성능향상을 위해 필요)

         문맥 : <Virtualhost>

         문법 : CBandScoreboard path 

                  (path는 아파치(nobody또는 apache)권한으로 쓰기가능해야 함)


    (13)이름 : CBandPeriod

         설명 : 용량제한기간(이 기간이 지나면, 측정되었던 용량은 지워진다.)

         문맥 : <Virtualhost>

         문법 : CBandPeriod period

                  period - 사용단위: S (초), M (분), H (시간), D (일), W (주)

         예제 : CBandPeriod 1W  (1주일)

                  CBandPeriod 14D  (14일)

                  CBandPeriod 60M  (60분)


   (14)이름 : CBandPeriodSlice

         설명 : 기간이 길때는 나눌 기간을 명시한다. 

         기본값 : slice_len = limit

         문맥 : <Virtualhost>

         문법 : CBandPeriodSlice slice_length

         예제 : CBandLimit 100G

                  CBandPeriod 4W

                  CBandPeriodSlice 1W

                   4주는 1주일 단위로 나뉜다(4W/1W = 4). 용량은 100G/4=25G 

                   1주에 25G, 2주째 50G 이렇게 나눠 처리 된다.


   (15)이름 : <CBandUser>

         설명 : 새로운 cband 가상 사용자 설정

         문맥 : Server config

         문법 : <CBandUser user_name>


   (16)이름 : CBandUserSpeed

         설명 : cband 가상 사용자의 속도, 요청수, 동시 접속수 제한 

         문맥 : <CBandUser>

         문법 : CBandUserSpeed kbps rps max_conn

                  kbps - 초당 최대 전송속도

                  rps - 초당 최대 요청수

                  max_conn - 최대 동시 접속수

         예제 : CBandUserSpeed 100kb/s 10 5



   (17)이름 : CBandUserLimit

         설명 : cband 가상 사용자의 저송 용량 제한.

         문맥 : <CBandUser>

         문법 : CBandUserLimit limit

                  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는 아파치(nobody또는 apache)권한으로 쓰기가능해야 함)


  (22) 이름 : CBandUserPeriod

         설명 : cband 가상 사용자의, 용량제한기간(이 기간이 지나면, 측정되었던 용량은 지워진다.)

         문맥 : <CBandUser>

         문법 : CBandUserPeriod period

                  period - 사용단위: S (초), M (분), H (시간), D (일), W (주)

         예제 : CBandUserPeriod 1W

                  CBandUserPeriod 14D

                  CBandUserPeriod 60M


  (23)이름 : CBandUserPeriodSlice

         설명 : cband 가상 사용자의, 기간을 나눌 기간 명시

         기본값 : slice_len = limit

         문맥 : <CBandUser>

         문법 : CBandUserPeriodSlice slice_length

         예제 : CBandUserLimit 100G

                  CBandUserPeriod 4W

                  CBandUserPeriodSlice 1W

                   4주는 1주일 단위로 나뉜다(4W/1W = 4). 용량은 100G/4=25G 

                   1주에 25G, 2주째 50G 이렇게 나눠 처리 된다.

'IT > 소프트웨어 설치' 카테고리의 다른 글

JBoss 6.0 설치하기 - centos6.5  (0) 2015.02.15
nagios 모니터링 툴  (4) 2015.02.09
mrtg 설치 및 모니터링  (0) 2015.01.06
NFS  (0) 2015.01.04
DRBD / HeartBeat / NFS  (2) 2014.12.29