比如有5台服务器跑了5个node项目,然后前面使用nginx做负载均衡
比如项目访问量很大,然后增加了一些新的功能,项目需要升级 5台服务器逐个升级,怎么能保证在升级的过程中不会影响访问
例如 现在要升级A服务器上的node项目,但是A服务器上有许多请求 如果直接升级的话,请求可能就会没有响应,如果项目涉及到对数据库操作,可能会产生脏数据
我能想到的一种方案是 事先发公告 没有流量的时候再升级
我想请问还没有其它方案,在不影响用户请求的情况下对服务进行升级呢
PHP中文网2017-04-17 16:02:19
응답이 없을 뿐입니다(tcp 연결이 중단된 것 같습니다). 구성을 전환할 때 nginx를 정상적으로 다시 시작할 수 있습니다. 이렇게 하면 백엔드를 제거하고 다시 추가할 수 있습니다.
그러나 "액세스에 영향을 주지 않고" 이 문제를 해결해야 할 뿐만 아니라 이전 버전의 프런트 엔드와 새 버전의 서버를 공유 가능하게 만들어야 합니다.
더러운 데이터도 또 다른 문제입니다. 모든 요청이 정상적으로 종료될 것이라고 기대해서는 안 되며, 더티 데이터를 정리하는 메커니즘이 항상 있어야 합니다(현장 또는 이후).
大家讲道理2017-04-17 16:02:19
서버가 단계적 재시작을 지원하는 경우 더욱 편리합니다. 원활한 재시작은 직접 구현하거나 프레임워크 또는 라이브러리에서 제공할 수 있습니다.
天蓬老师2017-04-17 16:02:19
5개의 시스템에 서로 다른 프로젝트를 배포하지 않으면 업그레이드가 종료될 수밖에 없다고 생각하는 것은 잘못된 것입니다. 5개의 머신에 동일한 프로젝트를 배포한다는 의미입니다. 그런 다음 업그레이드할 때 서비스에 영향을 주지 않는 방법을 고려해야 합니다. 그러면 여기서 질문이 5개의 머신에 배포됩니다. 머신에서는 어떻게 했는지에 따라 조정하면 됩니다. 5 머신을 4 머신으로 변경한 다음 업그레이드가 성공한 후에 다시 추가하세요. 업그레이드 프로세스를 수행한 다음 캐시 시간을 조정하면 머신이 5개 있고 캐시가 없습니다. . .
PHP中文网2017-04-17 16:02:19
영향을 전혀 끼치지 않는 것은 불가능합니다. JD.com을 관찰해 보면 아침 일찍 서버가 업그레이드되는 것을 볼 수 있습니다. , 메뉴를 열 수 없고 아무것도 나타나지 않습니다. 네, 계속 보고 돌았지만 콘텐츠가 나오지 않았습니다. 그래서 기본적으로 업그레이드할 때 서버는 콘텐츠를 표시하지 않는 친숙한 인터페이스로 전환했다가 업그레이드 후에 다시 전환합니다.