제 상황은 현재 WebSocket 수신기가있는 서버 측에서 Node.js를 사용하는 온라인 응용 프로그램을 작성하고 있다는 것입니다. 우리는 두 개의 다른 부분을 가지고 있습니다 : 하나는 페이지를 제공하고 node.js를 사용하고 + ejs를 표현하고, 다른 하나는 웹 소켓 용 socket.io 라이브러리 만 포함하는 완전히 다른 응용 프로그램입니다. 그래서 여기 웹 소켓 부분의 확장 성 문제가 있습니다.웹 소켓을위한 쿠키 기반로드 균형 조정?
우리가 발견 한 한 가지 해결책은 서버간에 redis와 소켓 정보를 공유하는 것이지만, 아키텍처 때문에 다른 많은 정보를 공유해야하기 때문에 서버에 막대한 오버 헤드가 발생합니다.
이 소개 이후, 제 질문은 - 웹 기반의 쿠키 기반로드 밸런싱을 사용할 수 있습니까? 따라서 cookie server = server1을 가진 사용자의 모든 연결은 항상 server1로 전달되며 cookie server = server2를 가진 모든 연결은 server2와 연결되며 해당 쿠키가없는 연결은 가장 바쁜 서버보다 적을 것입니다.
업데이트 : 하나의 '답변'이 말하듯이 - 예, 이것이 존재한다는 것을 알고 있습니다. 그 이름이 끈끈한 세션이라는 것을 기억하지 못했습니다. 그러나 질문은 - 그것이 웹 소켓에서 작동 할 것인가? 가능한 합병증이 있습니까?
이것은 매우 흥미가있는 질문입니다. 브라우저에서 들어오는 연결의로드 밸런싱 문제 (서버 중 하나를 누르고 서버와 연결될 것입니다. 백엔드에서 실제로 서버에 어떻게 밀어 넣을지에 관심이 많습니다. 마찬가지로, 나는 실제 작업을 수행하는 백엔드 서버를 가지고 있으며 소켓을 통해 웹 소켓 서버에 메시지를 푸시합니다. 클러스터가 있으면 밀어 넣을 서버를 어떻게 알 수 있습니까? 현재의 생각은 열려있는 모든 연결 목록을 중앙 DB의 어딘가에 보관하는 것입니다. 이것이 최선의 방법인지는 확실하지 않습니다. – KOHb
@KOHb 소켓 서버 뒤에 추가 백엔드가 없습니다. 제 경우에는 훨씬 더 간단합니다. 그러나 당신이 말하고자하는 바는이 목적을 위해 Redis 서버를 사용하려고 노력할 것입니다. – AlexKey