清风万里的季节,周末本该和亲人朋友一块儿消遣这烂漫的花花草草,或是懒洋洋的晒个太阳听听风声鸟鸣。无奈工做使然,理想使然,我回到啦公司,敲起啦键盘,撸起啦代码,程序狗的世界一片黯然,一片黯然,愿天下全部努力的程序狗都梦想成真吧!!html
回到正题,为何搭建rabbitmq集群?rabbitmq集群有那些模式?如何搭建Rabbitmq集群?rabbitmq镜像高可用策略有那些?node
一、首先这款产品自己的优势众多,你们最看好的即是他的异步化提升系统抗峰值能力,而后即是系统及功能结构解耦,那么照此两点来讲,他的在整个系统中的做用仍是相当重要的,那么如此重要,固然要考虑他的高可用性,那么便有啦第一个问题的解答。web
二、rabbitmq有3种模式,但集群模式是2种。详细以下:vim
个人环境以下:数组
一、两台Centos7的机器,hostname分别为:F , G .缓存
二、IP地址分别为:F—172.18.8.229 , G—172.18.8.224。cookie
三、修改hosts文件以下,下面是G这台机器的hosts文件内容,F也须要以下配置:网络
[root@G bin]# cat /etc/hosts 127.0.0.1 G localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 G localhost localhost.localdomain localhost6 localhost6.localdomain6 172.18.8.224 G 172.18.8.229 F
四、保证两台机器都可以相互ping通,以下图:app
好啦,环境到此就就能知足啦,接下来咱们把rabbitmq装在2台机器上。dom
学习不看官方文档,那就别学啦,地址以下:http://www.rabbitmq.com/install-rpm.html
安装rabbitmq依赖erlang环境,因此咱们要先安装erlang环境。
安装完成以后,下载rabbitmq的rpm包ivh便可。若是实在不会安装,Linux系统(二)软件的安装与卸载 里面有安装rabbitmq的实例,看官笑纳,实在不会装那加入左上方群,或者点击网页右上方的X吧,必定要相信不是你的错,是你与rabbitmq缘分不到。
安装启动过程当中若是出现error,那可参考下面几个方案试试:
这里安装启动成功以后,来几个经常使用的操做。
[root@G bin]# ./rabbitmq-server -deched --后台启动服务 [root@G bin]# ./rabbitmqctl start_app --启动服务 [root@G bin]# ./rabbitmqctl stop_app --关闭服务 [root@G bin]# ./rabbitmq-plugins enable rabbitmq_management --启动web管理插件 [root@G bin]# ./rabbitmqctl add_user zlh zlh --添加用户,密码 [root@G bin]# ./rabbitmqctl set_user_tags zlh administrator --设置zlh为administrator权限
若是你看到以下操做,即代表启动成功啦,而且web管理页面的插件也启动成功,若是下面的6为0,则须要启动web管理插件
那具体rabbitmqctl 的命令详细还要看官网文档:http://www.rabbitmq.com/man/rabbitmqctl.1.man.html
在上述的两台机器上安装rabbitmq完成以后,你能够看到你的机器中有以下1个文件。路径在$HOME中或者在/var/lib/rabbitmq中,文件名称为.erlang.cookie,他是一个隐藏文件。那么这文件存储的内容是什么,是作什么用的呢?
这样说吧:RabbitMQ的集群是依赖erlang集群,而erlang集群是经过这个cookie进行通讯认证的,所以咱们作集群的第一步就是干cookie。怎么干?
一、必须使集群中也就是F,G这两台机器的.erlang.cookie文件中cookie值一致,且权限为owner只读。
机器G中的Cookie: 机器F中的Cookie:
修改文件权限以下:
[root@F ~]# chmod 600 .erlang.cookie
二、查看集群状态,个人是已经作好的。
[root@F bin]# ./rabbitmqctl cluster_status Cluster status of node rabbit@F ... [{nodes,[{disc,[rabbit@G]},{ram,[rabbit@F]}]}, {running_nodes,[rabbit@G,rabbit@F]}, {cluster_name,<<"rabbit@F">>}, {partitions,[]}, {alarms,[{rabbit@G,[]},{rabbit@F,[]}]}]
三、中止当前机器中rabbitmq的服务
[root@F bin]# ./rabbitmqctl stop_app
四、把G中的rabbitmq加入到集群中来
[root@F bin]# ./rabbitmqctl join_cluster --ram rabbit@G
五、开启当前机器的rabbitmq服务
[root@F bin]# ./rabbitmqctl start_app
六、打开网页管理页面查看nodes
如此即可以啦,你能够作下测试,验证下咱们序言中说的普通模式的说明,那必须是杠杠对的。
写到这里,接下来,有朋友要请我吃饭啦,我就速战速决赴会去啦,即使如此该有的也会都有的。go,go,go。
这一节要参考的文档是:http://www.rabbitmq.com/ha.html
首先镜像模式要依赖policy模块,这个模块是作什么用的呢?
policy中文来讲是政策,策略的意思,那么他就是要设置,那些Exchanges或者queue的数据须要复制,同步,如何复制同步?对就是作这些的。
这里有点内容的,我先上例子慢慢说:
[root@G ~]# ./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
参数意思为:
ha-all:为策略名称。
^:为匹配符,只有一个^表明匹配全部,^zlh为匹配名称为zlh的exchanges或者queue。
ha-mode:为匹配类型,他分为3种模式:all-全部(全部的queue),exctly-部分(需配置ha-params参数,此参数为int类型好比3,众多集群中的随机3台机器),nodes-指定(需配置ha-params参数,此参数为数组类型好比["3rabbit@F","rabbit@G"]这样指定为F与G这2台机器。)。
参考示例以下
固然在web管理界面也能配置:
配置完看队列以下,其中表示ha-haall的说明用个人ha-haall策略啦,属于镜像模式,没有表示的就是普通模式:
接下来是你们最喜欢的总结内容啦,内容有二,以下:
一、但愿能关注我其余的文章。
二、博客里面有没有很清楚的说明白,或者你有更好的方式,那么欢迎加入左上方的2个交流群,咱们一块儿学习探讨。