Flower_kh

Apache 트래픽 제한 모듈(mod_cband) 설치 및 설정 본문

서버/Linux

Apache 트래픽 제한 모듈(mod_cband) 설치 및 설정

엄마밥좀줘 2018. 6. 4. 23:42

1.mod_cband란?

Apache에서 개별홈페이지의 트래픽을 관리하기 위해 사용하는 모듈로서apache 2.x버전에서 사용할 수 있습니다.

 

2.mod_cband 모듈 설치
[root@manage src]# wget http://cband.linux.pl/download/mod-cband-0.9.7.5.tgz
[root@manage src]# tar xvzfp mod-cband-0.9.7.5.tgz 
[root@manage src]# cd mod-cband-0.9.7.5
[root@manage mod-cband-0.9.7.5]# ./configure --with-apxs=/usr/local/apache/bin/apxs
[root@manage mod-cband-0.9.7.5]# make
[root@manage mod-cband-0.9.7.5]# make install

 

설치 후 모듈이 정상적으로 적용되었는지 확인해봅니다.

아파치 httpd.conf 파일안에

LoadModule cband_module       modules/mod_cband.so

추가 되어있는것을 확인할 수 있습니다.

 

3.mod_cband 설정

아파치 httpd.conf 파일안에

 

<IfModule mod_cband.c>
    <Location /cband-status>
       SetHandler cband-status
       Order Deny,Allow
       Deny from All
       Allow from 127.0.0.1 100.100.100.100  < 이부분에 허용할 ip를 적으시면 됩니다 전부 허용은 All입니다

  </Location>


    <Location /cband-me>
       SetHandler cband-status-me
       Order deny,allow
       Deny from all
       Allow from all
    </Location>
</IfModule>

 

4.mod_cband 적용

cband는 각 호스트에 대해서 여러가지 지시자를 사용하여 설정 할 수 있습니다.
아래는 여러가지 지시자중 하나인 가장 많이 사용되는 CbandLimit을 사용한 예제 입니다.

 

<VirtualHost *>
   ServerName smileserv.com 
   ServerAlias www.smileserv.com 
   DocumentRoot /home/smileserv/public_html
   ErrorLog logs/smileserv-err
   CustomLog logs/smileserv-acc combined
   CBandLimit 100Mi
   CBandPeriod 1D
</VirtualHost>

위 설정은 smileserv.com 에서 1Day 동안 100M의 트래픽을 허용하겠다는 설정입니다.

1.mod_cband란?

Apache에서 개별홈페이지의 트래픽을 관리하기 위해 사용하는 모듈로서apache 2.x버전에서 사용할 수 있습니다.

 

2.mod_cband 모듈 설치
[root@manage src]# wget http://cband.linux.pl/download/mod-cband-0.9.7.5.tgz
[root@manage src]# tar xvzfp mod-cband-0.9.7.5.tgz 
[root@manage src]# cd mod-cband-0.9.7.5
[root@manage mod-cband-0.9.7.5]# ./configure --with-apxs=/usr/local/apache/bin/apxs
[root@manage mod-cband-0.9.7.5]# make
[root@manage mod-cband-0.9.7.5]# make install

 

설치 후 모듈이 정상적으로 적용되었는지 확인해봅니다.

아파치 httpd.conf 파일안에

LoadModule cband_module       modules/mod_cband.so

추가 되어있는것을 확인할 수 있습니다.

 

3.mod_cband 설정

아파치 httpd.conf 파일안에

 

<IfModule mod_cband.c>
    <Location /cband-status>
       SetHandler cband-status
       Order Deny,Allow
       Deny from All
       Allow from 127.0.0.1 100.100.100.100  < 이부분에 허용할 ip를 적으시면 됩니다. (전부 허용은 All입니다)

  </Location>


    <Location /cband-me>
       SetHandler cband-status-me
       Order deny,allow
       Deny from all
       Allow from all
    </Location>
</IfModule>

 

4.mod_cband 적용

cband는 각 호스트에 대해서 여러가지 지시자를 사용하여 설정 할 수 있습니다.
아래는 여러가지 지시자중 하나인 가장 많이 사용되는 CbandLimit을 사용한 예제 입니다.

 

<VirtualHost *>
   ServerName 예제.com 
   ServerAlias www.예제.com 
   DocumentRoot /home/예제/public_html
   ErrorLog logs/smileserv-err
   CustomLog logs/예제-acc combined
   CBandLimit 100Mi
   CBandPeriod 1D
</VirtualHost>

위 설정은 예제.com 에서 1Day 동안 100M의 트래픽을 허용하겠다는 설정입니다.


5.속도 제한 설정

<VirtualHost *>
   ServerName file.testmydomain.co.kr   
   Document /home/testmydomain/file
   CBandSpeed 1024 10 30
   CBandRemoteSpeed 20kb/s 3 30
</VirtualHost>


6.트래픽 사용량 확인

   http://예제.com/cband-status

   http://예제.com/cband-status-me


7.지시자 및 단위 설명

  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) 지시자들

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


     * 이름 : CBandScoreFlushPeriod
         설명 : scoreboard 파일에 기록할 요청수, mod_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
         설명 : 접속자(IP)의 최대속도, 요청수, 접속수 제한 (CBandSpeed와 비슷하지만, 접속자당 설정)
         문맥 : <Virtualhost>
         문법 : CBandRemoteSpeed kbps rps max_conn
                  kbps - 초당 최대 전송속도
                  rps - 초당최대 요청수
                  max_conn - 최대 동시 접속수
         예제 : CBandRemoteSpeed 20kb/s 3 3
                  접속자(ip)에대해 최대 20kb/s , 초당 3개의 요청, 동시 접속 3개로 제한.

      * 이름 : 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개로 제한.

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

     *  이름 : 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)로 제한한다.

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

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

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

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

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

      * 이름 : 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 이렇게 나눠 처리 됨.

      * 이름 : <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
                  CBandUserLimit 10Mi

     * 이름 : 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)

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

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

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

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

      * 이름 : 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 이렇게 나눠 처리 된다.

'서버 > Linux' 카테고리의 다른 글

VI 편집기 명령어 모음  (0) 2018.06.01
Comments