環境需求:Mongodb集群有三種模式: Replica Set, Sharding,Master-Slaver。
這里部署的是Replica Set模式。
測試環境: 這里副本集(Replica Set)采用一主一備一仲裁模型:
配置步驟:
1.下載mongodb
MongoDB官網下載中心:MongoDB Download Center
mongodb 3.4.10下載地址:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.10.tgz
2. 解壓並創建目錄
[root@server-1 ~]# tar zxvf mongodb-linux-x86_64-rhel70-3.4.10.tgz
[root@server-1 ~]# mv mongodb-linux-x86_64-rhel70-3.4.10 mongodb //為了方便簡潔,改名
同樣的,在server-2和server-3上也解壓並改名(略)
接着創建相關目錄:
[root@server-1 ~]# mkdir -p /date/mongodb/primary //在server-1上建立主數據存放目錄
[root@server-1 ~]# mkdir /etc/mongodb/ //即將存放primary的配置文件
[root@server-2 ~]# mkdir -p /data/mongodb/secondary //在server-2上建立從數據存放目錄
[root@server-2 ~]# mkdir /etc/mongodb/ //即將存放secondary的配置文件
[root@server-3 ~]# mkdir -p /data/mongodb/arbiter //在server-3上建立仲裁數據存放目錄
[root@server-3 ~]# mkdir /etc/mongodb/ //即將存放arbiter的配置文件
3. 新建配置文件
[root@server-1 ~]# vim /etc/mongodb/primary.conf //新建主配置文件,內容如下:
附:
#PRIMARY.CONF
dbpath=/data/mongodb/primary
logpath=/data/mongodb/primary.log
pidfilepath=/data/mongodb/primary.pid
#keyFile=/data/mongodb/mongodb.key
directoryperdb=true
logappend=true
replSet=google
bind_ip=192.168.1.21
port=27017
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000
[root@server-2 ~]# vim /etc/mongodb/secondary.conf //secondary的配置文件,如下:
[root@server-3 ~]# vim /etc/mongodb/arbiter.conf // arbiter的配置文件內容如下
保存后,退出;
4. 啟動mongodb服務
[root@server-1 ~]# ./mongodb/bin/mongod -f /etc/mongodb/primary.conf //啟動主
[root@server-2 ~]# ./mongodb/bin/mongod -f /etc/mongodb/secondary.conf //啟動從
[root@server-3 ~]# ./mongodb/bin/mongod -f /etc/mongodb/arbiter.conf //啟動仲裁
5. 將節點配置組成集群
找一台節點,這里就在server-1操作:
[root@server-1 ~]# ./mongodb/bin/mongo 192.168.1.21:27017 //使用mongo命令登錄,格式:mongo IP:PORT
接着:
> use admin //直接回車
> cfg={ _id:"google",members:[{_id:0,host:'192.168.1.21:27017',priority:2},{_id:1,host:'192.168.1.22:27017',priority:1},{_id:2,host:'192.168.1.23:27017',arbiterOnly:true}] };
接着:
> rs.initiate(cfg) //使配置生效
說明:cfg名字可選,只要跟mongodb參數不沖突,_id為Replica Set名字,members里面的優先級priority值高的為主節點,
對於仲裁點一定要加上arbiterOnly:true,否則主備模式不生效。
查看是否生效:rs.status()
下面會顯示字樣:"ok" : 1
結束.