网站打不开如何解决,wordpress4.5.1,为什么要用CGI做网站,visual stdio 做网站 注册用户 密码必须6位以上RabbitMQ1、RabbitMQ简介 RabbiMQ是⽤Erang开发的#xff0c;集群⾮常⽅便#xff0c;因为Erlang天⽣就是⼀⻔分布式语⾔#xff0c;但其本身并不⽀持负载均衡。支持高并发#xff0c;支持可扩展。支持AJAX#xff0c;持久化#xff0c;用于在分布式系统中存储转发消息集群⾮常⽅便因为Erlang天⽣就是⼀⻔分布式语⾔但其本身并不⽀持负载均衡。支持高并发支持可扩展。支持AJAX持久化用于在分布式系统中存储转发消息在易用性、扩展性、高可用性等方面表现不俗。
2、RabbitMQ 特点 可靠性
扩展性
高可用性
多种协议
多语言客户端
管理界面
插件机制
3、什么是消息队列 MQ 全称为Message Queue, 。是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息针对应用程序的数据来通信而无需专用连接来链接它们。
消息传递指的是程序之间通过在消息中发送数据进行通信而不是通过直接调用彼此来通信。
4、RabbiMQ模式 注意:RabbitMQ模式⼤概分为以下三种:
(1)单⼀模式。
(2)普通模式(默认的集群模式)。
(3) 镜像模式(把需要的队列做成镜像队列存在于多个节点属于RabbiMQ的HA⽅案在对业务可靠性要求较⾼的场合中⽐较适⽤)。要实现镜像模式需要先搭建⼀个普通集群模式在这个模式的基础上再配置镜像模式以实现⾼可⽤。
5、集群中的基本概念 RabbitMQ的集群节点包括内存节点、磁盘节点。顾名思义内存节点就是将所有数据放在内存磁盘节点将数据放在磁盘。如果在投递消息时打开了消息的持久化那么即使是内存节点数据还是安全的放在磁盘。
一个rabbitmq集 群中可以共享 uservhostqueueexchange等所有的数据和状态都是必须在所有节点上复制的。 ConnectionFactory连接管理器应用程序与Rabbit之间建立连接的管理器程序代码中使用 Channel信道消息推送使用的通道 Exchange交换器用于接受、分配消息 Queue队列用于存储生产者的消息 RoutingKey路由键用于把生成者的数据分配到交换器上 BindingKey绑定键用于把交换器的消息绑定到队列上 Broker简单来说就是消息队列服务器实体 vhost虚拟主机一个broker里可以开设多个vhost用作不同用户的权限分离. producer消息生产者就是投递消息的程序。 consumer消息消费者就是接受消息的程序。 user:用户 单实例安装RabbitMQ
安装依赖
[rootlocalhost ~]# yum -y install vim lrasz
[rootlocalhost ~]# yum install -y epel-release gcc-c unixODBC unixODBC-devel openssl-devel ncurses-devel安装erlang
方法一
[rootlocalhost ~]# curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
方法二
[rootlocalhost ~]# rz #上传安装包安装erlang
[rootlocalhost ~]# yum -y install erlang-21.3.8.21-1.el7.x86_64.rpm测试
[rootlocalhost ~]# erl
Erlang/OTP 21 [erts-10.3.5.16] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe]Eshell V10.3.5.16 (abort with ^G)
1
安装rabbitmq
[rootlocalhost ~]# yum -y install rabbitmq-server-3.7.10-1.el7.noarch.rpm
[rootlocalhost ~]# systemctl daemon-reload
[rootlocalhost ~]# systemctl start rabbitmq-server
[rootlocalhost ~]# systemctl enable rabbitmq-server开启rabbitmq的web访问界面
[rootlocalhost ~]# rabbitmq-plugins enable rabbitmq_management添加用户
[rootlocalhost ~]# rabbitmqctl add_user zx 123456
Adding user zx ...
[rootlocalhost ~]# rabbitmqctl set_user_tags zx administrator
Setting tags for user zx to [administrator] ...
[rootlocalhost ~]# rabbitmqctl list_users
Listing users ...
user tags
zx [administrator]
guest [administrator]
[rootlocalhost ~]# rabbitmqctl set_permissions -p / zx .* .* .*
Setting permissions for user zx in vhost / ...修改配置文件
[rootlocalhost rabbitmq]# cp /usr/share/doc/rabbitmq-server-3.7.10/rabbitmq.config.example /etc/rabbitmq/
[rootlocalhost rabbitmq]# cp rabbitmq.config.example rabbitmq.config
[rootlocalhost rabbitmq]# vim rabbitmq.config重启服务
[rootlocalhost rabbitmq]# systemctl restart rabbitmq-server浏览器访问 Rabbit-test
[rootlocalhost ~]# yun -y install unzip
[rootlocalhost ~]# lrzsz
[rootlocalhost ~]# ls
anaconda-ks.cfg
rabbitmq-test-main.zipcd rabbitmq-test yum install -y python3 python3-devel \
pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple \
export FLASK_ENVdevelopment ; flask run --reload -p 80 -h 0.0.0.0rabbitMQ集群 准备三台rabbitMQ服务器 hostnameiprabbitmq-1192.168.20.141rabbitmq-2192.168.20.142rabbitmq-3192.168.20.143
准备工作三台
[rootrabbitmq-1 ~]# mkdir -p /data/rabbitmq/data
[rootrabbitmq-1 ~]# mkdir -p /data/rabbitmq/logs
[rootrabbitmq-1 ~]# chmod 777 -R /data/rabbitmq
[rootrabbitmq-1 ~]# chown rabbitmq.rabbitmq /data/ -R
[rootrabbitmq-1 ~]# vim /etc/rabbitmq/rabbitmq-env.conf
RABBITMQ_MNESIA_BASE/data/rabbitmq/data
RABBITMQ_LOG_BASE/data/rabbitmq/logs
# 重启服务
[rootrabbitmq-1 ~]# systemctl restart rabbitmq-serverrabbitmq-1服务器
[rootrabbitmq-1 ~]# cat /var/lib/rabbitmq/.erlang.cookie
HOUCUGJDZYTFZDSWXTHJ
#⽤scp的⽅式将rabbitmq-1节点的.erlang.cookie的值复制到其他两个节点中。
[rootrabbitmq-1 ~]# scp /var/lib/rabbitmq/.erlang.cookie root192.168.20.142:/var/lib/rabbitmq/
[rootrabbitmq-1 ~]# scp /var/lib/rabbitmq/.erlang.cookie root192.168.20.143:/var/lib/rabbitmq/rabbitmq-2服务器
[rootrabbitmq-2 ~]# systemctl restart rabbitmq-server
#停止节点
[rootrabbitmq-2 ~]# rabbitmqctl stop_app
#如果有数据需要重置没有则不用
[rootrabbitmq-2 ~]# rabbitmqctl reset #添加到磁盘节点--ram内存节点
[rootrabbitmq-2 ~]# rabbitmqctl join_cluster --ram rabbitrabbitmq-1
Clustering node rabbitrabbitmq-2 with rabbitrabbitmq-1 ...#启动节点
[rootrabbitmq-2 ~]# rabbitmqctl start_app
Starting node rabbitrabbitmq-2 ...rabbitmq-3服务器 1默认rabbitmq启动后是磁盘节点在这个cluster命令下mq-2和mq-3是内存节点mq-1是磁盘节点。 2如果要使mq-2、mq-3都是磁盘节点去掉–ram参数即可。 3如果想要更改节点类型可以使⽤命令rabbitmqctl change_cluster_node_typedisc(ram),前提是必须停掉rabbit应⽤ 查看集群状态
[rootrabbitmq-1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbitrabbitmq-1 ...
[{nodes,[{disc,[rabbitrabbitmq-1,rabbitrabbitmq-3]},{ram,[rabbitrabbitmq-2]}]},{running_nodes,[rabbitrabbitmq-2,rabbitrabbitmq-3,rabbitrabbitmq-1]},{cluster_name,rabbitrabbitmq-1},{partitions,[]},{alarms,[{rabbitrabbitmq-2,[]},{rabbitrabbitmq-3,[]},{rabbitrabbitmq-1,[]}]}]浏览器访问 安装配置负载均衡器
1.安装负载均衡器haproxy
yum -y install haproxy2、修改 /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 *:89 #80端口冲突mode httpoption httplogoption httpcloselog 127.0.0.1 local0 errstats uri /haproxystats auth newrain:123456 #登录用户stats refresh 30s
####################################
###反代监控
frontend serverbind *:5670log globalmode tcp#option forwardfordefault_backend rabbitmqmaxconn 3
backend rabbitmqmode tcplog globalbalance roundrobinserver rabbitmq1 192.168.20.141:5672 check inter 2000s rise 2 fall 3server rabbitmq2 192.168.20.142:5672 check inter 2000s rise 2 fall 3server rabbitmq3 192.168.20.143:5672 check inter 2000s rise 2 fall 3[rootrabbitmq-1 ~]# systemctl start haproxy浏览器访问