centos7 rabbitMQ集群搭建

资料参考网址

http://blog.youkuaiyun.com/woogeyu/article/details/51119101
http://www.cnblogs.com/lion.net/p/5725474.html
https://segmentfault.com/a/1190000010693696#articleHeader4
https://segmentfault.com/a/1190000010702020

rabbitMQ集群搭建注意问题

不同于单机多节点的情况,在多机环境,如果要在cluster集群内部署多个节点,需要注意两个方面:
  1  保证需要部署的这几个节点在同一个局域网内
  2  需要有相同的Erlang Cookie,否则不能进行通信,为保证cookie的完全一致,采用从一个节点copy的方式复制到其他节点。

时间同步:

yum install ntpdate
ntpdate time.nist.gov	

环境准备

192.168.138.131 centos-01
192.168.138.132 centos-02
192.168.138.133 centos-03

各节点都要安装RabbitMQ(集群前提) RabbitMQ 安装需要依赖 Erlang 环境

    yum install wget
	$ cd /opt
	$ wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm
	$ yum install erlang-19.0.4-1.el7.centos.x86_64.rpm

安装 RabbitMQ

$ cd /opt
$ wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm
$ yum install rabbitmq-server-3.6.10-1.el7.noarch.rpm
cd /sbin/
rabbitmq-plugins enable rabbitmq_management  (管理界面开启)
rabbitmq-server -detached (后台启动)或者 service rabbitmq-server start
service rabbitmq-server status
rabbitmqctl stop	

放开5672与15672端口

firewall-cmd --permanent --zone=public --add-port=5672/tcp
firewall-cmd --permanent --zone=public --add-port=15672/tcp
systemctl restart firewalld.service	 

访问http://ip:15672/ 账户:guest 密码: guest登陆不进去解决

cd  /var/log/rabbitmq/ 
less rabbit@localhost.log
这里显示的是没有找到配置文件,我们可以自己创建这个文件
config file(s) : /etc/rabbitmq/rabbitmq.config (not found)
创建rabbitmq.config
cd /etc/rabbitmq/
touch rabbitmq.config
vi rabbitmq.config
编辑内容如下:
[{rabbit, [{loopback_users, []}]}].
注意:这里的意思是开放使用,rabbitmq默认创建的用户guest,密码也是guest,这个用户默认只能是本机访问,localhost或者127.0.0.1,从外部访问需要添加上面的配置。

开机自启动

chkconfig rabbitmq-server on

设置不同节点间同一认证的Erlang Cookie 使用以下命令将centos-01中的/var/lib/rabbitmq/.erlang.cookie 复制到其他节点。在centos-01节点运行以下命令:

cd /var/lib/rabbitmq/
ll -a .erlang.cookie  (该文件是隐藏文件)
scp /var/lib/rabbitmq/.erlang.cookie  root@centos-02:/var/lib/rabbitmq/.erlang.cookie 
scp /var/lib/rabbitmq/.erlang.cookie  root@centos-03:/var/lib/rabbitmq/.erlang.cookie 
会提示输入yes 和 密码

由于文件是400的权限,所以在centos-02以及centos-03节点运行以下命令:
chmod 600  /var/lib/rabbitmq/.erlang.cookie 	

界面

在centos-01节点增加用户,并且为用户赋予权限
rabbitmqctl add_user pyps pyps
rabbitmqctl set_user_tags pyps administrator
rabbitmqctl set_permissions -p /  pyps '.*' '.*' '.*'
通过http://192.168.138.131:15672 用户名为:pyps 密码为:pyps联入第一台配置成功的RabbitMQ服务器。其他节点暂不配置	

组成集群

这个centos-01节点也可以不执行,直接在节点服务器执行下边的脚本,不过得保证这个rabbitmq服务是正常启动的
	centos-01 $ rabbitmqctl stop_app	

按照顺序执行 先centos-02,centos-03
centos-02 $ rabbitmqctl stop_app            				# 停止rabbitmq服务
centos-02 $ rabbitmqctl join_cluster rabbit@centos-01    		# centos-02和centos-01构成集群, centos-02必须能通过centos-01的主机名ping通
centos-02 $ rabbitmqctl start_app            				# 开启rabbitmq服务
	  
centos-03 $ rabbitmqctl stop_app            				# 停止rabbitmq服务
centos-03 $ rabbitmqctl join_cluster rabbit@centos-01   		 # centos-03和centos-01构成集群, centos-02必须能通过centos-01的主机名ping通
centos-03 $ rabbitmqctl start_app   

#要复制队列内容到集群里的每个节点,需要创建镜像队列
	RabbitMQ镜像功能:(在普通集群的中任意节点启用策略,策略会自动同步到集群节点)
	rabbitmqctl set_policy -p hrsystem ha-allqueue"^" '{"ha-mode":"all"}'
	例如下面的命令,^message 这个规则要根据自己修改,这个是指同步"message"开头的队列名称,我们配置时使用的应用于所有队列,所以表达式为"^"。
	rabbitmqctl set_policy -p hrsystem ha-allqueue "^message" '{"ha-mode":"all"}'

分别查看下每个节点

rabbitmqctl cluster_status
每个节点
firewall-cmd --permanent --zone=public --add-port=25672/tcp
systemctl restart firewalld.service
或者关闭防火墙
systemctl stop firewalld.service

安装HAProxy

选择开源的HAProxy为RabbitMQ集群做负载均衡器,在CentOS 7.0中安装HAProxy。
	1安装epel(清华大学开源软件镜像站)
	 rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm

	2 安装HAProxy
	yum list |grep haproxy
	yum -y install haproxy.x86_64 

	HA-Proxy version 1.5.18 
3 配置HAProxy(这台机器centos-03 192.168.138.133)
	cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak (备份)
	vi /etc/haproxy/haproxy.cfg	
	####################################################################
listen private_monitoring 
    bind 192.168.138.133:8989           
    mode http
    option  httplog
    log  global
    stats enable
    stats refresh 30s 
    stats show-node		 
    stats uri /haproxy?stats    
    stats realm Haproxy\ Statistics
    stats auth admin:admin            
####################################################################
listen  rabbitmq_local_cluster 
    bind 192.168.138.133:5670
    option tcplog
    mode tcp
    timeout client  3h
    timeout server  3h
    option  clitcpka
    balance roundrobin     
    server rabbit131 192.168.138.131:5672 check inter 5s rise 2 fall 3
    server rabbit132 192.168.138.132:5672 check inter 5s rise 2 fall 3
    server rabbit133 192.168.138.133:5672 check inter 5s rise 2 fall 3



启动访问http://192.168.138.133:8989/haproxy?stats无显示页面 解决办法
 (当前版本HA-Proxy version 1.5.18) 低于1.7.5版本需要执行
 vi /etc/sysconfig/selinux 
	SELINUX=disabled
    :wq! #保存退出
	reboot

放开5670与8989端口

firewall-cmd --permanent --zone=public --add-port=5670/tcp
firewall-cmd --permanent --zone=public --add-port=8989/tcp
firewall-cmd --permanent --zone=public --list-ports
systemctl restart firewalld.service	

service haproxy status #查看状态
service haproxy start #启动
service haproxy stop  #关闭
service haproxy restart  #重启
chkconfig haproxy on  #设置开机启动	

各节点 启用stomp plugin命令代码 websocket使用了rabbitmq stomp协议 需要启动他

rabbitmq-plugins enable rabbitmq_web_stomp  
rabbitmq-plugins enable rabbitmq_web_stomp_examples  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值