高可用RabbitMQ集群安装配置

RabbitMQ集群安装配置+HAproxy+Keepalived高可用

rabbitmq 集群 消息队列


RabbitMQ简介

  RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。

  AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

  

  AMQP的原始用途只是为金融界提供一个可以彼此协作的消息协议,而现在的目标则是为通用消息队列架构提供通用构建工具。因此,面向消息的中间件 (MOM)系统,例如发布/订阅队列,没有作为基本元素实现。反而通过发送简化的AMQ实体,用户被赋予了构建例如这些实体的能力。这些实体也是规范的一 部分,形成了在线路层协议顶端的一个层级:AMQP模型。这个模型统一了消息模式,诸如之前提到的发布/订阅,队列,事务以及流数据,并且添加了额外的特 性,例如更易于扩展,基于内容的路由。

  RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

  

 


RabbitMQ安装

版本选择

1. 安装之前首先确认自己的系统版本和位数,然后选择适合的安装程序。

查看系统版本:cat /etc/issue

查看系统位数:cat /proc/cpuinfo |grep “clflush size”

2. 浏览博客,论坛,官网以及开源主页,尽量避免选择有重大缺陷版本

比如3.6.3版本rabbitmq的web端管理界面不能查看、管理queues

https://github.com/rabbitmq/rabbitmq-server/issues

3. 根据选择的版本,选择Erlang版本,http://www.erlang.org/

避免选择最高版本Erlang,3.6.4之前所有版本rabbitmq均不完全兼容当前最新的(2016.8)19.0 Erlang。同时选择高于等于R16B03的Erlag。

  

 

安装准备

1. 安装之前可以根据需要先修改好hostname,可以修改为有意义的名称,比如node1、node2等,安装之后再修改会出现一系列问题。

  方式1:hostname命令查看,修改

# hostname m1

  方式2:配置文件中修改

# vi /etc/sysconfig/network
          NETWORKING=yes
          HOSTNAME=m1

2. 修改hosts文件,将集群所有机器 ip hostname 分别添加到每一台机器中 ,比如。

vi/etc/hosts

   127.0.0.1 localhost
   127.0.0.1 m1
   ::1 localhost

   192.168.12.190 m1
   192.168.12.190 m2
   192.168.12.192 n1
   192.168.12.193 n2
   192.168.12.194 n3

安装过程

(下载rpm安装包安装)

1. 下载软件源到/etc/yum.repos.d/ ,并生成缓存

wget –no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.repo

yum makecache

2. 安装Socat

yum install -y socat

3. 下载安装Erlang

选择版本号尽量高的推荐18

下载地址https://packages.erlang-solutions.com/erlang/

wget http://packages.erlang-solutions.com/site/esl/esl-erlang/FLAVOUR_1_general/esl-erlang_18.3.4-1~centos~6_amd64.rpm

yum localinstall -y esl-erlang_18.3.4-1~centos~6_amd64.rpm

4. 下载安装RabbitMq 3.6.2

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.2/rabbitmq-server-3.6.2-1.noarch.rpm

yum localinstall -y rabbitmq-server-3.6.2-1.noarch.rpm

(如果提示依赖问题,先安装依赖,提示erlang版本直接跳过

yum localinstall --skip-broken rabbitmq-server-3.6.2-1.noarch.rpm
或rpm -ivh --nodeps rabbitmq-server-3.6.2-1.noarch.rpm

)

到此安装结束!


RabbitMQ配置

单机配置

启动服务

service rabbitmq-server start

查看运行状态

rabbitmqctl status

开启管理扩展(关闭为disable)

rabbitmq-plugins enable rabbitmq_management

开启之后可以用浏览器访问管理界面:http://ip:15672

默认用户名密码 guest:guest

如果提示不能登录就需要新建账户,见下文添加用户操作。

查看端口监听状态 5672为集群间通信端口,15672为web端管理端口

netstat -atn |grep 5672
[[email protected] ~]# netstat -atn |grep 5672
tcp        0      0 0.0.0.0:15672               0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:25672               0.0.0.0:*                   LISTEN
tcp        0      0 :::5672                     :::*                        LISTEN

添加账户(只需要在一台机器上设置,加入集群后会同步到所有机器)

rabbitmqctl  add_user username password

添加账户标签(administrator)

rabbitmqctl set_user_tags username administrator

标签:

management

用户可以访问管理插件。

policymaker

用户可以访问管理插件,可以管理可访问的vhost的策略和参数。

monitoring

用户可以访问管理插件,可以查看所有connections、channels、node-related信息。

administrator

用户拥有monitoring用户的所有权限,可以管理用户,vhost和权限,关闭他用户的连接,并管理所有vhost策略和参数。

(除此之外可以设置任何标签,以上几个只是特殊标签)

赋予权限 set_permissions [-p vhost] {user} {conf} {write} {read}

rabbitmqctl set_permissions -p / username ".*" ".*" ".*"

({conf} {write} {read}为正则表达式)

rabbitmqctl set_permissions -p /myvhost tonyg "^tonyg-.*" ".*" ".*"

这个命令指示RabbitMQ代理授予用户名为tonyg访问虚拟主机名为/myvhost,tonyg具有对“tonyg-”开头的资源的读写权限。


集群配置

RabbitMQ集群中所有节点都是平等的,没有绝对的主次之分,每一个节点的配置信息都会在集群中进行同步。只有节点类型区别,节点类型有disk型和RAM型。分别对应磁盘和内存,disk节点可以持久化消息安全性较高、RAM节点存取速度快,但是不能持久化。一个集群中至少要有一个disk类型的节点,以便在所有节点宕机重启时将持久化队列中的消息进行持久化。

同步 Erlang Cookie

Erlang Cookie 文件:/var/lib/rabbitmq/.erlang.cookie

将任意一台的cookie文件或者内容替换到集群其他机器。最后确保文件权限为400。

查看某台机器的cookie

[[email protected] ~]# cat /var/lib/rabbitmq/.erlang.cookie
YZCUPNLBNOMPTDCUALZC

关闭rabbitmq,将cookie复制到其他机器…

[[email protected]~]# rabbitmqctl stop
[[email protected]~]# echo YZCUPNLBNOMPTDCUALZC > /var/lib/rabbitmq/.erlang.cookie 

[[email protected]~]# rabbitmqctl stop
[[email protected]~]# echo YZCUPNLBNOMPTDCUALZC > /var/lib/rabbitmq/.erlang.cookie

或者使用scp命令

scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/.erlang.cookie

 scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/.erlang.cookie

cookie同步完成之后启动

以detached方式启动

rabbitmq-server -detached

如果提示PID FILE不能写入,可以关闭应用,直接以服务方式启动

关闭之后重启仍然提示有实例正在运行可以强制杀死线程

ps aux | grep rabbitmq
kill -9 xxxx

启动服务

service rabbitmq-server start
加入集群

将n2节点加入n1 作为RAM类型节点

[[email protected] ~]#rabbitmqctl stop_app
[[email protected] ~]#rabbitmqctl reset
[[email protected] ~]#rabbitmqctl join_cluster [email protected] --ram
[[email protected] ~]#rabbitmqctl start_app

将n3节点加入n1 作为disc类型节点

[[email protected] ~]#rabbitmq stop_app

[[email protected] ~]#rabbitmqctl reset

[[email protected] ~]#rabbitmqctl join_cluster [email protected]

[[email protected] ~]#rabbitmqctl start_app

(rabbitmq集群节点有disc 和ram两种类型,一个集群中至少要有一个disc类型的节点,不指定默认加入为disc)

查看状态

完成之后可以用rabbitmqctl 命令查看相关信息

rabbitmqctl status //查看应用状态

rabbitmqctl cluster_status //查看集群信息

访问任意管理端界面查看http://ip:15672

到此简单集群部署完毕!

(如果某节点显示unavailable检查服务是否启动,管理扩展是否开启

rabbitmq-plugins enable rabbitmq_management)


HAproxy+Keepalived 高可用

随着网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,如何有效节约成本?同时实现商业硬件一样的高性能高可用的功能?有什么好的负载均衡可伸张可扩展的方案吗?答案是利用HAproxy+Keepalived基于完整开源软件的架构可以提供一个负载均衡及高可用的服务器。

  HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,HAProxy是完全免费的、借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。Keepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现。

  

  

HAproxy简介

  HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,HAProxy是完全免费的、借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。

(1)免费开源,稳定性也是非常好,可以与硬件级的F5相媲美;

(2)根据官方文档,HAProxy可以跑满10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom’s 10GbE NICs (Myri-10G PCI-Express)。

(3)HAProxy 支持连接拒绝 : 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。 这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。

(4)HAProxy 支持全透明代理(已具备硬件防火墙的典型特点): 可以用客户端IP地址或者任何其他地址来连接后端服务器. 这个特性仅在Linux 2.4/2.6内核打了cttproxy补丁后才可以使用. 这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。

(5)HAProxy现多于线上的Mysql集群环境,我们常用于它作为MySQL(读)负载均衡;

(6)自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警,这个也是我非常喜欢它的原因之一;

(7)HAProxy支持虚拟主机,许多朋友说它不支持虚拟主机是错误的,通过测试我们知道,HAProxy是支持虚拟主机的。

总结:

  HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

  在功能上,能以proxy反向代理方式实现WEB均衡负载,这样的产品有很多。包括lvs,Nginx,ApacheProxy,lighttpd等。

  国内生产环境上使用Haproxy的公司很多,例如淘宝的CDN系统

  

keepalived简介  

  keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

  Keepalived是一个基于VRRP协议来实现的WEB 服务高可用方案,可以利用其来避免单点故障。一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

        +------------------VIP(192.168.12.111)-------------+
        |                           |                      |
        |                           |                      |
  server(MASTER) <------------keepalived--------> server(BACKUP)
   (192.168.12.192)                              (192.168.12.194)

HAproxy安装配置

在进行安装配置HAproxy之前首先确定集群的基本架构,需要在节点n1和n2上做热备,所以需要同时安装上haproxy。基本结构如下:

ip hostname 节点类型 主/备
192.168.12.190 m1 Disk
192.168.12.192 n1 RAM master
192.168.12.194 n3 RAM backup

在master和backup主机上安装(n1,n3)haproxy

yum install haproxy

修改配置文件

vi /etc/haproxy/haproxy.cfg

#配置rabbitmq集群节点信息,n1、n3相同配置

#配置一个监听实例rabbitmq_cluster
listen rabbitmq_cluster

#监控端口
bind 0.0.0.0:5670

#配置TCP模式
mode tcp

#简单的轮询
balance roundrobin

#rabbitmq集群节点配置
server m1  192.168.12.190:5672 check inter 5000 rise 2 fall 2

server n1  192.168.12.192:5672 check inter 5000 rise 2 fall 2

server n3  192.168.12.194:5672 check inter 5000 rise 2 fall 2

#配置web端监控,查看统计信息
###haproxy statistics monitor 

listen statics 0.0.0.0:8888

mode http

log 127.0.0.1 local0 debug

transparent

#数据刷新频率
stats refresh 60s

#后台地址http://ip:8888/haproxy-stats
stats uri / haproxy-stats

stats realm Haproxy \ statistic

#账号密码
stats auth admin:admin

Keepalived安装配置

在master和backup主机上安装(n1,n3)

# yum install keepalived

修改配置文件

vi /etc/keepalived.conf

备用节点:

#定义一个脚本chk_haproxy
vrrp_script chk_haproxy {
        script "/etc/keepalived/scripts/haproxy_check.sh"
        interval 2
}   

#定义一个VRRP实例
vrrp_instance VI_1 {
        #备用节点(主节点为MASTER)
        state BACKUP
        #添加虚拟地址的网卡 ,选择稳定的网卡
        interface eth0
        #虚拟路由标识,同一个VRRP实例要使用同一个标识
        virtual_router_id 51
        #主、备节点是由优先级控制的state参数会失效
        priority 100
        # 用于设定主备节点间同步检查时间间隔
        #advert_int 2
        #
        unicast_src_ip 192.168.12.194
        unicast_peer {
            192.168.12.192
        }

        #授权方式
        authentication {
            auth_type PASS
            auth_pass rabbitmq
        }      

        #设置虚拟地址
        virtual_ipaddress {
            192.168.12.111
        }

        #尽量将track_script放到virtual_ipaddress后面
        track_script {
            chk_haproxy
        }

        #设置高可用集群中不抢占功能,在主机down后,从机接管,当主机重新恢复后,设置此功能,备机将继续提供服务,从而避免因切换导致的隐患
        nopreempt

        # 当keepalived切换状态到MASTER时,执行脚本
        notify_master "/etc/keepalived/scripts/haproxy_master.sh" 

        # 当keepalived切换状态到BACKUP时,执行脚本

        #notify_backup "/etc/keepalived/backup.sh"

        # 当keepalived切换状态到FAULT时,执行脚本

        #notify_fault "/etc/keepalived/fault.sh"

        #当keepalived切换状态到STOP时,执行脚本

        #notify_fault "/etc/keepalived/stop.sh"

}

主节点:

vrrp_script chk_haproxy {
        script "/etc/keepalived/scripts/haproxy_check.sh"
        interval 2
}   

vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 101
        unicast_src_ip 192.168.12.192
        unicast_peer {
            192.168.12.194
        }

        authentication {
            auth_type PASS
            auth_pass rabbitmq
        }      

        virtual_ipaddress {
            192.168.12.111
        }

        track_script {
            chk_haproxy
        }
        notify_master "/etc/keepalived/scripts/haproxy_master.sh" 

}

chk_haproxy.sh

 #!/bin/bash
LOGFILE="/var/log/keepalived-ha-state.log"
echo "===========================================" >> \$LOGFILE
date  +%Y%m%d-%H:%M:%S  >> \$LOGFILE
pid1=\`ps aux|grep /etc/haproxy/haproxy.cfg | grep -v grep | grep -v bash | wc –l\`
if [ "\$pid1" = "0" ]; then

    echo "Ready to start haproxy....."  >> \$LOGFILE
haproxy -f /etc/haproxy/haproxy.cfg –D

启动Haproxy

    pid2=\`ps aux|grep /etc/haproxy/haproxy.cfg | grep -v grep | grep -v bash |wc –l\`
    if [ "\$pid2" = "0"  ]; then
        echo "Haproxy failed to start !!! So,stop keepalived!!!"  >> \$LOGFILE
        /etc/init.d/keepalived stop
        else
        echo "Haproxy start success........." >> \$LOGFILE
    fi
fi

haproxy_master.sh

#!/bin/bash
LOGFILE="/var/log/keepalived-ha-state.log"
echo "===========================================" >> $LOGFILE
date  +%Y%m%d-%H:%M:%S  >> $LOGFILE
echo "Switch to here....." >> $LOGFILE

集群搭建完毕!

常用命令

rabbitmqctl命令

http://www.rabbitmq.com/man/rabbitmqctl.1.man.html#

1). 服务器启动与关闭

启动: rabbitmq-server –detached

关闭:rabbitmqctl stop

若单机有多个实例,则在rabbitmqctlh后加–n 指定名称

2). 插件管理

开启某个插件:rabbitmq-pluginsenable xxx

关闭某个插件:rabbitmq-pluginsdisablexxx

注意:重启服务器后生效。

3).virtual_host管理

新建virtual_host: rabbitmqctladd_vhost xxx

撤销virtual_host:rabbitmqctl delete_vhost xxx

4). 用户管理

新建用户:rabbitmqctl add_user xxxpwd

删除用户: rabbitmqctl delete_user xxx

改密码: rabbimqctlchange_password {username} {newpassword}

设置用户角色:rabbitmqctlset_user_tags {username} {tag …}

Tag可以为 administrator,monitoring, management

5). 权限管理

权限设置:set_permissions [-pvhostpath] {user} {conf} {write} {read}

Vhostpath

Vhost路径

user

用户名

Conf

一个正则表达式match哪些配置资源能够被该用户访问。

Write

一个正则表达式match哪些配置资源能够被该用户读。

Read

一个正则表达式match哪些配置资源能够被该用户访问。

6). 获取服务器状态信息

服务器状态:rabbitmqctl status

队列信息:rabbitmqctl list_queues[-p vhostpath] [queueinfoitem …]

Queueinfoitem可以为:name,durable,auto_delete,arguments,messages_ready,messages_unacknowledged,messages,consumers,memory

Exchange信息:rabbitmqctllist_exchanges[-p vhostpath] [exchangeinfoitem …]

Exchangeinfoitem有:name,type,durable,auto_delete,internal,arguments.

Binding信息:rabbitmqctllist_bindings[-p vhostpath] [bindinginfoitem …]

Bindinginfoitem有:source_name,source_kind,destination_name,destination_kind,routing_key,arguments

Connection信息:rabbitmqctllist_connections [connectioninfoitem …]

Connectioninfoitem有:recv_oct,recv_cnt,send_oct,send_cnt,send_pend等。

Channel信息:rabbitmqctl list_channels[channelinfoitem …]

Channelinfoitem有consumer_count,messages_unacknowledged,messages_uncommitted,acks_uncommitted,messages_unconfirmed,prefetch_count,client_flow_blocked

rabbimq-plugins

http://www.rabbitmq.com/man/rabbitmq-plugins.1.man.html

系统命令

卸载
#rpm -qa|grep rabbitmq
rabbitmq-server-3.6.1-1.noarch
#rpm -e --nodeps rabbitmq-server-3.6.1-1.noarch
#rpm -qa|grep erlang
esl-erlang-18.3-1.x86_64
#rpm -e --nodeps esl-erlang-18.3-1.x86_64

 服务
#service rabbitmq-server start --后台方式运行
#service rabbitmq-server stop  --停止运行
#service rabbitmq-server status --查看状态
时间: 2024-10-02 22:53:16

高可用RabbitMQ集群安装配置的相关文章

Redis简介、高可用及集群相关配置

一 Redis 持久化和复制 1 Redis持久化的两种方式: 1 RDB:可以再指定的时间间隔内生成数据集的时间点快照(每隔一定的时间做一个快照,进行将其刷新到磁盘上,断电)2 AOF:把服务器执行的所有写操作命令记录下来,然后在服务器启动时,通过重新执行这些命令来还原数据集,AOF文件的操作相当于自增操作,Redis可以同时使用RDB和AOF这两种方式.当Redis重启时,会优先使用AOF文件来还原数据集.你也可以关闭持久化功能RDB:可以做备份,RDB可以最大化Redis性能,父进程在保存

hadoop3.1.1 HA高可用分布式集群安装部署

1.环境介绍 服务器:CentOS 6.8 其中:2 台 namenode.3 台 datanode JDK:jdk-8u191-linux-x64.tar.gz hadoop:hadoop-3.1.1.tar.gz 节点信息: 节点 IP namenode datanode resourcemanager journalnode namenode1 192.168.67.101 √   √ √ namenode2 192.168.67.102 √   √ √ datanode1 192.168

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置 LB集群是locd balance集群的简称.翻译成中文是:负载均衡集群的意思:集群是一组相互独立的.通过高速网络互联的计算机相互之间构成一个组合,并以单一的系统的模式加以管理.LVS是Linux Virtual Server的简写,翻译中文是Linux虚拟服务器,是一个虚拟的服务器集群系统. 负载均衡集群:是为了企业提供更为实用,性价比更高的系统机构解决方案.负载均衡集群把用户的请求尽可能的平均分发到集群的各

直接路由的高可用LVS集群配置

 直接路由的高可用LVS集群配置: 调度服务器IP:(106.3.43.240)192.168.11.100,节点服务器分别为:192.168.11.101,192.168.11.102 一.安装ipvsadmin: 1.yum -y install ipvsadmin(推荐用第一种方法) 2.下载http://www.linuxvirtualserver.org/software/,找到相应的版本: 注意对应自己的内核版本 ipvsadm-1.24.tar.gz tar zxvf ipvs

搭建高可用mongodb集群(一)——配置mongodb

搭建高可用mongodb集群(一)--配置mongodb 在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. NOSQL有这些优势: 大数据量,可以通过廉价服务器存储大量的数据,轻松摆脱传统mysql单表存储量级限制. 高扩展性,Nosql去掉了关系数据库的关系型特性,很容易横向扩展,摆脱了以往老是纵向扩展的诟病. 高性能,Nosql通过简单的key-value方式获取数据,非常快速.还有N

安装ORACLE高可用RAC集群11g校验集群安装的可行性输出信息

安装ORACLE高可用RAC集群11g校验集群安装的可行性输出信息 作者:Eric 微信:loveoracle11g [[email protected] grid]$ ./runcluvfy.sh stage -pre crsinst -fixup -n node1,node2 -verbose Performing pre-checks for cluster services setup Checking node reachability... Check: Node reachabil

Linux HA Cluster高可用服务器集群,所谓的高可用不是主机的高可用,而是服务的高可用。

什么叫高可用:一个服务器down掉的可能性多种多样,任何一个可能坏了都有可能带来风险,而服务器离线通常带来的代价是很大的,尤其是web站点,所以当某一台提供服务的的服务器down掉不至于服务终止的就叫高可用. 什么叫心跳:就是将多台服务器用网络连接起来,而后每一台服务器都不停的将自己依然在线的信息很简短很小的通告给同一个网络中的备用服务器的主机,告诉其实主机自己依然在线,其它服务器收到这个心跳信息就认为本机是在线的,尤其是主服务器. 心跳信息怎么发送,由谁来收,其实就是进程中的通信两台主机是没法

搭建高可用mongodb集群(四)—— 分片(经典)

转自:http://www.lanceyan.com/tech/arch/mongodb_shard1.html 按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的.而mongodb主打的就是海量数据架构,他不能解决海量数据怎么

搭建高可用mongodb集群(二)—— 副本集

http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html 在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 这篇文章看完这些问题就可以搞定了.NoSQL的产生就是为了解决大数据量.高扩展性.高