mongodb分片复制集搭建

目录

1       部署规划... 2

2       内核参数调整... 2

2.1             sysctl.conf 2

2.2             limits.conf 3

2.3             其他... 3

2.4             启动ntp时间同步... 4

3       Mongodb安装... 4

3.1             添加环境变量... 4

3.2             节点配置说明... 4

3.2.1         Mongod数据节点... 4

3.2.2         Config节点... 5

3.2.3         Route节点... 7

3.3             启动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             检查节点... 10

4       停止应用... 10

4.1             替换应用war/jar包... 10

4.2             修改应用mongo配置... 11

4.3             禁止注册接口... 11

4.3.1         Mongo中移除注册相关api配置... 11

4.3.2         Redis中移除注册相关api缓存... 12

5       数据倒换... 12

5.1             新集群关闭Balancer 12

5.2             旧集群数据导出... 12

5.3             新集群数据导入... 13

5.4             新集群创建索引... 14

5.5             新集群sequence处理... 14

5.6             新集群开启Balancer 14

5.7             检查数据分片状况... 15

6       启动应用... 15

7       开放注册接口... 16

8       测试验证... 16



[if !supportLists]1      [endif]部署规划

分为3个sharding, 每个sharding是一个replica-set,每个replica-set包含两个数据节点和一种仲裁(Arb)节点

[if !supportLists]2      [endif]内核参数调整

[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]其他

#关闭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


#取消虚拟内存限制

vi /etc/profile

加入

ulimit -v unlimited

. /etc/profile


#磁盘使用使用noatime,nodiratime

/dev/md2 / ext4 defaults,noatime 0 0

mount -o remount /


#设置较小的磁盘readahead参数值32(16KB)

blockdev --getra /dev/sda

blockdev --setra 32 /dev/sda

[if !supportLists]2.4  [endif]启动ntp时间同步

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]添加环境变量

MONGODB_HOME=/home/mongodb/mongodb-3.2

export PATH=$MONGODB_HOME/bin:$PATH

[if !supportLists]3.2  [endif]节点配置说明

在4台服务器上建立mongodb相关目录

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

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

[if !supportLists]3.2.1       [endif]Mongod数据节点

shard1、shard2、shard3配置文件仅端口、数据和日志文件目录不一样

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节点

三个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节点

三个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]启动mongod

登陆87、88、89、90

cd /home/monogdb/mongodb-3.2/bin

#禁用numa模式启动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

#添加超级用户

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"}]

         });


#添加数据库用户

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

#添加超级用户

use admin

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

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

rs.status();


./mongo --port 27022

#添加超级用户

use admin

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

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

rs.status();


./mongo --port 27023

#添加超级用户

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();


检查数据分片状况

#登陆10.95.216.87

cd /home/monogdb/mongodb-3.2/bin

./mongo --port 4010

use admin

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

sh.status();

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,753评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,668评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,090评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,010评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,054评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,806评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,484评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,380评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,873评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,021评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,158评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,838评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,499评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,044评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,159评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,449评论 3 374
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,136评论 2 356

推荐阅读更多精彩内容