目录
最近有个项目有用到消息队列,根据实际情况选择了rabbitmq,具体原因的话,有这么几点吧。
rabbitmq性能来讲,比较均衡,或者说比较全面,之前的话,也一直用的是rabbitmq,数据量的话,也没有特别的大,rabbitmq也支持高并发,毕竟erlang语言就具备高并发,另外就是对于消息的持久化了,后期也可以对具体的队列做镜像处理,整体来说,rabbitmq比较符合需求。
准备工作
机器准备,集群部署,所以需要三台:
主机名 |
ip |
mq1 |
192.168.10.2 |
mq2 |
192.168.10.3 |
mq3 |
192.168.10.4 |
在确认了版本之后,需要去看对应的erlang版本,可参考(https://rabbitmq.com/which-erlang.html)
对应版本的包下载:
#OTP 22.3
https://github.com/erlang/otp/releases/download/OTP-22.3.4.26/otp_src_22.3.4.26.tar.gz
#rabbitmq rpm包
https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.8.4-1.el7.noarch.rpm
#wxWidgets
https://github.com/wxWidgets/wxWidgets/releases/tag/v3.1.5
集群部署
在部署OTP之前,需要先安装一些前置包,不然编译会有问题
#都是教训,三台都执行下
yum install mesa-libGL-devel mesa-libGLU-devel freeglut-devel gcc glibc-devel make ncurses-devel openssl-devel autoconf xmlto libtool automake gcc-c++ unixODBC unixODBC-devel gtk2-devel binutils-devel fop.noarch bzip2 -y
yum安装结束后,还需要安装 wxWidgets
不然编译的时候,会有这个报错
wxWidgets not found, wx will NOT be usable
编译wxWidgets
#解压
tar -xjf wxWidgets-3.1.5.tar.bz2
cd /wxWidgets-3.15
#编译
./configure --with-regex=builtin --with-gtk --enable-unicode --disable-shared --prefix=/usr/local/wxWidgets
make && make install
#设置动态目录
cd /etc/ld.so.conf.d/
touch wxWidgets.conf
cat >>wxWidgets.conf<<EOF
/usr/local/lib
EOF
#重新加载动态库
ldconfig
#java环境也需要提前配置好,不然也会报错,因为我们是统一部署的jdk,这里就不再介绍了。
#到这里就可以开始编译OTP了
#OTP编译
tar -xvf otp_src_22.3.4.26.tar.gz -C otp
cd ./otp
./otp_build autoconf
./configure --prefix=/data460/erlang_22.3
make && make install
#修改环境变量,验证是否成功
vim /etc/profile
#新增如下
PATH=$PATH:/data460/erlang_22.3/bin/
source /etc/pfofile
查看erl版本
erl
编译还会有个报错,可以忽略
可忽略报错
Can not link the wx driver, wx will NOT be useable
部署好之后,可以部署rabbitmq了
三台分别执行
rpm -ivh --nodeps rabbitmq-server-3.8.4-1.el7.noarch.rpm
其中一台启动rabbitmq
systemctl start rabbitmq-server
然后同步这台erlang 文件到两外两台
cat /var/lib/rabbitmq/.erlang.cookie
注意.erlang.cookie的文件权限是 400
然后另外两台分别执行
systemctl start rabbitmq-server.service
systemctl status rabbitmq-server.service
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@mq-01
#内存节点
#rabbitmqctl join_cluster --ram rabbit@mq-01
rabbitmqctl start_app
rabbitmqctl status
查看集群状态
rabbitmqctl cluster_status
配置集群镜像模式
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"exactly", "ha-params":2, "ha-sync-mode":"automatic","ha-sync-batch-size":300000}'
#开启web页面
rabbitmq-plugins enable rabbitmq_management
#新建用户
rabbitmqctl add_user admin fadsfj4as$
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin “.*” “.*” “.*”
监控配置
采用rabbitmq-exporter
地址:https://github.com/kbudde/rabbitmq_exporter/
下载包:
https://github.com/kbudde/rabbitmq_exporter/releases/download/v1.0.0-RC8/rabbitmq_exporter-1.0.0-RC8.linux-amd64.tar.gz
解压,配置文件,systemctl启动配置
tar -xvf rabbitmq_exporter-1.0.0-RC8.linux-amd64.tar.gz
下为涉及到的配置文件及目录
cat rabbitmq.conf
{
"rabbit_url": "http://192.168.10.2:15672",
"rabbit_user": "admin",
"rabbit_pass": "fadsfj4as$",
"publish_port": "9419",
"publish_addr": "",
"output_format": "TTY",
"ca_file": "ca.pem",
"cert_file": "client-cert.pem",
"key_file": "client-key.pem",
"insecure_skip_verify": false,
"exlude_metrics": [],
"include_queues": ".*",
"skip_queues": "^$",
"skip_vhost": "^$",
"include_vhost": ".*",
"rabbit_capabilities": "no_sort,bert",
"enabled_exporters": [
"exchange",
"node",
"overview",
"queue"
],
"timeout": 30,
"max_queues": 0
}
cat /usr/lib/systemd/system/rabbitmq_exporter.service
[Unit]
Description=rabbitmq_exporter
After=network.target
[Service]
Type=simple
Restart=always
RestartSec=10
WorkingDirectory=/data/rabbitmq_exporter
ExecStart=/data/rabbitmq_exporter/rabbitmq_exporter -config-file rabbitmq.conf
[Install]
WantedBy=multi-user.target
#启动
systemctl start rabbitmq_exporter.service && systemctl status rabbitmq_exporter.service
#查看监控指标
192.168.10.2:9419/metrics
prometheus配置
#新增
- job_name: rabbit
static_configs:
- targets: ['192.168.10.7:9419'
重启proemtheus
grafana展示
import 导入 4279