一元咙、環(huán)境準(zhǔn)備
linux:centos7
備注:如果大家要買ECS的話建議還是買阿里云,筆者用騰訊云安裝mongodb分片集群的時候遇到了很多問題,花了很長時間解決疆栏。阿里這方面做得比較好,無論是yum源還是相關(guān)配置都已經(jīng)設(shè)置好了多搀。
mongodb:3.2.9(3.2以后的版本分片集群的搭建方式有改動,具體請參照官網(wǎng))
由于筆者只買了一臺ECS服務(wù)器,所以本次集群的方式可以說是一個偽集群.所有的節(jié)點都是部署在同一臺機器摧阅。
二、安裝
下載mongodb-linux-x86_64-ubuntu1404-3.2.9.tgz.
其它版本可以訪問:https://www.mongodb.org/dl/linux/
cd /usr/local/software
tar -zxvf mongodb-linux-x86_64-ubuntu1404-3.2.9.tgz
mv mongodb-linux-x86_64-ubuntu1404-3.2.9 mongodb3.2.9
二委煤、配置
//建立數(shù)據(jù)存儲目錄
cd / 進(jìn)入根目錄
mkdir -p /data/config
mkdir -p /data/shard1
mkdir -p /data/shard2
mkdir -p /data/shard3
//建立日志目錄:
mkdir logs
//配置configsrv啟動文件
//(/usr/local/software/mongodb3.2.9/config.d/configsrv.conf)
logpath=/logs/configsrv.log
pidfilepath=/logs/configsrv.pid
logappend=true
fork=true
port=27000
dbpath=/data/config
configsvr=true
//配置路由節(jié)點啟動文件
//(/usr/local/software/mongodb3.2.9/config.d/router.conf)
logpath=/logs/mongos_router.log
pidfilepath=/logs/mongos_router.pid
logappend=true
fork=true
port=27010
configdb=172.27.0.14:27000 //指定的是configsrv的ip和端口(3.2版本以后configdb只能用于副本集集群模式-親測)
三堂油、啟動服務(wù)
1.啟動配置服務(wù)器(configsrv)
./mongod -f ../config.d/configsrv.conf
2.啟動路由服務(wù)器(router)
./mongos -f ../config.d/router.conf 注意:用mongos啟動
3.分別啟動分片1,2,3.用不同的端口27001,27002,27003區(qū)分:
./mongod --dbpath /data/shard1/ --logpath /logs/shard1.log --fork --port 27001
./mongod --dbpath /data/shard2/ --logpath /logs/shard2.log --fork --port 27002
./mongod --dbpath /data/shard3/ --logpath /logs/shard3.log --fork --port 27003
4.用ps查看一下
[root@VM_0_14_centos bin]# ps -ef|grep mongo
root 2391 1 0 20:00 ? 00:00:08 ./mongod -f ../config.d/configsrv.conf
root 2760 1 0 20:06 ? 00:00:00 ./mongos -f ../config.d/router.conf
root 2975 1 0 20:10 ? 00:00:01 ./mongod --dbpath /data/shard1/ --logpath /logs/shard1.log --fork --port 27001
root 3054 1 0 20:12 ? 00:00:00 ./mongod --dbpath /data/shard2/ --logpath /logs/shard2.log --fork --port 27002
root 3183 1 0 20:13 ? 00:00:00 ./mongod --dbpath /data/shard3/ --logpath /logs/shard3.log --fork --port 27003
root 3267 2330 0 20:15 pts/2 00:00:00 grep --color=auto mongo
[root@VM_0_14_centos bin]#
說明已經(jīng)正常啟動了,一個configsrv節(jié)點,一個路由幾點,3個分片節(jié)點碧绞。
5.啟動異常說明
????????筆者啟動的時候老提示"Error while loading shared libraries: libssl.so.6: cannot open shared object file:"
解決辦法:
下載openssl-1.0.1e(https://www.openssl.org/source/old/1.0.1/openssl-1.0.1e.tar.gz)称诗,解壓后再通過./config shared zlib-dynamic命令生成MakeFile,然后執(zhí)行make重新生成libssl.so.1.0.0、libcrypto.so.1.0.0,再將這兩個文件copy到/usr/lib64下面头遭。然后執(zhí)行:
ln -s libssl.so.1.0.0 libssl.so.10
ln -s libcrypto.so.1.0.0 libcrypto.so.10
如果中途make的時候出現(xiàn)gcc,zib.h缺失直接yum install安裝即可寓免。如果ln -s的時候提示軟鏈接已存在,則將原來的軟鏈接刪掉重新執(zhí)行上述命令即可。
6.添加分片
[root@VM_0_14_centos bin]# ./mongo --port 27000
./mongo: /lib64/libcrypto.so.1.0.0: no version information available (required by ./mongo)
./mongo: /lib64/libssl.so.1.0.0: no version information available (required by ./mongo)
MongoDB shell version: 3.2.9
connecting to: 127.0.0.1:27000/test
Server has startup warnings:
2018-05-12T20:00:53.255+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-05-12T20:00:53.255+0800 I CONTROL [initandlisten]
2018-05-12T20:00:53.255+0800 I CONTROL [initandlisten]
2018-05-12T20:00:53.255+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-05-12T20:00:53.255+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2018-05-12T20:00:53.255+0800 I CONTROL [initandlisten]
2018-05-12T20:00:53.255+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-05-12T20:00:53.255+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2018-05-12T20:00:53.255+0800 I CONTROL [initandlisten]
2018-05-12T20:00:53.255+0800 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 7281 processes, 100001 files. Number of processes should be at least 50000.5 : 0.5 times number of files.
2018-05-12T20:00:53.255+0800 I CONTROL [initandlisten]
configsvr>
//注意添加分片的時候必須連到路由節(jié)點的端口:
[root@VM_0_14_centos bin]# ./mongo --port 27010
./mongo: /lib64/libcrypto.so.1.0.0: no version information available (required by ./mongo)
./mongo: /lib64/libssl.so.1.0.0: no version information available (required by ./mongo)
MongoDB shell version: 3.2.9
connecting to: 127.0.0.1:27010/test
Server has startup warnings:
2018-05-12T20:06:43.668+0800 I CONTROL [main] ** WARNING: You are running this process as the root user, which is not recommended.
2018-05-12T20:06:43.668+0800 I CONTROL [main]
mongos> use admin
switched to db admin
mongos> sh.addShard("172.27.0.14:27001");
{ "shardAdded" : "shard0000", "ok" : 1 }
mongos> sh.addShard("172.27.0.14:27002");
{ "shardAdded" : "shard0001", "ok" : 1 }
mongos> sh.addShard("172.27.0.14:27003");
{ "shardAdded" : "shard0002", "ok" : 1 }
mongos>
一個分片集群就已經(jīng)搭建完成了计维。
四袜香、總結(jié)
要想深入了解mongodb,就必要搭建一套集群環(huán)境.mongodb其實有分片,主從鲫惶,副本集的集群方式,但是企業(yè)一般都是用的分片集群,所以搭建一套集群環(huán)境對以后深入了解mongodb是非常有必要的蜈首。
參考文檔:
https://blog.csdn.net/qq43748322/article/details/78327389
https://blog.csdn.net/shmnh/article/details/50465862