구조가 좀 복잡하다…
모바일 → webapp server -(proxy)→ 필스너 서버 -(proxy)→ webapp server -(proxy)→ 디지털카드 api server
디지털카드 api server -(proxy res)→ webapp server -(proxy res)→ 필스너서버 -(proxy res)→ webapp server → 모바일
resolver 10.20.30.40 valid=10s;
server {
location / {
set $talk_pilsner "talk-pilsner.kakao.com";
proxy_pass http://$talk_pilsner;
}
}가장 간단한 방법이지만 가장 유연성이 떨어지는 방법이며 다음과 같은 단점이 있다.
server {
location / {
proxy_pass http://talk-pilsner.kakao.com;
}
}로드 밸런싱 알고리즘을 지정할 수 있다. (ex> least_conn)
max_fails 를 지정하여 연속 요청이 지정한 횟수에 다다르면 서버가 다운 된것으로 표시.
다음과 같은 단점이 여전히 존재
upstream talk_pilsner {
least_conn;
server talk-pilsner.kakao.com max_fails=3;
}
server {
location / {
proxy_pass http://talk_pilsner;
}
}도메인 이름을 다시 확인하는 빈도를 제어할 수 있다.
resolver valid 설정을 통해 지정된 시간마다 도메인 이름을 다시 확인 하도록 할수 있다.
도메인 이름을 확인 할 수 없을때 nginx 재시작 없이 서비스 탐색을 재시도 하기때문에 첫번째 방법의 두가지 단점을 보완할수 있다.
단, 로드 밸런싱 알고리즘을 지정 할 수 없다.
nginx plus를 사용하지 않는다면 가장 유연성이 높은 방법이다.
resolver 10.20.30.40 valid=10s;
server {
location / {
set $talk_pilsner "talk-pilsner.kakao.com";
proxy_pass http://$talk_pilsner;
}
}