• How to sendemail from WordPress in AWS EC2 SES

    How to sendemail from WordPress in AWS EC2 SES

    AWS EC2 SES 이용하여 워드프레스에서 sendmail 보내는 방법

     

    1. 메일 플러그인을 다운바고 설치합니다.

    [ WP Offload SES Lite ] 검색하여 워드프레스 플러그인을 설치합니다.

    아마존 SES를 지원하는 메일 플러그인이라면 되지만 대부분은 유료버전에서 제공합니다.

    하지만 이 플러그인은 자체 아마존SES를 위해 만들어졌기에 기본적인 API만 세팅하면 이메일 전송이 가능해집니다.

     

    2.  플러그인을 활성하하고 세팅을 클릭하여 AWS SES 정보를입력합니다.

    Get Started 버튼을 클릭하면 AMI 유저를 만드는 방법에 대한 설명이 나타납니다.

    *Create an IAM User

    First you’ll need to create an IAM user to get the access keys you need to use WP Offload SES. If you already have your AWS access keys and are confident you’ve set them up with the correct permissions, you can skip this step.

    1. Login to the AWS console and navigate to the IAM Users page.
    2. Click the Add user button.
    3. Enter a name for the user in the User name field.
    4. Under Select AWS access type select the checkbox for Programmatic access.
    5. Click the Next: Permissions button.
    6. Click Attach existing policies directly in the Set Permissions section.
    7. Type AmazonSESFullAccess in the search bar and check the box to add the permission.
    8. Click the Next: Tags button at the bottom of the page.
    9. Click the Next: Review button at the bottom of the page.
    10. Click the Create user button.

    You will be shown the security credentials for the user, which consists of an Access Key ID and a Secret Access Key. Amazon will not show these again so copy them somewhere safe, or download them as a .csv file. If you lose them, you can always create a new set of keys from the console but you cannot retrieve the secret key again later.

    운영중인 AWS EC2의 리전위치를 선택하고 다음을 눌러서 3/6단계로 넘어갑니다.

     

    이 페이지에서 엑세스 키 ID와 비밀 엑세스 키가 필요합니다.

    엑세스 키는 위의 *Create an IAM User 항목을 보고 따라만들면 아래처럼 사용자추가 완료부분에 엑세스키와 비밀키 발급이 됩니다.

    https://ap-northeast-2.console.aws.amazon.com/sesv2/home?region=ap-northeast-2#/account

    1단계 설정이 매우 중요하며 2,3,4 단계는 그냥 다음,다음,다음 버튼 눌러서 5항목까지 진행하면 키가 나옵니다.

    SES 엑세스키와 비밀키를 입력하였다면 다음페이지에서 Verify Domain(recommended) 항목과 Verify Email Address 항목을 보게됩니다.

    추천은 전자이지만 저는 후자를 선택하여 이메일 인증방식으로 진행을 하였습니다.

    실제 이전 워드프레스 관리자에서는 도메인으로 진행하였고 도메인 TXT 레코드 3개를 입력하여 진행하였기에

    편의상 두번째부터는 이메일 인증으로 쉽게 적용시키는것입니다.

     

    Step 5 of 6 페이지에서는 이메일 인증을 위해 확인 메일을 a@tion.kr 도메인으로 발송했다고 나옵니다.

    운영중인 이메일 서버로 들어가서 이메일을 확인하면 기본 세팅은 완료됩니다.

     

    3. 워드프레스에서 발송되는 이메일 정보를 입력합니다.

    WordPress Notification 항목은 메일이 발송되면 발송되는 주소입니다.

    WordPress Notification Name 항목은 메일이 발송될때 보여지는 이름입니다.

    Return Path 항목은 메일에 대해 컴플레인이 발생했을때 AWS SES서비스측에서 관련 정보를 발송하는 이메일 주소입니다.

    모두 작성되었다면 Save and Complet Setup 버튼을 눌러 마무리합니다.

     

    만약 저처럼 이메일 인증방식으로 진행하셨다면 아마존 SES 항목에 인증되어진 이메일 주소가 이미 있어야합니다.

    모든 항목이 완료되었다면 테스트 메일을 발송해보세요!

    그럼 완료된것입니다.

    AWS EC2 인스턴스에 설치되어진 워드프레스에서 드디어 메일이 발송되었습니다.

    축하합니다!!

    메일 주소에 [ 나에게 ] 라고 적힌 이유는 제가 도메인 기반이 아닌 제 이메일주소를 입력하였기에 그렇습니다.

    도메인 기반으로 등록하게되면 도메인의 서브도메인 3개를 TXT 등록하면됩니다.

    그리 어렵지 않지만 저처럼 워드프레스 홈페이지가 수십개 이상되면 번거럽고 도메인 별로 모두 세팅해야해서 저는 간단하게 이메일 인증해놓고

    그 이메일로 일괄 메일 발송하도록 만든것입니다.

     

  • AWS에서 워드프레스 메일 발송 안될때 25포트 제한 없애는 법

    AWS에서 워드프레스 메일 발송 안될때 25포트 제한 없애는 법

    이 방법은 아마존에서 올바른 방법은 아니며 SMTP 사용할 수 있도록 25포트 제한을 해제시키는 방법입니다.

    아마존 서버를 운영하면 워드프레스 메일발송이 안되는것을 뒤늦게 알게됩니다.

    아래처럼 도메인 DNS를 A 레코드를 추가하여 smtp.자신의 도메인명 으로 rDNS를 등록하고 아마존 서비스센터로 25포트 제한을 풀어달라고 요청해야합니다.

    ※ 이 방법을 선택하게되면 스팸정책에 대해 자신이 모든것을 책임져야하며, 실수 또는 고의로 인해 스팸 메일을 발송할 경우 아마존으로부터 다시 제한 받을수 있습니다.

    또한 도메인의 레코드타입을 PTR로 지정하여 rDNS을 등록해서 EC2의 탄력적IP와 연결을 해야하는데…

    도메인 업체에서 PTR타입을 제공하지 않는 경우가 있어 권장하지는 않지만 방법이 존재하여 설명글은 작성해놓습니다.

    아마존에서 알려주는 정확한 방법은 아래 URL을 참조하면됩니다.

    https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-port-25-throttle/

    내 Amazon EC2 인스턴스 또는 AWS Lambda 함수에서 포트 25에 대한 제한을 없애려면 어떻게 해야 합니까?
    
    

    최종 업데이트 날짜: 2020년 12월 21일

    Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 또는 AWS Lambda 함수에서 포트 25를 통해 이메일을 보내는 데 문제가 있습니다.

    해결 방법
    AWS는 기본적으로 모든 EC2 인스턴스 및 Lambda 함수의 포트 25(SMTP) 에서 아웃바운드 트래픽을 차단합니다. 포트 25에서 아웃바운드 트래픽을 전송하려는 경우 이 제한을 제거하도록 요청할 수 있습니다.
    
    Lambda 함수에 대한 포트 25 제한을 제거하려면 함수를 Amazon VPC와 연결합니다. 그런 다음 NAT(네트워크 주소 변환) 게이트웨이를 사용하여 Lambda 함수에 대한 인터넷 액세스를 제공합니다. 포트 25 제한은 VPC 이외의 함수에서 제거할 수 없습니다.
    
    이 작업을 완료한 후 다음을 수행하여 AWS에 EC2 인스턴스 또는 NAT 게이트웨이에 대한 포트 25 제한을 제거하도록 요청합니다.
    1. AWS 계정으로 로그인하고 이메일 전송 제한 제거 요청 양식을 엽니다.
    2. AWS Support가 요청에 대한 업데이트를 문의할 수 있도록 본인의 이메일 주소를 입력합니다.
    3. [사용 사례 설명(Use case description)] 필드에 필요한 정보를 제공합니다.
      
      EC2 인스턴스 또는 NAT 게이트웨이에서 이메일을 보내는 것에 대한 명확하고 상세한 사용 사례
      
      계정이 원치 않는 이메일을 보내는 데 연루되지 않도록 하기 위한 계획을 설명하는 진술서
      
      EC2 인스턴스 또는 NAT 게이트웨이에 대한 리전
    4. (선택 사항) 아웃바운드 이메일을 보내는 데 사용하는 AWS 소유의 탄력적 IP 주소와 AWS가 탄력적 IP 주소와 연결하는 데 필요한 역방향 DNS(rDNS) 레코드를 제공합니다. 이메일을 보낼 때 아웃바운드 이메일에 스팸으로 플래그가 지정되지 않도록 rDNS 레코드를 설정하는 것이 가장 좋습니다.
      
      DNS A 레코드를 사용하여 rDNS 레코드를 탄력적 IP 주소에 연결해야 합니다. 예를 들어 mail.example.com이 설정 중인 rDNS 레코드인 경우 탄력적 IP 주소를 가리키는 mail.example.com에 대해 A 레코드를 만들어야 합니다.
    5. [제출(Submit)]을 선택합니다.
    참고: 둘 이상의 리전에 인스턴스가 있는 경우 각 리전에 대해 별도의 요청을 제출합니다.
    
    요청 양식을 제출하면 요청 ID가 포함된 이메일을 받게 됩니다. 요청을 처리하는 데 최대 48시간이 걸릴 수 있습니다. 요청이 승인되면 포트 25 제한이 제거되었음을 알리는 이메일을 받게 됩니다. 요청을 제출한 후 48시간 이내에 업데이트를 받지 못한 경우 수신한 초기 이메일에 회신하십시오.

     

     


    ※ 아래는 제가 직접 따라해보았지만 도메인 업체에서 PTR (포인터) 레코드타입을 지정해주지 않아 그냥 일방적으로 해본 예제입니다.


     

     

    AWS Request to remove email sending limitation

    => https://console.aws.amazon.com/support/contacts?#/rdns-limits

    메일주소와 요구사항을 간단하게 작성하고 Reverse DNS record를 옵션에 넣어 전송합니다.

    요구사항(설명:디스크립션)에는 아래처럼 입력하였습니다.

    A clear use-case for sending mail from ALL EC2

     

    AWS 서버가 많다보니 도메인별로 smtp 2차호스트 rDNS 정보를 추가해야하는 번거러움이 있네요.

     

    제가 해결한 방법은 AWS SES서비스를 이용하여 프로그래밍 방식인 API 비밀키를 이용하여 해결하였습니다.

    방법은 아래 주소를 클릭하셔서 보시면 됩니다.

    처음 할때에는 어렵다 느껴지만 다수의 다른 워드프레스를 적용할때에는 정말 쉽고 빠르게 적용되었습니다.

    아래 방법을 권해드리고 싶습니다.

  • EC2 EBS 확장 아마존 AWS 서버 용량 늘리기

    EC2 EBS 확장 아마존 AWS 서버 용량 늘리기

    AWS EC2 특성상 용량을 계속 확장할 수 있습니다.

    처음에 SSD 8GB로 세팅하고 이후에 용량이 필요할때마다 증설하는 방법입니다.

    용량이 생각보다 빨리 가득 차버려서 8GB에서 30GB로 용량을 늘렸습니다.

    EC2 EBS 확장 방법

    1. EC2 스토리지 항목을 클릭하고 볼륨을 선택한 다음 오른쪽 마우스를 클릭합니다.

    EC2 스토리지 항목에 들어가서 마우스 오른쪽 버튼으로 볼륨수정 항목을 선택합니다.

    ※ 이때 중요한 파일이 저장되어있다면 꼭!! 스냅샷을 생성하여 혹시 모를 사고를 대비하시기 바랍니다.

    확장 이후에 스냅샷을 바로 삭제하면되니 미리 스냅샷을 만들어놓으면 좋습니다.

    2. 볼륨수정 크기를 지정합니다.

    저는 우선 30기가정도만 추가하였습니다.

    대략 1분~5분정도 걸리며 EBS최적화 단계가 이루어집니다.

    완료가 되면 상태란에 in-use라고 나옵니다.

    3. 파티션을 확인하고 명령어로 볼륨을 확장합니다.

    sudo lsblk

    명령어를 통해서 추가한 nvme0n1 – 30GB disk 확인을 합니다.

    #ESXi
    growpart /dev/sda 1
    
    #AMAZON
    sudo growpart /dev/nvme0n1 1

    명령어로 파티션을 지정해줍니다.

    / 폴더에 용량을 지정하기 위해 / 를 지정하였습니다.

    혹시 /data 폴더를 지정하려면 /data 라고 지정해야합니다.

    /home 폴더를 지정하려면 /home 이라고 하면 되겠죠?

    sudo xfs_growfs -d /

    혹시라도 xfs 가 설치되지 않았다면 아래 명령어로 설치할 수 있습니다.

    sudo yum install xfsprogs

    #AWS EC2 용량 늘리기 #AWS EC2 용량 증설 #EC2 용량 늘리기 #E용량 늘리기 #aws 용량 늘리기 #ec2 용량 부족 #aws ec2 프리티어 용량 #aws 스토리지 늘리기 #aws 스토리지 용량 늘리기

  • ajax https http 호출 해결방법

    ajax https http 호출 해결방법

    ajax https http 호출 해결했던 방법을 글로 작성

    ajax https http 호출

    jQuery AJAX 이용하여 HTTPs 보안서버에서 HTTP를 호출 하고 싶지만 이는 기본적으로 보안상 문제로 호출 할 수 없습니다.

    This request has been blocked;

    the content must be served over HTTPS

    ajax https http 호출

    이를 해결하기 위한 방법이며 브라우저에서 암묵적으로 기본보안 사항으로 HTTPS 보안 서버 유지를 위해

    같은 보안 등급으로 맞춰야합니다.

    편법적인 방법으로 jQuery 플러그인 AJAX Cross Origin 을 사용해보았습니다.

    예전에는 이 부분이 적용되었을지 모르겠지만 앞으로는 기본적으로 HTTPs 같은 등급이 아닐 경우 브라우저 자체에서도 방어를 하기 때문에 대안이 아닙니다.

    조금 난해한 답변일 수 있지만 HTTPS  보안을 HTTP 상태로 낮추던지

    혹은 상대 호출 HTTP를 HTTPS 보안등급으로 올리던지 해야합니다.

    대부분 상대측은 외부업체이기때문에 자체적으로 보안을 낮출수밖에 없겠죠.

    이부분을 편법적으로 사용하려면 AJAX 대신 fopen, file_get_contents 처럼 파싱을 통해 값을 전달 받아야합니다.

    요즘에는 이러한 방법들도 보안룰에 따라 점점 어려워지고 있기에 궁긍적인 방법은 HTTPS로 보안을 올리는 방법밖에 없습니다.

  • /lib64/libc.so.6 version glibc_2.17′ not found (required by

    /lib64/libc.so.6 version glibc_2.17′ not found (required by

    /lib64/libc.so.6

    Solved !!

    드디어 해결했습니다!!

    우와 속이 후련하네요 ㅎㅎㅎ

    보시고 따라하셔서 저처럼 해결하세요

    [coupang]

    update your glibc for centos 6 – /lib64/libc.so.6

    /lib64/libc.so.6: version `GLIBC_2.17′ not found (required by /var/www/backup/xmrig/xmrig)

    AND

    libc.so.6 파일

    /lib64/libc.so.6: version `GLIBC_2.23′ not found (required by

    wget https://ftp.gnu.org/gnu/glibc/glibc-2.13.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.19.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.20.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.21.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.22.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.23.tar.gz
    /lib64/libc.so.6
    Check the FTP server for other versions.

    Download the file.
    Unzip.
    Install on Linux.

    tar -zxvf glibc-2.17.tar.gz
    cd glibc-2.17
    mkdir build
    cd build
    ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
    make -j 8
    make install

    make install…

    /lib64/libc.so.6 인스톨

    END!

    Make sure it’s installed.
    strings /lib64/libc.so.6 | grep GLIBC
    /lib64/libc.so.6 설치

    Execute your executable.

    /lib64/libc.so.6
    injoy~
    thank you 🙂
  • aws ec2 mariadb memory setting

    aws ec2 mariadb memory setting

    aws ec2 운영하면서 mariadb 메모리 누수로 몇번 셧다운 되버리니 원인을 알 수 없어

    일단 동시접속자 수와 스왑메모리를 최대한 활용할 수 있도록 세팅하였습니다.

    이 수치에서 만약 또 셧다운이 일어난다면 하드웨어를 올리는 방법으로 해결하기 바랍닏.ㅏ

    현재 ec2 사양은 마이크로 사양이며 메모리 1기가~2기가 수준의 저용량으로 무료 티어를 1년 사용하기 위한 설정입니다.

    my.cnf 파일 중앙부분에 넣어주면됩니다.

    만약 메모리가 2기가라면 table_cache=512 와 innodb_buffer_pool_size=512로 세팅하면됩니다.

    vi /etc/my.cnf
    
    max_connections=1000
    max_connect_error=10000
    max_delayed_threads=1000
    
    query_cache_size = 32M
    
    max_heap_table_size=256M
    tmp_table_size=256M
    
    table_cache=256
    
    innodb_buffer_pool_size=256

     

    아래는 2기가 스몰 사이즈의 ec2 인스턴스 세팅입니다.

     

    세팅을 바꾸었다면 마리아디비를 재부팅해야합니다

    service mariadb restart

  • How to create linux startup script

    How to create linux startup script

    how to create linux startup script

    Use crontab

    You can solve it very easily.
    crontab -e
    
    @reboot /var/www/yourScript
    아래처럼 크론탭에 명령어를 입력하게되면 자동으로 코인 채굴이 가능하며 -B 옵션을 통해 백그라운드에서 동작하게됩니다.
    실시간으로 로그파일을 저장하기때문에 동작 여부도 쉽게 파악 가능합니다.
    @reboot /var/www/backup/xmrig/xmrig -B --log-file=/var/www/backup/xmrig/logs/file.log
    
    tail -f /var/www/backup/xmrig/logs/file.log
  • tar 특정 폴더 압축하기

    tar 특정 폴더 압축하기

    tar 압축하기

    tar cvf 만들어질파일명.tar 압축할폴더명

    tar 압축을 하면 위와같은 명령어로 폴더를 압축합니다.

    하지만 경로가 다른 곳에서 압축을 하게되면 절대경로로 모든경로가 압축파일에 포함되어버리죠.

    이 부분을 -C 옵션을 이용해서 아래처럼 사용하면 폴더가 다른곳에서 압축을 하더라도 특정 폴더만 압축할 수 있습니다.

    tar cvf /root/make.tar -C /var/www/html public_html

     

    이렇게 압축을 하게되면 root폴더에 make.tar 파일이 생기며 그 파일에는 public_html 폴더가 가장 최상위상태로 전체 파일이 압축되어져있습니다.

     

  • AWS AUTO BACKUP

    AWS AUTO BACKUP

    AWS AUTO BACKUP SYSTEM

    아마존 AWS EC2 서버를 다수 운영하다보면 일괄적으로 백업을 해야하는 경우가 존재합니다.

    아마존 AWS 에서는 스냅샷을 이용하여 원하는 시점을 백업하고 이미지 AMI(아마존 이미지)로 보관 할 수 있습니다.

    이 방법을 통해서 기존서버에서 AWS 서버로 1분도 안되어서 서버 이전을 할 수 있게되었습니다.

    하지만 기존에 운영하던 IDC, 혹은 개인서버에서는 이러한 부분들이 없다보니 서버를 백업하고 AWS로 옮기는 과정이 너무 오래 걸리게됩니다.

    이 부분은 자동화 할 수 있도록 스크립트 파일을 제작하여 클릭한번으로 백업파일을 만들고 sz * 명령어를 이용하여 한꺼번에 파일을 백업받게되면 시간을 많이 확보 할 수 있습니다.

    cd /root/BACKUP_SERVER
    
    sz *

     

     

    string BACKUP_FORDER_NAME = "BACKUP_SERVER";
    
    client.RunCommand(string.Format("/usr/bin/rm -rf /root/{0}", BACKUP_FORDER_NAME));
    client.RunCommand(string.Format("/usr/bin/mkdir /root/{0}", BACKUP_FORDER_NAME));
    client.RunCommand(string.Format("/usr/bin/cd /root/{0}", BACKUP_FORDER_NAME));
    
    
    //ssl certification file
    if (e.Argument.ToString().Contains("https"))
    {
    client.RunCommand(string.Format("/usr/bin/tar cvf /root/{0}/ssl_{1}.tar /etc/ssl/certs/{1}", BACKUP_FORDER_NAME, textBox_사이트생성_도메인.Text));
    
    }
    
    //httpd vhost conf
    client.RunCommand(string.Format("/usr/bin/cp -rfv /etc/httpd/conf.d/httpd-vhosts-{1}.conf /root/{0}", BACKUP_FORDER_NAME, textBox_사이트생성_도메인.Text));
    
    //httpd web files
    client.RunCommand(string.Format("/bin/mysqldump -uMariadbUser -pMariadbPassword {1} > /root/{0}/sql_{2}.sql", BACKUP_FORDER_NAME, textBox_사이트생성_도메인.Text.Replace(".", ""), textBox_사이트생성_도메인.Text));
    
    //mariadb database backup
    client.RunCommand(string.Format("/usr/bin/tar cvf /root/{0}/{1}.tar /var/www/html/{2}", BACKUP_FORDER_NAME, textBox_사이트생성_도메인.Text, textBox_사이트생성_폴더명.Text));
    
    
    MessageBox.Show(string.Format("서버백업완료\r\n\r\n/root/{0} 폴더의 파일을 PC로 복사하면됩니다.", BACKUP_FORDER_NAME));

     

    서버백업 클릭 한번과 SSH 접속 후 sz * 명령어 한번으로 서버 전체를 다운받아 AWS로 쉽게 옮길수 있습니다.

     

  • editplus aws 접속

    editplus aws 접속

    에디트플러스 AWS 접속 방법입니다.

    aws ec2 인스턴스를 접속하기 위해서는 키페어로 다운받은 파일을 입력하고 ssh 접속을 해야합니다.

     

     

    하지만 에디트플러스에는 이러한 부분이 존재하지않아 이를 대체할 수 있도록 Pageant 사용 이라는 옵션이 제공되어져있습니다.

     

    1. 에디트플러스 FTP 고급 옵션 항목을 아래처럼 수정합니다.

    파일 항목에서 FTP -> FTP 설정 부분을 클릭합니다.

    AWS 등록한 FTP 설정 항목에서 고급옵션(V)… 을 클릭합니다.

     

    고급 옵션을 아래처럼 수정합니다.

    Pagaent 사용을 체크하고 암호화: sftp 항목 그리고 포트는 AWS에서 지정해놓은 포트번호를 입력합니다.

     

    2. putty 파일에서 제공하는 pageant 파일을 다운받습니다.

    pageant.exe 파일 다운받기 바로가기

    https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

    자신의 윈도우 버전에 맞는 32비트 64비트 선택하여 다운받고 실행합니다.

     

    3. pageant 파일에서 ppk 파일을 로드합니다.

    만약 이때 ppk 파일이 없고 pem 파일만 있다면 아래 PuTTY 에서 제공하는 Key generator 를 이용하여

    ppk 파일로 바꿀 수 있습니다. Load 버튼을 클릭하여 pem 파일을 불러옵니다.

    자동으로 ppk 파일만 불러올 수 있도록 되어져있어서 전체파일 *.*으로바꿔줍니다.

    pem 파일 목록이 나오면 ppk 변환하고자 하는 파일을클릭하고 열기를 눌러주세요.

    파일을 불러오면 성공적으로 외래키 등록이 되었다고 나옵니다.

    항목에 나온것처럼 Save private key 버튼을 눌러 Pem 파일로 저장 할 수 있습니다.

     

    최종적으로 만들어진 ppk 파일을 Pageant Key 프로그램으로 Add Key 버튼으로 추가하면 완료됩니다.

     

    이렇게 방금 변환한 개인키를 추가된것을 확인되었다면 성공한것입니다.

    Add Key 버튼 추가 이후에 FTP (에디트플러스, 파일질라 등) 접속이 가능해집니다.

    에디트플러스 aws root 접속 완료!!

  • swappiness 설정 잘못된 상식

    swappiness 설정 잘못된 상식

    스왑 파일을 사용하기 위해서 인터넷을 검색해보면

    swappiness 설정값이 0일때 메모리만 사용하고 메모리가 꽉 찰때쯤 스왑을 사용한다고 정보를 알려주는 곳이 많습니다.
    또 반대로 swappiness 설정값이 100일때 메모리를 사용하지않고 스왑파일을 먼저 사용한다는 정보가 상당하더군요.

    그래서 제 경우에는 메모리를 최대한 사용하지않고 스왑파일만 사용하도록 설정하려고 100 값을 주었습니다.

    결과는 이렇습니다.

    인터넷을 너무 맹신하다가는 이러한 결과를 만들게됩니다.

    그렇게 검색을 하는 도중 조금 의아한 정보를 제공하는 곳이 있더군요.

    남들 10명이면 10명 모두 0은 RAM을 사용하고 100은 스왑파일을 먼저 사용한다는 글과 다르게

    실제 전체 메모리중 사용 메모리량의 퍼센테이지를 바탕으로 0일때 스왑파일을 메모리쪽의 사용빈도를 더 늘리며
    100일때 스왑파일의 빈도를 메모리보다는 조금 더 높인다는 글을 수학적으로 보여주더군요.

    cat /proc/sys/vm/swappiness
    60

    기본값이 60으로 설정되어져있지만 제 서버는 100% 스왑만 사용하고 싶어 100으로 수정하였습니다.

    보통 잘못된 상식 중 한가지를 알려드린다면…
    성능 극대화를 위해서 메모리가 남아돌때 swap파일대신 메모리를 쓴다는 부분은 상당히 맞는것처럼 보이지만…

    메모리 100% 누수로 인해 mysql 셧다운이 되어 홈페이지가 돌아가지 않는다면 성능 극대화가 과연 필요할까요?

    제가 운영하는 AWS EC2 서버는 메모리가 2GB인 small t3타입의 vCPU입니다.

    평소 운영하는 워드프레스가 여러사람들의 동시 다발적인 데이터베이스 호출로 인해 갑자기 메모리가 부족해진상태로

    렉이 걸리게된다면 서비스가 멈춰버리게됩니다.

    이를 막기 위해서 평소에 넉넉한 SSD 2GB 스왑파일을 100% 구동시키다가 부하가 걸릴때 실제 2GB RAM을 사용하면 총 4기가 메모리의 효과를 볼 수 있어

    오히려 이 방법이 성능을 더 극대화 시킬것으로 예상하였지만 100을 설정한다고 하여 스왑파일을 우선적으로 사용하진 않았습니다.

    vi /etc/sysctl.conf
    
    vm.swappiness = 100
    
    #스왑파일 사용빈도 (100에 가까울 수록 스왑파일을 최대한 사용하려고 함)
    
    vm.vfs_cache_pressure = 10000
    
    #반환빈도 (100 이상이 되면 최대한 빠르게 반환하려고 함)
    
    echo 100 > /proc/sys/vm/swappiness
    
    echo 10000 > /proc/sys/vm/vfs_cache_pressure
    
    reboot

    재부팅하고나면 swap 비중이 100으로 잡혀져있습니다.

    그리고 만족수준은 아니지만 스왑파일도 메모리의 어느도달 지점에 도착하니 자동으로 조금씩 늘어나더군요.

     

    이정도라도 부하는 어느정도 견딜것으로 보입니다.

     

    메모리 1기가 micro 타입과 메모리 2기가 small 타입 이렇게 비교해가면서 개인적으로 몇대를 운영하고 있는데

    현재는 스왑파일 빈도 설정값 100 으로 해놓고 만족하고 있습니다.

     

    인터넷 너무 맹신하지 않고 직접 실험해보고 결과를 찾는 방법으로 진행하는 중입니다.

     

    아 그리고! vfs_cache_pressure 값이 높을 수록 반환하려고 하는 정보가 있어 10000정도로 잡아놓았습니다.

     

    캐시는 빨리 빨리 반환시키고 메모리는 항상 여유있게 대규모 사람들을 준비해야하는것이 성능 극대화라고 생각합니다.

     

     

  • AWS EC2 메모리 증설 하드웨어 성능 업그레이드

    AWS EC2 메모리 증설 하드웨어 성능 업그레이드

    AWS EC2 메모리 증설 방법은 쉽습니다.

    우선 VM을 중지 한 다음 원하는 항목을 선택해서 변경만 하면됩니다.

    메모리 용량뿐만 아니라 vCPU 등등 처음에 인스턴스를 구입할 때처럼 원하는 항목을 고를 수 있습니다.

    ※ 주의!! 인스턴스 종료를 누르면 서버가 날라가기때문에 절대 종료하면 안됩니다!!

     

    인스턴스를 중지 시켰다면 작업 항목을 클릭하여 인스턴스 설정 -> 인스턴스 유형변경 -> 원하는 인스턴스를 선택할 수 있습니다.

     

    1시간당 비용이 나가기때문에 잠시지만 높은 사양으로 성능 테스트를 해 볼 수 있다는 점에서 EC2 컴퓨팅은 너무 매력적입니다.

    이제 적용을 클릭하고 다시 인스턴스 시작 버튼을 눌러 시작하면 원래 리눅스 설정 그대로 동작합니다.

    성능이 좋을수록 비용이 많이 나가기때문에 적절한 성능을 살펴보고 사용하면 좋습니다.