목적은 다음과 같다. A 서버가 SXX 서버들에 API 데이터를 전송을 하는데, 서버호스팅의 트래픽이 몰리는 문제가 있다. 그래서 트래픽을 분산하고자 한다.가능한 코드를 적게 고쳐서 분산을 하고 싶다.

A -> SXX 로 바로 보내는 것이 아니라,  A -> B(proxy) -> SXX 로 보내게 된다.
그래서 트래픽을 A / B 가 나누어서 나오게 된다.

SXX.domain.co.kr 으로 원래 가던 트래픽이 SXX.domain.kr 으로 쏴주면 proxy 를 거쳐 원래주소로 가게된다.(SXX.domain.kr 은 B 서버로 설정해준다)

B서버의 nginx 설정은 다음과 같다.

server {
        listen 80;
        server_name ~^(?<subserv>.+)\.domain\.kr$ ;
        location / {
                resolver 168.126.63.1 ;
                proxy_pass http://${subserv}.domain.co.kr ;
                proxy_set_header Host $subserv.domain.co.kr ;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

위와 같은 방식으로 해준다.


위 진한 부분의 resolver 를 주지 않으면 proxy_pass 의 ${subserv} 부분때문에 다음과 같은 에러가 난다.

2014/10/17 13:38:11 [error] 9577#0: *1 no resolver defined to resolve s13.domain.co.kr, client: 11.22.33.44, server: s13.domain.kr, request: "GET /aaa HTTP/1.1", host: "s13.domain.kr"
2014/10/17 13:40:44 [error] 15697#0: *1 no resolver defined to resolve s13.domain.co.kr, client: 11.22.33.44, server: ~^(?<subserv>.+)\.domain\.kr$, request: "GET /aaa HTTP/1.1", host: "s13.domain.kr"
2014/10/17 13:47:20 [error] 19726#0: *3 no resolver defined to resolve s13.domain.co.kr, client: 11.22.33.44, server: ~^(?<subserv>.+).domain.kr$, request: "GET /aaa HTTP/1.1", host: "s13.domain.kr"
2014/10/17 13:50:41 [error] 26918#0: *1 no resolver defined to resolve domain.co.kr, client: 11.22.33.44, server: ~^(?<subserv>.+)\.domain\.kr$, request: "GET /aaa HTTP/1.1", host: "s13.domain.kr"
2014/10/17 13:52:07 [error] 27502#0: *1 no resolver defined to resolve domain.co.kr, client: 11.22.33.44, server: ~^(?<subserv>.+)\.domain\.kr$, request: "GET /aaa HTTP/1.1", host: "s13.domain.kr"





반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

casperjs 로 phantomjs 를 띄워서 사용하고 있다.

가끔 https 사이트들이 다음과 같은 에러가 발생한다.

[warning] [phantom] Loading resource failed with status=fail: https://www.jcrew.com/baby/coveralls/PRDOVR~A8273/A8273.jsp

보통 SSL 관련 되어 있다.

그런경우 옵션을 주어 해결한다. 

--ssl-protocol=tlsv1 실패

--ssl-protocol=any  이건 성공

--ignore-ssl-errors=yes  실패



참고 curl 등에서도 비슷한 이유로 수집이 안되는 경우 다음처럼 옵션을 준다.

            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

서버가 crash 되면서 mysql 데이터가 깨진듯 하다.

이런.

다음과 같은 메시지를 뿌리면서 실행이 안된다.

일단 force recovery 로 해봐야 겠다.

http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html

[mysqld]
innodb_force_recovery = 1

위 옵션을 넣고, 재실행해 본다.

잘 되야 할텐데...


1차실패 - 옵션값 1 을 주니 실패.

2차시도 - 옵션값을 6 으로 해봤다.

실행까지는 되는데, 로그에 다음과 같은 메시지가 계속 나온다.

140915 12:46:04  InnoDB: Waiting for the background threads to start
140915 12:46:05  InnoDB: Waiting for the background threads to start

찾아보니, 다음 옵션을 추가하라고 한다.

innodb_purge_threads=0


mysqlcheck --all-databases 를 해본다.

InnoDB: space id 74 did not exist in memory. Retrying an open.
140915 13:24:47  InnoDB: Warning: allocated tablespace 74, old maximum was 9
....
InnoDB: space id 83 did not exist in memory. Retrying an open

다음과 같은 메시지가 나온다.

점점 골치가 아파진다. 나에겐 InnoDB 는 사치인가?


이런 에러도 보인다.

 140915 20:04:43  InnoDB: Assertion failure in thread 140280661518080 in file fsp0fsp.c line 2113



이 방법으로 다시 해봐야 겠다.

http://www.percona.com/blog/2008/07/04/recovering-innodb-table-corruption/







반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

국내/해외 가상서버를 몇개씩 써봤다.

 - 기본조건 : 독립IP 를 할당 받을 수 있어야 한다.
 - 가격이점 : 가격부담이 크지 않아야 한다.

 

클라우드 서버들 조금씩 변하고 있고, 관리의 편리성을 개선하는 방향으로 가는 것 같다.

 

# 국내 가상서버.

  카페24(cafe24)

    1. 평이하다. 설치과정을 수동으로 하는지 설치비를 받는다.
    2. 가격대는 5천원대부터 시작한다.

 

  스쿨호스팅(phps.kr)

    1. 카페24 와 거의 동일하다. 가격대도 비슷함.

 

  스마일서브(cloudv)

    1. 국내에서는 유일하게 자동 설치가 되는 듯 하다.(1~2분내 개통이 되어 긴급대응이 가능하다)
    2. ikvm 이라고 원격서버를 관리할 수 있는 것이 강점.
    3. 물론 단점도 있다. 디스크를 iscsi 로 붙여서 사용하는 방식인데, iscsi 관련 트러블이 간혹 발생한다.
    4. 2015 업데이트 : iscsi 의 문제점을 보완한 SSD 전용 클라우드도 선보였다. (3만원대부터 시작하지만, 성능이 좋다.)

 

  기타 클라우드 : KT / SKT? 등 클라우드. 가격부담으로 제외했다.

 

# 해외 가상서버.

  디지털오션(digital ocean)

    1. 최근 부상하는 다크호스? 어디서 투자를 많이 받았는지 프로모션도 많이 뿌린다.
    2. 자동설치, 미리 준비한 이미지 사용가능, ssh key 등록 가능 등이 마음에 든다.
    3. API 도 제공하는데 아직 써보지는 못했다.
    4. 여러지역(미국, 유럽, 아시아)에 서버를 생성할 수 있는 것도 좋다.(아시아는 좀 더 많아졌으면 좋겠다)

 

  리노드(linode)

    1. 전통강자? 최근부터 쓰긴 했는데, 평이한듯 하지만, 기본기가 탄탄한 듯 하다.
    2. 디지털오션에서 제공하는 대부분이 가능한 것 같다.
    3. SSH key 를 미리 등록하지 못하는 것이 불편하다.

=> 2015.07 ( 독립기념일 신규가입 $20 credit FIREWORKS20 )


  벌쳐(Vultr) - 2015 최근에 추가

    1. 다른 VPS 를 찾다가 발견.
    2. 디지털오션과 흡사한 서비스가 많다.(장점들)
    3. SSH key 를 등록해서 사용할 수 있다.(이건 필수여야 한다)
    4. 특이점은 가격이 좀더 싸고, 비트코인으로 결제할 수 있다는 점.


해외쪽은 가끔가다 이벤트 프로모션을 한다.

 

# 최근에 추가 - 2015-08

  VPSIE - 2015.08 최근에 추가

    1. 한 2개월정도 테스트중.(2015.09)
    2. 디지털오션,벌쳐 등과 비슷함.
    3. SSH key 사용가능.(이건 필수여야 한다)
    4. 심플해서 좋다.

 

[기타 관련글]

괜찮은 VPS호스팅 발견 - vultr.com (20$ 프로모션)

 

 

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

지난번 icinga 로 모니터링 서버를 만들었다.( http://blog.1day1.org/547 )

그런데, 서버가 자주 죽는다. vagrant 로 구축해서 그런가?

아니면 다른 문제일까? vagrant 에 icinga 만 세팅해놨다. icinga 가 불안한가?

좀더 상황을 지켜봐야 겠다.

그냥 리얼서버에 구축해야 할까?




반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,