介质(根据操作系统下载相应版本):https://www.mongodb.com/download-center/v2/community
集群配置手册(官方):https://docs.mongodb.com/manual/reference/configuration-options/
其他的相关概念请自行查看文档
1),mkdir ~/primary //存放主节点目录
2),mkdir ~/secondary //存放从节点目录
3),,mkdir ~/arbiter //存放仲裁者节点目录
4),mkdir ~/primary/data //存放主节点数据目录
5),mkdir ~/primary/keyFile //存放节点间鉴权文件目录
6),mkdir ~/primary/log //存放主节点日志文件目录
7),mkdir ~/primary/pid //存放主节点pid文件目录
8),vi ~/primary/log/mongo.log //保存主节点日志的文件
9),vi ~/primary/pid/mongo.pid //保存主节点pid的文件
10),vi ~/primary/keyFile/key.key //保存节点间认证秘钥的文件
11),vi ~/primary/mongo.conf //保存主节点配置信息的文件
注:4)~11)步骤需要在~/secondary和~/arbiter建立相同的目录文件
在所有角色的keyFile目录下的key.key的文件中写入相同的秘钥, 该文件需要设置600权限, 该文件在所有节点下应保证完全一致
vim ~/primary/mongo.conf
vim ~/secondary /mongo.conf
vim ~/arbiter /mongo.conf
以上三个文件中配置以下信息:
security:
authorization: enabled #开启验证
keyFile: "E:/tools/mongoDB-win/mongodb-win32-x86_64-2008plus-ssl-4.0.3/primary/keyFile/key.txt" #指定秘钥文件
storage:
dbPath: "E:/tools/mongoDB-win/mongodb-win32-x86_64-2008plus-ssl-4.0.3/primary/data" #指定存储目录
directoryPerDB: true #开启按库分目录
systemLog:
destination: file
path: "E:/tools/mongoDB-win/mongodb-win32-x86_64-2008plus-ssl-4.0.3/primary/log/mongo.log" #指定log文件
logAppend: true #追加的方式记录日志
processManagement:
pidFilePath: "E:/tools/mongoDB-win/mongodb-win32-x86_64-2008plus-ssl-4.0.3/primary/pid/mongo.pid" #指定pid文件
replication:
replSetName: "testdb" #指定集群名称
oplogSizeMB: 100 #指定日志大小
net:
bindIp: 0.0.0.0 #指定允许访问的ip, 如果想要允许所有ip可访问, 此项要配置成0.0.0.0, 如果不配则默认只可以被127.0.0.1访问
port: 8081 #指定端口
1),屏蔽认证(注释掉security的配置)启动集群(mongod -f ~/primary/mongo.conf )
2),连接客户端(mongo --port=port),进入mongo shell端
3),配置节点角色
在mongo shell中执行:
cfg={ _id:"testdb", members:[ {_id:0,host:'127.0.0.1:8081',priority:2}, {_id:1,host:'127.0.0.1:8082',priority:1}, {_id:2,host:'127.0.0.1:8083',arbiterOnly:true}] };
注:_id:"testdb",要与配置文件中的replSetName一致,priority高的将成为主节点,arbiterOnly:true节点将成为仲裁者节点
rs.initiate(cfg);启用配置
1)连接主节点,进入mongo shell端
2)创建用户:db.createUser({user:"yourAccount", pwd:"yourPassword",roles:[{role:"userAdminAnyDatabases", db:"admin"}]})
注:role:"userAdminAnyDatabases",角色需要配置mongoDB中已经存在的角色,db:"admin"角色所属数据库(角色是随数据库走的)
注:集群模式必须在主节点创建角色, 主节点创建的角色将被同步到集群各节点
<dependency>
<groupId>org.mongodbgroupId>
<artifactId>mongo-java-driverartifactId>
<version>3.8.0version>
dependency>
public static void main(String[] args) {
/**
* 组织nameServerAddr
*/
ServerAddress serverAddress = new ServerAddress("127.0.0.1", 8081);
ServerAddress serverAddress1 = new ServerAddress("127.0.0.1", 8082);
ServerAddress serverAddress2 = new ServerAddress("127.0.0.1", 8083);
List
seeds.add(serverAddress);
seeds.add(serverAddress1);
seeds.add(serverAddress2);
/**
* 连接认证信息:用户名:test1, 库:test, 密码:123456
*/
MongoCredential credentials = MongoCredential.createCredential("test1", "test", "123456".toCharArray());
/**
* 连接参数
*/
Builder builder = new Builder();
builder.connectionsPerHost(1000);
builder.maxWaitTime(100000);
builder.threadsAllowedToBlockForConnectionMultiplier(50);
MongoClientOptions options = builder.build();
/**
* 连接
*/
MongoClient client = new MongoClient(seeds,credentials,options);
/**
* 获取数据库
*/
MongoDatabase db = client.getDatabase("test");
/**
* 获取test库下的test collection
*/
MongoCollection
/**
* 组织数据
*/
Document document = new Document("id","123456");
/**
* 插入数据
*/
collection.insertOne(document);
}