1、关闭系统防火墙
2、解压mongodb安装包到对应的文件夹
3、在mongodb建立对应的文件夹,以三台linux 服务器为例进行集群搭建;
准备环境
系统系统 centos7.6
三台服务器:10.184.16.18/19/20
安装包: mongodb-linux-x86_64-rhel70-3.4.1.tgz
搭建一主一备一仲裁的分片集群;
4、端口分配如下
mongos:20000
config:21000
shard1:27001
shard2:27002
shard3:27003
准备安装,分别建立对应的文件夹进行存储数据及数据库日志,建立config、 mongos、shard1、shard2、shard3
Config文件夹下建立data文件夹,mongos文件夹下存储mongos日志,shard文件夹下分别创建data、log文件夹;
5、配置configServer
在config文件夹下创建config.conf文件
Vi /data/mongodb/config/config.conf
配置如下
dbpath = /home/mongodb/config/data #数据库位置
logpath = /home/mongodb/mongos/log/config.log #日志位置
logappend = true
bind_ip = 0.0.0.0 #开放IP
port = 21000 # 端口
fork = true
rest = true
httpinterface = true
#declare this is a config db of a cluster;
configsvr = true
#副本集名称
replSet=configs
#设置最大连接数
maxConns=20000
wiredTigerCacheSizeGB = 230 #设置内存最大限制
#auth = true #密码设置访问
#keyFile = /home/mongodb/config/onlineimagemongo.key #密码文件路径
注意 auth 和keyfile 配置密码的时候在用,这里先注释
启动三台服务器config server
./mongod -f /home/mongodb/config/config.conf
登录任意一台配置服务器,初始化配置副本集
#连接
mongo --port 21000 注意config变量需单独输入
#config变量
config = {
... _id : "configs",
... members : [
... {_id : 0, host : "10.184.16.18:21000" },
... {_id : 1, host : "10.184.16.19:21000" },
... {_id : 2, host : "10.184.16.20:21000" }
... ]
... }
#初始化副本集
rs.initiate(config)
其中,”_id” : “configs”应与配置文件中配置的 replicaction.replSetName 一致,”members” 中的 “host” 为三个节点的 ip 和 port
6、设置分片集,第一个
编辑配置文件
Vi /home/mongodb/shard1/config.conf
dbpath = /home/mongodb/shard1/data
logpath = /home/mongodb/shard1/log/shard1.log
logappend = true
bind_ip = 0.0.0.0
port = 27001
fork = true
#打开web监控
httpinterface=true
rest=true
#副本集名称
replSet=shard1
#declare this is a shard db of a cluster;
shardsvr = true
#设置最大连接数
maxConns=20000
wiredTigerCacheSizeGB = 230
#auth = true
#keyFile = /home/mongodb/config/onlineimagemongo.key
启动三台服务器分片1
./mongod -f /home/mongodb/shard1/config.conf
登陆任意一台服务器,配置副本,初始化副本集;
./mongo --port 27001
配置副本集
#使用admin数据库
use admin
#定义副本集配置,第三个节点的 "arbiterOnly":true 代表其为仲裁节点。
config = {
... _id : "shard1",
... members : [
... {_id : 0, host : "10.184.16.18:27001" },
... {_id : 1, host : "10.184.16.19:27001" },
... {_id : 2, host : "10.184.16.20:27001” , arbiterOnly: true }
... ]
... }
#初始化副本集配置
rs.initiate(config);
7、设置第二个分片集
编辑配置文件
Vi /home/mongodb/shard2/config.conf
dbpath = /home/mongodb/shard2/data
logpath = /home/mongodb/shard2/log/shard2.log
logappend = true
bind_ip = 0.0.0.0
port = 27002
fork = true
#打开web监控
httpinterface=true
rest=true
#副本集名称
replSet=shard2
#declare this is a shard db of a cluster;
shardsvr = true
#设置最大连接数
maxConns=20000
wiredTigerCacheSizeGB = 230
#auth = true
#keyFile = /home/mongodb/config/onlineimagemongo.key
启动三台服务器分片2
./mongod -f /home/mongodb/shard2/config.conf
登陆任意一台服务器,配置副本,初始化副本集;
./mongo --port 27002
#使用admin数据库
use admin
#定义副本集配置,第三个节点的 "arbiterOnly":true 代表其为仲裁节点。
config = {
... _id : "shard1",
... members : [
... {_id : 0, host : "10.184.16.18:27002" },
... {_id : 1, host : "10.184.16.19:27002" , arbiterOnly: true },
... {_id : 2, host : "10.184.16.20:27002” }
... ]
... }
#初始化副本集配置
rs.initiate(config);
8、设置第三个分片
编辑配置文件
Vi /home/mongodb/shard3/config.conf
dbpath = /home/mongodb/shard3/data
logpath = /home/mongodb/shard3/log/shard1.log
logappend = true
bind_ip = 0.0.0.0
port = 27003
fork = true
#打开web监控
httpinterface=true
rest=true
#副本集名称
replSet=shard3
#declare this is a shard db of a cluster;
shardsvr = true
#设置最大连接数
maxConns=20000
wiredTigerCacheSizeGB = 230
#auth = true
#keyFile = /home/mongodb/config/onlineimagemongo.key
启动三台服务器分片3
./mongod -f /home/mongodb/shard3/config.conf
登陆任意一台服务器,配置副本,初始化副本集;
./mongo --port 27003
#使用admin数据库
use admin
#定义副本集配置,第三个节点的 "arbiterOnly":true 代表其为仲裁节点。
config = {
... _id : "shard1",
... members : [
... {_id : 0, host : "10.184.16.18:27003" , arbiterOnly: true },
... {_id : 1, host : "10.184.16.19:27003" },
... {_id : 2, host : "10.184.16.20:27003” }
... ]
... }
#初始化副本集配置
rs.initiate(config);
9、配置路由服务器 mongos
配置三台服务器mongos路由配置文件
Vi /home/mongodb/config/mongos.conf
logpath = /home/mongodb/mongos/log/mongos.log
logappend = true
bind_ip = 0.0.0.0
port = 20000
fork = true
#监听的配置服务器,只能有1个或者3个 configs为配置服务器的副本集名字
configdb = configs/10.214.11.13:21000,10.214.11.14:21000,10.214.11.15:21000
#设置最大连接数
maxConns=20000
#auth = true
#keyFile = /home/mongodb/config/onlineimagemongo.key
启动三台服务器的mongos server
mongos -f /usr/local/mongodb/conf/mongos.conf
启用分片
目前搭建了mongodb配置服务器、路由服务器,各个分片服务器,不过应用程序连接到mongos路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效。
登陆任意一台mongos
./mongo --port 20000
#使用admin数据库
use admin
#串联路由服务器与分配副本集
sh.addShard("shard1/10.184.16.18:27001,10.184.16.19:27001,10.184.16.20:27001")
sh.addShard("shard2/10.184.16.18:27002,10.184.16.19:27002,10.184.16.20:27002")
sh.addShard("shard3/10.184.16.18:27003,10.184.16.19:27003,10.184.16.20:27003")
#查看集群状态
sh.status()
查看集群状态
自此搭建一主一备一仲裁的分片集群完成;
db.runCommand( { enablesharding : "testdb"});数据库进行分片
#指定testdb分片生效
db.runCommand( { enablesharding :"testdb"});
#指定数据库里需要分片的集合和片键
db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } )
10、启动和关闭
关闭进程,查看mongo进程
Ps -ef | grep mongo
关闭进程利用kill 加ID 进行关闭
启动进程按照下面顺序进行启动
./mongod -f /home/mongodb/config/config.conf
./mongod -f /home/mongodb/shard1/config.conf
./mongod -f /home/mongodb/shard2/config.conf
./mongod -f /home/mongodb/shard3/config.conf
./mongos -f /home/mongodb/config/mongos.conf
11、设置密码访问
连接任意一台机器的mongos
./mongo --port 20000
use admin #注意一定要使用admin数据库
db.createUser(
{
user:"your account",
pwd:"your password",
roles:[{role:"root",db:"admin"}]
}
退出创建副本集认证的key文件
openssl rand -base64 512 -out ./keyfile.key
分别传输拷贝在另外三台同样的路径并进行授权
chmod 600 keyfile.key #进行授权该文件
在三台服务器中config server服务、shard1、shard2、shard3中启用之前的配置文件中配置的密码设置访问,并设置路径,关闭所有mongos进程,从设置密码、生成key文件的服务器进行服务重启,按照顺序
./mongod -f /home/mongodb/config/config.conf
./mongod -f /home/mongodb/shard1/config.conf
./mongod -f /home/mongodb/shard2/config.conf
./mongod -f /home/mongodb/shard3/config.conf
./mongos -f /home/mongodb/config/mongos.conf
重启后进行验证;
./mongo --port 20000
标签:...,mongodb,10.184,集群,分片,home,config,true From: https://blog.csdn.net/2301_79294686/article/details/145932746