网站的结构包括哪些内容,广西住房城乡建设厅官网站,柚子皮wordpress移动主题,设计一个个人网站的基本步骤RabbitMQ概述 1.RabbiMQ简介
RabbiMQ是⽤Erang开发的#xff0c;集群⾮常⽅便#xff0c;因为Erlang天⽣就是⼀⻔分布式语⾔#xff0c;但其本身并不⽀持负载均衡。支持高并发#xff0c;支持可扩展。支持AJAX#xff0c;持久化#xff0c;用于在分布式系统中存储转发消…RabbitMQ概述 1.RabbiMQ简介
RabbiMQ是⽤Erang开发的集群⾮常⽅便因为Erlang天⽣就是⼀⻔分布式语⾔但其本身并不⽀持负载均衡。支持高并发支持可扩展。支持AJAX持久化用于在分布式系统中存储转发消息在易用性、扩展性、高可用性等方面表现不俗。
2.RabbitMQ 特点 可靠性 扩展性 高可用性 多种协议 多语言客户端 管理界面 插件机制 3.什么是消息队列
MQ 全称为Message Queue, 。是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息针对应用程序的数据来通信而无需专用连接来链接它们。
消息传递指的是程序之间通过在消息中发送数据进行通信而不是通过直接调用彼此来通信。 集群中有两种节点 1 内存节点只保存状态到内存一个例外的情况是持久的queue的持久内容将被保存到disk 2 磁盘节点保存状态到内存和磁盘。---推荐 内存节点虽然不写入磁盘但是它执行比磁盘节点要好。集群中只需要一个磁盘节点来保存状态 就足够了 如果集群中只有内存节点那么不能停止它们否则所有的状态消息等都会丢失。 普通集群准备环境安装配置RabbitMQ
这里准备三台服务器在三台服务器上都安装rabbitmq并且配置本地解析。三台服务器都配置
[rootserver01 ~]# cat /etc/hostsEOF
192.168.134.165 server01
192.168.134.166 server02
192.168.134.163 server03
EOF
1.三个节点都安装rabbitmq
[rootserver01 ~]# yum install -y epel-release gcc-c unixODBC unixODBC-devel openssl-devel ncurses-devel[rootserver01 ~]#rz #上传erlang和rabbitmq两个软件包
[rootserver01 ~]# yum install -y erlang-21.3.8.21-1.el7.x86_64
rootserver01 ~]# yum install -y rabbitmq-server-3.7.10-1.el7.noarch.rpm启动
[rootserver01 ~]# systemctl daemon-reload
[rootserver01 ~]# systemctl start rabbitmq-server
[rootserver01 ~]# systemctl enable rabbitmq-server###每台都操作开启rabbitmq的web访问界面
[rootserver01 ~]# rabbitmq-plugins enable rabbitmq_management 创建用户
[rootserver01 ~]# rabbitmqctl add_user aren 123 #添加用户和密码
[rootserver01 ~]#rabbitmqctl set_user_tags aren administrator #设置为管理员
[rootserver01 ~]# rabbitmqctl list_users #查看用户
Listing users ...
user tags
aren [administrator]
admin []
guest [administrator]aren设置这三个权限前是没有权限查询队列在ui界面也看不见
[rootserver01 ~]# rabbitmqctl set_permissions -p / aren .* .* .*
Setting permissions for user aren in vhost / ...
...done. 配置开启用户远程登录
[rootserver01 ~]# vim /etc/rabbitmq/rabbitmq.config 61{loopback_users, []}[rootserver01 ~]# cp /usr/share/doc/rabbitmq-server-3.7.10/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config[rootserver01 rabbitmq]# ll
总用量 44
-rw-r--r-- 1 root rabbitmq 23 11月 8 10:43 enabled_plugins
-rw-r--r-- 1 root rabbitmq 33096 11月 8 10:44 rabbitmq.config 测试
查看端口 4369 -- erlang发现端口 5672 --程序连接端口 15672 -- 管理界面ui端口 25672 -- server间内部通信口 访问192.168.134.165:15672rabbitmq默认管理员用户:guest 密码:guest 部署集群
注意在三台机器上都部署。
1.创建好数据目录和日志目录
[rootserver01~]# mkdir -p /data/rabbitmq/data
[rootserver01 ~]# mkdir -p /data/rabbitmq/logs
[rootserver01 ~]# chmod 777 -R /data/rabbitmq创建配置文件:
[rootserver01 ~]# vim /etc/rabbitmq/rabbitmq-env.conf
RABBITMQ_MNESIA_BASE/data/rabbitmq/data
RABBITMQ_LOG_BASE/data/rabbitmq/logs###重启
[rootserver01 ~]# systemctl restart rabbitmq-server
2.拷⻉.erlang.cookie 到其他两台服务器使服务器的cookie保持一致
Rabbitmq的集群是依附于erlang的集群来⼯作的,所以必须先构建起erlang的集群景象。Erlang的集群中
各节点是经由过程⼀个magic cookie来实现的,这个cookie存放在/var/lib/rabbitmq/.erlang.cookie中⽂件是400的权限。所以必须保证各节点cookie⼀致,不然节点之间就⽆法通信.
⽤scp的⽅式将server01节点的.erlang.cookie的值复制到其他两个节点中.
[rootserver01 ~]# cat /var/lib/rabbitmq/.erlang.cookie
JSNEBPKQZWUGDKNCRKAM
[rootserver01 ~]# scp /var/lib/rabbitmq/.erlang.cookie root192.168.134.166:/var/lib/rabbitmq/
[rootserver01 ~]# scp /var/lib/rabbitmq/.erlang.cookie root192.168.134.163:/var/lib/rabbitmq/ 3.将server02和server03作为内存结点加入server01节点集群
在server02和server03执行一下命令
注意在改了主机名的情况下需要重启后才能添加磁盘节点当然本地解析也要配置。
[rootserver02 ~]# systemctl restart rabbitmq-server
[rootserver02 ~]# rabbitmqctl stop_app #停止节点
[rootserver02 ~]# rabbitmqctl reset #如果有数据需要重置没有则不用
[rootserver02 ~]# rabbitmqctl join_cluster --ram rabbitserver01 #添加到磁盘节点
[rootserver02 ~]#rabbitmqctl start_app #启动节点[rootserver03 ~]# systemctl restart rabbitmq-server
[rootserver03 ~]# rabbitmqctl stop_app #停止节点
[rootserver03 ~]# rabbitmqctl reset #如果有数据需要重置没有则不用
[rootserver03 ~]# rabbitmqctl join_cluster --ram rabbitserver01
[rootserver03 ~]#rabbitmqctl start_app #启动节点 1默认rabbitmq启动后是磁盘节点在这个cluster命令下server02和server03是内存节点server01是磁盘节点。 2如果要使server02server03都是磁盘节点去掉--ram参数即可。 3如果想要更改节点类型可以使⽤命令rabbitmqctl change_cluster_node_type disc(ram),前提是必须停掉rabbit应⽤. 4.查看集群状态
在server01磁盘节点上查看集群的配置。
[rootserver01 ~]# rabbitmqctl cluster_status RabbitMQ镜像集群配置
上面已经完成RabbitMQ默认集群模式但并不保证队列的高可用性尽管交换机、绑定这些可以复制到集群里的任何一个节点但是队列内容不会复制。但队列节点宕机直接导致该队列无法应用只能等待重启所以要想在队列节点宕机或故障也能正常应用就要复制队列内容到集群里的每个节点必须要创建镜像队列。
镜像队列是基于普通的集群模式的然后再添加一些策略所以你还是得先配置普通集群然后才能设置镜像队列我们就以上面的集群接着做。 保证各个节点之间数据同步
创建镜像集群:
rabbitmqctl set_permissions .* .* .* (后面三个”*”代表用户拥有配置、写、读全部权限)
[rootserver01 ~]# rabbitmqctl set_policy ha-all ^ {ha-mode:all}
[rootserver02 ~]# rabbitmqctl set_policy ha-all ^ {ha-mode:all}
[rootserver03 ~]# rabbitmqctl set_policy ha-all ^ {ha-mode:all}
再次查看队列已经同步到其他两台节点: 安装并配置负载均衡器HA
安装haproxy
[rootserver01 ~]# yum -y install haproxy修改 /etc/haproxy/haproxy.cfg
[rootserver01 ~]# vim /etc/haproxy/haproxy.cfg
globallog 127.0.0.1 local2chroot /var/lib/haproxypidfile /var/run/haproxy.pidmaxconn 4000user haproxygroup haproxynbproc 4daemon# turn on stats unix socketstats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
defaultsmode httplog globalretries 3timeout connect 10stimeout client 1mtimeout server 1mtimeout check 10smaxconn 2048
#---------------------------------------------------------------------
##监控查看本地状态#####
listen admin_statsbind *:89mode httpoption httplogoption httpcloselog 127.0.0.1 local0 errstats uri /haproxystats auth aren:123456stats refresh 30s
####################################
###反代监控
frontend serverbind *:5670log globalmode tcp#option forwardfordefault_backend rabbitmqmaxconn 3
backend rabbitmqmode tcplog globalbalance roundrobinserver rabbitmq1 192.168.134.165:5672 check inter 2000s rise 2 fall 3server rabbitmq2 192.168.134.166:5672 check inter 2000s rise 2 fall 3server rabbitmq3 192.168.134.163:5672 check inter 2000s rise 2 fall 3[rootserver01 ~]# systemctl start haproxy