利用Docker建立的本地MongoDB与位于EC2上的MongoDB进行复制集搭建

在不同的机器之间,不属于同一个网络的情况下,组装副本集的方法概述。

简单来说就是通过端口转发实现的。

情况

    • EC2上に構築したMongoDBと自宅サーバのMongoDBとでレプリカセットを組みたい

 

    • それぞれDockerでMongoDBは構築している

 

    双方向にSSHは可能

方法 (Yarikata)

在一个EC2实例上分别创建MongoDB的Primary和Arbiter容器,并在家庭服务器上创建Secondary容器的情况下。

37016是仲裁者
37017是主要的
37018是次要的

在EC2上创建隧道连接到家中的服务器。

这次我们使用了autossh,但是使用普通的ssh也能够以同样的方式进行。
需要注意的是,如果没有-g选项,无法从容器内部进行访问。

autossh -M 0 -N -f -C -g my_home@example.com -L 37018:localhost:37018

2. 从家庭服务器建立到 EC2 的隧道连接

autossh -M 0 -N -f -C -g ec2@example.com -L 37017:localhost:37017 -L 37016:localhost:37016

3. 复制品套装的构建

在主要的MongoDB中,进行以下设置。
172.17.0.1是从Docker容器中看到的主机的IP地址。

config={_id:"mongo-set", members: [ { _id:0, host:'172.17.0.1:37016', "arbiterOnly":true }, { _id:1, host:'172.17.0.1:37017' }, { _id:2, host:'172.17.0.1:37018'} ] }
rs.initiate(config)

4. 成功了?

广告
将在 10 秒后关闭
bannerAds