Chinaunix首页 | 论坛 | 博客
  • 博客访问: 332623
  • 博文数量: 58
  • 博客积分: 30
  • 博客等级: 民兵
  • 技术积分: 543
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-25 01:47
个人简介

我们都是没伞的孩子,所以我只能靠自己。

文章分类

全部博文(58)

文章存档

2019年(2)

2018年(1)

2017年(1)

2016年(2)

2015年(22)

2014年(20)

2013年(10)

我的朋友

分类: LINUX

2016-08-02 21:05:17

安装rabbitmq

rabbitmq安装最好使用yum安装
配置yum源头
rpm -Uvh 
rpm -Uvh 
配置epel源的目的是为了安装socat
下载rabbitmq
wget 
yum install rabbitmq-server-3.6.4-1.noarch.rpm      #使用yum安装即可把依赖包一起安装好


配置3台机器成集群模式

首选条件,需要配置成集群的各节点erlang版本必须一致
添加hosts
172.16.113.81    rabbitmq-81
172.16.113.82    rabbitmq-82
172.16.113.83    rabbitmq-83

建立数据文件和日志目录
mkdir -p /data/rabbitmq/{db,log}
chown -R rabbitmq:rabbitmq /data/rabbitmq
设置rabbitmq环境变量配置文件rabbitmq-env.conf,默认目录在/etc/rabbitmq
编辑vim /etc/rabbitmq/rabbitmq-env.conf
RABBITMQ_NODENAME=mq
RABBITMQ_MNESIA_BASE=/data/rabbitmq/db
RABBITMQ_LOG_BASE=/data/rabbitmq/log

在rabbitmq-81节点上启动下rabbitmq产生cookie
/etc/init.d/rabbitmq-server start
/etc/init.d/rabbitmq-server stop

每个节点间的通讯依靠rabbitmq cookie建立连接的,必须保持集群中每个节点cookie内容一致,cookie在rabbitmq启动的时候创建,文件权限必须是400
我们在部署集群的时候,可以把一个节点上创建的cookie的拷贝到其他节点上,并保持权限为400
cookie目录为/var/lib/rabbitmq/.erlang.cookie
rabbitmq-81$ scp /var/lib/rabbitmq/.erlang.cookie 172.16.113.82:/var/lib/rabbitmq/
rabbitmq-81$ scp /var/lib/rabbitmq/.erlang.cookie 172.16.113.83:/var/lib/rabbitmq/

starting independent nodes
rabbitmq-81$ rabbitmq-server -detached
rabbitmq-82$ rabbitmq-server -detached
rabbitmq-83$ rabbitmq-server -detached

集群节点分为disc nodes和 ram nodes,即disc nodes上的数据会持久化到硬盘上,实现数据冗余,但性能会下降
ram nodes即内存节点,所有的数据都存在了内存里,服务重启数据将丢失,但性能所有提升
另外:不管是disc nodes还是ram nodes,在消息的订阅和消费时速度是一样的
一个集群中最少要有一个disc nodes以保证数据不会丢失
还是安装上面的三个节点配置成两个ram nodes和一个disc nodes
假设三节点上rabbitmq服务已经启动,如果没有启动执行rabbitmq-server -detached
加入节点rabbitmq-82为ram nodes
[root@rabbitmq-82 ~]# rabbitmqctl stop_app
Stopping node 'mq@rabbitmq-82' ...
[root@rabbitmq-82 ~]# rabbitmqctl join_cluster --ram mq@rabbitmq-81      #不加--ram,默认加入的disc节点
Clustering node 'mq@rabbitmq-82' with 'mq@rabbitmq-81' ...
[root@rabbitmq-82 ~]# rabbitmqctl start_app
Starting node 'mq@rabbitmq-82' ...
[root@rabbitmq-82 ~]# rabbitmqctl cluster_status
Cluster status of node 'mq@rabbitmq-82' ...
[{nodes,[{disc,['mq@rabbitmq-81']},{ram,['mq@rabbitmq-82']}]},
 {running_nodes,['mq@rabbitmq-81','mq@rabbitmq-82']},
 {cluster_name,<<"mq@rabbitmq-81">>},
 {partitions,[]},
 {alarms,[{'mq@rabbitmq-81',[]},{'mq@rabbitmq-82',[]}]}]
加入节点rabbitmq-83为ram nodes
[root@rabbitmq-83 ~]# rabbitmqctl stop_app
Stopping node 'mq@rabbitmq-83' ...
[root@rabbitmq-83 ~]# rabbitmqctl join_cluster --ram mq@rabbitmq-81     #不加--ram,默认加入的disc节点
Clustering node 'mq@rabbitmq-83' with 'mq@rabbitmq-81' ...
[root@rabbitmq-83 ~]# rabbitmqctl start_app
Starting node 'mq@rabbitmq-83' ...
[root@rabbitmq-83 ~]# rabbitmqctl cluster_status
Cluster status of node 'mq@rabbitmq-83' ...
[{nodes,[{disc,['mq@rabbitmq-81']},{ram,['mq@rabbitmq-83','mq@rabbitmq-82']}]},
 {running_nodes,['mq@rabbitmq-82','mq@rabbitmq-81','mq@rabbitmq-83']},
 {cluster_name,<<"mq@rabbitmq-81">>},
 {partitions,[]},
 {alarms,[{'mq@rabbitmq-82',[]},{'mq@rabbitmq-81',[]},{'mq@rabbitmq-83',[]}]}]
到此,1个disc nodes和2个ram nodes 集群配置完成,可以把任何一个ip给客户端使用,但这不是最好的方案
我们在集群前面部署一套lvs实现负载均衡,只需把lvs的vip告诉客户端即可
阅读(1514) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~