公司要用rabbitmq研究了两周,特把
rabbitmq 高可用的研究成果备下

后续会更新封装的类库

安装erlang

wget http://www.gelou.me/yum/erlang-18.3-1.el6.x86_64.rpm

yum install erlang-18.3-1.el6.x86_64.rpm

安装rabbitmq rpm包:

wget http://www.gelou.me/yum/rabbitmq-server-3.6.1-1.noarch.rpm

rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc

yum install rabbitmq-server-3.6.1-1.noarch.rpm

启动rabbitmq,并验证启动情况

rabbitmq-server --detached &ps aux |grep rabbitm

以服务的方式启动

service rabbitmq-server start

开启系列防火墙端口

/sbin/iptables -I INPUT -p tcp --dport 5672 -j ACCEPT

/sbin/iptables -I INPUT -p tcp --dport 4369 -j ACCEPT

/sbin/iptables -I INPUT -p tcp --dport 25672 -j ACCEPT

/sbin/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT

iptables -I INPUT -p tcp --dport 8888 -j ACCEPT

iptables -I INPUT -p tcp --dport 5670 -j ACCEPT

iptables -I INPUT -p tcp --dport 5670 -j ACCEPT

/etc/rc.d/init.d/iptables save

/etc/init.d/iptables restart

/etc/init.d/iptables status

设置开机启动

rpm -aq |grep chkconfig

export PATH=/sbin:$PATH

chkconfig

chkconfig rabbitmq-server on

安装web管理

rabbitmq-plugins enable rabbitmq_management

访问地址

http://172.20.16.57:15672/#/

重复安装第二台等
集群命令重复安装第二台等

vim /etc/hosts

192.168.43.74 TD-YichehuiLinu

192.168.87.5  YichehuiLinux

重启

reboot

chmod 700 /var/lib/rabbitmq/.erlang.cookie

echo -n "AZVOCZYZZBVFLBPTBXU" > /var/lib/rabbitmq/.erlang.cookie

chmod 400 /var/lib/rabbitmq/.erlang.cookie

ps -ef | grep ^rabbitmq | cut -c 9-16 | xargs kill -9

rabbitmq-server --detached &ps aux |grep rabbitm

机器全启动后分别执行

rabbitmqctl stop_app

rabbitmqctl join_cluster rabbit@各机器名

rabbitmqctl start_app

rabbitmqctl cluster_status

设置policy,以ha.开头的队列将会被镜像到集群其他所有节点,一个节点挂掉然后重启后会自动同步队列消息
必须将整个RabbitMQ集群的状态设置为镜像模式, 节点都执行

rabbitmqctl set_policy ha-all-queue "^ha\." '{"ha-mode":"all","ha-sync-mode":"automatic"}'

备用命令

rabbitmqctl stop_app

rabbitmqctl change_cluster_node_type disc

rabbitmqctl change_cluster_node_type ram

rabbitmqctl start_app

添加用户名admin,密码admin

rabbitmqctl add_user zhang 1234

设置admin用户tags为管理员

rabbitmqctl set_user_tags zhang administrator

设置admin用户配置、写、读的权限

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

haproxy搭建
1、安装haproxy

yum install haproxy

2、安装rsyslog
a. 检查rsyslog是否已安装

rpm -q rsyslog

b. 添加haproxy的log配置

cd /etc/rsyslog.d

vim haproxy.conf

=== 文件内容

$ModLoad imudp

$UDPServerRun 514

local2.* /var/log/haproxy.log

local3.* /var/log/haproxy.log

local10.* /var/log/haproxy.log

==========

c. 编辑/etc/sysconfig/rsyslog

vim /etc/sysconfig/rsyslog

添加内容:

SYSLOGD_OPTIONS="-c 2 -r -m 0"

d. 创建日志文件,并授权

cd /var/log

touch haproxy.log

chmod a+w haproxy.log

e. 重启rsyslog服务用法:

/etc/init.d/rsyslog {start|stop|restart|condrestart|try-restart|reload|force-reload|status}

/etc/init.d/rsyslog restart

配置所有机器
4、配置haproxy

> /etc/haproxy/haproxy.cfg

vim /etc/haproxy/haproxy.cfg

#---------------------------------------------------------------------

# Example configuration for a possible web application. See the

# full configuration options online.

#

# http://haproxy.1wt.eu/download/1.4/doc/configuration.txt

#

#---------------------------------------------------------------------

#---------------------------------------------------------------------

# Global settings

#---------------------------------------------------------------------

global

# to have these messages end up in /var/log/haproxy.log you will

# need to:

#

# 1) configure syslog to accept network log events. This is done

# by adding the '-r' option to the SYSLOGD_OPTIONS in

# /etc/sysconfig/syslog

#

# 2) configure local2 events to go to the /var/log/haproxy.log

# file. A line like the following can be added to

# /etc/sysconfig/syslog

#

# local2.* /var/log/haproxy.log

#

log 127.0.0.1 local2 notice

chroot /var/lib/haproxy

pidfile /var/run/haproxy.pid

maxconn 4000

user haproxy

group haproxy

daemon

# turn on stats unix socket

stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------

# common defaults that all the 'listen' and 'backend' sections will

# use if not designated in their block

#---------------------------------------------------------------------

defaults

mode tcp

option tcplog

option dontlognull

option http-server-close

option redispatch

retries 3

timeout http-request 10s

timeout queue 1m

timeout connect 10s

timeout client 1m

timeout server 1m

timeout http-keep-alive 10s

timeout check 10s

maxconn 3000

###haproxy statistics monitor by laijingli 20160222

listen statics 0.0.0.0:8888

mode http

log 127.0.0.1 local0 debug

transparent

stats refresh 60s

stats uri / haproxy-stats

stats realm Haproxy \ statistic

stats auth zhang:1234

#---------------------------------------------------------------------

# main frontend which proxys to the backends

#---------------------------------------------------------------------

listen rabbitmq_cluster

bind 0.0.0.0:5670

mode tcp

balance roundrobin

server ych51  172.20.16.51:5672 check inter 5000 rise 2 fall 2

server ych50  172.20.16.50:5672 check inter 5000 rise 2 fall 2

server TD-YichehuiLinu  192.168.43.74:5672 check inter 5000 rise 2 fall 2

server YichehuiLinux  192.168.87.5:5672 check inter 5000 rise 2 fall 2

server YichehuiLinux  192.168.87.5:9200 check inter 5000 rise 2 fall 2

5、 启动haproxy

/etc/init.d/haproxy restart

6、 备用命令停止haproxy

killall haproxy

http://192.168.87.5:8888/

http://192.168.43.74:15672/#/

三、安装和设置keepalived
1、安装keepalived

yum install keepalived

chkconfig --add keepalived

chkconfig --level 35 keepalived on

2、修改配置文件
配置keepalived

>  /etc/keepalived/keepalived.conf

vim  /etc/keepalived/keepalived.conf

内容:

=====================================================================

! Configuration File for keepalived

# 全局配置,demo中配置了邮件信息,此处因为调试中,暂时没有添加

global_defs {

}

# 集群资源监控,组合track_script进行

vrrp_script check_haproxy {

script "killall -0 haproxy"

interval 2

}

vrrp_instance HAPROXY_HA {

# 设置当前主机为主节点,如果是备用节点,则设置为BACKUP

# 备用节点时,设置为:

# state BACKUP

state MASTER

# 指定HA监测网络接口,可以用ifconfig查看来决定设置哪一个

interface eth1

# 虚拟路由标识,同一个VRRP实例要使用同一个标识,主备机

virtual_router_id 80

# 因为当前环境中VRRP组播有问题,改为使用单播发送VRRP报文

# 这个地方需要关注,之前未做此设置,结果主备节点互相不能发现,因此主备节点都升级成了MASTER,并且绑定了VIP

# 备用节点时,内容为:

# unicast_src_ip 192.168.200.199

# unicast_peer {

# 192.168.200.200

# }

# 设置优先级,确保主节点的优先级高过备用节点

# 备用节点时,设置为:

priority 80

# priority 100

# 用于设定主备节点间同步检查时间间隔

advert_int 2

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

nopreempt

# 设置主备节点间的通信验证类型及密码,同一个VRRP实例中需一致

authentication {

auth_type PASS

auth_pass 1234

}

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

notify_master "/etc/keepalived/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进行

track_script {

check_haproxy

}

# 设置虚拟IP地址,当keepalived状态切换为MASTER时,此IP会自动添加到系统中

# 当状态切换到BACKUP时,此IP会自动从系统中删除

# 可以通过命令ip add查看切换后的状态

virtual_ipaddress {

192.168.43.201

}

}

====================================================================

配置全部
3、启动服务

因为是为了实现haproxy的高可用,启动时需要顺序启动:

(1) 启动haproxy:

haproxy -f /etc/haproxy/haproxy.cfg

(2) 启动keeepalived:先启动master节点,后启动BACKUP节点

/etc/init.d/keepalived restart

4、停止keeepalived服务

/etc/init.d/keepalived stop

大哥广告阁楼

rabbitmq+ keepalived+haproxy高可用集群详细命令的更多相关文章

  1. Linux centosVMware 集群介绍、keepalived介绍、用keepalived配置高可用集群

    一.集群介绍 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 实现高可用的开源软件有:heartbeat. ...

  2. LVS+Keepalived实现高可用集群

    LVS+Keepalived实现高可用集群来源: ChinaUnix博客 日期: 2009.07.21 14:49 (共有条评论) 我要评论 操作系统平台:CentOS5.2软件:LVS+keepal ...

  3. 集群相关、用keepalived配置高可用集群

    1.集群相关 2.keepalived相关 3.用keepalived配置高可用集群 安装:yum install keepalived -y   高可用,主要是针对于服务器硬件或服务器上的应用服务而 ...

  4. (十)RabbitMQ消息队列-高可用集群部署实战

    原文:(十)RabbitMQ消息队列-高可用集群部署实战 前几章讲到RabbitMQ单主机模式的搭建和使用,我们在实际生产环境中出于对性能还有可用性的考虑会采用集群的模式来部署RabbitMQ. Ra ...

  5. Nginx(四):Keepalived+Nginx 高可用集群

    Keepalived+Nginx 高可用集群 (主从模式) 集群架构图 安装keepalived [root@localhost ~]# yum install -y keepalived 查看状态 ...

  6. rabbitmq+haproxy+keepalived实现高可用集群搭建

    项目需要搭建rabbitmq的高可用集群,最近在学习搭建过程,在这里记录下可以跟大家一起互相交流(这里只是记录了学习之后自己的搭建过程,许多原理的东西没有细说). 搭建环境 CentOS7 64位 R ...

  7. 集群介绍 keepalived介绍 用keepalived配置高可用集群

    集群介绍 • 根据功能划分为两大类:高可用和负载均衡 • 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 • 实现高可用的开源软件有:heartb ...

  8. keepalived+MySQL高可用集群

    基于keepalived搭建MySQL的高可用集群   MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Clus ...

  9. RabbitMQ系列之高可用集群

    为了实现高可用,我采用LVS+双节点RabbitMq , 架构图如下: 在RabbitMQ之前放了LVS, LVS 采用 rr 轮询算法 , 目的是将请求平均分配到两个真实节点,并配置5672端口监控 ...

随机推荐

  1. 使用Javascript来创建一个响应式的超酷360度全景图片查看幻灯效果

    360度的全景图片效果常常可以用到给客户做产品展示,今天这里我们推荐一个非常不错的来自Robert Pataki的360全景幻灯实现教程,这里教程中将使用javascript来打造一个超酷的全景幻灯实 ...

  2. apache下virtualhost与location合用配置转发SVN控制访问

    使用apache的文件系统配置 使用virtualhost 实现location 重定向 NameVirtualHost *:80 <VirtualHost *:80> ServerNam ...

  3. Objective-C之类和对象

    http://www.cnblogs.com/kenshincui/p/3861302.html

  4. C# 退出程序方法

    1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出: 2.Application.Exit();  强制所有消息中 ...

  5. 【转载】Solr4+IKAnalyzer的安装配置

    转载:http://www.cnblogs.com/madyina/p/4131751.html 一.下载Solr4.10.2 我们以Windows版本为例,solr-4.10.2.zip是目前最新版 ...

  6. 转载:更换zImage中的initramfs

    From: http://blog.csdn.net/linuxaxis/article/details/8769722 好吧,折腾了两三个星期,USB的问题没搞定,看来功夫还不到家,看了下efuse ...

  7. Reveal查看任意app的高级技巧(转)

    原文:http://zhuanlan.zhihu.com/iOSRe/19646016 Reveal查看任意app的高级技巧 hangcom · 12 小时前 Reveal是一个很强大的UI分析工具, ...

  8. 代码演示用 .NET 4.5 (C# 5.0)自带的压缩类 ZipArchive 创建一个压缩文件

    代码如下: using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; ...

  9. label标签跳出循环

    出场: 首先我们来说说为什么需要label标签,虽然我们已经知道有break,continue跳出循环,但如果是多重循环那么它们就显的无能为力了,所以就出现了label这个标签来为我们服务. 我们先来 ...

  10. typeof与GetType

    typeof: The typeof operator is used to obtain the System.Type object for a type. 运算符,获得某一类型的 System. ...