mongodb集群配置
来源:互联网 发布:java 方法名拼写出来 编辑:程序博客网 时间:2024/06/04 23:21
1.mongodb
mongodb是一个基于分布式文件存储的数据库,旨在为web应用提供可扩展的高性能数据存储解决方案。
2.mongodb分布式应用原理
mongodb集群包括一定数量的mongod(分片存储数据)、mongos(路由处理)、config server(配置节点)、clients(客户端)、arbiter(仲裁节点:为了选择某个分片存储数据节点作为主节点)。
shards:一个shard为一组mongod,通常一组为两台,主从或互为主从,这一组mongod中的数据是相同的。
mongos:可以有多个,相当于一个控制中心,负责路由和协调操作,使得集群想一个整体的系统。
config server:存储集群的信息,包括分片和块数据信息,主要存储块数据信息,每个config server上都有一份所有数据信息的拷贝,以保证每台config server上的数据的一致性。
shard key:为了分割数据集,需要制定分片key的格式,类似于用于索引的key格式,通常有一个活多个字段组成以分发数据。
3.mongodb分布式部署方式
4.集群模式
两台机子部署
注意:config server只能是单数
搭建配置过程
1.两台服务器分别启动相应的mongod进程:
192.168.65.138
./mongod --fork --shardsvr --port 27017 --replSet mySet --dbpath /data/shard11 --logpath /data/shard11/shard11.log --rest./mongod --fork --shardsvr --port 27018 --replSet mySet --dbpath /data/shard12 --logpath /data/shard12/shard12.log --rest
192.168.51.83
./mongod --fork --shardsvr --port 27017 --replSet mySet --dbpath /data/shard2 --logpath /data/shard2/shard2.log --rest
2.初始化replica set
用mongo连接其中一个mongod,执行:
./mongo 192.168.65.138:27017>config = {_id:'mySet',members:[{_id:0,host:'192.168.65.138:27017',priority:2},{_id:1,host:'192.168.51.83:27017',priority:1},{_id:2,host:'192.168.65.138:27018',arbiterOnly:true}]}>rs.initiate(config)>rs.status()
注意:
27018对应的mongod,它们只负责在某个node down掉后,进行vote选举新的master,它们本身并不存储数据备份。
rs.initiate(config)失败原因:192.168.51.83防火墙问题。
3.配置config server
192.168.65.138
./mongod --fork --configsvr --port 20000 --dbpath /data/config --logpath /data/config/config.log --rest
4.配置route server
192.168.51.83
./mongod --fork --port 30000 --chunkSize 256 --configdb 192.168.65.138:20000 --logpath /data/mongos/mongos.log
5.配置集群分片
连接到mongos进程,并切换到admin数据库做一下配置
192.168.51.83
./mongo 192.168.51.83:30000>use admin>db.runCommand({addshard:'mySet/192.168.65.138:27017,192.168.51.83:27017'})>db.runCommand({enablesharding:'test'})>db.runCommand({listshards:1})>printShardingStatus()>db.runCommand({shardcollection:'test.test',key:{_id:1},unique:true})
解释:
use admin
db.runCommand({addshard:'mySet/192.168.65.138:27017,192.168.51.83:27017'}) //添加shard server实例
db.runCommand({enablesharding:'test'}) //设置test数据库可执行分片
db.runCommand({listshards:1}) //列出所有的shard server
printShardingStatus() //查看sharding信息
db.runCommand({shardcollection:'test.test',key:{_id:1},unique:true}) //对现有的表执行sharding
6.测试
连接到mongos (接5)
>for(var i=1;i<=2014;i++)db.test.save({id:i,value1:'123',value2:'123',value3:'123',value4:'123'})>db.test.stats()
7.索引
db.test.ensureIndex({id: 1}, {unique: true,dropDups: true}); db.test.dropIndexes();
注意:创建索引和删除索引
5.监控配置
早在去年已经出现MongoDB和Redis的Cacti模板,使用它,你可以对你的MongoDB和Redis服务进行流量监控。cacti的模板一直在更新,若企业已经用到nosql这种非关系数据库如mongodb和redis。可按照以下教程,对mongodb和redis进行监控。
该模板可以监控以下资源:
mongodb:
redis:
一、下载模板:
wgethttp://mysql-cacti-templates.googlecode.com/files/better-cacti-templates-1.1.8.tar.gz
二、配置ssh公私钥无需密码登录:
因为cacti监控mongodb是需要登录到mongodb的服务端运行mongo的状态获取命令,所以需要ssh连接登录。
所以需要配置非交互式帐号密码登录。这里采用公私钥模式。
先在监控服务器生成一对公私钥。
ssh-keygen ##如果是root用户,生成的默认目录为/root/.ssh下2个文件id_rsa(公钥) id_rsa.pub(私钥)
cd /root/.ssh/ && chmod 600 id_rsa* 把这2个文件修改权限,为600
ssh-copy-id -i /root/.ssh/id_rsa root@192.168.200.1 #加被监控节点公私钥认证
把id_rsa.pub复制出来,放到被监控机器上,然后公钥的内容追加到需要被监控的主机也就是mongodb和redis的服务端。追加到.ssh/authorized_keys
然后用ssh连接你所安装mongodb或者redis的服务端,如果不需输密码连接上。则正常。下面就可以开始添加监控文件了。
三、配置监控脚本:
mongodb或redis的监控所需到的是你下载目录中的better-cacti-templates-1.1.8\scripts下的
ss_get_by_ssh.php 这个脚本 这个脚本需要放在cacti的服务端。
如果你cacti是装到/var/www/html/cacti/目录下。
把该文件放在其下面的scripts目录下。别忘了看下权限。要有执行权限。
然后修改该文件。主要修改一下选项,大概在40行。
# ============================================================================
$ssh_user = 'root'; # SSH username
$ssh_port = 22; # SSH port
$ssh_iden = '-i /root/.ssh/id_rsa'; # SSH identity
##修改根据你的配置,你的ssh连接用户,还有认证私钥的位置。
大该在50行,还可以修改其默认的去探测的端口(如果redis不是正常默认端口启动需要修改这些)。
$memcache_port = 11211; # Which port memcached listens on
$redis_port = 6379; # Which port redis listens on
如果是mongodb不是正常端口启动,则需要这样修改。找到以下字段,添加红色字段,这里注意mongo这个命令一定要找对。
function mongodb_cmdline ( $options ) {
return “echo \”db._adminCommand({serverStatus:1, repl:1})\” | /usr/local/mongo/mongodb/bin/mongo –port 10000″;
}
配置完后保存退出。
可以先用测试命令测一下。语法如下:
php /var/www/html/scripts/ss_get_by_ssh.php --type mongodb --host 192.168.200.1 --items c,de,df,dg,dh,di,dj,dk,dl,dm,dn,do,dp,dq,dr,ds,dt,du
如果有数据输出。则表示正常。
四、在cacti里添加mongodb和redis模板:
4.1 模板导入
模板目录为better-cacti-templates-1.1.8\templates
4.2 导入后对被监控机添加模板:
4.3 添加后为其绘图:
五:实际效果测试:
本文部分引用地址:
http://freeze.blog.51cto.com/1846439/884925
http://wenku.baidu.com/link?url=Oc3qynyXXLbaQXnoU7Eiwl3JZpY8DJAh0S7fCyPDAiYZubWG3nbrLC0ZgvaNTDHZIf7JsxUdYbn_5JmRkEZs98gvv6d6Lt1M7y-CTizOA8G
(涉及到三台服务器与四台服务器mongodb集群配置)
- 配置MongoDB集群
- MongoDB集群配置
- 配置MongoDB集群分片
- 配置MongoDB集群分片
- MongoDB集群安装配置
- mongodb的集群配置
- 配置MongoDB集群分片
- mongoDB 集群配置
- mongodb集群配置
- mongodb集群配置
- 安装配置mongodb集群
- Mongodb集群配置搭建
- MongoDB分片集群配置
- mongoDB集群配置
- mongodb集群配置
- Mongodb集群配置问题探讨
- MongoDB 分片+副本 集群配置
- MongoDB的分片集群配置
- 手把手教你appium_ios第一个例子
- MVC中部分视图调用方法总结
- iOS7提供的API进行二维码扫描解码
- 一首不知道名字的歌
- 张三丰
- mongodb集群配置
- ReportStudio入门教程(二十九) - 使报表不能编辑
- bfdb
- Cocos2d-x手机游戏开发行业背景分析
- UIWebView加载HTML,如何使网页中的图片可点击?
- [课程地图-jsp网站]界面布局要求
- 2014微软编程一小时题目1 : Arithmetic Expression
- tectia - sftpg3 can not open server (问题解决)
- 关于定时器