RabbitMQ-다운 타임없는 업그레이드를 위해 서버를 어떻게 구성합니까? 해 보이지만 기존 RabbitMQ 클러스터를 업그레이드하거나

문서와 RabbitMQ를 실제로 읽어 보면 RabbitMQ 클러스터를 만드는 것이 간단 해 보이지만 기존 RabbitMQ 클러스터를 업그레이드하거나 패치하려면 전체 클러스터를 다시 시작해야합니다.

대기열, 메시지를 잃지 않고 롤링 업그레이드를 가능하게하기 위해 클러스터링, 삽, 페더레이션 및로드 밸런싱을 결합 할 수있는 방법이 있습니까?



답변

rabbitmq 클라이언트가 끊어진 연결을 허용 할 수 있다고 가정하면 여기에 설명 된 내용을 고려할 수 있습니다 .

우리의 클러스터는 VIP 뒤에 있습니다. 클러스터를 업그레이드하려는 경우 대체 클러스터를 가동시키고 VIP를 대체 클러스터로 전환합니다. 한편, 클러스터간에 메시지를 이동시키는 툴이 있습니다. ‘마스터’클러스터의 업데이트가 완료되면 프로세스가 취소됩니다.


답변

RabbitMQ의 주 버전 또는 부 버전을 다른 버전으로 업그레이드하거나 (예 : 3.0.x에서 3.1.x 또는 2.xx에서 3.xx로) Erlang을 업그레이드 할 때 업그레이드를 위해 전체 클러스터를 중지해야합니다 ( 클러스터는 이와 같은 혼합 버전을 실행할 수 없으므로). 한 패치 버전에서 다른 패치 버전 (예 : 3.0.x에서 3.0.y)으로 업그레이드 할 때는 그렇지 않습니다. 이러한 버전은 클러스터에서 혼합 될 수 있습니다 (3.0.x 시리즈의 이후 버전과 3.0.0을 혼합 할 수는 제외).


답변

@ terence 나도 당신과 같은 신발에 있었다. 난 당신이 호기심에 대한 갈증을 해소 할 수 있다고 생각 여기 . 추신 : 나는 아직 그것을 직접 시도하지 않았습니다.