Parallels 호스트 MongoDB를 localhost로 접속

저는 개인 개발 장비로 MacBook Pro를 2년 정도 사용하고 있습니다. Node.js와 Java 개발을 하거나 MongoDB, RabbitMQ, Storm, Redis등의 도구를 설치하고 사용하기에 OS X는 만족스러운 환경을 제공해줍니다. 물론 Windows에서도 가능하지만 개인적인 경험으로는 OS X가 환경 구축하기에 조금 더 수월했던 것 같습니다.

하지만 전 오랜 시간을 Visual Studio의 노예로 살아왔고 여전히 .NET 프로그래밍을 즐깁니다. 다행히도 Parallels가 있기에 전력 소모가 심하긴 하지만 MacBook에서도 Visual Studio를 사용하기에 큰 불편함은 없습니다.

최근에는 MongoDB를 사용하는 ASP.NET 응용프로그램을 개발할 일이 생겨서 개발환경을 준비하고 있습니다. 여기서 MongoDB와 관련되어 고려해야 할 것이 하나 있는데, 상황이 이렇습니다.

  1. 함께 작업하게 될 다른 프로그래머들은 Windows 장비를 사용합니다.
  2. 그들이 사용할 개발용 MongoDB는 각자의 장비에 설치되기 때문에 호스트 이름이 localhost입니다.
  3. 반면 전 호스트 OS(OS X)에 이미 MongoDB 인스턴스가 구동되고 있지 때문에 게스트 OS(Windows)에 또 다시 MongoDB를 설치하고 싶지 않습니다.
  4. 지금의 경우 공유 네트워크를 사용하고 있고 호스트 IP는 10.211.55.2입니다.
  5. 그렇다고 해서 소스 코드를 제출하거나 가져올 때 마다 MongoDB 연결 문자열을 수정하는 건 매우 귀찮고 결정적으로 영리해 보이지 않습니다.

그래서 게스트 OS에서 특정 호스트 포트에 localhost 이름으로 접속할 수 있도록 설정해 봤는데 몇 가지 간단한 작업만 해주면 됩니다.

우선 호스트 OS에서 구동되는 MongoDB가 공유 네트워크 상의 IP를 바인딩 하도록 합니다.

$ mongod --bind_ip 127.0.0.1,10.211.55.2

그 다음 게스트 Windows에서 명령 프롬프트나 Windows PowerShell을 관리자 모드로 실행하고 netsh를 사용해 127.0.0.1 IP의 MongoDB 접속 포트(기본 값은 27017)에 대한 호스트로의 프록시를 설정합니다.

> netsh interface portproxy add v4tov4 listenport=27017 listenaddress=127.0.0.1 connectport=27017 connectaddress=10.211.55.2

> netsh interface portproxy show all

Listen on ipv4: Connect to ipv4:

Address Port Address Port

--------------- ---------- --------------- ----------

127.0.0.1 27017 10.211.55.2 27017

텔넷으로 localhost:27017에 접속 가능한지 테스트합니다.

> telnet localhost 27017

마지막으로 ASP.NET 응용프로그램의 web.config에 localhost를 호스트 이름으로 사용하는 MongoDB 연결 문자열을 추가하면 응용프로그램은 호스트 OS의 MongoDB에 접속할 수 있습니다.

<add name="MongoServerSettings" connectionString="mongodb://localhost/…" />

이제 같은 코드를 사용하여 각자의 환경에서 개발을 진행할 수 있게 되었습니다. 유사한 작업을 RabbitMQ나 Redis에도 동일하게 적용할 수 있겠죠.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중