Skip to content

조회 수 19265 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
원문 : http://blog.naver.com/jhlim7110/120037660897
작성자 : 기술지원부 김 삼 수 <kiss@nextline.net>
 
mod_cband 이란?
Apache에서 개별홈페이지의 일hit수 제한 및 트래픽을 관리하기 위해 사용하는 모듈로서apache 2.x버전에서 사용할 수 있으며 apache를 Dos방식과 Static방식 중 어느 방식으로 설치했느냐에 따라 적재방법 또한 다릅니다. DOS방식의 mod_cband 모듈적재 및 설정 방법을 알아보도록 하겠습니다.
 
[주요기능]
Apache2용 가볍운 트래픽제한 모듈
   * 사용자별 대역폭제한 기능
   * 가상호스트별 대역폭 제한 기능
   * 목적지별 대역폭 제한 기능
   * 제한기능:
         o 모든사용자 대역폭 제한
         o 다운로드 속제 제한
         o 초당요청수 제한
         o 아이피대역별 제한
   * Support for virtualhosts
   * Support for defined users
   * 제한결과 웹을 통한 확인 (/cband-status)
   * 각 사용자별 제한 결과 확인(/cband-status-me)

 
( 1 ) 다운로드

http://freshmeat.net/redir/mod_cband/60304/url_tgz/mod-cband-0.9.7.5.tgz
http://cband.linux.pl/downloads
다운로드 안되면 첨부파일 이용하세요 mod-cband-0.9.7.5.tgz 
 
① tar zxvf mod-cband-0.9.7.5.tgz 파일을 다운로드 합니다.
wget은 웹에서 자동적으로 파일을 받아오는데 사용되는 유틸리티이며 HTTP, HTTPS, FTP 프로토콜을 지원합니다.
[root@nextline bin]# wget
http://freshmeat.net/redir/mod_cband/60304/url_tgz/mod-cband-0.9.7.5.tgz

image001.jpg


 
( 2 ) 압축해제
 
① 다운로드된 mod-cband-0.9.7.5.tgz 파일의 압축을 해제 합니다.
[root@nextline bin]# tar zxvf mod-cband-0.9.7.5.tgz

image002.jpg



( 3 ) 컴파일
 
① 압축 해제한 mod-cband-0.9.7.5 디렉토리로 이동 합니다.
[root@nextline bin]# cd mod-cband-0.9.7.5

② ./configure 명령을 실행합니다.
./configure 명령은 프로그램을 설치하기 위해 환경설정을 하는 것으로 ./configure 후Makefile파일이 생성됩니다. 모듈을 적재하기 위해 컴파일을 합니다.
[root@nextline mod_throttle-3.1.2]# ./configure

image003.jpg

진행시  configure: error: apxs missing 오류 발생시
./configure --with-apxs=/usr/local/apache/bin/apxs 으로 해결함





 
( 4 ) make
 
① make 명령을 실행합니다.
make 명령은 대상 디렉토리의 Makefile이라는 이름을 가지고 있는 파일을 보고, 거기에 설정되어 있는 컴파일 명령을 shell을 통해서 실행하는 명령입니다. ./configure 작업에 의해 생성된 Makefile을 참조하게 되며 소스코드를 실제로 컴파일해서 bibary 파일을 생성합니다.
[root@nextline mod_throttle-3.1.2]# make

image004.jpg
 
 
( 5 ) make install

① make install 명령을 실행합니다.
make 명령에 의해 생성된 binary 파일을 지정된 디렉토리로 이동시켜주며 실제 프로 그램 설치 작업이 이루어집니다.
[root@nextline mod_throttle-3.1.2]# make install

image005.jpg
  
   
( 6 ) mod_cband.so 파일생성 확인

① ls 명령어를 이용하여 아파치 모듈들이 위치한 modules 디렉토리에 mod_cband.so 파일이 생성 되었는지 확인합니다.
[root@nextline mod-cband-0.9.7.5]# ls /usr/local/apache/modules/

image006.jpg
  
 
( 7 ) 모듈적재 확인

① httpd.conf파일에 모듈이 등록되었는지 확인합니다.
[root@nextline mod-cband-0.9.7.5]# vi /usr/local/apache/conf/httpd.conf
LoadModule cband_module         libexec/mod_cband.so


image007.jpg

 
( 8 ) httpd.conf파일의 메인 환경설정

메인 설정 부분은 가상호스트에도 공통으로 적용되는 설정으로 mod_cband 모듈을 적용시키기 위해 아파치 환경 설정파일인 httpd.conf을 수정합니다.
 
① vi 에디터를 이용하여 httpd.conf파일을 엽니다.
[root@nextline mod-cband-0.9.7.5]# vi /usr/local/apache/conf/httpd.conf
 
② 아파치에 cband 모듈을 적용시키기 위해 다음 라인을 추가 합니다.
 
<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>
 
image008.jpg
  ③ 트래픽 관리자모드 접근 ip설정

<Location /cband-status>
                           Order deny,allow
                           Deny from all
                           Allow from all
        </Location>
 
위 설정은 throttle로 분석된 일hit 및 일 트래픽 제한에 대하여 상황페이지를 볼 관리자페이지에 대한 접속제한 설정입니다. 즉 관리자PC 한곳에서만 분석된 결과페이지를 볼 수 있도록 하려면 아래와 같이 수정합니다.
 
관리자 PC 아이피 : XXX.XXX.XXX.XXX

<Location /cband-status>
                           Order deny,allow
                           Deny from all
                           Allow from XXX.XXX.XXX.XXX
         </Location>

 
( 9 ) 가상호스트 환경설정
 
개별 홈페이지 트래픽 현황 및 관리를 하기 위해서는 httpd.conf <Virtual Hosts>부분에 홈페이지 별로 설정을 하여야 합니다.
 
nextline.co.kr 도메인에 하루에 300M(300*1024*1024byte)의트래픽을 제공하는 설정입니다. bit로 따지면, 2.4Gbit/일 트래픽을 제공하는 것입니다. 만약 하루에 300M를 초과했다면, 503 에러 페이지가 뜨게 됩니다.
 
① nextline.co.kr 도메인을 가진 가상호스트를 추가 하도록 하겠습니다.
 
<VirtualHost xxx.xxx.xxx.xxx>
DocumentRoot /home/nextline/public_html
Servername nextline.co.kr
ServerAlias www.nextline.co.kr
CBandLimit 300Mi
CBandPeriod 1D
</VirtualHost>

image009.jpg

② httpd.conf 설정 후 적용시키기 위해 apache를 재 시작 시켜 줍니다.
[root@nextline mod-cband-0.9.7.5]# /usr/local/apache/bin/apachectl restart

 
( 10 ) 서버전체 cband 상황보기 (관리자모드)
 
일hit수 일전송량의 제한을 웹브라우즈로 확인하기 위하여 다음과 같은 URL로 확인하도록 하겠습니다. 먼저 서버전체의 제한사항을 관리자가 확인하기 위한 예입니다.
cband 페이지는 기본 15초마다 리플레쉬 합니다.
 
① 주도메인이 nextline.co.kr로 설정된 예입니다.
확인하는 방법 :http://IP주소/cband-status

image010.jpg

② 개별사이트 cband 상황보기 (사용자모드)
확인하는 방법 : http://nextline.co.kr/cband-status-me

image011.jpg

 
( 11 )지시자 및 단위설명

  단위
  전송속도 단위
  kbps, Mbps, Gbps - bits per second:1024, 1024*1024 , 1024*1024*1024 bps
  kb/s, Mb/s, Gb/s - bytes persecond:  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 - 초, 분, 시간, 일, 주
  기본 : S
 
  지시자들
  이름 : CBandDefaultExceededURL
  설명 : 제한을 초과했을때보여줄 URL  (지정하지 않으면, 503 에러 페이지)
  문맥 : Serverconfig
  문법 :CBandDefaultExceededURL URL
 
  이름 : CBandDefaultExceededCode
  설명 : 제한을 초과했을시 보여줄 에러코드
  문맥 : Server config
  문법 :CBandDefaultExceededCode HTTP_CODE
  예제 :CBandDefaultExceededCode 509 
 
  이름 : CBandScoreFlushPeriod
  설명 : scoreboard 파일에기록할 요청수, mod_cband 의 성능에 영향을 준다.
  기본값 : 1
  문맥 : Server config
  문법 :CBandScoreFlushPeriod 요청수
  예제 :CBandScoreFlushPeriod 100 (매 100번의 요청에 한번씩 scoreboard 파일에 기록)
 
 
  이름 : CBandSpeed
  설명 : 가상호스트 도메인의 최대 속도,요청수, 접속수  설정
  문맥 :<Virtualhost>
  문법 : CBandSpeed kbpsrps max_conn
       kbps - 초당 최대 전송속도
       rps - 초당 최대 요청수
       max_conn - 최대 동시 접속수
       예제 : CBandSpeed 102410 30
       최대 1024kbps전송속도로 제한, 초당 10개의 요청 처리, 동시 접속을 30개로 제한.
 
  이름 : CBandRemoteSpeed
  설명 : 접속자(IP)의 최대속도, 요청수, 접속수 제한 (접속자당 설정)
  문맥 :<Virtualhost>
  문법 : CBandRemoteSpeedkbps rps max_conn
        kbps - 초당 최대 전송속도
        rps - 초당최대 요청수
        max_conn - 최대 동시 접속수
        예제 : CBandRemoteSpeed20kb/s 3 3
        접속자(ip)에대해 최대 20kb/s , 초당 3개의 요청, 동시 접속 3개로 제한.
 
  이름 : 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개로 제한.
 
  이름 : CBandRandomPulse
  설명 : 속도 제한을 위해서 임의의파형을 생성한 다음 처리하는 mod_cband의 처리 방법이다. 부하가 많을 때는 자동 Off된다.

  문맥 : Global
  문법 : CBandRandomPulseOn/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>
  문법 : CBandClassLimitclass_name limit
        class_name - 이미 정의한 클래스 이름(ip범위)
        limit - 전송량, 사용단위: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi),Gi (gibi)
 
  이름 : CBandExceededURL
  설명 : 제한을 초과했을시 보여줄URL, 지정하지 않으면 503 에러 발생
  문맥 :<Virtualhost>
  문법 : CBandExceededURLURL
 
  이름 : CBandExceededSpeed
  설명 : 전송양을 초과했을시 , 전송속도제한 설정.
  문맥 :<Virtualhost>
  문법 :CBandExceededSpeed kbps rps max_conn
        kbps - 초당 최대 전송속도
        rps - 초당 최대 요청수
        max_conn - 최대 동시 접속수
  이름 : CBandScoreboard
  설명 : 가상호스트의 scoreboard파일 지정. (성능향상을 위해 필요)
  문맥 :<Virtualhost>
  문법 : CBandScoreboardpath
        (path는 아파치(nobody또는 apache)권한으로 쓰기 가능해야 함)
 
이름 : CBandPeriod
  설명 : 용량제한기간(이 기간이 지나면,측정되었던 용량은 지워진다.)
  문맥 :<Virtualhost>
  문법 : CBandPeriod period
        period - 사용단위: S (초), M (분), H (시간), D (일), W (주)
  예제 : CBandPeriod1W  (1주일)
        CBandPeriod 14D  (14일)
        CBandPeriod 60M  (60분)
 
  이름 : 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 이렇게 나눠 처리 된다.
 
  이름 : <CBandUser>
  설명 : 새로운 cband 가상 사용자설정
  문맥 : Server config
  문법 : <CBandUseruser_name>
 
  이름 : CBandUserSpeed
  설명 : cband 가상 사용자의 속도,요청수, 동시 접속수 제한
  문맥 : <CBandUser>
  문법 : CBandUserSpeedkbps rps max_conn
        kbps - 초당 최대 전송속도
        rps - 초당 최대 요청수
        max_conn - 최대 동시 접속수
  예제 : CBandUserSpeed100kb/s 10 5
 
 
  이름 : CBandUserLimit
  설명 : cband 가상 사용자의 저송용량 제한.
  문맥 : <CBandUser>
  문법 : CBandUserLimitlimit
     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>
  문법 : CBandUserPeriodperiod
        period - 사용단위: S (초), M (분), H (시간), D (일), W (주)
  예제 : CBandUserPeriod 1W
        CBandUserPeriod 14D
        CBandUserPeriod 60M
 
  이름 : 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 이렇게 나눠 처리 된다.

 
( 12 ) 개별홈페이지 cband 정책 적용 예
 
① 자료실 속도제한
   nextline.net 도메인에 대해서 속도를 1024kbps로 제한하며, 초당 10번의 연결, 동
   시 접속자를 30으로 제한하는 예제입니다.
  
<VirtualHost xxx.xxx.xxx.xxx>
DocumentRoot /home/nextline1/public_html
Servername nextline.net
ServerAlias www.nextline.net
CBandSpeed 1024 10 30
CBandRemoteSpeed 20kb/s 3 30
</VirtualHost>
 
image012.jpg              
 
 
확인하는 방법 : http://nextline.net/cband-status-me

image013.jpg
 
② 사용자 일트래픽 제공 및 초과시 연결수 제한 nextline.com 도메인에 대해 하루에 100Mbyte의 트레픽을 제공하며, 100M를 초가했다면, 속도를 128bps로 제한, 초당 5번의 연결, 동시접속자를 15로 제한하는 예제입니다.
 
<VirtualHost xxx.xxx.xxx.xxx>
DocumentRoot /home/nextline2/public_html
Servername nextline.com
ServerAlias www.nextline.com
CBandLimit 100Mi
CBandExceededSpeed 128 5 15
CBandPeriod 1D
</VirtualHost>
 image014.jpg
 
확인하는 방법 : http://nextline.com/cband-status-me

image015.jpg

( 13 ) 그 외 적용 예를 들어보겠습니다.
 
① 한 사용자에 여러 도메인을 운영할 때 입니다.
위 설정은 nextline이라는 가상 사용자를 지정 한 다음 그 사용자는 하루에 100Mbyte를 사용할 수 있게 합니다. 그런 다음, nextline.co.kr nextline.net 모두 nextline의 트래픽사용하게 설정하였습니다.
 
<CBandUser nextline>
  CBandUserLimit 100Mi
  CBandUserPeriod 1D
</CBandUser>

<VirtualHost *>
  ServerName nextline.net    
  Document /home/nextline/public_html
  CBandUser nextline
</VirtualHost>


<VirtualHost *>
  ServerName nextline.co.kr    
  Document /home/nextline/public_html
  CBandUser nextline
</VirtualHost>
 
② IP대역에 따라 속도를 제한 합니다.
내부아이피 192.168.0.XXX 에서, 50Mbps의 대역폭과, 초당 10번의 요청, 동시접속자 30을 설정하며, 다른 ip대역 222.97.189.XXX에서는 300kpbs, 초당 10번의 요청, 동시접속자 30을 설정합니다.
 
<CBandClassclass_1>
  CBandClassDst 192.168.0.0/24
</CBandClass>
<CBandClassclass_2>
  CBandClassDst 222.97.189.0/24
</CBandClass>

<VirtualHost *>
  ServerName nextline.co.kr    
  Document /home/nextline/public_html
 CBandClassRemoteSpeed class_1 50Mbps 10 30
 CBandClassRemoteSpeed class_2 300kbps 10 30
</VirtualHost>

 
( 14 ) cband 페이지 보는방법
 
①Virtual Host 
가상호스트의 정책 적용상태와 리셋, 리플레쉬 기능 GByte, MByte, KByte로 설정하여 관리를 할 수 있으며 트래픽 초과시 해당 도메인의 색상이 붉은색 계열로 점차 변경
됩니다.
    
reset all  : 전체 가상호스트에 대해 트래픽 및 정책을 초기화 합니다.
reset     : 해당 가상호스트의 트래픽 및 정책을 초기화 합니다.
refresh   : cband 페이지를 리플레쉬 합니다.
[GB][MB][KB] : 설정내용을 단위 별로 관리 합니다.

image016.jpg

② Remote clients
접속PC의 클라이언트 IP와 접속 도메인을 가르킵니다.

image017.jpg
 
③ Server summary
전체 cband 상황을 간략히 보여주는 페이지로 3개의 가상호스트와 1.76MB의 트랙픽이 발생한 상태이며 2.94kbps의 데이터전송 속도를 나타내고 있습니다.

image018.jpg


List of Articles
번호 제목 글쓴이 날짜 조회 수
28 expires설정으로 브라우저캐시 ADMINPLAY 2009.04.18 14827
27 아파치 웹서버 사용 시 무단 링크 방지법 ADMINPLAY 2009.04.03 15771
26 xcache 설치 (xcache-1.2.2.tar.gz) file ADMINPLAY 2009.03.17 18530
25 아파치웹서버 모니터링하기 file ADMINPLAY 2009.03.17 16679
24 초간단 웹 페이지 로딩시간 체크법 ADMINPLAY 2009.03.17 15545
23 아파치에서 한글 파일 읽기 [mod_url 설치] file ADMINPLAY 2009.03.17 17487
22 웹 사이트 속도측정 file ADMINPLAY 2009.03.04 16681
21 Apache 1.3.12 httpd.conf 파일 한글설명 ADMINPLAY 2009.03.04 13557
20 리눅스 APM 소스설치시 에러에 대한 대처 1 ADMINPLAY 2009.01.30 15338
19 RedirectMatch (도메인포워딩) ADMINPLAY 2009.01.23 15628
» 아파치 2.X 버전에서 mod_cband를 이용한 트래픽관리 file ADMINPLAY 2009.01.17 19265
17 CGI 퍼미션 으로 웹페이지 열리지 않음 ADMINPLAY 2009.01.12 14866
16 Address already in use: make_sock:could not bind to ad... ADMINPLAY 2009.01.10 24026
15 Apache 웹페이지 한글깨짐, AddDefaultsCharset 설정 file ADMINPLAY 2009.01.03 30695
14 웹페이지에서 한글이 깨지는 현상 막기 ADMINPLAY 2009.01.03 16724
13 AWSTATS 국가별 사용자 분석 ADMINPLAY 2008.12.25 14632
12 AWSTATS 설치 ADMINPLAY 2008.12.25 24803
11 Apache 버전확인 ADMINPLAY 2008.12.23 15615
10 CGI 오류: Premature end of script headers (Internal Se... 1 ADMINPLAY 2008.12.14 14341
9 apache log 정리 ADMINPLAY 2008.12.14 13728
Board Pagination Prev 1 2 3 4 5 Next
/ 5

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234