清单:

2台节点机器+1台投票机器(因为偶数台,凑够奇数台,因为选举时,多与半数才能成功选举,如果2台,死一台,只剩一台,少于1/2,是不能正常进行选举的,所以要加一台投票机器,(其实不一定非奇数台,确保死一台仍有半数以上的机器就行,不过建议奇数台))

10.13.2.51:27017

10.13.2.52:27017

10.13.2.151:27017(arbiters)

1台mongos机器

10.13.2.112:27107

3台config机器

10.13.2.91:27109

10.13.2.92:27109

10.13.2.102:27109

安装步骤:
  1. 先安装一个replica set(这里也可以先安装config和mongos机器,再安装replica set,顺序无所谓)
  2. 安装config机器
  3. 安装mongos机器

安装一个replica set

解压安装
tar zxvf mongodb-linux-x86_64-3.0.3.tgz
mv mongodb-linux-x86_64-3.0.3 mongodb
chown -R mongodb.mongodb mongodb # 此处mongodb用户运行,没有的话useradd mongodb添加
创建必要的文件夹
mkdir log conf db db/rs0
配置数据节点mongodb.conf
systemLog:
  destination: file
  path: "/home/data/mongodb/log/rs0.log"
  quiet: true
  logAppend: true # 追加写
  timeStampFormat: iso8601-utc
  verbosity: 0 # 日志级别
# component:
#   query:
#     verbosity: 2
storage:
  dbPath: "/home/data/mongodb/db/rs0"
  engine: "wiredTiger" # 采用wiredTiger引擎
  wiredTiger:
    engineConfig:
      cacheSizeGB: 8
    collectionConfig:
      blockCompressor: snappy # 注意snappy没安装的话要安装
  directoryPerDB: true # 是否每个数据库一个文件夹
  indexBuildRetry: false # 重启等情况下是否重建索引
  journal:
    enabled: true
processManagement:
  fork: true # 后台运行
  pidFilePath: "/home/data/mongodb/db/rs0/mongodb.pid"
net:
# bindIp: 192.168.11.52
  port: 27017 # 对外的端口
  http:
    enabled: false
    RESTInterfaceEnabled: false
operationProfiling:
  slowOpThresholdMs: 100
  mode: "slowOp" # 记录慢查询
replication:
  oplogSizeMB: 100
  replSetName: "rs0" # 同一个replica set名称要一样
  secondaryIndexPrefetch: "all"
sharding:
  clusterRole: "shardsvr" # 作为分片的一员
配置投票节点(arbiters)conf
# 除了一些文件名的更改外,另外把journal.enabled: false,其余都一样
systemLog:
  destination: file
  path: "/home/data/mongodb/log/arb0.log"
  quiet: true
  logAppend: true
  timeStampFormat: iso8601-utc
  verbosity: 0
# component:
#   query:
#     verbosity: 2
storage:
  dbPath: "/home/data/mongodb/db/arb0"
  engine: "wiredTiger"
  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
    collectionConfig:
      blockCompressor: snappy
  directoryPerDB: true
  indexBuildRetry: false
  journal:
    enabled: false
processManagement:
  fork: true
  pidFilePath: "/home/data/mongodb/db/arb0/mongodb.pid"
net:
# bindIp: 192.168.11.52
  port: 27017
  http:
    enabled: false
    RESTInterfaceEnabled: false
operationProfiling:
  slowOpThresholdMs: 100
  mode: "slowOp"
replication:
  oplogSizeMB: 100
  replSetName: "rs0"
  secondaryIndexPrefetch: "all"
sharding:
  clusterRole: "shardsvr"
各机器启动
bin/mongod -f conf/mongodb.conf
连接mongo,配置replica set
bin/mongo  # 默认连接本机的27017端口
config = {_id:"rs0", members: [  
    {_id: 0, host:"10.13.2.51:27017", priority:2},  
    {_id: 1, host:"10.13.2.52:27017", priority:1},
    {_id: 2, host:"10.13.2.151:27017", arbiterOnly:true}  
    ]  
};
  # 此处注意arbiterOnly,意指投票节点
  # priority,选举时优先级,越大优先级越高
rs.initiate(config)

至此replica set配好了一个

下面安装config机器


安装config机器

创建必要文件夹
mkdir log conf configdb
配置conf
systemLog:
  destination: file
  path: "/home/data/mongodb/log/config.log"
  quiet: true
  logAppend: true
  timeStampFormat: iso8601-utc
  verbosity: 0
# component:
#   query:
#     verbosity: 2
storage:
  dbPath: "/home/data/mongodb/configdb"
  engine: "wiredTiger"
  wiredTiger:
    engineConfig:
      cacheSizeGB: 8
    collectionConfig:
      blockCompressor: snappy
  directoryPerDB: true
  indexBuildRetry: false
  journal:
    enabled: true
processManagement:
  fork: true
  pidFilePath: "/home/data/mongodb/configdb/mongodb.pid"
net:
# bindIp: 192.168.11.52
  port: 27019
  http:
    enabled: false
    RESTInterfaceEnabled: false
sharding:
  clusterRole: "configsvr"
各台分别启动
bin/mongod -f conf/mongodb.conf

至此,config机器安装完毕

下面安装mongos机器


安装mongos机器

创建必要文件夹
mkdir log conf
配置mongos.conf
systemLog:
  destination: file
  path: "/home/data/mongodb/log/mongos.log"
  quiet: true
  logAppend: true
  timeStampFormat: iso8601-utc
processManagement:
  fork: true
net:
  port: 27017
sharding:
  configDB: 10.13.2.91:27019,10.13.2.92:27019,10.13.2.102:27019
启动
bin/mongos -f conf/mongos.conf
连接mongos,配置分片
bin/mongo 10.13.2.112:27017
sh.addShard( "rs0/10.13.2.51:27017" ) # 2.0.3版本以前要列出全部rs0里的组员,之后的则不必了。添加单个mongod则直接sh.addShard( "mongodb0.example.net:27017" ),前面没有replica set的名字
sh.status() # 查看分片状态


至此复制集+分片集群安装完毕(这里只加了一个分片)

后续加分片的话,步骤就是:

  1. 创建一个replica set
  2. 连接mongos,sh.addShard( "rs1/xxxxxx:27017" ), 可实现扩容,实现负载等