mongodb分片復(fù)制集搭建

目錄

1?????? 部署規(guī)劃... 2

2?????? 內(nèi)核參數(shù)調(diào)整... 2

2.1???????????? sysctl.conf 2

2.2???????????? limits.conf 3

2.3???????????? 其他... 3

2.4???????????? 啟動(dòng)ntp時(shí)間同步... 4

3?????? Mongodb安裝... 4

3.1???????????? 添加環(huán)境變量... 4

3.2???????????? 節(jié)點(diǎn)配置說明... 4

3.2.1???????? Mongod數(shù)據(jù)節(jié)點(diǎn)... 4

3.2.2???????? Config節(jié)點(diǎn)... 5

3.2.3???????? Route節(jié)點(diǎn)... 7

3.3???????????? 啟動(dòng)mongod. 7

3.4???????????? Config Replica-set配置... 7

3.5???????????? Shard Replica-set配置... 8

3.5.1???????? Shard1. 8

3.5.2???????? Shard2. 8

3.5.3???????? Shard3. 8

3.6???????????? 添加用戶... 9

3.6.1???????? 添加全局用戶... 9

3.6.2???????? 添加Shard Replica-set用戶... 9

3.7???????????? Sharding配置... 9

3.8???????????? 檢查節(jié)點(diǎn)... 10

4?????? 停止應(yīng)用... 10

4.1???????????? 替換應(yīng)用war/jar包... 10

4.2???????????? 修改應(yīng)用mongo配置... 11

4.3???????????? 禁止注冊接口... 11

4.3.1???????? Mongo中移除注冊相關(guān)api配置... 11

4.3.2???????? Redis中移除注冊相關(guān)api緩存... 12

5?????? 數(shù)據(jù)倒換... 12

5.1???????????? 新集群關(guān)閉Balancer 12

5.2???????????? 舊集群數(shù)據(jù)導(dǎo)出... 12

5.3???????????? 新集群數(shù)據(jù)導(dǎo)入... 13

5.4???????????? 新集群創(chuàng)建索引... 14

5.5???????????? 新集群sequence處理... 14

5.6???????????? 新集群開啟Balancer 14

5.7???????????? 檢查數(shù)據(jù)分片狀況... 15

6?????? 啟動(dòng)應(yīng)用... 15

7?????? 開放注冊接口... 16

8?????? 測試驗(yàn)證... 16



[if !supportLists]1??????[endif]部署規(guī)劃

分為3個(gè)sharding, 每個(gè)sharding是一個(gè)replica-set,每個(gè)replica-set包含兩個(gè)數(shù)據(jù)節(jié)點(diǎn)和一種仲裁(Arb)節(jié)點(diǎn)

[if !supportLists]2??????[endif]內(nèi)核參數(shù)調(diào)整

[if !supportLists]2.1??[endif]sysctl.conf

vi /etc/sysctl.conf

#加入:

vm.nr_hugepages= 0

vm.overcommit_memory=1

vm.zone_reclaim_mode=0

net.ipv4.tcp_syncookies?=?1

net.ipv4.tcp_tw_reuse?=?1

net.ipv4.tcp_tw_recycle?=?1

net.ipv4.tcp_max_tw_buckets?=?5000

net.ipv4.tcp_synack_retries?=?2

net.ipv4.tcp_syn_retries?=?2

net.ipv4.tcp_keepalive_time?=?1800

net.core.rmem_default?=?256960

net.core.rmem_max?=?513920

net.core.wmem_default?=?256960

net.core.wmem_max?=?513920

net.ipv4.tcp_wmem?=?8192?256960?16777216

net.ipv4.tcp_rmem?=?32768?256960?16777216

net.ipv4.tcp_max_orphans?=?3276800

net.ipv4.tcp_fin_timeout?=?30

net.core.somaxconn?=?16384

net.core.netdev_max_backlog?=?16384

kernel.msgmnb?=?655360000

kernel.msgmax?=?6553600

kernel.msgmni?=?4096


#生效

sysctl –p

[if !supportLists]2.2??[endif]limits.conf

vi /etc/security/limits.conf

#加入

*???? soft? nproc????? 65536

*???? hard nproc????? 65536

*???? soft? nofile????? 65536

*???? hard nofile????? 65536

[if !supportLists]2.3??[endif]其他

#關(guān)閉THP

echo?'never'?>?/sys/kernel/mm/transparent_hugepage/enabled

echo?'never'?>?/sys/kernel/mm/transparent_hugepage/defrag

cat/sys/kernel/mm/transparent_hugepage/enabled

cat/sys/kernel/mm/transparent_hugepage/defrag


#取消虛擬內(nèi)存限制

vi /etc/profile

加入

ulimit -v unlimited

. /etc/profile


#磁盤使用使用noatime,nodiratime

/dev/md2?/?ext4?defaults,noatime?0?0

mount?-o?remount?/


#設(shè)置較小的磁盤readahead參數(shù)值32(16KB)

blockdev --getra /dev/sda

blockdev --setra 32 /dev/sda

[if !supportLists]2.4??[endif]啟動(dòng)ntp時(shí)間同步

vi /usr/local/sbin/ntpddate.sh

killall ntpd

/usr/local/ntp-dev-4.2.7p26/bin/ntpdate10.95.99.56

crontab -e

1 * * * * /usr/local/sbin/ntpddate.sh

[if !supportLists]3??????[endif]Mongodb安裝

[if !supportLists]3.1??[endif]添加環(huán)境變量

MONGODB_HOME=/home/mongodb/mongodb-3.2

export PATH=$MONGODB_HOME/bin:$PATH

[if !supportLists]3.2??[endif]節(jié)點(diǎn)配置說明

在4臺(tái)服務(wù)器上建立mongodb相關(guān)目錄

mkdir -p/home/mongodb/{etc,mongoLog,mongoData}/

mkdir -p/home/mongodb/mongoData/{shard1,shard2,shard3,config}

[if !supportLists]3.2.1???????[endif]Mongod數(shù)據(jù)節(jié)點(diǎn)

shard1、shard2、shard3配置文件僅端口、數(shù)據(jù)和日志文件目錄不一樣

shard1端口27021,shard2端口27022,shard3端口27023

#shard1.conf

systemLog:

?quiet: true

?logAppend: true

?path: /home/mongodb/mongoLog/shard1.log

?destination: file

?traceAllExceptions: true


storage:

?engine: wiredTiger

?dbPath: /home/mongodb/mongoData/shard1

?directoryPerDB: true

?journal:

??enabled: true

?wiredTiger:

?engineConfig:

??directoryForIndexes: true

?collectionConfig:

??blockCompressor: snappy

?indexConfig:

??prefixCompression: true


processManagement:

?fork: true


net:

?port: 27021

?maxIncomingConnections: 50000

?http:

?enabled: false


operationProfiling:

?slowOpThresholdMs: 500

?mode: slowOp


security:

?keyFile: /home/mongodb/etc/mongodbkeyfile

?javascriptEnabled: false


replication:

?replSetName: shard1

?oplogSizeMB: 1000


sharding:

?clusterRole: shardsvr


[if !supportLists]3.2.2???????[endif]Config節(jié)點(diǎn)

三個(gè)config配置一樣;

#config.conf

systemLog:

?quiet: true

?logAppend: true

?path:/home/mongodb/mongoLog/config.log

?destination: file

?traceAllExceptions: true


storage:

?engine: wiredTiger

?dbPath: /home/mongodb/mongoData/config

?directoryPerDB: true

?journal:

??enabled: true

?wiredTiger:

?engineConfig:

??directoryForIndexes: true

?collectionConfig:

??blockCompressor: snappy

?indexConfig:

??prefixCompression: true


processManagement:

?fork: true


net:

?port: 4000

?http:

?enabled: false


operationProfiling:

?slowOpThresholdMs: 500

?mode: slowOp


security:

?keyFile: /home/mongodb/etc/mongodbkeyfile

?javascriptEnabled: false


replication:

?replSetName:config

?oplogSizeMB: 1000


sharding:

?clusterRole: configsvr


[if !supportLists]3.2.3???????[endif]Route節(jié)點(diǎn)

三個(gè)route配置相同

#route.conf

systemLog:

?quiet: true

?logAppend: true

?path: /home/mongodb/mongoLog/route.log

?destination: file

?traceAllExceptions: true


processManagement:

?fork: true


net:

?port: 4010

?http:

?enabled: false


security:

?keyFile: /home/mongodb/etc/mongodbkeyfile


sharding:

?configDB: config/10.95.216.87:4000, 10.95.216.89:4000,10.95.216.90:4000

?chunkSize: 64

[if !supportLists]3.3??[endif]啟動(dòng)mongod

登陸87、88、89、90

cd /home/monogdb/mongodb-3.2/bin

#禁用numa模式啟動(dòng)numactl --interleave=all

numactl --interleave=all mongod -f /home/mongodb/etc/shard1.conf

numactl --interleave=all mongod -f /home/mongodb/etc/shard2.conf

numactl --interleave=all mongod -f /home/mongodb/etc/shard3.conf

numactl --interleave=all mongod -f /home/mongodb/etc/config.conf

numactl --interleave=all mongos -f /home/mongodb/etc/route.conf

[if !supportLists]3.4??[endif]Config Replica-set配置

#登陸10.95.216.87

cd /home/monogdb/mongodb-3.2/bin

./mongo --port 4000

config = {_id: 'config', configsvr:true,

members: [

{_id: 0, host: '10.95.216.87:4000',priority:1},

{_id: 1, host: '10.95.216.89:4000'},

{_id: 2, host: '10.95.216.90:4000'}]

};

rs.initiate(config);

rs.status();

[if !supportLists]3.5??[endif]Shard Replica-set配置

[if !supportLists]3.5.1???????[endif]Shard1

#登陸10.95.216.87

cd /home/monogdb/mongodb-3.2/bin

./mongo --port 27021

config = {_id: 'shard1', members: [

{_id: 0, host: '10.95.216.87:27021',priority:1},

{_id: 1, host: '10.95.216.88:27021'},

{_id: 2, host: '10.95.216.90:27021', arbiterOnly: true}]

};

rs.initiate(config);

rs.status();

[if !supportLists]3.5.2???????[endif]Shard2

#登陸10.95.216.88

cd /home/monogdb/mongodb-3.2/bin

./mongo --port 27022

config = {_id: 'shard2', members: [

{_id: 0, host: '10.95.216.88:27022',priority:1},

{_id: 1, host: '10.95.216.89:27022'},

{_id: 2, host: '10.95.216.90:27022', arbiterOnly: true}]

};

rs.initiate(config);

rs.status();

Shard3

#登陸10.95.216.89

cd /home/monogdb/mongodb-3.2/bin

./mongo --port 27023

config = {_id: 'shard3', members: [

{_id: 0, host: '10.95.216.89:27023',priority:1},

{_id: 1, host: '10.95.216.87:27023'},

{_id: 2, host: '10.95.216.90:27023', arbiterOnly: true}]

};

rs.initiate(config);

rs.status();

添加用戶

添加全局用戶

#登陸87

cd /home/monogdb/mongodb-3.2/bin

./mongo --port 4010

#添加超級(jí)用戶

use admin

db.createUser( { user: "super",pwd: "Vip1@RfvUjm", roles: [ "root"] } );

db.auth("super","Vip1@RfvUjm");


#添加admin用戶

db.createUser({user:"admin",pwd:"Lvs1@RfvUjm",

?????????roles:["clusterAdmin","dbAdmin","dbAdminAnyDatabase",

????????????????????"userAdminAnyDatabase","readWriteAnyDatabase",

???????????? ??????{role:"readWrite",db:"config"}]

?????????});


#添加數(shù)據(jù)庫用戶

use db_uus

db.createUser( { user:"acctMongoUser", pwd: "7B6Yzxn8eh", roles: ["readWrite"] } );

添加Shard Replica-set用戶

#登陸87、88、89

cd /home/monogdb/mongodb-3.2/bin

./mongo --port 27021

#添加超級(jí)用戶

use admin

db.createUser( { user: "super01",pwd: "Vip1@RfvUjm", roles: [ "root"] } );

db.auth("super01","Vip1@RfvUjm");

rs.status();


./mongo --port 27022

#添加超級(jí)用戶

use admin

db.createUser( { user: "super02",pwd: "Vip1@RfvUjm", roles: [ "root"] } );

db.auth("super02","Vip1@RfvUjm");

rs.status();


./mongo --port 27023

#添加超級(jí)用戶

use admin

db.createUser( { user: "super03",pwd: "Vip1@RfvUjm", roles: [ "root"] } );

db.auth("super03","Vip1@RfvUjm");

rs.status();


Sharding 配置

#登陸10.95.216.87

cd /home/monogdb/mongodb-3.2/bin

./mongo --port 4010

use admin

db.auth("super","Vip1@RfvUjm");

db.runCommand({addshard:"shard1/10.95.216.87:27021,10.95.216.88:27021"});

db.runCommand({addshard:"shard2/10.95.216.88:27022,10.95.216.89:27022"});

db.runCommand({addshard:"shard3/10.95.216.89:27023,10.95.216.87:27023"});

sh.status();

use admin;


新集群開啟Balancer

#登陸10.95.216.87

cd /home/monogdb/mongodb-3.2/bin

mongo --port 4010

use admin

db.auth("super","Vip1@RfvUjm");

sh.startBalancer();

sh.getBalancerState();

sh.isBalancerRunning();


#登陸10.95.196.191

mongo --port 4010

use admin;

db.auth("admin","Lvs1@RfvUjm");

#開啟balancer

sh.startBalancer();


檢查數(shù)據(jù)分片狀況

#登陸10.95.216.87

cd /home/monogdb/mongodb-3.2/bin

./mongo --port 4010

use admin

db.auth("super","Vip1@RfvUjm");

sh.status();

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容