博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记录一次docker集群中搭建mongodb副本集
阅读量:6843 次
发布时间:2019-06-26

本文共 3507 字,大约阅读时间需要 11 分钟。

1.创建三个装有mongo的docker容器,这里使用docker-compose,配置如下

mongo:    image: mongo    command: mongod -f /etc/mongo.conf    volumes:      - ${DATA_PATH_HOST}/mongo:/data/db      - ${CONF_PATH}/mongo/mongo_yaml.conf:/etc/mongo.conf      - ${CONF_PATH}/mongo/access.key:/etc/access.key    expose:      - 27017    ports:      - 27017:27017    networks:      - backend
mongo2:    image: mongo    command: mongod -f /etc/mongo.conf    volumes:        - ${DATA_PATH_HOST}/mongo2:/data/db        - ${CONF_PATH}/mongo/mongo_yaml.conf:/etc/mongo.conf        - ${CONF_PATH}/mongo/access.key:/etc/access.key    expose:        - 27017    ports:        - 27018:27017    networks:        - backend
mongo3:    image: mongo    command: mongod -f /etc/mongo.conf    volumes:        - ${DATA_PATH_HOST}/mongo3:/data/db        - ${CONF_PATH}/mongo/mongo_yaml.conf:/etc/mongo.conf        - ${CONF_PATH}/mongo/access.key:/etc/access.key    expose:        - 27017    ports:        - 27019:27017    networks:        - backend

其中mongo.conf 为yaml格式的mongodb配置文件,内容如下

processManagement:   fork: falsenet:   bindIp: 127.0.0.1   port: 27017storage:   dbPath: /data/dbsystemLog:   #destination: file   #path: log/mongo27017.log   logAppend: truestorage:   journal:      enabled: truereplication:   oplogSizeMB: 500   replSetName: "r1"   secondaryIndexPrefetch: "all"

执行docker-compose up -d mongo mongo2 mongo3 创建三个mongo容器 并指定副本集 r1

2. 登入任意一台机器的MongoDB执行:因为是全新的副本集所以可以任意进入一台执行;要是有一台有数据,则需要在有数据上执行;要多台有数据则不能初始化。我个人是mongo中有数据但是mongo2和mong3是空的数据库,所以我登录mongo1进行副本集初始化。

    执行命令 docker-compose exec mongo bash 进入容器

    执行命令  mongo  在容器内部连接mongo

    执行一下命令初始化副本集

> use adminswitched to db admin> config = { "_id": "r1", "members": [{ "_id": 0, "host": "mongo:27017", "priority": 1 }, { "_id": 1, "host": "mongo2:27017", "priority": 1 }, { "_id": 2, "host": "mongo3:27017", "priority": 1 }] }{	"_id" : "r1",	"members" : [		{			"_id" : 0,			"host" : "mongo:27017",			"priority" : 1		},		{			"_id" : 1,			"host" : "mongo2:27017",			"priority" : 1		},		{			"_id" : 2,			"host" : "mongo3:27017",			"priority" : 1		}	]}> rs.initiate(config){	"ok" : 1,	"operationTime" : Timestamp(1539830924, 1),	"$clusterTime" : {		"clusterTime" : Timestamp(1539830924, 1),		"signature" : {			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),			"keyId" : NumberLong(0)		}	}}

副本集初始化完成,可以使用命令rs.status()查看当前副本集状态,至此mongodb副本集设置完成

3.加入鉴权机制,如果服务端需要开启auth认证,则在启动时通过keyFile三个节点之间的通信授权

使用命令生成keyFile文件

openssl rand -base64 745 > /docker/conf/mongo/mongo-keyfile

ch

如果服务器启动时加入了参数--keyFile = /docker/conf/mongo/mongo-keyfile  则mongo服务端启动时会自动开启auth,故应先创建账号。

创建了账号  root   pass  auth库为admin  (步骤省略)

停止所有节点,重新启动mongo服务,并加上 --keyFile参数

发现报错

mongo3_1     | 2018-10-24T06:13:06.323+0000 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'

mongo3_1     | 2018-10-24T06:13:06.331+0000 I ACCESS   [main] permissions on /etc/access.key are too open

mongo2_1     | 2018-10-24T06:13:06.591+0000 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'

mongo2_1     | 2018-10-24T06:13:06.605+0000 I ACCESS   [main] permissions on /etc/access.key are too open

mongo_1      | 2018-10-24T06:13:06.609+0000 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'

mongo_1      | 2018-10-24T06:13:06.614+0000 I ACCESS   [main] permissions on /etc/access.key are too open

这是因为keyfile权限问题,执行命令将keyfile权限设置为600

chmod 600 /docker/conf/mongo/access.key

再次启动,成功。

进入某一容器执行副本集链接操作,系统提示已成功连接到副本集

32532d16520fedee8d60a05078c6ea2f426d931c

转载地址:http://tedul.baihongyu.com/

你可能感兴趣的文章
安全研究人员发现可以利用推特控制僵尸网络
查看>>
三种在Linux上创建或扩展交换分区的简单方法
查看>>
LMD Tool:Linux恶意软件检测工具
查看>>
铜缆宽带接入即将走向末路?
查看>>
哪些技术对5G贡献最大?毫米波成工程师追捧之一
查看>>
企业级SaaS服务的现实之路:放弃团队 直指公司
查看>>
你应该成为 Web 开发者的 5 大理由
查看>>
Locky勒索软件是如何利用DGA的?
查看>>
打造自己的 Python 编码环境
查看>>
使用Azure托管磁盘简化云存储管理
查看>>
你需要知道知道这几个因素会不利于关键词排名优化
查看>>
《算法设计编程实验:大学程序设计课程与竞赛训练教材》——2.4 相关题库...
查看>>
《Cocos2D权威指南》——1.5 在设备上运行HelloCocos2D项目
查看>>
不能错过的业务连续性计划步骤【详细】
查看>>
陌陌市值突破50亿美元 多家机构给予增持评级
查看>>
用户发现Windows 10创意者更新不兼容东芝屏幕工具
查看>>
Zayo公司计划在芝加哥开通运营其第四个数据中心
查看>>
北京市金融工作局:大数据重塑未来金融监管方式
查看>>
未来光伏充电桩到底能走多远?
查看>>
论文推荐 | 一种开放域Chatbot的无监督自动评价方法
查看>>