rabbitmq安装、集群搭建
2016-07-29 16:11
465 查看
rabbitmq的安装:
CentOS上面部署:
首先修改hosts文件
修改hosts文件
vi /etc/hosts
1.1.1.1 hostname 2.2.2.2 hostname 3.3.3.3 hostname
erlang的安装环境:
rpm -i http://mirror.bjtu.edu.cn/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm yum install erlang
安装rabbitMQ(RPM链接可以从http://www.rabbitmq.com/install-rpm.html来获取)
rpm -ivh http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.5/rabbitmq-server-3.3.5-1.noarch.rpm 启用管理插件,可通过web查看rabbitmq状态 # rabbitmq-plugins enable rabbitmq_management 启动服务: /etc/init.d/rabbitmq-server start rabbitmq集群的部署: 集群模式介绍: 1 单一模式:最简单的情况,非集群模式 2 [b]普通模式:默认的集群模式[/b]
bbitmqctl set_policy ha-all '^(?!amq\.).*' '{"ha-mode": "all"}'
rabbitmqctl set_permissions -p / nova '.*' '.*' '.*'
到此就结束了,可以通看web(ip:15672)查看rabbitmq状态
常用命令介绍:
CentOS上面部署:
首先修改hosts文件
修改hosts文件
vi /etc/hosts
1.1.1.1 hostname 2.2.2.2 hostname 3.3.3.3 hostname
erlang的安装环境:
rpm -i http://mirror.bjtu.edu.cn/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm yum install erlang
安装rabbitMQ(RPM链接可以从http://www.rabbitmq.com/install-rpm.html来获取)
rpm -ivh http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.5/rabbitmq-server-3.3.5-1.noarch.rpm 启用管理插件,可通过web查看rabbitmq状态 # rabbitmq-plugins enable rabbitmq_management 启动服务: /etc/init.d/rabbitmq-server start rabbitmq集群的部署: 集群模式介绍: 1 单一模式:最简单的情况,非集群模式 2 [b]普通模式:默认的集群模式[/b]
rabbitMQ中的exchange和queue都包含meta、contents、state等信息,exchange在集群中的每个节点都保存一份数据,
但是queue不一样,queue在集群中对于contents只存储一份,其他节点只存储meta信息
3 镜像模式:把需要的队列做成镜像队列,均在与多个节点,属于rabbitmq的HA方案。但是queue不一样,queue在集群中对于contents只存储一份,其他节点只存储meta信息
mirror queue是为rabbitMQ高可用的一种方案,相对于普通的集群方案来讲,queue中的消息每个节点都会存在一份copy
开始搭建建集群,采用镜像模式 1.修改配置文件/etc/rabbitmq/rabbitmq.config(如果没有则新建 ),所有节点配置文件一样,本次用3个节点 % Template Path: rabbitmq/templates/rabbitmq.config [ {kernel, [ {inet_dist_listen_min, 41055}, {inet_dist_listen_max, 41055}, {inet_default_connect_options, [{nodelay,true}]} ]}, {rabbit, [ {log_levels, [connection,debug,info,error]}, {default_vhost, <<"/">>}, {default_user, <<"nova">>}, {default_pass, <<"oBtZFKLF">>}, #修改为nova用户实际的mq密码 {default_permissions, [<<".*">>, <<".*">>, <<".*">>]}, {cluster_partition_handling, autoheal}, {tcp_listen_options, [ binary, {packet, raw}, {reuseaddr, true}, {backlog, 128}, {nodelay, true}, {exit_on_close, false}, {keepalive, true} ]} ]} ]. % EOF
cat /etc/rabbitmq/rabbitmq-env.conf RABBITMQ_NODE_IP_ADDRESS=0.0.0.0 RABBITMQ_NODE_PORT=5672 #RABBITMQ_LOG_BASE=/data/rabbitmq/log 日志目录 #RABBITMQ_PLUGINS_DIR=/data/rabbitmq/plugins 插件目录 #RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia 后端存储目录
2 集群配置: (1)、 启动第一个节点 上的rabbitmq服务,/etc/init.d/rabbitmq-server start (2)、 复制cookie到其他rabbitmq节点 scp /var/lib/rabbitmq/.erlang.cookie root@NODE:/var/lib/rabbitmq/.erlang.cookie chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie chmod 400 /var/lib/rabbitmq/.erlang.cookie erlang cookie的作用: Rabbitmq的集群是依附于erlang的集群来工作的,所以必须先构建起erlang的集群景象。Erlang的集群中各节点是经由过程一个magic cookie来实现的,这个cookie存放在 .erlang.cookie 中文件是400的权限。所以必须包管各节点cookie对峙一致,不然节点之间就无法通信
(3) 启动所有节点的rabbitmq,并验证状态为running rabbitmqctl cluster_status可查看rabbitmq状态 Cluster status of node rabbit@NODE... [{nodes,[{disc,[rabbit@NODE]}]}, {running_nodes,[rabbit@NODE]}, {partitions,[]}] ...done.
(4) 关闭除第一个节点外的其他节点的app ,并加入到集群中 节点2 节点3上执行: (1)rabbitmqctl stop_app (2) rabbitmqctl join_cluster rabbit@节点1的hostname (3)rabbitmqctl start_app (5) 验证集群状态,每个节点都应该有如下输出 [{nodes,[{disc,['rabbit@节点1','rabbit@节点2','rabbit@节点3']}]},
{running_nodes,['rabbit@节点1,'rabbit@节点2','rabbit@节点3']},
{cluster_name,<<"rabbit@节点1">>},
{partitions,[]}]
...done.
(6) 添加策略ha-policy{running_nodes,['rabbit@节点1,'rabbit@节点2','rabbit@节点3']},
{cluster_name,<<"rabbit@节点1">>},
{partitions,[]}]
...done.
bbitmqctl set_policy ha-all '^(?!amq\.).*' '{"ha-mode": "all"}'
凡是ha. 开始的queue的数据,会同步到集群的所有node
(7)添加用户及权限 rabbitmqctl add_user nova 密码rabbitmqctl set_permissions -p / nova '.*' '.*' '.*'
到此就结束了,可以通看web(ip:15672)查看rabbitmq状态
常用命令介绍:
rabbitmqctl cluster_status
检查集群有几个节点,检查是否出现了分区现象 rabbitmqctl list_queues | grep -v '\<0$' 检查是否有队列积压了消息 rabbitmqctl list_queues name slave_pids synchronised_slave_pids
输出信息每行都关于其中一个队列的slave状态,看一下对于每个队列,slave_pids一列,是不是都有两个slave,且 synchronised_slave_pids一列也有两个slave。每个队列的slave可以是不一样的,但是应该都是两个
检查集群有几个节点,检查是否出现了分区现象 rabbitmqctl list_queues | grep -v '\<0$' 检查是否有队列积压了消息 rabbitmqctl list_queues name slave_pids synchronised_slave_pids
输出信息每行都关于其中一个队列的slave状态,看一下对于每个队列,slave_pids一列,是不是都有两个slave,且 synchronised_slave_pids一列也有两个slave。每个队列的slave可以是不一样的,但是应该都是两个
相关文章推荐
- CentOS 与 RedHat 关系和区别
- Catch That Cow<poj3278>
- html 校验
- 自动化运维平台搭建(一)
- IO流之创建文件并filereader、filewriter 读写操作
- CentOS 7 改用iptables作为防火墙
- 【bzoj2120】 数颜色
- 关于SQL中Union和Join的用法
- poj3087
- 进程
- 【POJ 3279】Fliptile(状压DP+搜索)
- Linux基本操作
- 程序猿学习路线
- kettle 连接Hadoop
- SQL数据库规范
- 线程安全与锁优化
- Hadoop概念学习系列之分布式数据集的容错性(二十七)
- web应用服务器 Apache和Tomcat的区别及Web服务器,容器和应用服务器区别问题
- 关于会议室日历显示预订者信息
- vi命令