Mongodb的单机安装
1.下载镜像
docker pull mongo:latest
2.启动镜像
docker run -itd --name mongo -p 27017:27017 mongo --auth
3.进入容器
docker exec -it mongo /bin/bash
4.进入mongo
Mongodb #进入mongo shell
5.切换到admin数据库
use admin
6.创建超级用户
db.createUser({ user: ‘root’, pwd: ‘123456’ , roles: [{ role: ‘root’, db: ‘admin’ }] })
7.配置文件开启权限验证
db.auth(‘root’,‘123456’) #此时验证账号如果报错,退出重新进入即可
Mongodb集群安装一主两从
1.更改三台机器的hosts文件
vim /etc/hosts/
192.168.163.130 test0
192.168.163.131 test1
192.168.163.132 test2
2.下载容器
docker pull mongo:latest
3.运行主机容器
docker run -itd --name mongo-primary --network=host mongo --bind_ip localhost,192.168.163.130,test0 --replSet mongo-rep
4.运行从机容器
docker run -itd --name mongo-secondary1 --network=host mongo --bind_ip localhost,192.168.163.131,test1 --replSet mongo-rep
5.运行从机容器
docker run -itd --name mongo-secondary2 --network=host mongo --bind_ip localhost,192.168.163.132,test2 --replSet mongo-rep
6.连接主机容器
docker exec -it mongo bash
7.连接mongodb
mongosh
8.配置主从信息
config = {_id:“mongo-rep”, version:1, members:[{_id:0, host:“192.168.163.130:27017”, priority:6}, {_id:1, host:“192.168.163.131:27017”, priority:3}, {_id:2, host:“192.168.163.132:27017”, priority:2}]}
9.初始化配置
s.initiate(config)
10.检测是否是主机和从机
rs.isMaster()
11.当停止主机后,从机1变成主机
12.重启主机后,主机又变为主机,从机1从主机变为从机
13.遇到的问题
问题1.运行到上便第三步的时候报错,报错信息为:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting
解决办法:为升级内核
1.1添加 ELRepo仓库
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
1.2启用仓库后,列出可用的kernel.related包
yum --disablerepo=“*” --enablerepo=“elrepo-kernel” list available
1.3接下来安装最新的稳定版内核
yum --enablerepo=elrepo-kernel install kernel-ml
1.4设置默认的启动内核 根据/boot/目录内的文件,自动创建GRUB内核配置开机选单
grub2-mkconfig -o /boot/grub2/grub.cfg
1.5查看可选的GRUB内核配置开机选单
awk -F’ ‘$1=="menuentry " {print i++ " : " $2}’ /etc/grub2.cfg
1.6通过命令指定默认的内核
grub2-set-default 0
1.7编辑/etc/default/grub文件,指定默认运行的内核版本
GRUB_DEFAULT=0
1.8重启验证
reboot
uname -r
问题2.运行到第九步初始化配置的时候报错,报错信息为:
MongoServerError: replSetInitiate quorum check failed because not all propos
解决办法是:关闭防火墙并重启三台机器
方法一:暂时关闭防火墙
systemctl stop firewalld
Reboot
方法二:永久关闭防火墙(慎用)
systemctl disable firewalld
Reboot