Linux下mongodb集群部署,mongodb集群搭建

2.禁用disable

Transparent Huge Pages(THP)三种配置方式

mongodb官网:THP在数据库工作负载下表现不佳,往往会有稀疏而不连续的内存访问模式。必须禁用THP对Linux机器运行使用,以确保MongoDB最佳的性能。

操作步骤:

修改/etc/grub.conf

在kernel后增加transparent_hugepage=never

kernel /vmlinuz-2.6.32-220.el6.x86_64 ro

root=/dev/mapper/vg_odsmongodb1-lv_root rd_LVM_LV=vg_odsmongodb1/lv_swap

rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD quiet SYSFONT=latarcyrheb-sun16

rhgb

crashkernel=auto rd_LVM_LV=vg_odsmongodb1/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM transparent_hugepage=never

MongoDB Replica Set部署步骤

Replica Set使用的是n个mongod节点,构建具备自动的容错功能(auto-failover),自动恢复的(auto-recovery)的高可用方案。

使用Replica Set来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。

对于Replica Set中的secondary节点默认是不可读的。

mongodb集群的搭建

172.17.5.51

primary

172.17.5.52

secondary

172.17.5.53

arbiter

1创建安装mongodb的目录

mkdir -p /data/mongodb

2

[root@QA-5-51 local]# tar -zxvf

mongodb-linux-x86_64-rhel62-3.0.5.tgz -C /data/mongodb/

如果报以下的错误是解压的时候出现的问题

[root@QA-5-51 local]# cd /data/mongodb/

[root@QA-5-51 mongodb]# mv

mongodb-linux-x86_64-rhel62-3.0.5/ mongodb/

[root@QA-5-51

mongodb]# mkdir -p /data/mongodb/data

[root@QA-5-51 mongodb]# mkdir -p

/data/mongodb/log

[root@QA-5-51 mongodb]# iptables -F

[root@QA-5-51 mongodb]# iptables –L

[root@QA-5-51 bin]# pwd

/data/mongodb/mongodb/bin

[root@QA-5-44 bin]# cat mongodb.conf

port=27017

dbpath=/data/mongodb/data

logpath=/data/mongodb/log/mongodb.log

logappend=true

fork=true

maxConns=5000

replSet=shared1

[root@QA-5-51 bin]# numactl

--interleave=all /data/mongodb/mongodb/bin/mongod --config

/data/mongodb/mongodb/bin/mongodb.conf

vi /etc/rc.d/rc.local

numactl --interleave=all

/data/mongodb/mongodb/bin/mongod --config

/data/mongodb/mongodb/bin/mongodb.conf

[root@QA-5-50 bin]# yum install open*

[root@QA-5-51 bin]# ./mongod --replSet

replsettest --dbpath /data/mongodb/data --oplogSize 100 --logpath

/data/mongodb/log/mongodb.log --logappend –fork

config={_id:"shared1",members:[

{_id:0,host:"172.17.5.51:27017"},

{_id:1,host:"172.17.5.52:27017"},

{_id:2,host:"172.17.5.53:27017",arbiterOnly:true}]}

>

config={_id:"shared1",members:[

config={_id:"shared1",members:[

...

...

{_id:0,host:"172.17.5.51:27017"},

{_id:0,host:"172.17.5.51:27017"},

...

...

{_id:1,host:"172.17.5.52:27017"},

{_id:1,host:"172.17.5.52:27017"},

...

...

{_id:2,host:"172.17.5.53:27017",arbiterOnly:true}]}

{_id:2,host:"172.17.5.53:27017",arbiterOnly:true}]}

{

"_id" : "shared1",

"members" : [

{

"_id" : 0,

"host" :

"172.17.5.51:27017"

},

{

"_id" : 1,

"host" :

"172.17.5.52:27017"

},

{

"_id" : 2,

"host" :

"172.17.5.53:27017",

"arbiterOnly"

: true

}

]

}

> rs.initiate(config)rs.initiate(config)

{ "ok" : 1 }

shared1:PRIMARY> rs.conf()rs.conf()  //查看配置内容

{

"_id" : "shared1",

"version" : 1,

"members" : [

{

"_id" : 0,

"host" :

"172.17.5.51:27017",

"arbiterOnly"

: false,

"buildIndexes"

: true,

"hidden" :

false,

"priority" :

1,

"tags" : {

},

"slaveDelay"

: 0,

"votes" : 1

},

{

"_id" : 1,

"host" :

"172.17.5.52:27017",

"arbiterOnly"

: false,

"buildIndexes" : true,

"hidden" :

false,

"priority" :

1,

"tags" : {

},

"slaveDelay"

: 0,

"votes" : 1

},

{

"_id" : 2,

"host" :

"172.17.5.53:27017",

"arbiterOnly"

: true,

"buildIndexes" : true,

"hidden" :

false,

"priority" :

1,

"tags" : {

},

"slaveDelay"

: 0,

"votes" : 1

}

],

"settings" : {

"chainingAllowed" :

true,

"heartbeatTimeoutSecs" : 10,

"getLastErrorModes" : {

},

"getLastErrorDefaults" : {

"w" : 1,

"wtimeout" :

0

}

}

}

验证集群

shared1:PRIMARY>

db.test.insert({"name":"cathy","age":24})

db.test.insert({"name":"cathy","age":24})

WriteResult({ "nInserted" : 1 })

shared1:PRIMARY>

shared1:PRIMARY>

db.test.find()db.test.find()

{ "_id" :

ObjectId("55d54911e7311a57758fb214"), "name" :

"cathy", "age" :

从库查看

shared1:SECONDARY>

db.test.find()db.test.find()

Error: error: { "$err" :

"not master and slaveOk=false", "code" : 13435 }

shared1:SECONDARY>

shared1:SECONDARY> db.gerdb.gedb.ge

test.ge

shared1:SECONDARY>

db.getMongo().setSlaveOk()db.getMongo().setSlaveOk()

shared1:SECONDARY>

db.test.find()db.test.find()

{ "_id" :

ObjectId("55d54911e7311a57758fb214"), "name" :

"cathy", "age" : 24 }

第三个节点查看

shared1:ARBITER>

db.test.find()db.test.find()

Error: error: { "$err" :

"not master and slaveOk=false", "code" : 13435 }

shared1:ARBITER>

测试故障切换

[root@QA-5-51 bin]# ./mongo --port 27017

MongoDB shell version: 3.0.5

connecting to: 127.0.0.1:27017/test

Server has startup warnings:

2015-08-19T22:50:09.064-0400 I CONTROL  [initandlisten] ** WARNING: You are running

this process as the root user, which is not recommended.

2015-08-19T22:50:09.064-0400 I CONTROL  [initandlisten]

2015-08-19T22:50:09.064-0400 I CONTROL  [initandlisten]

2015-08-19T22:50:09.064-0400 I CONTROL  [initandlisten] ** WARNING:

/sys/kernel/mm/transparent_hugepage/defrag is 'always'.

2015-08-19T22:50:09.064-0400 I CONTROL  [initandlisten] **        We suggest setting it to 'never'

2015-08-19T22:50:09.064-0400 I CONTROL  [initandlisten]

shared1:PRIMARY> use adminuse admin

switched to db admin

shared1:PRIMARY>

db.shutdownServer()db.shutdownServer()

shared1:PRIMARY> rs.status()rs.status()

{

"set" : "shared1",

"date" : ISODate("2015-08-20T03:37:34.569Z"),

"myState" : 1,

"members" : [

{

"_id" : 0,

"name" :

"172.17.5.51:27017",

"health" : 0,

"state" : 8,

"stateStr" :

"(not reachable/healthy)",

"uptime" : 0,

"optime" :

Timestamp(0, 0),

"optimeDate"

: ISODate("1970-01-01T00:00:00Z"),

"lastHeartbeat" :

ISODate("2015-08-20T03:37:33.999Z"),

"lastHeartbeatRecv" :

ISODate("2015-08-20T03:34:57.770Z"),

"pingMs" : 0,

"lastHeartbeatMessage" : "Failed attempt to connect to

172.17.5.51:27017; couldn't connect to server 172.17.5.51:27017 (172.17.5.51),

connection attempt failed",

"configVersion" : -1

},

{

"_id" : 1,

"name" :

"172.17.5.52:27017",

"health" : 1,

"state" :

1,

"stateStr" :

"PRIMARY",

"uptime" :

2452,

"optime" :

Timestamp(1440041233, 2),

"optimeDate"

: ISODate("2015-08-20T03:27:13Z"),

"electionTime" :

Timestamp(1440041699, 1),

"electionDate" : ISODate("2015-08-20T03:34:59Z"),

"configVersion" : 1,

"self" : true

},

{

"_id" : 2,

"name" :

"172.17.5.53:27017",

"health" : 1,

"state" : 7,

"stateStr" :

"ARBITER",

"uptime" :

1435,

"lastHeartbeat" :

ISODate("2015-08-20T03:37:33.841Z"),

"lastHeartbeatRecv" :

ISODate("2015-08-20T03:37:33.842Z"),

"pingMs" : 0,

"configVersion" : 1

}

],

"ok" : 1

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值