PHP 5.3

이쯤되면 안정화 되었으리라 보인 PHP 5.3 버전에 대해 테스트를 진행했다.

이번 작업 이후에는 전체 시스템을 새로 제작할것이고, 그 시스템은 내가 추구하는 이상적인 설계를 따라가도록 하기 위함이다.

일단 종래의 프로그램을 물려 테스트를 시도해보았으나 -_-

mysqli 클래스가 예상과는 빗나가게 conn handler가 앞에 붙는 문제가 발생 ;;

(쿼리를 우선시 하느냐, 커넥션을 우선시 하느냐의 경로에서 php개발자가 선택한것은 쿼리가 아니었는가 싶기도 하다.
이것은 물론 statical usage에 국한되지만.
기존 펑션과의 호환성을 일부러 배제하기 위함이었을까? 어쨋든 우리는 별도의 클래스를 만들어 쓰기때문에 관계없지만)

기타 deprecated 된 수많은 펑션들의 향연 -_-
이 펑션들은 6버전대부터 remove된다고 하므로 변경된 로직을 태우던가 방향우회를 해야한다.

여하튼 약 6시간가량의 과부하테스트를 진행해본결과 class 사용에 있어 5.1버전보다 약 40%이상 퍼포먼스적 우위에 있었다는 점은 마음에 든다.
(테스트전에 rpm과 가장 비슷하게 빌드했다고 생각하고 있지만. 몇가지 빠진옵션이 있어 rpm과 다소 차이가 발생할수도 있다.
그리고 우리가 쓰는 cflags나 빌드옵션은 rpm과는 다소 차이가 있어 이부분에서 퍼포먼스가 다소 향상되었을수도 있다)


전반적인 평가는 good!

그러나 소스코드를 (어차피 새로 짜야하지만) 다시 갈아야한다는 문제앞에 정신이 아득해지기 시작한다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by LeCieL

2010/01/17 01:11 2010/01/17 01:11
,
Response
No Trackback , No Comment
RSS :
http://cl.dgtalx.net/rss/response/210

MS loopback device registry

마이크로소프트 루프백 디바이스 IP 설정법

윈도우 서버가 한대도 없다보니 -_- 타회사 서버를 이전하다가 문득 테클이 걸린곳이 있었으니

바로 l4 루프백 디바이스 셋팅시 레지스트리를 변경해야하는 부분때문이었다.

급하게 찾아보니 관련자료가 절대 안나온다 ㄷㄷ 이문서가 구글 검색의 상단에 올라가면 누군가에게 도움이 되길 바라며 -_-

dr사용시 루프백의 ip를 바꾸어줘야하는데 넷마스크때문인지 설정저장이 안된다.

급한대로 라우팅조정으로 해결은 보았지만 원천적인 해결방법은 레지스트리에서 랜카드 ip를 넣어주면되는것.

disable netbios 하는것도 잊지말아야 한다.

관련 레지 경로

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\SID값
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by LeCieL

2009/12/18 03:38 2009/12/18 03:38

Perl install module using CPAN QR

CPAN 모듈을 통해 패키지를 설치하는것은 두어가지 옵션이 있다.

shell 타입 내지는 다이렉트 커맨드(싱글라인 인터프리터) 형식이다.


특정 패키지 설치방법.

녹색 = 사용자의 입력커맨드, 즉 당신이 쳐야할 키워드

perl -MCPAN -e 'install Date::Time'

혹은

perl -MCPAN -e shell
cpan shell -- CPAN exploration and modules installation (v1.7602)
ReadLine support available (try 'install Bundle::CPAN')

cpan> install Date::Time

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by LeCieL

2008/04/05 03:39 2008/04/05 03:39
, , , , , , ,
Response
No Trackback , No Comment
RSS :
http://cl.dgtalx.net/rss/response/156

Qmail - Toaster Quick Reference

Centos 등의 설치 단순화를 위한 스크립트

(다운로드부터 셋팅까지)

모든스크립트들은 이 위치에 존재함. 아래의 링크는 64비트 centos 5.0 기준임.

http://www.qmailtoaster.org/old/centos/cnt5064/


Install quick reference

1. 그놈이나 kde를 설치하지 않은 fresh 서버에 설치한다.
2. selinux 를 끈다. (그러나 수정가능)
3. yum 을 update한다 (upgrade명령을 추천). 그리고 리붓
4. cnt5064-deps.sh 실행
5. cnt5064-perl.sh 실행
6. cnt5064-svcs.sh 에 mysql 루트패스워드를 수정하고, firewall.sh 에 ip주소를 수정한다.
7. cnt5064-svcs.sh 실행 & 리부팅
8. cnt5064-install.sh 실행
9. cnt5064-djbdns-localcache-install.sh 실행 혹은 bind를 설정한다.

Fresh Configuration

Directory Reviews

* 기본적인 qmail 의 시스템은 /var/qmail 에 설치된다 (prefix) 이하는 prefix sub로 설명한다.
* control 디렉토리에는 qmail main system 의 설정관련 파일이 존재한다.
* smtp rules 은 /etc/tcprules.d/ 에 존재한다. 설정변경후에는 컴파일이 필요하지만 service script 을 사용함으로써 (init.d의 qmailctl등) 바로 만들수 있다. qmailctl cdb

Fast Configuration

아래 설명된 target configuration 파일은 control 디렉토리 하에 있음

1. defaultdomain - 사용할 도메인만 입력
2. defaulthost - 사용할 도메인 입력 (상동)
3. locals - 로컬서버의 어드레스들을 입력 (mx 포함)
4. me - 자신의 도메인을 입력 (1상동)
5. rcpthosts - 송신을 허용할 호스트들을 입력
6. databytes - 메일이 핸들링할 최고용량 설정
7. virtualdomains - 가상도메인 설정
8. spfbehavior - spf 체크를 사용할지에 대해 설정 (enforcing화 하려면 3)
9. simcontrol - 스팸 체크관련 시스템의 컨트롤 (ip기반임)


Spam Configuration

설치후 perl CPAN 을 이용하여 필요한 모듈을 추가로 설정하여야 spam control 시스템이 정상적으로 동작한다.
sudo -u vpopmail /usr/bin/spamassassin -D --lint
등으로 테스트해서 오류가 올라오는 perl 의 패키지를 찾아서 cpan을 통해 인스톨한다.

Vpopmail Configuration


vpopmail 관련 프로그램 binary path  -> /home/vpopmail/bin

vadddomain 등으로 도메인 추가후 vadduser 등으로 사용자 삽입

QR: 만약 기존서버에서 이관하는 경우에는 /var/qmail/users/assign 의 값을 옮겨야 함.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by LeCieL

2008/04/05 03:30 2008/04/05 03:30
, , , , , , ,
Response
No Trackback , No Comment
RSS :
http://cl.dgtalx.net/rss/response/155

Flash Action Script QR 02

앞선 강의는 클래스부분까지 정상적으로 진행되었다.

그러나 잊지 말아야할 부분을 몇가지 포인트로 다시 잡는다.

as3에 대한 모든 클래스들은 플래시 자체 도움말에 존재한다.

책따윈 필요없다는거다. 책의 저자나, 번역가의 엉성한 번역이 지식을 망가트린다.

개발사의 매뉴얼이 언제나 정확하다.

메쏘드 이용법에 대한 설명

(private/public) function (펑션명) (데이터 입력부):데이터 반환형식 { 실행문 }
으로 펑션의 구조는 되어있다는것

예제
public function abc (A:String):String 은 A라는 내부변수로 String을 입력받고 String 으로 반환한다는 뜻이다.


QR01 을 마치면 이제 액션스크립트의 모든것을 핸들링할 수 있게 된다.

그러나 플래시 개발자들의 클래스는 언제나 모두 완벽하지 않다. 그렇기 때문에 새로 짜야하는 클래스나, 구조들이 매우 많다.


1. 무비클립도 Class 다.. 뭐 변수타입에 있다면 말다했듯이 마찬가지 이야기다.
그러나 MovieClip 또한 엄격히는 Class 이며, 별도로 이용시 해당 무비클립의 linkage가 활성화되는 순간 as 파일이 생성되도록 되어있다. (그러나 브릿지등에서는 이 기능이 동작하지 않아 잘 모르겠다 실제로 생기는지 어쩐지)
해당 무비클립의 AS 는 별도로 생성된 파일등에서 이용하는것이 올바르다.

이를 위해서는 flash 및 모든 프로그래밍에 호환되는 표준 펑션들을 미리 익힐 필요가 있다.

이러한 펑션들은 ActionScript 3.0 Language / Language Elements / Global Functions, Operators, Statements 등을 참조하라.

기본적인 함수와 변수를 핸들링 하는 함수들이 씌여있다.

2. Sprite 클래스에 대해 알아야 한다.
이녀석은 무비클립이나 기본적인 디스플레이를 핸들링 하기 위해 필요한 기초클래스가 되어있다.
이녀석을 통해 무비클립의 인스턴스들은 객체화하여 배열하거나, 배치순을 조정하거나, 인스턴스간의 상호연동을 꽤할수 있게 되는 부분이다. 따라서 클래스형식의 코딩에 있어 중요한 부분을 차지한다.

이 클래스는 Extends 를 선헌해 사용하면된다.

이 부분의 강의가 끝날 경우 이제 액션스크립트의 이해도는 중반부를 달리게 된다.
나머지는 도움말을 얼마나 많이 보고 익히는가가 전부다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by LeCieL

2007/08/26 21:19 2007/08/26 21:19
, , ,
Response
No Trackback , 2 Comments
RSS :
http://cl.dgtalx.net/rss/response/139

Flash Action Script QR 01

이 자료는 간단히 플래시 액션스크립트 3.0 에 적응하기 위해 만들어진 Quick Reference로써
이 자료를 이용한 간략한 강의를 목적으로 제작되었으며, 이 자료만으로는 이해가 잘 되지 않을 수 있다.

1. 변수 핸들링

변수 = Variable = 변동하는 수치 (정적이지 않고 변하는 수치)

변수명의 정의(선언)는 var 로 시작한다.
예제코드)
    var i=10;

i라는 명칭의 변수에 10이라는 정수를 담는다

흔히 이렇게들 var i=10 이라고 as 2.0 때부터들 많이들 써왔다.

그러나 as 3.0 에서부터 혼동이 오기 시작하고 적응이 잘 안되는게 바로 이 변수선언이나 변수 및 펑션들에 대한 기초가 잡혀있지 않기 때문이다.

변수에는 여러가지 종류가 있다. 이 종류를 컨테이너 내지는 데이터타입, 자료형이라고 한다. 언어마다 조금씩 틀리게 부른다.

var i=10 이렇게 자료형이 없이 선언되는것을 mixed variable 이라고 표현한다. 자동감지식으로써 정수인가 문자열인가 데이터형인가, 어레이인가를 자동감지하여 선언시키는 시스템이다.
PHP등지에서 쓰이며 이러한 자동감지식 변수는 감지처리 및 오버라이딩 (재설정행위)로 인한 연산부하가 따라서 걸리게 된다.

이제 어떠한 자료형이 존재하는지 간단히 본다.
아래의 자료형은 대부분의 언어 (php, c, vb, python) 등에서 공용적으로 쓰인다.

정수형 (int) = 숫자만 담는다. 32비트제로 -20억정도부터 20억정도의 수치를 담을 수 있다.

정수형 (Number) - int 와 같다. 그러나 64비트 연산을 제공한다 소수선언은 52비트까지만 연산이 가능한것으로 알고있다. 이녀석을 흔히들 쓰는데 정수형은 c로 치자면 double float이다. 따라서 더 많은 메모리를 사용한다.
흔히 웹디들이 작은 숫자단위에 Number형을 자주 쓰는데 이것은 매우 잘못된 경우다. int 를 써야한다.

정수형 (uint) - unsigned int 를 의미한다. -20억~20억까지의 수치가 아니라, 0부터 40억까지 표현하게 된다.
따라서 20억이상의 수치를 표현하기 위해서는 uint 를 쓰는것이 좋다.

불린형 (Boolean) - True ? False 혹은 1 ? 0 을 의미한다.  스위칭등의 변수로 사용할때 많이 쓴다.

문자형 (String) - UTF-16 캐릭터셋을 기본으로 하는 문자열이 저장된다. 문자형을 삽입할때는 "" 등의 쿼테이션이 필수다.
기본은 Null 이며, UTF-8 이나 euckr 등으로 캐릭터셋을 변경시킬수 있다. (시스템 함수를 통해)

void형 (void) - c에서와 유사한 형식으로 돌고있는데, void 는 특정한 값을 담고있지 않는다. 엄밀히는 펑션의 결과를 반환하거나, 펑션을 포인팅하는데 사용된다. 클래스 등지에서 이용되며, 이때 return 문이 삽입되어야 한다.

배열형 (Array) - 간단한 자료구조를 포함하는 형식이다.
이를 배열이라고 하며, 배열에 대해서는 별도의 강의가 필요하다.
기초적인것은 10명의 이름을 하나의 변수에 서로 구분되게 넣는 경우로 보자
var test:Array = new Array('홍길동','동길홍','가나다','마바사');
이러한 형식으로 저장하고 호출할때는 test[0] 이나 test[숫자] 로 호출이 가능하다.
물론 숫자는 해당 레코드를 정확히 지칭하여야 한다.

또 간단히 설명하자면 액셀의 한 행과 같다.
액셀에서 1행의 A열, B열, C열을   이름, 전화번호, 주소 라고 설정했다치다.
그렇다면 이것은 어레이로
var test:Array = new Array();
test[0]['이름']='홍길동';
test[0]['주소']='뭐뭐뭐';
test[0]['전번']='뭐뭐뭐';
test[1]['이름']='음음음';

 의 형식으로 표현이 가능하다.  test[0]['이름'] 에서 앞의 0은 행번호다. 뒤에 이름은 열이름이라고 보면된다.
이를 적절히 매핑하는것을 더블포인팅 어레이 또는 어소시에이티브 어레이라고한다.

함수형 (Function) - 펑션타입의 변수다.
즉, 변하는 수가 아니라 실행되는 구문이 삽입되는것이다. {}로 실행구문을 인덴트하여야 한다.
흔히 말하는 프로그램이 이 펑션에 속한다.

오브젝트형 (Object) - 글로 설명하기가 복잡하지는 시점이다
오브젝트는 말그대로 위에 해당하는 모든것을 담게된다.
Mixed var 형식인데, 흔히들 클래스를 오브젝트라고 표현한다.
이 변수는 하나의 명칭으로 다양한 기능을 포괄시킬수있다.

var A:Object = new Object();
A.i = 10;
A.b = "스트링";

등으로 정의할수가 있을지는 모르겠다 --;; 이런식으론 사실 안해봤다.

그러나 위처럼 A라는 변수안에 i라는 추가 정수형 변수와 b 라는 문자형 변수가 혼재된다.
즉 말그대로 오브젝트를 포괄하는 형식이다.
이 형식을 대표적으로 이용하는것이 클래스라고 부른다.

클래스형 (Class) -
클래스는 기선언된 하나의 오브젝트 집합체다.
그 안에 다양한 변수와 다양한 함수를 프로그래밍하여 이를 이용할수가 있다.
위에 오브젝트에 대한 설명과 동일하다.

간단한 클래스를 예로든다.

class test {
   public var a:string = "문자열 테스팅 성공입니다";
   function test() {
       trace("클래스가 시작되었습니다");
   }
   function test_start() {
       trace(this.a);
   }
}


이렇게 클래스를 선언한다.

클래스를 호출하는것은 간단하다. 향후 메모리관리자 쉬운 액세스를 위해 클래스는 변수형으로 주로 요청한다.

    var gogogo:test = new test();  


여기서 첫 :test 는 클래스명을 지칭한다.  그러나 복잡하게 갈수록.. 굳이 클래스명이 아니기도 한다는 사실;;
그 다음에 new test() 는 test 라는 클래스의 새로운 선언과 함수의 실행을 의미한다.

그렇다면 저렇게 선언을 하기만 하여도 test() 펑션이 구동한다. 따라서 바로 화면에 클래스가 시작되었습니다.
라는 문구가 표기된다.

그 다음 test_start 라는 펑션을 구동시켜보자
           gogogo.test_start();

라고 실행을 하면 문자열 테스트 성공입니다 라고 출력된다.

즉 gogogo 라고 선언된 variable 이 object 타입으로써 하단부에 클래스가 돌고있는것이다.
변수가 꼭 변하는 수만이 아니라 이런형식으로 프로그래밍도 가능하다는 사실을 잊어서는 안된다 ;;

예를들어 a 라는 변수가 function 으로 +10 씩 가중시킨다고 할 경우
var a:Function = function(p:uint) {
    return p+10;
};

trace ( a(10) );

이렇게 하면 a에 10을 입력하면 20이 되어 나온다

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by LeCieL

2007/08/23 00:07 2007/08/23 00:07
, , , , ,
Response
No Trackback , No Comment
RSS :
http://cl.dgtalx.net/rss/response/138

Subversion Quick Reference

Installation

YUM을 통한 설치
yum install subversion

기본 리파지터리 생성 및 설정

svnadmin create /리파지터리를_만들경로

vi /리파지터리경로/conf/svnserve.conf

아래의 내용을 삽입
(익명 액세스 불가, 액세스 유저 권한 = 쓰기가능, 패스워드디비 = 파일명)
[general]
anon-access = none
auth-access = write
password-db = fucking_plaintext
realm = This is my Repository

vi /리파지터리경로/conf/fucking_plaintext

[users]
root = 내루트비밀번호
사용자 = 비밀번호

서버 시작
혹시 바보가 있을까봐 쓴다만.. xinetd나 standalone 둘중 하나만 선택해서 해야한다 -_-
   
xinet.d 를 통한 서비스 운영시
vi /etc/xinetd.d/svn
(아래 화면은 VI모드에서 입력할 내용, -r의 절대경로는 자기꺼에 맞게 수정할것)
service svn
{
    socket_type = stream
    wait        = no
    user        = root
    server      = /usr/bin/svnserve
    server_args = -r /리파지터리경로 -i
    disable     = no
}

# echo "svn   3690/tcp   #svn" >> /etc/services
# echo "svn   3690/udp   #svn" >> /etc/services

# service xinetd restart
standalone daemon mode

# svnserve -d


USAGE

   add ,    blame (praise, annotate, ann) ,    cat
   checkout (co) ,   cleanup ,   commit (ci) ,   copy (cp),    delete (del, remove, rm)
   diff (di),    export,   import ,    info,    list (ls),    lock,    log ,   merge
   mkdir ,   move (mv, rename, ren) ,   revert ,    status (stat, st)
   update (up)


주로사용하는 명령어는 위와같다.

svn은 각 디렉토리에 .svn 이라는 폴더를 만들어 이 경로가 리파지터리와 싱크됨을 선언하게된다.
따라 그 파일을 지워버리면, working copy 가 아닌게 되므로 더이상 svn명령을 사용할수 없게되므로 주의해야한다.
이와 유사한 역할을 하는것이 export 명령어다.


최초사용시 -

svn import /소스파일폴더 svn://내svn주소/reposit경로 -m "first loading"

등을 통해 소스파일을 모두 reposit 에 업로드를 한다. import를 사용한 경우 현재 업로드한 디렉토리가 svn에 싱크되는 워킹카피가 되지 않는다.

checkout 명령어로 리파지터리의 자료를 받아옴 -
svn checkout svn://내svn주소/reposit경로 서버절대경로

예제)
cd /opt/devel/cryptolib
svn checkout svn://svn.dgtalx.net/aes2048/cryptoapi  .

커밋
(워킹디렉토리 내용을 저장소로 동기화, 애칭으로 체크인이라고 한다)
-m 은 커밋에 따르는 리비전 메시지를 입력하는란
svn ci -m "first committing"


checkout 이 된 뒤부터는 working copy (경로연동)이 되어있으므로 이상태에서 관리명령어는 그냥 디렉토리에서 치는것을 기준으로 한다.

워킹 copy 디렉 (/opt/devel/cryptolib/ 기준) 에서 새로운 파일을 만들어 repositary에 올릴때

#vi new_source.c
 - 내용 대충 만들고 저장  -
#svn add new_source.c
#svn ci -m "source modified"


크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by LeCieL

2007/04/19 16:24 2007/04/19 16:24
, , , , , ,
Response
No Trackback , No Comment
RSS :
http://cl.dgtalx.net/rss/response/114

varnish configuration sample

backend master {
   set backend.host = "Primary server IP";
   set backend.port = "80";
}

backend slave {
   set backend.host = "Slave Server Ip";
   set backend.port = "80";
}

sub vcl_recv {
    if (req.http.host ~ "^media.slrclub.com") {
        set req.backend = slave;
    } elsif (req.http.host ~ "^(img01.)?slrclub.com$") {
        set req.backend = master;
    } elsif (req.http.host ~ "^(img02.)?slrclub.com$") {
        set req.backend = master;
    } else {
       error 200 "go way";
    }

   if ( req.http.host ~ "^mediat.slrclub.com" && req.url ~ "/thumb/" ) {
       lookup;
   } elsif (req.request == "GET" && req.http.Referer ~ "^http://www.slrclub.com" ) {
       lookup;
   } else {
       error 401 "Access Denied";
   }
}

sub vcl_hit {
   if (!obj.cacheable) {
       pass;
   }
   deliver;
}

sub vcl_miss {
   fetch;
}

sub vcl_fetch {
   set obj.ttl = 86400s;
   if (!obj.valid) {
       error;
   }
   if (!obj.cacheable) {
       insert_pass;
   }
   insert;
}

sub vcl_timeout {
   discard;
}

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by LeCieL

2007/01/21 23:57 2007/01/21 23:57
, , , ,
Response
No Trackback , No Comment
RSS :
http://cl.dgtalx.net/rss/response/91

query examples

inner join selection

select a.*, count(b.entry) from first_table as a inner join second_table as b on a.idx=b.no group by a.idx;
(left join 형 a table idx = b table no와 동기화, a.idx로 그룹하여 b테이블의 부가정보 획득)

union selection
(select * from first_tabe where idx=1) union (select field1, field2, field3 from second_table where  no=1) order by idx desc;
필드명은 처음 셀렉트된것을 따른다. 따라서 alias를 주던가 해야되며 뒤에 테이블이 필드갯수가 틀릴때는 위처럼 맞춰주면된다.

select insert
insert into first_table select * from second_table where idx=2;
필드갯수 일치화 필요

view selection
create view testdb.view_table as select * from second_table;
select * from view_table;
이놈은 tmp table 만드는 삽질없이 바로 뷰트리 태워주는놈이다. mysql 5.0에서만 가능

unique selection
select * from first_table group by aa having count(*) > 1
중복레코드 추적 (aa필드기준)

distinct query
select distinct aa from table group by bb where expr
가급적 쓰지않는게 낫다 group by 보다 퍼포먼스 떨어진다. row exam 갯수가 적을때만 대충 편하게 이용.

제작시 자주쓰이는 쿼리들 나열 -> 이거 이외이 삽질은 안하는것이 좋다

주로 sql에서 쓰이는 function 은

select (is_null, if, substr, concat, date_add, date_sub) 정도
datetime filed의 경우 date function 을 쓰는것이 로드에 효율적이다.
그리고 생각해보니 update if select 서브쿼리들 몇개는 썼었는데 트랜잭션으로 바꿧다 -_-
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by LeCieL

2006/11/09 06:17 2006/11/09 06:17
, ,
Response
No Trackback , No Comment
RSS :
http://cl.dgtalx.net/rss/response/45

ipvsadm configuration

lvs configuration quick reference

LVS 구성을 위해서는 레드햇 리눅스에서 아주 간단하다
piranha-gui 와 함꼐 ipvsadm pulse 등을 rpm설치하고 웹사이트에 접속하여 클릭질 몇번에 탄생한다.
개념탑재한 사용자는 퀵리퍼런스를 적절히 고쳐라

# 라인만 보고 적당히 수정
serial_no = 1
primary = #메인바운싱IP / 실제 IP다
service = lvs
backup_active = 1
backup = #백업LVS ip다
heartbeat = 1
heartbeat_port = #포트는 꼴리시는대로
keepalive = 2
deadtime = 18
network = direct # 다이렉트 라우팅용이다
debug_level = NONE
virtual first_template {
    active = 1
    address = #IPv4주소 eth0:0        # address = 1.2.3.4 eth0:0 형식 0:0 은 nic alias 필요에 따라 수정 이주소는 VIP다
    vip_nmask = 255.255.255.0
    port = 80 #서비스 포트
    expect = "OK" #스크립에서 리턴될 값
    use_regex = 0
    send_program = "example_script %h" # %h 는 호스트네임 대입
    load_monitor = none 
    scheduler = wlc  #weight least connection 형식 분산
    protocol = tcp
    timeout = 10
    reentry = 5
    quiesce_server = 1
#이하 리얼서버 설정
    server rts1 {
        address = #ipv4 address  리얼서버ip다
        active = 1
        weight = 70 #가중치
    }
    server rts2 {
        address = #ipv4 address
        active = 1
        weight = 20
    }
    server rts3 {
        address = #ipv4 address
        active = 1
        weight = 100 #가중치
    }
}

주의 : 백업 서버가 있을 경우 허트비트는 별도 설치할 필요없이 백업서버로 구동중인 pulse가 ha를 대신해준다.
ha의 반응속도는 keepalive 랑 deadtime 적당히 수정하면된다.

l4 밑에 있는 리얼서버는 아래 라인을 iptables에 추가한다
nat 테이블 있어야된다

iptables -t nat -A PREROUTING -d #VIP -p tcp -m tcp --dport 80 -j REDIRECT

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by LeCieL

2006/10/15 22:45 2006/10/15 22:45
, , ,
Response
No Trackback , No Comment
RSS :
http://cl.dgtalx.net/rss/response/24


Archives

Calendar

«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29