5개의 시스템에 서로 다른 프로젝트를 배포하지 않으면 업그레이드가 종료될 수밖에 없다고 생각하는 것은 잘못된 것입니다. 5개의 머신에 동일한 프로젝트를 배포한다는 의미입니다. 그런 다음 업그레이드할 때 서비스에 영향을 주지 않는 방법을 고려해야 합니다. 그러면 여기서 질문이 5개의 머신에 배포됩니다. 머신에서는 어떻게 했는지에 따라 조정하면 됩니다. 5 머신을 4 머신으로 변경한 다음 업그레이드가 성공한 후에 다시 추가하세요. 업그레이드 프로세스를 수행한 다음 캐시 시간을 조정하면 머신이 5개 있고 캐시가 없습니다. . .
영향을 전혀 끼치지 않는 것은 불가능합니다. JD.com을 관찰해 보면 아침 일찍 서버가 업그레이드되는 것을 볼 수 있습니다. , 메뉴를 열 수 없고 아무것도 나타나지 않습니다. 네, 계속 보고 돌았지만 콘텐츠가 나오지 않았습니다. 그래서 기본적으로 업그레이드할 때 서버는 콘텐츠를 표시하지 않는 친숙한 인터페이스로 전환했다가 업그레이드 후에 다시 전환합니다.
응답이 없을 뿐입니다(tcp 연결이 중단된 것 같습니다). 구성을 전환할 때 nginx를 정상적으로 다시 시작할 수 있습니다. 이렇게 하면 백엔드를 제거하고 다시 추가할 수 있습니다.
그러나 "액세스에 영향을 주지 않고" 이 문제를 해결해야 할 뿐만 아니라 이전 버전의 프런트 엔드와 새 버전의 서버를 공유 가능하게 만들어야 합니다.
더러운 데이터도 또 다른 문제입니다. 모든 요청이 정상적으로 종료될 것이라고 기대해서는 안 되며, 더티 데이터를 정리하는 메커니즘이 항상 있어야 합니다(현장 또는 이후).
서버가 단계적 재시작을 지원하는 경우 더욱 편리합니다. 원활한 재시작은 직접 구현하거나 프레임워크 또는 라이브러리에서 제공할 수 있습니다.
5개의 시스템에 서로 다른 프로젝트를 배포하지 않으면 업그레이드가 종료될 수밖에 없다고 생각하는 것은 잘못된 것입니다. 5개의 머신에 동일한 프로젝트를 배포한다는 의미입니다. 그런 다음 업그레이드할 때 서비스에 영향을 주지 않는 방법을 고려해야 합니다. 그러면 여기서 질문이 5개의 머신에 배포됩니다. 머신에서는 어떻게 했는지에 따라 조정하면 됩니다. 5 머신을 4 머신으로 변경한 다음 업그레이드가 성공한 후에 다시 추가하세요. 업그레이드 프로세스를 수행한 다음 캐시 시간을 조정하면 머신이 5개 있고 캐시가 없습니다. . .
업그레이드는 대개 아침 일찍 이루어집니다. 문제가 발생하더라도 그다지 큰 영향을 미치지 않기 때문입니다.
서버 밸런싱 및 다운그레이드, 업그레이드, 다시 업을 담당합니다
영향을 전혀 끼치지 않는 것은 불가능합니다. JD.com을 관찰해 보면 아침 일찍 서버가 업그레이드되는 것을 볼 수 있습니다. , 메뉴를 열 수 없고 아무것도 나타나지 않습니다. 네, 계속 보고 돌았지만 콘텐츠가 나오지 않았습니다. 그래서 기본적으로 업그레이드할 때 서버는 콘텐츠를 표시하지 않는 친숙한 인터페이스로 전환했다가 업그레이드 후에 다시 전환합니다.
하나씩 업그레이드하고 업그레이드 과정에서 트래픽을 다른 서버로 보냅니다
저희 프로젝트에서는 릴리스 및 프로세스 관리를 위해 pm2를 사용합니다
게시 시 사용자에게 영향을 미치지 않습니다.
핫 배포
그레이스케일 출시