Open doortts opened 7 years ago
@doortts (doortts) 님이 작성한 게시글입니다. ---
현재 데모 서버로 운영중인 repo.yona.io 는 2개의 서버로 운영중입니다.
각각을 Yona1 Yona2로 부르고 있고 Yona2는 Yona1의 Fail Over(접속 실패시 서비스 이전) 기능을 수행하고 있습니다. 이 부분은 Apache의 Proxy Load Balancer를 이용해서 헬스체크 후 서비스가 넘어가게 구성했습니다. 하단의 ssl.conf 설정 부분에서 확인할 수 있습니다.
<VirtualHost *:80> ProxyPreserveHost On ServerName yona.io DocumentRoot "/data/html" </VirtualHost> <VirtualHost *:80> ServerName repo.yona.io Redirect permanent / https://repo.yona.io/ ErrorDocument 503 503.html </VirtualHost>
repo.yona.io의 경우 http로 들어오는 요청은 모두 https로 redirect 하도록 구성해 놓았습니다. 그 외는 특별한 건 없습니다.
<Proxy balancer://myset> BalancerMember http://127.0.0.1:9000 BalancerMember http://yona2:9000 status=+H ProxySet lbmethod=byrequests </Proxy> <VirtualHost _default_:443> ProxyPreserveHost On ServerName repo.yona.io:443 ProxyPass /excluded ! ProxyPass /robots.txt ! ProxyPass / "balancer://myset/" ProxyPassReverse / "balancer://myset/" DocumentRoot "/data/html" ErrorDocument 503 http://yona.io/503.html Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload" <Proxy "https://repo.yona.io"> ProxySet connectiontimeout=3 timeout=5 </Proxy> SSLEngine on SSLProtocol all -SSLv2 -SSLv3 SSLHonorCipherOrder on SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"
이렇게 구성하면 대략 테스트 점수가 이렇게 나옵니다.
출처: https://www.ssllabs.com/ssltest
PORT=9000 YONA_DATA=/data/yona;export YONA_DATA PLAY2_HOME=/home/doortts/apps/play2 pid=`ps -ef | grep java | grep Dhttp.port=$PORT | awk '{print $2}'` kill $pid _JAVA_OPTIONS="-Xmx4096m -Xms4096m -Dyona.data=$YONA_DATA" $PLAY2_HOME/activator "start -DapplyEvolutions.default=true -Dhttp.port=$PORT"
참고: https://github.com/yona-projects/yona/blob/master/restart.sh
yona2 서버랑 yona1 서버는 rsync를 이용해 서로 상호 파일 sync 하도록 만들어 놓았습니다.
date >> /home/doortts/sync.log rsync -aP doortts@yona1:/data/yona/uploads/ /home/doortts/yona/uploads >> /home/doortts/sync.log rsync -aP --delete doortts@yona1:/data/yona/repo/ /home/doortts/yona/repo >> /home/doortts/sync.log
서버 상태에 대한 알람은 Telegram Bot을 통해서 알람을 받게 만들어 놓았습니다.
참고:
예를 들어 업데이트시에 메인서버인 Yona1을 잠시 죽이면 아래처럼 메시지가 옵니다.
그 외는 보통 일반적인 서버 설정들을 해 놓았습니다. 이를테면 Dos 공격막기 위한 iptable 처리나 Ban처리(fail2ban), ssh 설정, id/pw를 통한 로그인 금지 등등 같은 것들요.
적고보니 별건 없네요 ㅎ
--- attachments --- 62092177716.png 1344702792288.png 1290636349781.png
@postimg (더미) 님이 작성한 코멘트입니다. ---
SSL 설정은 웹서버와 버전에따라서 약간씩 다를 수 있습니다.
ssl-config-generator를 참고 하시어 작성 하시면 좋습니다.
HSTS설정은 필요 여부에 따라 설정하세요.
설정한 시간동안은 http로 접속을 해도 https로 접속됩니다.
@doortts (doortts) 님이 작성한 코멘트입니다. ---
@postimg +1 저런 좋은 사이트가 있었는지 몰랐네요. 고맙습니다!!
@doortts (doortts) 님이 작성한 게시글입니다. ---
repo.yona.io 서버 구성
현재 데모 서버로 운영중인 repo.yona.io 는 2개의 서버로 운영중입니다.
각각을 Yona1 Yona2로 부르고 있고 Yona2는 Yona1의 Fail Over(접속 실패시 서비스 이전) 기능을 수행하고 있습니다. 이 부분은 Apache의 Proxy Load Balancer를 이용해서 헬스체크 후 서비스가 넘어가게 구성했습니다. 하단의 ssl.conf 설정 부분에서 확인할 수 있습니다.
Yona1
Yona2
Apache HTTP Server 주요 구성
http.conf
repo.yona.io의 경우 http로 들어오는 요청은 모두 https로 redirect 하도록 구성해 놓았습니다. 그 외는 특별한 건 없습니다.
ssl.conf (https 서비스용)
이렇게 구성하면 대략 테스트 점수가 이렇게 나옵니다.
Yona 구성
yona-run.sh
참고: https://github.com/yona-projects/yona/blob/master/restart.sh
sync-to-yona1.sh
yona2 서버랑 yona1 서버는 rsync를 이용해 서로 상호 파일 sync 하도록 만들어 놓았습니다.
is-alive-bot.sh
서버 상태에 대한 알람은 Telegram Bot을 통해서 알람을 받게 만들어 놓았습니다.
참고:
예를 들어 업데이트시에 메인서버인 Yona1을 잠시 죽이면 아래처럼 메시지가 옵니다.![1290636349781.png](../wiki/files/1275/1290636349781.png)
그 외는 보통 일반적인 서버 설정들을 해 놓았습니다. 이를테면 Dos 공격막기 위한 iptable 처리나 Ban처리(fail2ban), ssh 설정, id/pw를 통한 로그인 금지 등등 같은 것들요.
적고보니 별건 없네요 ㅎ
--- attachments --- 62092177716.png 1344702792288.png 1290636349781.png