2011-10-04 3 views
3

저는 프록시로 작동하는 레일 애플리케이션을 작성하고 있습니다. 따라서 여기서는 프록시라고합니다. 사용자는 웹 UI를 통해 자신의 서버를 관리 할 수 ​​있어야하며, 서버가 다운 된 경우에도 항상 실행되고 실행되어야합니다.연결 관리자는 레일에 어디에 적합합니까?

이렇게하려면 프록시가 항상 서버에 열린 연결을 유지해야합니다. 이를 위해 daemonz을 사용하여 백그라운드 프로세스를 만들었습니다.이 프로세스는 서버로부터의 연결을 받아들이고 지속적으로 소켓에서 수신 대기하는 스레드를 생성합니다.

이제는 두 가지 문제가 있습니다. 레일즈 컨트롤러에서이 소켓으로 메시지를 보낼 수 있어야하고 올바른 서버에 도달하기 위해 사용할 소켓을 알아야합니다. 나는 이것을 처리하기 위해 ConnectionManager 클래스를 사용할 계획 이었지만 레일 클래스 구조에 맞는 클래스가 어디에 있는지 알지 못했고 두 프로세스에서 사용할 수있는 소켓과 소켓을 만드는 방법을 모르겠습니다.

  1. 연결 관리자가 속한 않습니다 : 두 가지 질문을하게

    ?

  2. 프로세스간에 연결 관리자와 소켓을 어떻게 공유합니까?

첫 번째 질문에 대한 답을 알고있는 경우 먼저 대답하십시오. 두 번째 질문을 위해 별도의 게시물을 만들어야 할 수도 있습니다.

답변

0

이것은 Rails/Ruby에서 빌드하는 것이 유용한 것처럼 보이지 않습니다.

더 유용한 것은 haproxy와 같은 기존로드 밸런서/프록시를 커버 아래에 구성한 Rails 관리 응용 프로그램이 더 유용 할 수 있습니다.

Rails 앱에서 서버/포트/구성을 매핑 한 다음이를 haproxy 구성으로 투영하고로드 밸런서를 다시 시작할 수 있습니다. 시작할 수있는 가장 좋은 곳은 haproxy-tools gem으로, haproxy 설정 파일을 구문 분석하거나 생성 할 수 있습니다.

로드 밸런서를 다시 작성하는 것은 의미가 없으며 Ruby/Rails는 그렇게 할지라도 가난한 기술 스택입니다.

관련 문제