安装前确保所有节点已经完成 基础环境配置
需要设置进程数,编辑配置文件 /etc/security/limits.conf
* soft nproc 204800
* hard nproc 204800
bigdata9(Primary)
、bigdata10(Secondary)
、bigdata11(Secondary)
。/opt/mongodb-linux-x86_64-rhel70-6.0.3
/data/mongo
/data/log/mongodb
/opt/mongosh-1.5.1-linux-x64
安装 MongoDB 之前需要安装 openssl,libcurl,xz-libs
安装 openssl
tar -zxvf openssl-1.1.1q.tar.gz -C /opt
cd /opt/openssl-1.1.1q
./config
make
sudo make install
安装 libcurl
tar -zxvf curl-7.87.0.tar.gz -C /opt
cd /opt/curl-7.87.0
./configure --with-ssl
make
sudo make install
安装 xz-libs
rpm -ivh xz-libs-5.2.4-4.el8.x86_64.rpm
先安装 mongosh
tar -zxvf mongosh-1.5.1-linux-x64.tgz -C /opt
cd /opt/mongosh-1.5.1-linux-x64/bin/
sudo cp mongosh /usr/local/bin/
sudo cp mongosh_crypt_v1.so /usr/local/lib/
然后安装 MongoDB
tar -zxvf mongodb-linux-x86_64-rhel70-6.0.3.tgz -C /opt
cd /opt/mongodb-linux-x86_64-rhel70-6.0.3
cp bin/* /usr/local/bin/
创建 mongod 用户和 mongod 组
useradd mongod
创建目录
sudo mkdir -p /data/mongo
sudo mkdir -p /data/log/mongodb
给目录设置用户组和用户
sudo chown -R mongod:mongod /data/mongo
sudo chown -R mongod:mongod /data/log/mongodb
创建配置文件
vim /etc/mongod.conf
processManagement:
fork: true
net:
bindIp: 0.0.0.0
port: 27017
storage:
dbPath: /data/mongo
systemLog:
destination: file
path: "/data/log/mongodb/mongod.log"
logAppend: true
storage:
journal:
enabled: true
运行 MongoDB
mongod -f /etc/mongod.conf
验证是否启动成功
查看 /data/log/mongodb/mongod.log
出现 [initandlisten] waiting for connections on port 27017
即为成功
连接 MongoDB
mongosh
创建 admin 用户
use admin
db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
退出后,关闭 MongoDB
mongod -f /etc/mongod.conf --shutdown
首先生成 keyfile
#用openssl生成一个复杂的伪随机 1024 字符串用作集群共享密码
openssl rand -base64 756 > /opt/mongodb-linux-x86_64-rhel70-6.0.3/keyfile
#赋予只读权限(秘钥不可更改)
chmod 400 keyfile
修改配置文件
vim /etc/mongod.conf
在最后添加
security:
authorization: enabled
keyFile: /opt/mongodb-linux-x86_64-rhel70-6.0.3/keyfile
重新启动 MongoDB
mongod -f /etc/mongod.conf
连接
mongosh
验证用户权限
use admin
db.auth('admin','123456')
副本集中成员的数量为奇数个,保证能够选举出主节点
这里以三个副本集为例
首先在三个节点都部署了 MongoDB
停止 MongoDB,在每台机器上修改配置文件
vim /etc/mongod.conf
添加
replication:
replSetName: rs0
进入 bigdata9 连接到 MongoDB
初始化
rs.initiate( {
_id : "rs0",
members: [
{ _id: 0, host: "bigdata9" },
{ _id: 1, host: "bigdata10" },
{ _id: 2, host: "bigdata12" }
]
})
查看副本集配置
rs.conf()
查看主节点
rs.status
默认情况下其他节点只是作为主节点的副本,不能读,也不能写。
登录第二个节点,设置为可读
db.getMongo().setReadPref("primaryPreferred")
在第一台机器插入数据
use test
# 插入一条数据
db.users.insert({name:"jack",age:0,addr:"qingdao",country:"China"})
登录第二台机器,查看是否有记录
db.users.find()
关闭第一台 MongoDB
mongod -f /etc/mongod.conf --shutdown
查看第二台或者第三台服务器,自动切换为主节点(Primary)