2009-09-02 2 views
0

필자는 손으로 구축 한 복제를 MySQL 및 통합 복제 솔루션으로 사용하고 있습니다. 산발적 인 네트워크 연결이있는 4 개 부서가 있습니다. 각자 데이터베이스의 사본을 가져야하고 데이터베이스를 업데이트 할 수 있어야하므로 링 복제 방법 (A-> B, B-> C, C-> D, D-> A)을 사용하면 최고가 되라. 내가 틀렸다면 나에게 맞춰라!).NAT 링킹 뒤의 MySQL 링 복제

그러나 부서 중 3 개가 외부 세계에 공개 연결되어 있지만 NAT 뒤에 있기 때문에 포트를 전달할 기회가 없습니다. 기본적으로 외부 세계에만 연결할 수는 있지만 들어오는 것을 받아 들일 수는 없습니다. 사이. 이 제한으로 링 유형 복제를 설정할 수있는 방법이 있습니까?

답변

0

역방향 터널을 사용하여 NAT 뒤에있는 호스트에 액세스 할 수 있습니다. 는 NAT 뒤에있는 호스트가 호스트 D이며, 호스트 C는 예를 들어 hostc.com의 이름으로 인터넷에서 액세스 할 경우, 역방향 터널 명령은 다음과 같습니다

ssh -nNT -o TCPKeepAlive=yes -R <remote port>:localhost:<local port> [email protected] 

<remote port> 어떤 권한이없는 포트가 될 수 있습니다. 같은 방식으로 호스트 C에

ssh localhost -p 8022 

당신이 호스트 포트 22 (SSH)에 연결할 수 있도록 할 D.

: 당신의 세트 8022-<remote port><local port> 22, 다음 명령을 수행하는 경우 모든 로컬 포트 ​​(web, mysql)를 원격 포트로 터널링 할 수 있습니다. 까다로운 부분은 연결을 유지하는 것입니다 (-o TCPKeepAlive = yes가 도움이 될 것입니다). 그리고 자동으로 다시 연결합니다. 주기적으로 핑 (ping) 할 수있는 bash 스크립트 나 ssh 프로세스를 죽이고 다시 실행하는 cron 작업.

링 스타일 복제 설정의 효율성에 관해서는 조금이라도 생각하지 못했습니다. (