Mongodb3.4.7搭建高可用集群(一)

简介

Sharding(分片)是一种将数据划分为多个分片,然后分布在多个机器节点上的解决方案,Mongodb使用sharding支撑其庞大的数据存储以及高效的数据访问。

单个节点上的数据库系统要存储大容量的数据,同时满足高效率的数据访问,对其来说是一个很大的挑战。没准,我们执行一次查询,CPU就挂掉了,就算不挂,查询出来的数据内存根本放不下。

面对这种情况,有2种方式可以解决系统的瓶颈:纵向增强自身、横向扩展节点。

  • 纵向增强自身意味着要升级为更强悍的CPU,扩展更大的内存容量和硬盘容量,但受制于硬件技术的发展,这种方案风险太大。
  • 横向扩展节点会将数据分布到不同的机器节点上,充分利用多个机器的硬件资源,即使数据继续大规模增长,也可以通过扩充节点来从容应对。

Mongodb使用sharding来实现横向扩展。

Mongodb的分片集群包括以下几个组成部分:

  1. shard(分片):每个shard都是要存储数据的子集,而且每一个shard都应该作为一个replica set,replica set是Mongodb主从复制的一个集群。
  2. mongos:mongos扮演了查询路由的角色,客户端连接它进行数据操作。
  3. config servers:config servers 存储集群的元数据信息和配置信息,从3.4版本开始,config server必须部署为replica set。

注:因为Mongodb本身提供以上功能,所以这些服务进程都是Mongodb的实例,要不就部署在不同的机器节点上,要不就部署在想同机器的不同端口上。

各个组件之间的关系如下图:

Shard Key

Mongodb通过shard key来确定某个document应该放在那个shard replica set上。shard key可以是collection的一个字段或多个字段的组合。shard key一旦指定,分片后,就不能在更改了,所以分片前一定要规划好。关于如何指定shard key,后面的示例说明。

如果分片的时候collection不为空,那一定要保证该collection有shard key的索引。

选择合适的shard key对程序的性能、扩展性有很大的影响。

Mongodb目前支持2中分片策略:Hashed Sharding,Ranged Sharding。具体后续文章介绍。

Chunks

Mongodb将分片数据放入chunk中,Mongodb将每个chunk均匀分布在shard集群中。

时间: 2024-10-09 00:50:33

Mongodb3.4.7搭建高可用集群(一)的相关文章

Mongodb3.4.7搭建高可用集群(二)

部署Mongodb高可用集群 准备 按照官方说明,至少需要3个config server,2个mongos,2个shard,每个shard至少2个副本,就是4个shard,共需要9个Mongodb实例.这里只虚拟出2个机器节点,将不同的Mongodb实例部署在不同的端口上模拟实现. 节点端口关系表 config server leo.zhi.1:10010,leo.zhi.2:10010 mongos server leo.zhi.1:10020,leo.zhi.2:10020 shard se

CentOS 7下搭建高可用集群

一 .安装集群软件 必须软件pcs,pacemaker,corosync,fence-agents-all,如果需要配置相关服务,也要安装对应的软件. 二.配置防火墙1.禁止防火墙和selinux# systemctl disable firewalld# systemctl stop firewalld2.设置防火墙规则# firewall-cmd --permanent --add-service=high-availability# firewall-cmd --add-service=h

ActiveMQ+ZooKeeper搭建高可用集群

一.说明 实际的应用中,一般为了应用的高可用性,都会搭建集群环境去处理.部署多台应用,这样,即使一台有问题,其他热备应用可以立马顶上,继续提供服务. ActiveMQ的集群部署,基于zookeeper的应用程序协调服务和levelDB的持久化方案. 本文中,基于一个系统环境,搭建伪集群模式,通过不同端口的配置,达到集群安装的效果. 基本环境:jdk-7u80-linux-x64.tar.gz.Centos 6.9.zookeeper-3.4.12.tar.gz.apache-activemq-5

实验-CentOS 使用Keepalived搭建高可用集群

配置keepalivedHa集群 一)实验环境: 服务器系统:CentOS7.3 服务:nginx,keepalived 客户端系统:Windows 10,CentOS7.3 二)初始化操作:Master/Backup,童颜的操作 #安装keepalived软件 [[email protected] ~ ]# yum install keepalived #安装Nginx(需要配置EPEL源) [[email protected] ~ ]# yum install Nginx #关闭清空防火墙

MongoDB高可用集群配置的方案

>>高可用集群的解决方案 高可用性即HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性. 计算机系统的高可用在不同的层面上有不同的表现: (1)网络高可用 由于网络存储的快速发展,网络冗余技术被不断提升,提高IT系统的高可用性的关键应用就是网络高可用性,网络高可用性与网络高可靠性是有区别的,网络高可用性是通过匹配冗余的网络设备实现网络设备的冗余,达到高可用的目的.比如冗余的交换机,冗余的路由器等

Nginx负载均衡+Keepalived高可用集群

一.搭建环境及软件版本 负载均衡:Nginx 高可用:Keepalived Linux:Centos 6.5 Nginx:nginx-1.6.2 Keepalived:keepalived-1.2.13 LB-00:Nginx+Keepalived 192.168.174.40 LB-01:Nginx+Keepalived 192.168.174.41 Web1:LNMP 192.168.174.20 Web2:LAMP 192.168.174.30 二.负载均衡搭建 ①解压编译安装Nginx

集群介绍、keepalived介绍、用keepalived配置高可用集群

集群介绍 Linux集群根据功能划分为两大类:高可用和负载均衡. 1.高可用集群通常为2台服务器,一台工作,另一台作为冗余,当提供服务的机器宕机时,冗余将接替继续提供服务. 实现高可用的开源软件有:heartbeat.Keepalived,其中heartbeat很多bug已无人维护(不推荐使用),所以今后使用Keepalived来搭建高可用集群. 2.负载均衡集群,需要有1台服务器作为分发器,它负责把用户的请求分发给后端的服务器处理,在这个集群里,除了分发器外就是给用户提供服务的服务器了,这些服

k8s 开船记:升级为豪华邮轮(高可用集群)与遇到奇怪故障(dns解析异常)

之前我们搭建的 k8s 集群只用了1台 master ,可用性不高,这两天开始搭建高可用集群,但由于之前用 kubeadm 命令创建集群时没有使用 --control-plane-endpoint 参数,无法直接升级现有集群,只能重新创建高可用(High-Availability)集群. 高可用集群的原理很简单,多台 master ,每台都保存集群数据(etcd),所有 nodes 通过专门搭建的负载均衡访问 api server ,这样当部分 master 宕机时,对集群正常运行无影响. 我们

linux 下heartbeat简单高可用集群搭建

Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.通过Heartbeat我们可以实现双机热备,以实现服务的持续性. linux下基于heartbeat的简单web服务的高可用集群搭建 首先规划好两台主机作为heartbeat的双机热备,命名为node1.lvni.cc(主) ;node2.lvni.cc, node1的eth0IP :192.168.157.148  Vip eth0:0:192.168.157.149 node2的eth0IP :19