目次
最近、メッセージキューを使用するプロジェクトがあり、実際の状況を考慮して Rabbitmq を選択しました。
パフォーマンスの点では、rabbitmq は比較的バランスが取れている、または包括的です。以前から Rabbitmq を使用していました。データ量は特に多くありません。rabbitmq は高い同時実行性もサポートしています。結局のところ、erlang 言語は高い同時実行性を持っています。また、After の場合、メッセージは永続化され、特定のキューは後でミラーリングできます。全体的に、rabbitmq の方がニーズに合っています。
準備
マシンの準備とクラスターのデプロイメントのため、次の 3 つが必要です。
CPU名 |
ip |
mq1 |
192.168.10.2 |
mq2 |
192.168.10.3 |
mq3 |
192.168.10.4 |
バージョンを確認したら、対応するerlangのバージョンを確認する必要があります(https://rabbitmq.com/that-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
wxWidget をコンパイルする
#解压
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 をデプロイできます
3 つのユニットは別々に実行されます
rpm -ivh --nodeps rabbitmq-server-3.8.4-1.el7.noarch.rpm
そのうちの 1 つが Rabbitmq を開始します
systemctl start rabbitmq-server
次に、この erlang ファイルを他の 2 台のコンピュータと同期します。
cat /var/lib/rabbitmq/.erlang.cookie
.erlang.cookie のファイル権限は 400であることに注意してください。
その後、残りの 2 つは別々に実行されます
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
プロメテウスの構成
#新增
- job_name: rabbit
static_configs:
- targets: ['192.168.10.7:9419'
プロエムテウスを再起動する
グラファナディスプレイ
インポート インポート 4279