[JAWS-UG 관서여자회] #2ELB+EC2+RDS 제작 EC 사이트~EC-CUBE 콘텐츠 동시편~

개시하다


이 기사는 JAWS-UG 간서여자회'첫 여자 응원 기획! 사례에서 배운 목촌&목촌회'입니다.
텍스트 디렉토리1문자 디렉토리의 문자입니다.

본문의 목표

  • EC2를 통한 WEB 서버 구축
  • RDS를 통한 데이터베이스 서버 구축
  • EC-CUBE 설치 및 커뮤니케이션 확인
  • ELB를 통한 WEB 서버 부하 분산
  • 구성은 다음과 같다.

    EC-CUBE 설치 및 커뮤니케이션 확인


    EC2-CUBE 설치 및 커뮤니케이션 확인까지의 프로세스

  • EC-CUBE 설치
  • 컨텐츠 동기화 설정
  • 동기화 설정 확인
  • 구축 절차


    1. EC-CUBE 설치


    여기를 참조하시오

    2. 내용 동기화 설정


    EC-CUBE를 적용해 업로드된 콘텐츠를 WEB 서버 2대로 구성하면 업로드 작업이 두 배로 늘어난다.
    따라서 업로드된 컨텐트는 자동으로 다른 서버와 동기화되도록 설정됩니다.
    rsync와 lsync를 동기화 설정으로 조합합니다.
    rsync는 서버 간의 동기화입니다. lsync에서는 폴더 내의 업데이트 (파일의 새로운 업로드와 덮어쓰기 등) 를 감지하고 rsync 명령을 발행하는 것입니다.
    이 설정을 사용하면 서버를 양방향으로 동기화할 수 있습니다.
    이렇게 되면 어느 쪽이 서버 다운로드 기간에 내용을 업로드했더라도 다운로드한 서버가 시작될 때 동기화 재시도를 할 수 있다.
    삭제를 추가 모드로만 설정하기 때문에 동기화 처리를 통해 파일을 삭제하지 않습니다.
    현재 프리뷰에서는 오리건만 사용할 수 있지만 EFS라는 공유 드라이브로 NFS를 설치할 수 있는 서비스가 있다.
    만약 EFS가 도쿄 지역에서 정식으로 발매된다면, 나는 그것으로 바꾸고 싶다

    2.1.WEB 01의 설정


    ◆ 동기화 사용자 생성

    $ sudo su - root
    # useradd syncuser
    # passwd syncuser
    

    ◆동기화 목표 만들기

    # vi /etc/rsyncd.conf
    
    -------------------以下を記述-------------------
    [root]
        path = /var/www/html/eccube/html/user_data
        hosts allow = 172.31.0.0/16
        read only = false
        uid = syncuser
        gid = syncuser
    -------------------ここまで-------------------
    
    # yum -y install xinetd
    # yum -y install gcc
    

    ◆ rsync 시동

    # /etc/rc.d/init.d/xinetd start
    # chkconfig rsync on
    

    ◆ lsyncd 설치

    # yum -y install libxml2-devel lua-devel lua-static
    # export LUA_CFLAGS='-I/usr/include -lm -ldl'
    # export LUA_LIBS='/usr/lib64/liblua.a'
    # wget https://lsyncd.googlecode.com/files/lsyncd-2.1.5.tar.gz
    
    # tar zxvf lsyncd-2.1.5.tar.gz
    # cd lsyncd-2.1.5
    # ./configure && make && make install
    

    ◆ lsyncd 설정


    WEB 02의 Private IP 지정 섹션이 여기에 표시되지 않으므로 적절한 값을 입력한 후 수정합니다.
    # vi /etc/lsyncd.conf
    
    -------------------以下を記述-------------------
    settings {
            statusFile = "/tmp/lsyncd.stat",
            statusInterval = 1, ←WEB01の場合は「1」
    }
    
    sync{
            default.rsync,
            source="/var/www/html/eccube/html/user_data/",
            target="172.31.xx.xx:/var/www/html/eccube/html/user_data/", ←WEB02のPrivate IPを指定。
            delete = false,
            rsync  = {
                    archive = true,
                    links   = true,
                    update  = true,
                    verbose = false
            }
    }
    -------------------ここまで-------------------
    

    ◆ 키 만들기(비암호문)

    # cd /home/syncuser
    # su syncuser
    $ mkdir .ssh
    $ cd .ssh
    $ ssh-keygen -t rsa -N ""
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/syncuser/.ssh/id_rsa): そのままEnterを押す
    Your identification has been saved in /home/syncuser/.ssh/id_rsa.
    Your public key has been saved in /home/syncuser/.ssh/id_rsa.pub.
    The key fingerprint is:
    RSAが表示されます
    
    $ cp id_rsa.pub authorized_keys
    $ chmod 600 authorized_keys
    $ cd ../
    $ chmod 700 .ssh
    

    ◆ sshd 설정 확인

    $ sudo su - root
    # vi /etc/ssh/sshd_config
    AuthorizedKeysFile      .ssh/authorized_keys
    コメントアウトされていたら、外す
    
    

    ◆ lsyncd 시작 파일 설정

    # vi /etc/rc.d/init.d/lsyncd
    
    -------------------以下を記述-------------------
    #!/bin/bash
    #
    # lsyncd
    #
    # chkconfig: - 99 20
    # description: lsyncd auto start script
    
    LSYNC_USER="syncuser"
    
    start() {
        su - $LSYNC_USER -c "/usr/local/bin/lsyncd /etc/lsyncd.conf"
    }
    
    stop() {
        /bin/kill -9 `/sbin/pidof lsyncd`
        until [ -z $(/sbin/pidof lsyncd) ]; do :; done
    }
    
    case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        restart)
            stop
            start
            ;;
        status)
            pid=`pidof lsyncd`
            if [ $? -eq 0 ]; then
                echo "lsyncd (pid $pid) is running..."
            else
                echo "lsyncd is not running"
            fi
            ;;
        *)
            echo "Usage: lsyncd {start|stop|restart|status}"
            exit 1
    esac
    
    exit $?
    -------------------ここまで-------------------
    
    
    # chmod +x /etc/rc.d/init.d/lsyncd
    # chkconfig --add lsyncd
    # chkconfig lsyncd on
    

    ◆커널 파라미터 설정

    # vi /etc/sysctl.conf
    
    以下を一番下に追記
    fs.inotify.max_user_watches = 30000
    
    # sysctl -p
    

    ◆ FTP 설치

    # yum install vsftpd
    

    ◆ FTP 설정


    ※ 동기화를 확인하기 위해 사용하기 때문에 설치가 간단합니다.2 3 4
    # vi /etc/vsftpd/vsftpd.conf
    
    ascii_upload_enable=YES ←「#」を消す
    ascii_download_enable=YES ←「#」を消す
    
    ------以下を追記------
    pasv_min_port=65000
    pasv_max_port=65010
    pasv_address=52.xx.xx.xx ←WEB01のPublic IPアドレスを記入
    ------ここまで------
    
    # chkconfig vsftpd on
    # chkconfig
    vsftpd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
    
    # service vsftpd start
    
    # chmod go+w /var/www/html/eccube/html/user_data
    
    두 번째 EC2 인스턴스를 시작합니다.
    여기를 참조하시오

    2.2.WEB 02의 설정


    ※ 이후 설정은 WEB 02를 제작한 후 진행됩니다!!

    ◆ lsyncd 설정


    WEB 01 측 lsyncd 설정에 WEB 02의 Private IP 주소 설정이 없기 때문에 수정되었습니다.
    WEB 01 측면 수정
    # vi /etc/lsyncd.conf
    
    settings {
            statusFile = "/tmp/lsyncd.stat",
            statusInterval = 1, ←WEB01の場合は「1」
    }
    
    sync{
            default.rsync,
            source="/var/www/html/eccube/html/user_data/",
            target="172.31.xx.xx:/var/www/html/eccube/html/user_data/", ←WEB02のPrivate IPを指定。
            delete = false,
            rsync  = {
                    archive = true,
                    links   = true,
                    update  = true,
                    verbose = false
            }
    }
    
    lsyncd 서비스 재시작
    #service lsyncd restart
    
    다음 내용이 표시되면 같은 지령을 한 번 더 하세요.
    Usage:
     kill [options] <pid|name> [...]
    
    Options:
     -a, --all              do not restrict the name-to-pid conversion to processes
                            with the same uid as the present process
     -s, --signal <sig>     send specified signal
     -q, --queue <sig>      use sigqueue(2) rather than kill(2)
     -p, --pid              print pids without signaling them
     -l, --list [=<signal>] list signal names, or convert one to a name
     -L, --table            list signal names and numbers
    
     -h, --help     display this help and exit
     -V, --version  output version information and exit
    
    For more details see kill(1).
    
    
    lsync가 시작되었는지 확인하려면 아래 명령을 누르십시오
    결과 줄의 맨 오른쪽에 '/usr/local/bin/lsyncd/etc/lsyncd.conf' 라고 표시된 줄이 있으면 시작합니다.
    # ps aux | grep lsyncd
    syncuser 14384  0.0  0.0   9996   864 ?        Ss   07:30   0:00 /usr/local/bin/lsyncd /etc/lsyncd.conf
    
    WEB 02 측면 수정
    # vi /etc/lsyncd.conf
    
    settings {
            statusFile = "/tmp/lsyncd.stat",
            statusInterval = 2, ←WEB02の場合は「2」に変える
    }
    
    sync{
            default.rsync,
            source="/var/www/html/eccube/html/user_data/",
            target="172.31.xx.xx:/var/www/html/eccube/html/user_data/", ←WEB01のPrivate IPを指定
            delete = false,
            rsync  = {
                    archive = true,
                    links   = true,
                    update  = true,
                    verbose = false
            }
    }
    
    lsyncd 서비스 재시작
    #service lsyncd restart
    
    FTP 설정 수정
    # vi /etc/vsftpd/vsftpd.conf
    
    pasv_address=52.xx.xx.xx ←WEB02のPublic IPアドレスを記入
    
    # service vsftpd restart
    
    보안 그룹 설정
    WEB 서버용 보안 그룹에 다음 설정을 추가합니다.
    Type
    Protocol
    Port Range
    Source
    SSH
    TCP
    22
    WEB 서버용 보안 그룹
    Custom TCP Rule
    TCP
    21
    MyIP
    Custom TCP Rule
    TCP
    65000 - 65010
    MyIP

    3. 동기화 설정 확인


    여기서 다음과 같은 일을 할 수 있는지 확인하세요.
    • WEB 01에 전송된 파일과 WEB 02 동기화
    • WEB 02에 전송된 파일과 WEB 01 동기화
    • 삭제 파일이 동기화되지 않음

    3.1.차리다


    1. Teraterm으로 WEB 01 및 WEB 02에 로그인합니다.
    2. FFFTP를 사용하여 WEB 01 및 WEB 02에 로그인합니다.
    호스트 이름 섹션에서 Public IP 주소를 지정하십시오.

    3. Teraterm으로/var/www/exe/user 데이터로 이동합니다.
    $ cd /var/www/html/eccube/html/user_data
    $ ls -l ←何もファイルがないことを確認
    

    3.2.구현 확인


    1. FFFTP용 WEB 01의/var/www//exe/user데이터에 파일 올리기 (무엇이든지)
    2. WEB 01 측 TeraTerm ls-L 을 통해 파일이 업로드되었음을 확인합니다.
    3. WEB 02 측의 TeraTerm tals-L이 WEB 01에 올린 파일이 WEB 02와 동기화되었는지 확인합니다.
    ※ 같은 기간에는 1~2분 정도 걸립니다.
    4.WEB 02의/var/www//eccube//sierFFTP로 데이터를 업로드합니다.
    5. WEB 02 측면의 TeraTerm을 통해 ls-L로 파일이 업로드되었음을 확인합니다.
    6. WEB 01 측의 TeraTerm tals-L이 WEB 02에 올린 파일이 WEB 02와 동기화되었는지 확인합니다.
    ※ 같은 기간에는 1~2분 정도 걸립니다.
    7.WEB 01 측면의 Teraterm 중/var/www//eccube//user데이터에 업로드된 파일을 삭제합니다.
    $ rm -f ファイル名
    
    8. WEB 02 측 Teraterm에서 WEB 01 측에서 삭제된 파일이 삭제되지 않았는지 확인합니다.
    수고하셨습니다.
    RDS 제작으로 이동합니다.
    여기를 참조하시오
    마디!그건 미팅이야!! 
    아래 URL 참조
    AWS에서 FTP 서버를 구축할 때 주의해야 할 두 가지 +α  http://dev.classmethod.jp/cloud/aws/to-be-aware-of-when-settingup-ftpserver-with-aws/  
    vsftp의 설정 절차http://promamo.com/?p=3067

    좋은 웹페이지 즐겨찾기