서버 변경-새 IP로 리디렉션 = 다운 타임 없음?


13

웹 사이트의 서버를 변경하고 있습니다. 기존 서버의 IP를 새 서버로 이동할 수 없습니다. 가동 중지 시간이 없어 다음 작업을 수행 할 계획이라면 누군가 작동하는지 확인하십시오.

  1. 새 서버를 설정하고 새 IP를 듣습니다.
  2. 기존 서버는 모든 트래픽을 새로운 IP로 리디렉션
  3. 새 IP를 가리 키도록 DNS 레코드 변경

내 논리에 따르면 이전 상자에서 새 IP로 리디렉션하면 브라우저에 도메인 이름이 표시되지 않지만 새 IP가 표시됩니다. 사용자가 브라우저에서 도메인 이름을 볼 수 있도록 새 IP로 리디렉션하고 HOSTNAME과 함께 전송하는 방법이 있습니까?

사이트가 지속적으로 사용 중이므로 전파하는 동안 데이터베이스가 새 서버와 기존 서버간에 동기화되지 않으므로 DNS 설정을 변경하는 것만으로는 수행되지 않기 때문에이 작업을 수행하고 있습니다.


3
당신은 아마 그것을 생각했지만 언급하지 않았습니다 : 관련 DNS 항목의 TTL을 줄이는 것을 잊지 마십시오.
cjc

이 웹 사이트는 사람 만 사용합니까, 아니면 연결될 수있는 응용 프로그램이 있습니까? 예를 들어 웹 서비스를 사용하십니까? 이 경우에도 가동 중지 시간이 발생할 수 있습니다. Java는 DNS 결과를 캐시하고 새 DNS 항목이 다시 시작될 때까지 존중하지 않을 수 있습니다. 온라인으로 오랫동안 전달을 유지할 수 없다면. 또한 암호화 리디렉션을 사용하는 경우 몇 가지 추가 단계가 필요합니다.
Bram

어떤 종류의 데이터베이스를 사용하고 있습니까? DNS를 변경하면 다운 타임 문제가 해결되지 않는다는 점이 맞습니다. 내 작업에서 항상이 작업을 수행하고 자세한 단계를 제공 할 수는 있지만 동일한 서버에 데이터베이스를 설치하면 일반적으로 쉽게 끝나는 사소한 문제가 발생합니다. 왔다.
Anthony Fornito

또한 어떤 종류의 서버에 Windows 또는 Linux가 있습니까? 대답 중 일부를 읽은 후에는 모두 Linux를 가리 키지 만 IIS에서 Linux의 풍미를 사용한다는 질문에는 실제로 아무것도
보이지 않습니다.

답변:


19

나를 위해 일한 방법은 다음과 같습니다.

  1. 파일 및 데이터베이스를 새 서버와 동기화하십시오.
  2. 차단 직전에 재 동기화를 수행하십시오.
  3. 새 서버를 가리 키도록 DNS를 변경하십시오.
  4. DNS 전파가 완료 될 때까지 이전 IP로 들어오는 요청을 새 서버로 전달하십시오.

4 단계를 수행하는 방법은 다음과 같습니다.

Linux 서버에서 IPTable을 구성하여 포트 80 (기본 웹 서버 포트)으로 들어오는 모든 트래픽을 IP 서버로 리디렉션합니다 122.164.34.240. 첫 번째 단계는 이러한 종류의 전달이 가능하도록 Linux 상자를 설정하는 것입니다. 터미널 창을 열고 루트 사용자로 로그인 한 후 다음 명령을 실행하십시오.

# echo 1 >/proc/sys/net/ipv4/ip_forward

다음 단계는 트래픽을 새 서버로 리디렉션하도록 IPTables에 지시하는 것입니다.

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 122.164.34.240

IPTables 마술이 일어나는 곳입니다. 세 번째이자 마지막 단계에서는 IPTables가 새 서버의 포트 80에 대한 연결 시작을 이전 서버에서 온 것처럼 다시 쓰도록 지시합니다.

# iptables -t nat -A POSTROUTING -p tcp -d 122.164.34.240 --dport 80 -j MASQUERADE

마지막 단계는 새 서버의 웹 서버에 클라이언트 시스템에서 연결이 이루어지고 있다고 알리지 않으면 이전 서버에서 시작된 것으로 생각하기 때문에 필요합니다.

데이터베이스 및 전자 메일 서버 포트에 대해서도이 작업을 반복 할 수 있습니다.


-D 대신 -A를 의미 했습니까 ?? -D는 규칙을 삭제하는 것입니다. 어쨌든, 이전 상자가 더 이상 웹을로드하지 않기 때문에 리디렉션을 시도하고 있지만 새 웹이 표시되지 않기 때문에 실패합니다. 연결 시간이 초과되었다고 말합니다. 다른 설정이 있습니까? 새 상자에 뭔가 있을까요?
Denis Pshenov

신경 쓰지 마, 고쳤다! 내 방벽이 리디렉션을 차단하고 있음이 밝혀졌습니다. 나는 규칙에서 그것을 허용했다.
Denis Pshenov

죄송합니다. 당신 말이 맞아요. -D가 아니라 -A였습니다. 게시물을 업데이트했습니다.
Shain Padmajan

1
단지 경고-iptables를 사용하는 접근법은 모든 트래픽을 새 사이트로 전달하지만 도착하면 원래 브라우저의 실제 IP 주소가 아닌 기존 서버에서 시작된 것으로 나타납니다. 이것은 지리적 분석과 같은 것들을 망칠 것입니다. 특히, 포트 25를 전자 메일로 전달하려는 유혹을받지 마십시오. 기존 서버를 통한 스패머의 메일은 새 서버에서 마치 자신의 컴퓨터 중 하나에서 온 것처럼 처리되므로 실수로 오픈 릴레이를 만들 수 있습니다 신뢰할 수 있고 릴레이 할 수 있습니다.
Gary Bilkus

@ShainPadmajan하지만 후반,이 경우에도 2015 년에 매력처럼 일, 대단히 감사합니다
Abhishek Madhani

5

여러 개의 A 레코드를 추가 할 수도 있습니다. 예를 들어 Google은 이것을 사용하여 nslookup 출력을 확인합니다.

Name:       google.com
Addresses:  209.85.148.101
            209.85.148.102
            209.85.148.113
            209.85.148.138
            209.85.148.100
            209.85.148.139

도메인에 여러 개의 A 레코드를 추가하면 방문자는 여러 개의 IP를 받고 순서대로 시도합니다. 하나가 실패하면 클라이언트는 다음 단계로 이동하여 시도합니다.

24 시간 동안 추가 A 레코드로 새 IP를 설정하고 새 서버를 시작하고 이전 서버를 종료하고 IP를 제거하십시오.


단, 새 서버가 시작될 때까지 A 레코드를 추가하지 마십시오. :)
Aaron Copley

@ 아론 : 왜 안돼? A 레코드를 추가하는 데는 여러 시간이 걸리며 (완전히 활성화 되려면 최대 24 시간) 두 번째 서버가 작동하지 않는 한 클라이언트는 첫 번째 레코드를 선택합니다.
JapyDooge

영역에 대한 TTL이 만료되면 리소스에 대한 네임 서버를 다시 쿼리하여 두 가지 답변을 모두받습니다. 새 A 레코드를 추가하고 서버를 시작하기 위해 임의의 시간을 기다리면 아직 사용할 수없는 호스트로 이미 문제가 해결되었을 수 있습니다. 새 서버가 이미 설치되어 있으면 걱정할 필요가 없습니다.
Aaron Copley

1

다른 옵션은 VIP (가상 IP)를 사용하는 것입니다. 따라서 귀하의 단계는 다음과 같습니다.

  1. 새 서버를 설정하고 새 IP를 청취하십시오.
  2. 기존 서버에 VIP를 추가하십시오.
  3. VIP 레코드를 가리 키도록 DNS 레코드를 변경하십시오. 지금까지 모든 트래픽은 여전히 ​​VIP를 사용하여 기존 서버로 전송됩니다.
  4. 준비가되면 VIP를 새 서버로 옮깁니다.
  5. 선택적으로 DNS를 새 서버 IP로 변경하고 DNS에서 VIP를 제거 할 수 있습니다.

나는 당신의 해결책을 좋아합니다. 그러나 VIP와 VIP를 얻는 방법에 익숙하지 않습니다. 올바른 방향을 가리킬 수 있습니까?
Denis Pshenov

정말 간단합니다. like와 같은 명령 ifconfig eth0:0 <ip> <mask> up은 IP로 구성된 하위 인터페이스를 작성하고 ifconfig eth0:0 down비활성화하기에 충분합니다.
Khaled

0

데이터베이스 복제에 대해 언급 했으므로 다음을 수행해야합니다.

  1. 두 서버의 데이터베이스간에 복제를 설정하십시오.
  2. 컷 오버 동안 새 서버의 DB를 기본 서버로, 기존 서버를 읽기 전용으로 만듭니다.
  3. 응용 프로그램의 데이터베이스 연결 문자열을 이전 서버와 새 서버의 새 서버를 가리 킵니다. 사이트에서 세션을 사용하는 경우 세션이 DB에서 유지되는지 확인하십시오.
  4. DNS의 IP 주소를 새 서버로 변경하십시오.
  5. 최소 48 시간 동안 두 서버를 계속 실행하십시오.

0
  1. 새 서버를 설정하고 새 IP를 듣습니다.
  2. 그런 다음 투명 리디렉션을 구성하십시오. 이전 서버에서 rinetd를 설치하십시오.

rinetd.conf에서 :

OLD_SERVER_IP 80 NEW_SERVER_IP 80
  1. 새 IP를 가리 키도록 DNS 레코드 변경

rinetd를 설치하고 /etc/rinetd.conf를 새 설정으로 변경하고 /etc/init.d/rinetd restart로 다시 시작했지만 리디렉션되지 않습니다. 또한 /var/run/rinetd.log 로그에 아무것도 표시되지 않음
Denis Pshenov

iptables-savecat /etc/sysctl.conf | grep ip_forward주십시오.
yadaya

0

웹 서버에서 HA-Proxy를 사용할 수 있습니다.이 중 하나가 유지 관리 모드로 전환되면 보조 서버가 대신합니다.


-1

해야 할 일에 대한 목록은 상당히 합리적입니다.

예를 들어, 아파치를 사용한다고 가정하면, 이전 서버의 아파치에서 이와 같은 작업을 수행 할 때 :

redirect permanent / http://newserver.example.com

사용자는 이전 사이트를 탐색 할 때 브라우저에서 새 도메인을 보게됩니다. 이 경우 브라우저가 실행되는 동안 리디렉션도 영구적입니다.

따라서 다른 변경 사항 외에도 웹 서버에서 일종의 리디렉션을 구현하는 한 괜찮습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.