记录一次docker集群中搭建mongodb副本集
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: false net: bindIp: 127.0.0.1 port: 27017 storage: dbPath: /data/db systemLog: #destination: file #path: log/mongo27017.log logAppend: true storage: journal: enabled: true replication: 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 admin switched 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
再次启动,成功。
进入某一容器执行副本集链接操作,系统提示已成功连接到副本集
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
企业上云之机房和BGP带宽篇(四)
小编打算边用一些阿里云官方文档提供的文字描述,再加上自己的理解,尽量用白话来进行比较,并提醒一些值得注意的地方。 国内地域 地域通常按照数据中心所在的城市进行划分,比如说华东1就是杭州,华东2是上海;华北2是北京;华南1是深圳。 这些地域数据中心提供8线 BGP 骨干网线路 网络能力覆盖全国,提供高速稳定的中国大陆访问。在基础设施、BGP 网络品质、服务质量、云服务器操作使用与配置等方面,阿里云国内地域数据中心没有太大区别。 之前说的传统运营商机房一般都是BGP双线或三线,阿里云是8线,所以覆盖全国用户的能力是更强了。这里小编还是要多说一句,BGP不仅仅是跨网访问更快了,而且资源利用率也高了很多。原来,一条线路访问另一线路往往要经过很多层路由,但实现BGP以后就像进入了高速公路。原来带宽的利用率一般在40%左右,实现BGP后能达到80%以上。因此,原来10M独享带宽的速度,通过BGP只需要5M就可以满足,提升效率的同时也节省了成本。这样能明白不? 阿里云机房,是中国最大的5A 级机房之一。2T(2000G)出口带宽、网络智能调度。避开高负荷通路,承载淘宝双11期间数十亿的访问量!久经考...
- 下一篇
Docker 安装ELK之(2)
先安装Docker [root@jiaxin-ceshi src]# curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 启动docker [root@jiaxin-ceshi src]# service docker start Redirecting to /bin/systemctl start docker.service [root@jiaxin-ceshi src]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@jiaxin-ceshi src]# docker search elk NAME DESCRIPTION STARS OFFICIAL AUTOMATED sebp/elk Collect, search and visualise log data with … 734 [OK] qnib/elk Dockerfile providing ELK services (Elasticse…...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Mario游戏-低调大师作品