真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

消息中間件Rabbitmq的使用-創(chuàng)新互聯(lián)

一:消息中間件的描述
1、簡(jiǎn)介
消息中間件也可以稱(chēng)消息隊(duì)列,是指用高效可靠的消息傳遞機(jī)制進(jìn)行與平臺(tái)無(wú)關(guān)的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來(lái)進(jìn)行分布式系統(tǒng)的集成。通過(guò)提供消息傳遞和消息隊(duì)列模型,可以在分布式環(huán)境下擴(kuò)展進(jìn)程的通信。
當(dāng)下主流的消息中間件有RabbitMQ、Kafka、ActiveMQ、RocketMQ等

在湖南等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需策劃設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),成都全網(wǎng)營(yíng)銷(xiāo)推廣,外貿(mào)網(wǎng)站建設(shè),湖南網(wǎng)站建設(shè)費(fèi)用合理。

2、消息中間件主要作用
? 冗余(存儲(chǔ))
? 擴(kuò)展性
? 可恢復(fù)性
? 順序保證
? 緩沖
? 異步通信
? 削峰 :消息隊(duì)列中的常用場(chǎng)景,一般在秒殺或搶夠活動(dòng)中使用廣泛。一般會(huì)因?yàn)榱髁窟^(guò)大,應(yīng)用系統(tǒng)配置承載不了這股瞬間流量,導(dǎo)致系統(tǒng)直接掛掉,即傳說(shuō)中的“宕機(jī)”現(xiàn)象。為解決這個(gè)問(wèn)題,我們會(huì)將那股巨大的流量拒在系統(tǒng)的上層,即將其轉(zhuǎn)移至 MQ 而不直接涌入我們的接口。

二.消息隊(duì)列之一RabbiMQ簡(jiǎn)介
1, RabbiMQ是?Erang開(kāi)發(fā)的,集群?常?便,因?yàn)镋rlang天?就是??分布式語(yǔ)?,但其本身并不?持負(fù)載均衡,支持高并發(fā),支持可擴(kuò)展。支持AJAX,持久化,用于在分布式系統(tǒng)中存儲(chǔ)轉(zhuǎn)發(fā)消息,在易用性、擴(kuò)展性、高可用性等方面表現(xiàn)不俗。

2, RabbiMQ的特點(diǎn)
? 可靠性
? 擴(kuò)展性
? 高可用性
? 多種協(xié)議
? 多語(yǔ)言客戶(hù)端
? 管理界面
? 插件機(jī)制

3.什么是消息隊(duì)列
MQ 全稱(chēng)為Message Queue, 消息隊(duì)列。是一種應(yīng)用程序?qū)?yīng)用程序的通信方法。應(yīng)用程序通過(guò)讀寫(xiě)出入隊(duì)列的消息(針對(duì)應(yīng)用程序的數(shù)據(jù))來(lái)通信,而無(wú)需專(zhuān)用連接來(lái)鏈接它們。
消息傳遞指的是程序之間通過(guò)在消息中發(fā)送數(shù)據(jù)進(jìn)行通信,而不是通過(guò)直接調(diào)用彼此來(lái)通信。

4.RabbiMQ模式
注意:RabbitMQ模式?概分為以下三種:
(1)單?模式 (一臺(tái)主機(jī)部署rabbitmq)
(2)普通模式 (默認(rèn)的集群模式)。
(3) 鏡像模式 (把需要的隊(duì)列做成鏡像隊(duì)列,存在于多個(gè)節(jié)點(diǎn),屬于RabbiMQ的HA?案,在對(duì)業(yè)務(wù)可靠性要求較?的場(chǎng)合中?較適?)。要實(shí)現(xiàn)鏡像模式,需要先搭建?個(gè)普通集群模式,在這個(gè)模式的基礎(chǔ)上再配置鏡像模式以實(shí)現(xiàn)?可?,在鏡像模式中設(shè)置策略可以將主rabbitmq中的數(shù)據(jù)同步到集群中其他節(jié)點(diǎn)里

++++++++++++RabbitMQ 集 群 基 礎(chǔ) 部 署 (普通模式)++++++++++++

一:基礎(chǔ)部署,集群里的主機(jī)都需要實(shí)施的操作

1,若有三臺(tái)服務(wù)器作為三個(gè)節(jié)點(diǎn),且都聯(lián)?,關(guān)閉防火墻,selinux,編輯域名解析/etc/hosts(ip與主機(jī)名稱(chēng)應(yīng)該對(duì)應(yīng)好,要不然容易影響實(shí)驗(yàn))
[root@rabbitmq-1 ~]# vim /etc/hosts
192.168.50.138 rabbitmq-1
192.168.50.139 rabbitmq-2
192.168.50.140 rabbitmq-3

2,三個(gè)節(jié)點(diǎn)配置安裝rabbitmq軟件
安裝依賴(lài):
[root@rabbitmq-1 ~]# yum install -y gcc-c++ unixODBC unixODBC-devel openssl-devel ncurses-devel
[root@rabbitmq-1 ~]# wget --content-disposition https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-20.3-1.el7.centos.x86_64.rpm/download.rpm
[root@rabbitmq-1 ~]# rpm -ivh erlang-20.3-1.el7.centos.x86_64.rpm

測(cè)試;
[root@rabbitmq-1 ~]# erl

安裝rabbitmq:
[root@rabbitmq-1 ~]# wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.5/rabbitmq-server-3.7.5-1.el7.noarch.rpm
[root@rabbitmq-1 ~]# yum install rabbitmq-server-3.7.5-1.el7.noarch.rpm

3.啟動(dòng)
啟動(dòng)方式一:
[root@rabbitmq-1 ~]# systemctl daemon-reload
[root@rabbitmq-1 ~]# systemctl start rabbitmq-server
[root@rabbitmq-1 ~]# systemctl enable rabbitmq-server
[root@rabbitmq-1 ~]# systemctl status rabbitmq-server
啟動(dòng)方式二:
[root@rabbitmq-1 ~]# /sbin/service rabbitmq-server status ---查看狀態(tài)
[root@rabbitmq-1 ~]# /sbin/service rabbitmq-server start ---啟動(dòng)

4,開(kāi)啟rabbitmq的web訪問(wèn)界面:
[root@rabbitmq-1 ~]# rabbitmq-plugins enable rabbitmq_management


5.創(chuàng)建用戶(hù):
注意:創(chuàng)建用戶(hù)只需要在一臺(tái)主機(jī)上添加就可以,即把誰(shuí)當(dāng)作管理員就在哪兒創(chuàng)建
(1)添加用戶(hù)和密碼誰(shuí)在
[root@rabbitmq-1 ~]# rabbitmqctl add_user soho 123
Creating user "soho" ...
...done.
(2)這是為管理員
[root@rabbitmq-1 ~]# rabbitmqctl set_user_tags soho administrator
Setting tags for user "soho" to [administrator] ...
...done.
(3)查看用戶(hù)
[root@rabbitmq-1 ~]# rabbitmqctl list_users
Listing users ...
guest [administrator]
soho [administrator]
...done.
(4)權(quán)限
[root@rabbitmq-1 ~]# rabbitmqctl set_permissions -p "/" soho "." "." "."
Setting permissions for user "soho" in vhost "/" ...
...done.
此處設(shè)置權(quán)限時(shí)注意'.
'之間需要有空格 三個(gè)'.*'分別代表了conf權(quán)限,read權(quán)限與write權(quán)限 例如:當(dāng)沒(méi)有給
soho設(shè)置這三個(gè)權(quán)限前是沒(méi)有權(quán)限查詢(xún)隊(duì)列,在ui界面也看不見(jiàn)


6,所有機(jī)器都操作:開(kāi)啟用戶(hù)遠(yuǎn)程登錄:
[root@rabbitmq-1 ~]# cd /etc/rabbitmq/
[root@rabbitmq-1 rabbitmq]# cp /usr/share/doc/rabbitmq-server-3.7.5/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
[root@rabbitmq-1 rabbitmq]# ls
enabled_plugins rabbitmq.config
[root@rabbitmq-1 rabbitmq]# vim rabbitmq.config
修改如下:

7.三臺(tái)機(jī)器都操作重啟服務(wù)服務(wù):
[root@rabbitmq-1 ~]# systemctl restart rabbitmq-server
查看端口 所有機(jī)器都操作:開(kāi)啟用戶(hù)遠(yuǎn)程登錄:
[root@rabbitmq-1 ~]# cd /etc/rabbitmq/
[root@rabbitmq-1 rabbitmq]# cp /usr/share/doc/rabbitmq-server-3.7.5/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
[root@rabbitmq-1 rabbitmq]# ls
enabled_plugins rabbitmq.config
[root@rabbitmq-1 rabbitmq]# vim rabbitmq.config
修改如下:
消息中間件Rabbitmq的使用

8.三臺(tái)機(jī)器都操作重啟服務(wù)服務(wù):
[root@rabbitmq-1 ~]# systemctl restart rabbitmq-server
查看端口
消息中間件Rabbitmq的使用
4369 -- erlang發(fā)現(xiàn)口
5672 --程序連接端口
15672 -- 管理界面ui端口
25672 -- server間內(nèi)部通信口

9,注意如果是云服務(wù)器,切記添加安全組端口放行。
web訪問(wèn):192.168.50.138:15672
這里需要注意:
rabbitmq默認(rèn)管理員用戶(hù):guest 密碼:guest
新添加的用戶(hù)為:soho 密碼:123

++++++++++++RabbitMQ 集 群 正 式 部 署 (普通模式)+++++++++++++

二,正式部署集群

1.首先創(chuàng)建好數(shù)據(jù)存放目錄和日志存放目錄
[root@rabbitmq-1 ~]# mkdir -p /data/rabbitmq/data
[root@rabbitmq-1 ~]# mkdir -p /data/rabbitmq/logs
[root@rabbitmq-1 ~]# chmod 777 -R /data/rabbitmq
[root@rabbitmq-1 ~]# chown rabbitmq.rabbitmq /data/ -R

2,創(chuàng)建配置文件:
[root@rabbitmq-1 ~]# vim /etc/rabbitmq/rabbitmq-env.conf (添加如下內(nèi)容)
RABBITMQ_MNESIA_BASE=/data/rabbitmq/data
RABBITMQ_LOG_BASE=/data/rabbitmq/logs

[root@rabbitmq-1 ~]# cat /etc/rabbitmq/rabbitmq-env.conf

3,重啟服務(wù)
[root@rabbitmq-1 ~]# systemctl restart rabbitmq-server

4.拷?erlang.cookie
原因:集群中各節(jié)點(diǎn)是經(jīng)由?個(gè)cookie來(lái)實(shí)現(xiàn)的,所以必須保證各節(jié)點(diǎn)cookie?致,不然節(jié)點(diǎn)之間就?法通信.(cookie存放的位置:解壓縮方式安裝部署的rabbitmq存放于/home/.erlang.cookie。rpm等安裝包方式進(jìn)行安裝的/var/lib/rabbitmq)

[root@rabbitmq-1 ~]# cat /var/lib/rabbitmq/.erlang.cookie
HOUCUGJDZYTFZDSWXTHJ
?scp的?式將rabbitmq-1節(jié)點(diǎn)的.erlang.cookie的值復(fù)制到其他兩個(gè)節(jié)點(diǎn)中。
[root@rabbitmq-1 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.50.139:/var/lib/rabbitmq/
[root@rabbitmq-1 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.50.140:/var/lib/rabbitmq/

3.將mq-2、mq-3作為內(nèi)存節(jié)點(diǎn)加?mq-1節(jié)點(diǎn)集群中.mq-1用作磁盤(pán)節(jié)點(diǎn),在RabbitMQ集群中,必須?少有?個(gè)磁盤(pán)節(jié)點(diǎn),否則隊(duì)列元數(shù)據(jù)?法寫(xiě)?到集群中,當(dāng)磁盤(pán)節(jié)點(diǎn)宕掉時(shí),集群將?法寫(xiě)?新的隊(duì)列元數(shù)據(jù)信息。
在mq-2、mq-3執(zhí)?如下命令:
[root@rabbitmq-2 ~]# rabbitmqctl stop_app #停止節(jié)點(diǎn),切記不是停止服務(wù)
[root@rabbitmq-2 ~]# rabbitmqctl reset #如果有數(shù)據(jù)需要重置,沒(méi)有則不用
[root@rabbitmq-2 ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq-1 #添加到磁盤(pán)節(jié)點(diǎn)
Clustering node 'rabbit@rabbitmq-2' with 'rabbit@rabbitmq-1' ...
[root@rabbitmq-2 ~]# rabbitmqctl start_app #啟動(dòng)節(jié)點(diǎn)
Starting node 'rabbit@rabbitmq-2' ...

3.1.0此處節(jié)點(diǎn)問(wèn)題解決方式:
(1)如果執(zhí)行rabbitmqctl stop_app 這條命令報(bào)錯(cuò):需要執(zhí)行
#chmod 400 .erlang.cookie ?件是400的權(quán)限
#chown rabbitmq.rabbitmq .erlang.cookie
(2)由于更改hostname文件,在每次rabbitmqctl stop或者rabbitmqctl cluster_status等,只要是rabbitmq的命令就報(bào)錯(cuò),提示大概如下
Cluster status of node rabbit@web2 ...
Error: unable to connect to node rabbit@web2: nodedown
..............
此時(shí)先ps aux | grep mq,然后kill -9 所有mq的進(jìn)程,然后再rabbitmq-server -detached即可解決。(即先強(qiáng)殺,再重新啟動(dòng))
(3)使用rabbitmqctl stop,rabbitmq-server -detached重新啟動(dòng)后,原先添加的用戶(hù)admin、虛擬主機(jī)coresystem等均丟失,還需要重新添加。
(4) rabbitmqctl join_cluster --ram rabbit@rabbitmq-1報(bào)錯(cuò)時(shí)檢查域名解析
(5)其他問(wèn)題關(guān)于使用 rabbitmq-server -detached命令啟動(dòng)rabbitmq時(shí),出現(xiàn)以下提示W(wǎng)arning: PID file not written; -detached was passed,此時(shí)使用
rabbitmqctl status提示服務(wù)已啟動(dòng),可知此問(wèn)題不用解決。
3.1.1節(jié)點(diǎn)補(bǔ)充:
(1)默認(rèn)rabbitmq啟動(dòng)后是磁盤(pán)節(jié)點(diǎn),在這個(gè)cluster命令下,mq-2和mq-3是內(nèi)存節(jié)點(diǎn),
mq-1是磁盤(pán)節(jié)點(diǎn)。
( 2)如果要使mq-2、mq-3都是磁盤(pán)節(jié)點(diǎn),去掉--ram參數(shù)即可。
(3)如果想要更改節(jié)點(diǎn)類(lèi)型,可以使?命令rabbitmqctl change_cluster_node_type disc(ram),前提是必須停掉rabbit應(yīng)?
注:
#如果有需要使用磁盤(pán)節(jié)點(diǎn)加入集群
[root@rabbitmq-2 ~]# rabbitmqctl join_cluster rabbit@rabbitmq-1
[root@rabbitmq-3 ~]# rabbitmqctl join_cluster rabbit@rabbitmq-1

4,查看集群狀態(tài),在任意節(jié)點(diǎn)上執(zhí)行 rabbitmqctl cluster_status來(lái)查看是否集群配置成功。
[root@rabbitmq-1 ~]# rabbitmqctl cluster_status
消息中間件Rabbitmq的使用
每臺(tái)機(jī)器顯示出三臺(tái)節(jié)點(diǎn),表示已經(jīng)添加成功!

5.登錄rabbitmq web管理控制臺(tái),創(chuàng)建新的隊(duì)列
打開(kāi)瀏覽器輸?http://192.168.50.138:15672,
輸?默認(rèn)的Username:guest
輸?默認(rèn)的Password:guest
消息中間件Rabbitmq的使用

根據(jù)界?提示創(chuàng)建?條隊(duì)列
消息中間件Rabbitmq的使用

++++++由以上RABBITMQ普通模式+鏡像模式+++++++++++++

三,添加鏡像模式的原因:

     上面已經(jīng)完成RabbitMQ默認(rèn)集群模式,但并不保證隊(duì)列的高可用性,隊(duì)列內(nèi)容不會(huì)復(fù)制。如果隊(duì)列節(jié)點(diǎn)宕機(jī)直接導(dǎo)致該隊(duì)列無(wú)法應(yīng)用,只能等待重啟,所以要想在隊(duì)列節(jié)點(diǎn)宕機(jī)或故障也能正常應(yīng)用,就要復(fù)制隊(duì)列內(nèi)容到集群里的每個(gè)節(jié)點(diǎn),必須要?jiǎng)?chuàng)建鏡像隊(duì)列。    鏡像隊(duì)列是基于普通的集群模式的。

1,創(chuàng)建鏡像集群:三臺(tái)機(jī)器相同操作
rabbitmq set_policy :設(shè)置策略
[root@rabbitmq-1 ~]#rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
Setting policy "ha-all" for pattern "^" to "{"ha-mode":"all"}" with priority "0" for vhost "/" ...

2,再次查看隊(duì)列已經(jīng)同步到其他兩臺(tái)節(jié)點(diǎn):
消息中間件Rabbitmq的使用

3,此時(shí)鏡像隊(duì)列設(shè)置成功。已經(jīng)部署完成,將所有隊(duì)列設(shè)置為鏡像隊(duì)列,即隊(duì)列會(huì)被復(fù)制到各個(gè)節(jié)點(diǎn),各個(gè)節(jié)點(diǎn)狀態(tài)保持一致。``

++++++++rabbitmq默認(rèn)的集群模式+鏡像模式+HA+負(fù)載均衡++++++++++++
RabbitMQ 高可用集群搭建完成,最后一個(gè)步驟就是搭建均衡器。
消息中間件Rabbitmq的使用

簡(jiǎn)單安裝并配置負(fù)載均衡器HA

注意:如果使用阿里云,可以使用阿里云的內(nèi)網(wǎng)slb來(lái)實(shí)現(xiàn)負(fù)載均衡,不用自己搭建HA。
安裝并配置負(fù)載均衡器HA
1、在192.168.50.138安裝HAProxy
yum -y install haproxy
2、修改 /etc/haproxy/haproxy.cfg
[root@rabbitmq-1 ~]# cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
[root@rabbitmq-1 ~]# vim /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2

chroot      /var/lib/haproxy
pidfile     /var/run/haproxy.pid
maxconn     4000
user        haproxy
group       haproxy
nbproc      4
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
defaults
mode http
log global
retries 3
timeout connect 10s
timeout client 1m
timeout server 1m
timeout check 10s
maxconn 2048
#---------------------------------------------------------------------
##監(jiān)控查看本地狀態(tài)#####
listen admin_stats
bind :80
mode http
option httplog
option httpclose
log 127.0.0.1 local0 err
stats uri /haproxy
stats auth xingdian:123 (用戶(hù)+密碼)
stats refresh 30s
####################################
###反代監(jiān)控
frontend server
bind
:5670
log global
mode tcp
#option forwardfor
default_backend rabbitmq
maxconn 3
backend rabbitmq
mode tcp
log global
balance roundrobin
server rabbitmq1 192.168.50.138:5672 check inter 2000s rise 2 fall 3
server rabbitmq2 192.168.50.139:5672 check inter 2000s rise 2 fall 3
server rabbitmq3 192.168.50.140:5672 check inter 2000s rise 2 fall 3

[root@rabbitmq-1 ~]# systemctl restart haproxy

瀏覽器輸入http://192.168.50.138/haproxy查看rabbitmq的狀態(tài)。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。


本文標(biāo)題:消息中間件Rabbitmq的使用-創(chuàng)新互聯(lián)
文章URL:http://weahome.cn/article/dhcpgp.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部