이 글은 phpschool의 한사랑님이 쓰신글을 스크랩 해온 것입니다.
===========================================================
+++++++++++++++++++++++++++++++
* 서버 동기화(로드밸런싱관련)
+++++++++++++++++++++++++++++++

들어가는 말
서버 동기화는 일반적으로 로드밸런싱이라고 하기도 한다. 또한 서버 동기화의 경우는 여러가지 형태가 있지만...
여기서는 어떤분의 소개로 되어 있는 rsync를 이용해서 동기화 시키도록 한다. 일반적으로 서버를 동기화 하기 위해 미러링서비스를 하기도 한다.
접속자가 상당히 많은 서버에서 주로 사용하는 방법이다. 웹서버가 10대, 20대 이상되었을때.. 동일한 소스로 동일한 도메인으로 제공하길 원할때 사용하는 방법이다.

여기서 서버는 총 3대로 설명한다.
A서버 : 웹서버1   192.168.0.1
B서버 : 웹서버2   192.168.0.2
C서버 : 웹서버3   192.168.0.3

========== 네임서버 세팅 ======================================
네임서버가 세팅되어 있는 서버에서 네임서버에서 다음과 같이 설정한다.
vi /var/named/domain.com.zone

test1  IN      A       192.168.0.1  << - A서버에서 운영된다.
test2  IN      A       192.168.0.1  << - A서버에서 운영된다.
test1  IN      A       192.168.0.2  << - B서버에서 운영된다.
test2  IN      A       192.168.0.3  << - C서버에서 운영된다.

즉, test1.domain.com 의 경우는 A, B서버에서 동일하게 가동이된다. 즉, 어떨때는 A서버에서 또 어떨때는 B서버에서 운영이 된다는 말이다.
test2.domain.com 의 경우는 A, C서버에서 동일하게 가동이된다. 즉, 어떨때는 A서버에서 또 어떨때는 C서버에서 운영이 된다는 말이다.

================================================================

적용방법은
A서버에는 두개의 사이트가 돌어간다고 가정하자.
test1.domain.com (경로 /home/test1)
test2.domain.com (경로 /home/test2)

test1.domain.com 은 B서버와 동기화를 한다.
test2.domain.com 은 C서버와 동기화한다.

한서버에서 여러개의 도메인으로 동기화를 시킬수 있지만. 여기서는 학습상의 목적으로 위와 같이 한다.
환경설정은 A서버에서 B서버와 C서버가 접속할 수 있도록 설정해준다.


========= A서버에서 환경설정 ===============================

#vi /etc/xinetd.d/rsync

# default: off
# description: The rsync server is a good addition to an ftp server, as it
#       allows crc checksumming etc.
service rsync
{
        disable = no                <<===== 이부분만 수정하면 된다.
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}


그 다음 rsync의 설정파일을 수정해 줘야 한다.

rsync의 설정 파일은 rsyncd.conf 파일이다. 물론 이 파일은 원래 존재하지 않는다. 새로 만들어 줘야한다.
#vi /etc/rsyncd.conf

[test1]
path = /home/test1
comment = webservice-dir
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = 192.168.0.2      <<======= 192.168.0.2서버에서 /home/test1 의 소스를 가져가는것을 허용한다.
max connections = 1
timeout = 300

[test2]
path = /home/test2
comment = webservice-dir
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = 192.168.0.3      <<======= 192.168.0.3서버에서 /home/test2 의 소스를 가져가는것을 허용한다.
max connections = 1
timeout = 300

추가하길 원한다면.. 위의 항목을 몇몇 더 추가하면 된다.


이렇게 하고,
#/etc/rc.d/init.d/xinetd restart
를 실행하여 적용시킨다.


========== B서버에서 A서버의 자료를 가져가기
rsync -avzrt --delete 192.168.0.1::test1 /home/test1


========== C서버에서 A서버의 자료를 가져가기
rsync -avzrt --delete 192.168.0.1::test2 /home/test2

이렇게만 실행하면 A 서버에 있는 자료를 각각 B서버와 C서버에서 가져가게 된다.
위의 명령어를 매번 실행할 수는 없기에 crontab에 걸어서 매 1분단위로 실행하게 하도록 한다.
처음 개발시에만 그렇게 하고, 나중에 안정화되면 없애는것도 괜찮을듯..

*/1 * * * * root /home/server/cron_shell/rsync.sh       << - shell 스크립트를 만들어서 /home/server/cron_shell/rsync.sh에 저장해 두었다.


이작업이 완료되고 나면 A서버와 B,C서버에서 httpd.conf 화일을 수정하여 /home/test1, /home/test2 를 각각 Virtual host 세팅을 하자. 이부분은 생략한다.

이것으로 로드밸런싱 작업은 완료되었다.



-a는 아카이브 모드. 심볼릭 링크, 속성, 퍼미션, 소유권 등 보존
-v 전송 상태를 보여줌
-z 전송시 압축을 함.
-r recursive (하위 디렉토리까지 포함)
-t 변경시간 전송 (이것이 없으면 전송한 시간으로 바뀜)

--delete A서버에는 없는데 B서버에 있다면 지우라는 명령



+++++++++++++++++++++++++++
* NFS로 각 서버 링크
+++++++++++++++++++++++++++
들어가는 말..
webserver에 상당히 많은 파일이 존재하고, 파일에 잦은 접속을 해야하는 경우.. 또는 동영상서비스를 재공해야하는 경우.. 또이미지로 인해 웹서버의 부하 등을 고려해서 여러대의 서버를 운영하는 경우가 있다.. 하지만, 여러대의 서버를 운영하다보면, 도대체가 어디에 무엇이 있는지 또 그 화일을 수정하기 위해서는 어떤서버에 접속해야하는지 난감한 경우가 많다. 그래서 한서버에서 여러대의 서버의 자료들을 컨트롤하기 위해서 사용한다.

즉, D라는 파일서버가 존재하고 이 파일서버는 이미지/동영상/자료실 등을 운영하는 서버이다. url은 http://files.domain.com 이라고 하자.

A웹서버 또는 B웹서버에서 게시판의 파일 업로드를  D서버로 해야하는 경우에..A서버의 폼에서 D서버로 submit을 시켜야하는데.. 이렇게 하면 프로그램을 짜는 사람도.. 상당히 개발이 힘들어지게 된다.
그렇다고 A서버, B서버에서 그 첨부화일을 가지고 있을 수도 없는 노릇이다. 그렇다면 위의 로드밸런싱을 한 서버라면 엄청나게 꼬여버리게 된다.

다시한번 정리를 해 보자.. 위에서 로드밸런싱으로 A서버의 자료를 B서버(또는 C서버)로 복사를 하게 된다. 하지만 이 부분은 어디까지나 개발자가 수정/편집한 화일들을 복사해가는 경우에 지나지 않는다. 사용자들이 첨부화일을 올린것을 A,B서버에 공통으로 가지고 있을 수는 없는 노릇이다. 그럼 이 사용자들의 첨부화일을 D서버에 공통으로 올라가게 하는 방법은 없을까??  

NFS를 이용해서 다른서버에 있는 화일을 이서버에 존재하는것처럼 하는 것이다. 즉, 업로드시에는 A서버나 B서버에서 하고, 실제로 다운로드를 하거나 사용자들이 접속하게 되는 경우에는 D서버로 접속해서 받아가는 형태...
이런 자료들을 D서버에 저장하고  다운로드 받기위해 http://files.domain.com/filename.zip 을하게 되면 다운로드가 된다.

A서버와 B서버에서 D서버의 특정폴더를 자신의 것인양 보여지게 하는 방법은 다음과 같다.


1. D서버에서 다음과 같이 설정하자.
#vi /etc/exports
/home/files      192.168.0.1(rw,no_root_squash)
/home/files      192.168.0.2(rw,no_root_squash)

#/etc/rc.d/init.d/nfs restart
#/etc/rc.d/init.d/nfslock stop


2. 이제 D서버의 /home/files폴더를 A, B서버에서 자신의 것인양 사용하려면 마운트를 해야한다.
빠른 mount를 위해서 다음과 같이 설정하자. (A, B서버에서.. 각각)
#vi /etc/hosts
192.168.0.4            files.domain.com       files

이제 마운트를 한다.
#mkdir /home/files(A,B서버에서 각각 - 마운트는 미리 폴더를 생성해 두고 한다.)
#mount -t nfs files.domain.com:/home/files /home/files (A, B서버에서 각각)

그리고 /home/files 에가서 확인해 봐라. D서버, A서버, B서버에서 각각 화일을 하나씩 생성해보고 동일한 화일이 존재하는지..
존재할 것이다.

그럼.. 이제 A,B서버에서 게시판이나 기타 다른 프로그램으로 첨부화일을 D서버로 올리는 경우에 저장되는 경로를 /home/files로 저장한다면 될것이다. 물론 chmod를 777 로 해 줘야 할 것이다.

만약 A, B서버에서 위의 mount 명령어를 실행했을때 접속이 안된다는 메시지가 뜨면..
D서버에서 ntsysv 를 실행해서 nfs에 체크하고 nfslock에 체크를 해제한후에 /etc/rc.d/init.d/xinetd restart 를 한후 다시한번 시도 해보아라.


위와 같이 하면, 여러대의 웹서버와 별도의 대용량 파일서버/이미지서버 등의 작업은 한 서버에서 관리하는것이 가능하다.

에궁.. 머리야.. 위의 테스튼 Linux Fedora 3에서 테스트 하고 다른 어떤분의 자료를 바탕으로 작업후 테스트후 내용을 정리한 것입니다.

예 3-6. 설치 안내 (아파치 2 공유 모듈 버전)

1.  gzip -d httpd-2_0_NN.tar.gz
2.  tar xvf httpd-2_0_NN.tar
3.  gunzip php-NN.tar.gz
4.  tar -xvf php-NN.tar
5.  cd httpd-2_0_NN
6.  ./configure --enable-so
7.  make
8.  make install

    이제 /usr/local/apache2에 기본 MPM prefork와 동적 모듈 지원을
    설정한 Apache 2.0.NN을 사용할 수 있습니다.
    설치를 확인하기 위해 아파치 서버를 일반 프로시져로 시작해봅니다. 즉:
    /usr/local/apache2/bin/apachectl start
    그리고 PHP 설정을 하기 위해서 서버를 중지합니다:
    /usr/local/apache2/bin/apachectl stop

9.  cd ../php-NN

10. 이제, PHP를 설정합니다. 어떤 확장을 사용할 지 등의 PHP의 많은
    옵션을 지정할 차례입니다. ./configure --help로 사용할 수 있는 옵션
    목록을 얻을 수 있습니다. 예제에서는 간단히 아파치 2와 MySQL 지원을
    설정합니다. apxs의 경로는 시스템에 따라  다를 수 있고, 심지어 이름이
    apxs2일 수도 있습니다.

      ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql

11. make
12. make install

    설치 후에 설정 옵션을 바꾸길 원한다면, 단지 바로 위의 세 단계만을
    반복하면 됩니다. 아파치를 재시작 하면 새 모듈이 작동합니다. 아파치를
    다시 컴파일할 필요는 없습니다.

    특별히 지정하지 않는 한, 'make install'은 PEAR, phpize 등의 PHP 툴,
    PHP CLI 등등을 함께 설치합니다.

13. php.ini 설정

    cp php.ini-dist /usr/local/lib/php.ini

    PHP 옵션을 설정하기 위해 .ini를 수정할 수 있습니다. php.ini를 다른
    위치에 놓기를 원한다면, 10번째 단계에서
    --with-config-file-path=/some/path를 사용하십시오.

    php.ini-recommended를 선택한다면, 안에 쓰여있는 변경점을 주의깊게
    읽어보십시오. 그 옵션들은 PHP의 작동에 영향을 미칩니다.

14. PHP 모듈을 읽기 위해 httpd.conf를 수정합니다. LoadModule 구문의
    오른쪽에는 시스템에 존재하는 PHP 모듈의 경로를 지정해야만 합니다.
    위쪽의 make install이 이미 이 작업을 마쳤을 수 있지만, 확인을
    해보아야 합니다.

    PHP 4는:

      LoadModule php4_module libexec/libphp4.so

    PHP 5는:

      LoadModule php5_module libexec/libphp5.so
 
15. 아파치에 PHP가 처리할 확장자들을 알려줍니다. 예를 들어,
    .php 확장자를 PHP가 처리하게 합시다. 공백으로 구분하여 어떠한
    확장자라도 PHP가 처리하도록 추가할 수 있습니다. 예제로
    .phtml을 추가했습니다.

      AddType application/x-httpd-php .php .phtml

    .phps를 하이라이트된 PHP 소스로 보여주는 것이 일반적입니다.
    이렇게 설정합니다:

      AddType application/x-httpd-php-source .phps

16. 아파치를 시작하는 일반 프로시저를 사용합니다. 즉:

      /usr/local/apache2/bin/apachectl start

 

2005/12/20 18:04

음 다람쥐 메일을 가지고 왔습니다
http://www.squirrelmail.org
imap 를 이용한 꾀 좋은 웹메일입니다
자세히 설명 못드린점 죄송하구요
보안에 조금 문제가는 것도 있는 데
일단 설치 해보시라는 맘에서 테스트 했구요

[root@ns test]# tar xvfz squirrelmail-1.4.5.tar.tar
[root@ns test]# ll
합계 596
drwxr-xr-x 3 rmcobol rmcobol 4096 8월 31 23:46 ./
drwxr-xrwx 22 rmcobol rmcobol 4096 8월 31 23:36 ../
drwxr-xr-x 16 1000 users 4096 7월 14 03:45 squirrelmail-1.4.5/
-rw-r--r-- 1 rmcobol rmcobol 591226 8월 28 14:05 squirrelmail-1.4.5.tar.tar
[root@ns test]# mv squirrelmail-1.4.5 mail
[root@ns test]# ll
합계 596
drwxr-xr-x 3 rmcobol rmcobol 4096 8월 31 23:46 ./
drwxr-xrwx 22 rmcobol rmcobol 4096 8월 31 23:36 ../
drwxr-xr-x 16 1000 users 4096 7월 14 03:45 mail/
-rw-r--r-- 1 rmcobol rmcobol 591226 8월 28 14:05 squirrelmail-1.4.5.tar.tar
[root@ns test]# chown rmcobol:rmcobol -R mail/
[root@ns test]# mv mail/ /home/rmcobol/html/
[root@ns test]# cd /home/rmcobol/html/mail
[root@ns mail]# ll
합계 192
drwxr-xr-x 16 rmcobol rmcobol 4096 7월 14 03:45 ./
drwxr-xrwx 21 rmcobol rmcobol 4096 8월 31 23:50 ../
-rw-r--r-- 1 rmcobol rmcobol 7896 6월 8 00:42 AUTHORS
-rw-r--r-- 1 rmcobol rmcobol 15129 6월 16 09:22 COPYING
-rw-r--r-- 1 rmcobol rmcobol 60753 7월 14 03:37 ChangeLog
-rw-r--r-- 1 rmcobol rmcobol 8622 6월 5 00:50 INSTALL
-rw-r--r-- 1 rmcobol rmcobol 2637 6월 27 2004 README
-rw-r--r-- 1 rmcobol rmcobol 4382 7월 14 03:37 ReleaseNotes
-rw-r--r-- 1 rmcobol rmcobol 4733 5월 30 19:07 UPGRADE
drwxr-xr-x 5 rmcobol rmcobol 4096 7월 14 03:45 class/
drwxrwxr-x 2 rmcobol rmcobol 4096 8월 28 14:08 config/
-rwxr-xr-x 1 rmcobol rmcobol 92 12월 27 2001 configure*
drwxr-xr-x 3 rmcobol rmcobol 4096 7월 14 03:45 contrib/
drwxrwxr-x 2 rmcobol rmcobol 4096 7월 14 03:45 data/
drwxr-xr-x 4 rmcobol rmcobol 4096 7월 14 03:45 doc/
drwxr-xr-x 4 rmcobol rmcobol 4096 7월 14 03:45 functions/
drwxr-xr-x 3 rmcobol rmcobol 4096 7월 14 03:45 help/
drwxr-xr-x 2 rmcobol rmcobol 4096 7월 14 03:45 images/
drwxr-xr-x 3 rmcobol rmcobol 4096 7월 14 03:45 include/
-rw-r--r-- 1 rmcobol rmcobol 661 2월 12 2005 index.php
drwxr-xr-x 5 rmcobol rmcobol 4096 8월 28 15:30 locale/
drwxr-xr-x 18 rmcobol rmcobol 4096 7월 14 03:45 plugins/
drwxr-xr-x 2 rmcobol rmcobol 4096 7월 14 03:45 po/
drwxr-xr-x 2 rmcobol rmcobol 4096 7월 14 03:45 src/
drwxr-xr-x 3 rmcobol rmcobol 4096 7월 14 03:45 themes/
[root@ns mail]# ./configure
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color off
S Save data
Q Quit

[1]
Organization Preferences
1. Organization Name : 짠돌이넷
2. Organization Logo : ../images/sm_logo.png
3. Org. Logo Width/Height : (308/111)
4. Organization Title : SquirrelMail $version
5. Signout Page :
6. Top Frame : _top
7. Provider link : www.xxxxx.co.kr
8. Provider name : 스펨메일

R Return to Main Menu
C Turn color off
S Save data
Q Quit
[2]
1. Domain : xxxxx.co.kr
2. Invert Time : false
3. Sendmail or SMTP : SMTP

A. Update IMAP Settings : localhost:143 (other)
B. Update SMTP Settings : localhost:25

R Return to Main Menu
C Turn color off
S Save data
Q Quit
[3]
Folder Defaults
1. Default Folder Prefix :
2. Show Folder Prefix Option : false
3. Trash Folder : INBOX.Trash
4. Sent Folder : INBOX.Sent
5. Drafts Folder : INBOX.Drafts
6. By default, move to trash : true
7. By default, move to sent : true
8. By default, save as draft : true
9. List Special Folders First : true
10. Show Special Folders Color : true
11. Auto Expunge : true
12. Default Sub. of INBOX : true
13. Show 'Contain Sub.' Option : false
14. Default Unseen Notify : 2
15. Default Unseen Type : 1
16. Auto Create Special Folders : true
17. Folder Delete Bypasses Trash : false
18. Enable /NoSelect folder fix : false

R Return to Main Menu
C Turn color off
S Save data
Q Quit
[4]
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
General Options
1. Data Directory : /var/spool/data/ touch로 data생성
2. Attachment Directory : /var/spool/attach/ touch로 attach생성
3. Directory Hash Level : 0
4. Default Left Size : 150
5. Usernames in Lowercase : false
6. Allow use of priority : true
7. Hide SM attributions : false
8. Allow use of receipts : true
9. Allow editing of identity : true
Allow editing of name : true
Remove username from header : false
10. Allow server thread sort : false
11. Allow server-side sorting : false
12. Allow server charset search : true
13. Enable UID support : true
14. PHP session name : SQMSESSID

R Return to Main Menu
C Turn color off
S Save data
Q Quit

[root@ns spool]# ll
합계 32
drwxr-xr-x 8 root root 4096 8월 28 14:30 ./
drwxr-xr-x 16 root root 4096 8월 30 23:17 ../
drwxrwxrwx 2 root root 4096 8월 28 14:30 attach/ 777 생성
drwxrwx--- 2 mail mail 4096 9월 1 00:00 clientmqueue/
drwx------ 2 root root 4096 8월 6 22:02 cron/
drwxrwxrwx 2 root root 4096 8월 31 23:44 data/ 777 생성
drwxrwxr-x 2 root mail 4096 9월 1 00:00 mail/
drwxr-xr-x 8 root mail 4096 4월 4 14:21 mqueue/

아래 data 디렉토리에 생기네요 이부분은 만지지 않으셔도 되요
[root@ns spool]$ cd data/
[root@ns spool]$ ll
합계 16
drwxrwxrwx 2 root root 4096 8월 31 23:44 ./
drwxr-xr-x 8 root root 4096 8월 28 14:30 ../
-rw-r--r-- 1 apache apache 0 8월 31 00:51 xxxxx.abook
-rw------- 1 apache apache 375 8월 31 23:44 xxxxx.pref
-rw-r--r-- 1 apache apache 0 8월 28 14:46 rmcobol.abook
-rw------- 1 apache apache 104 8월 31 23:40 rmcobol.pref

[10]
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Language preferences
1. Default Language : ko_KR <--이건 확장펙설치요
2. Default Charset : EUC_KR
3. Enable lossy encoding : false

R Return to Main Menu
C Turn color off
S Save data
Q Quit
Command >> s 저장
Command >> q 종료
Exiting conf.pl.
You might want to test your configuration by browsing to
http://your-squirrelmail-location/src/configtest.php
Happy SquirrelMailing!

[root@ns mail]# cd locale/
[root@ns locale]# ll
합계 152
drwxr-xr-x 5 rmcobol rmcobol 4096 8월 28 15:30 ./
drwxr-xr-x 16 rmcobol rmcobol 4096 7월 14 03:45 ../
-rw-r--r-- 1 rmcobol rmcobol 15131 1월 4 2005 COPYING.locales
-rw-r--r-- 1 rmcobol rmcobol 6544 7월 13 18:35 ChangeLog.locales
-rw-r--r-- 1 rmcobol rmcobol 2153 7월 1 2004 README.locales
-rw-r--r-- 1 rmcobol rmcobol 2128 7월 13 18:53 ReleaseNotes.locales
drwxr-xr-x 3 rmcobol rmcobol 4096 8월 28 15:24 help/
drwxr-xr-x 2 rmcobol rmcobol 4096 8월 28 15:24 images/
-rw-r--r-- 1 rmcobol rmcobol 473 12월 30 2004 index.php
-rwxr-xr-x 1 rmcobol rmcobol 221 3월 5 2004 install*

drwxrwxrwx 3 rmcobol rmcobol 4096 8월 28 15:24 ko_KR/
<--위 확장펙 아래거 받아서 풀고요 위 언어부분 그대로 적어주세요
-rw-r--r-- 1 rmcobol rmcobol 77047 8월 28 15:23 ko_KR-1.4.5-20050713.tar.gz
이 확장펙을 설치 하는 거여요 위 보시면 표시한거요 압축풀기요
-rw-r--r-- 1 rmcobol rmcobol 7861 3월 30 2002 timezones.cfg
-rw-r--r-- 1 rmcobol rmcobol 43 7월 13 18:35 version


[root@ns conf]# vi httpd.conf

# 한다.
#
Alias /icons/ "/home/httpd/icons/"


Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all


# 앨리어스 mysql
Alias /mysql "/web/home/rmcobol/html/mysql/"


Options Indexes
AllowOverride None
Order allow,deny
Allow from all


Alias /mail "/web/home/rmcobol/html/mail/"


Options Indexes
AllowOverride None
Order allow,deny
Allow from all


계정 : wwww.co.kr/mail
ccccc.com/mail 하시면 다람쥐메일로 가겠지요
확장펙은 찻아보세요 저도 지금 잠이 와서 어딘지 모르겠거든요

+ Recent posts