生产环境安装Rabbitmq

Rabbitmq安装

CentOS 安装和配置 rabbitmq

rabbitmq是erlang语言开发的,安装前首先需要安装erlang

安装erlang

安装依赖环境

yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel

下载最新 Erlang 19.0

(当然使用wget,ifconfig命令需要先安装插件yum install wget ,yum install net-tools)
wget http://erlang.org/download/otp_src_19.0.tar.gz

解压

tar -xvzf otp_src_19.0.tar.gz

配置进入解压文件对erlang进行安装环境的配置

配置安装路径编译代码:

./configure --prefix=/usr/local/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac

或(./configure --prefix=/usr/local /erlang --without-javac

     

编译make

     

然后安装 make installmake && make install

然后就可以验证一下erlang是否安装成功了;     当出现以上信息时表示安装完成。然后输入’halt().’退出即可。

接下来需要配置一下环境变量,把Erlang配置到/etc/profile文件中并通过source /etc/profile设置生效

#set erlang environment
export PATH=$PATH:/opt/erlang/bin

source  /etc/profile使得文件生效

安装RabbitMQ

Yum安装

# rpm -Uvh http://mirrors.sohu.com/fedora-epel/5/x86_64/epel-release-5-4.noarch.rpm
# rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
# yum install rabbitmq-server -y

官方下载解压安装

官方下载

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-generic-unix-3.6.5.tar.xz

解压文件
xz -d rabbitmq-server-generic-unix-3.6.5.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.6.5.tar
mv rabbitmq_server-3.6.5/ /usr/local/rabbitmq

然后再配置rabbitmq环境变量,vi /etc/profile文件,增加 

下面的环境变量:
export PATH=$PATH:/usr/local/erlang/bin
export PATH=$PATH:/usr/local/rabbitmq/sbin

source /etc/profile使得文件生效

官方下载: wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5.zip
解压安装
# tar xzvf rabbitmq-server-3.6.5.zip
# cd rabbitmq-server-3.6.5
# make 
# make TARGET_DIR=/usr/local/rabbitmq SBIN_DIR=/usr/local/rabbitmq/sbin MAN_DIR=/usr/rabbitmq/man DOC_INSTALL_DIR=/usr/local/rabbitmq/doc install

/usr/local/rabbitmq/sbin目录下文件说明:
rabbitmq-env // 环境配置
rabbitmq-defaults // 默认参数设置
rabbitmqctl // 管理工具
rabbitmq-plugins // 插件管理工具
rabbitmq-server // rabbitmq服务

RabbitMQ服务启动关闭

启动服务:./rabbitmq-server -detached 

cd /usr/local/rabbitmq/sbin/
[root@iZ25e3bt9a6Z sbin]# ./rabbitmq-server -detached

查看服务状态:./rabbitmqctl status

[root@iZ25e3bt9a6Z sbin]# ./rabbitmqctl status

关闭服务:./rabbitmqctl stop
[root@iZ25e3bt9a6Z sbin]# ./rabbitmqctl stop

配置网页插件

首先创建目录,否则可能报错:

mkdir /etc/rabbitmq


然后启用插件(在rabbitmq启动的前提下):
./rabbitmq-plugins enable rabbitmq_management
配置linux 端口 15672 网页管理 5672 AMQP端口

然后访问http://localhost:15672即可

默认用户guest 密码guest

远程访问配置

默认网页是不允许访问的,需要增加一个用户修改一下权限:

添加用户:rabbitmqctl add_user username password 

添加权限:rabbitmqctl set_permissions -p "/" username ".*" ".*" ".*"

修改用户角色:rabbitmqctl set_user_tags username administrator

#根据自己需要创建以下内容
创建虚拟主机:rabbitmqctl add_vhost vhost(vhost为虚拟主机名)
清理原始权限:rabbitmqctl clear_permissions -p / username
授予新主机权限:rabbitmqctl set_permissions -p vhost username ".*" ".*" ".*"


 rabbitmq常用命令

  add_user        <UserName> <Password>

  delete_user    <UserName>

  change_password <UserName> <NewPassword>

  list_users

  add_vhost    <VHostPath>

  delete_vhost <VHostPath>

  list_vhostsset_permissions  [-p <VHostPath>] <UserName> <Regexp> <Regexp> <Regexp>

  clear_permissions [-p <VHostPath>] <UserName>

  list_permissions  [-p <VHostPath>]

  list_user_permissions <UserName>

  list_queues    [-p <VHostPath>] [<QueueInfoItem> ...]

 list_exchanges [-p <VHostPath>] [<ExchangeInfoItem> ...]

  list_bindings  [-p <VHostPath>]

  list_connections [<ConnectionInfoItem> ...]

Rabbitmq的集群配置

在2台节点上分别部署同一版本Rabbitmq,使用以下命令两台主机名是否相同

rabbitmqctl status
如果两台主机名相同,就得修改这两台机器的hostname,要想配置成功集群,就必须保证这两个节点的主机名不同,且能互相ping通
vim /etc/sysconfig/network
(centos7以上:vim /etc/hostname)
分别将HOSTNAME属性值改为rabbitmq_node1,rabbitmq_node2,并重启

(2)如果两台主机名不相同,如:分别为rabbit@rabbitmq_node1,rabbit@rabbitmq_node2,就在两台主机里的/etc/hosts文件中分别添加

192.168.10.15 rabbitmq_node1 主节点
192.168.10.16 rabbitmq_node2

(3)设置每个节点Cookie 
Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节点是通过一个 magic cookie来实现的,这个cookie存放在 /root/.erlang.cookie 中,文件是400的权 限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信. 建议在RabbitMQ服务启动前修改cookie,如果RabbitMQ服务已经启动,修改cookie值后,必须重启RabbitMQ服务,这步很关键
# chmod 700 /root/.erlang.cookie
# echo -n "AZVOCZYZZBVFLBPTBXU" > /root/.erlang.cookie
# chmod 400 /root/.erlang.cookie
# ps -ef | grep ^rabbitmq | awk '{print $2}' | xargs kill -9
#rabbitmq-server -detached

(4) 设192.168.10.15 (rabbitmq_node1)为主节点,在192.168.10.15机器中执行
#rabbitmqctl stop_app 
#rabbitmqctl reset (这一步会重置,请备份数据)
#rabbitmqctl start_app 
在192.168.10.16 (rabbitmq_node2)机器中

#rabbitmqctl stop_app #停止rabbitmq_node2节点
#rabbitmqctl join_cluster rabbit@rabbitmq_node1 # 将testNod2节点添加进主节点
#rabbitmqctl start_app #启动rabbitmq_node2节点

(5)设置镜像策略
使用Rabbit镜像功能,需要基于rabbitmq策略来实现,策略是用来控制和修改群集范围的某个vhost队列行为和Exchange行为
在cluster中任意节点启用策略,策略会自动同步到集群节点
# rabbitmqctl set_policy -p hrsystem ha-allqueue"^" '{"ha-mode":"all"}'

这行命令在vhost名称为hrsystem创建了一个策略,策略名称为ha-allqueue,策略模式为 all 即复制到所有节点,包含新增节点,
策略正则表达式为 “^” 表示所有匹配所有队列名称。
例如rabbitmqctl set_policy -p hrsystem ha-allqueue "^message" '{"ha-mode":"all"}'
注意:"^message" 这个规则要根据自己修改,这个是指同步"message"开头的队列名称,我们配置时使用的应用于所有队列,所以表达式为"^"
官方set_policy说明参见
set_policy [-p vhostpath] {name} {pattern} {definition} [priority]
(http://www.rabbitmq.com/man/rabbitmqctl.1.man.html)

(6)查看
至此,Rabbitmq的集群配置已经完成。在这2台机器中,执行以下命令:
/usr/sbin/rabbitmqctl cluster_status
就可以看到集群配置的效果,分别如下所示:(切记:在任何情况下,集群中必须至少有一个节点是disk类型的,所以如果集群是3台机器的话,就需要有2台机器的节点是disk类型的)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

houzhanwublog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值