RabbitMQの戦闘クラスターと負荷の構築(3)

1. 概要

実際の運用では、単一のサービスプロバイダーは十分に強く安定していないため、今日では、RabbitMQクラスターの構築を完了し、例を通してロードします。

2.仮想マシンを構成する

3台のマシンまたは仮想マシンを準備し、1台をNginxサーバーとして、残りの2台をRabbitMQクラスターを構築するために準備します。
3台のマシン:
サーバー名| IPアドレス
Nginx 192.168.153.131
RMQ-1 192.168.153.134
RMQ-2 192.168.153.132
上記の操作は、2台のマシン[192.168.153.134]と[192.168.153.132]で実行されます。注意してください。 。

  • ホスト名
    vim / etc /ホスト名サーバー名をRMQ-1 RMQ-2に変更します
    ここに画像の説明を挿入
  • hostsファイルを変更する
    vim / etc / hosts
    192.168.153.134 RMQ-1
    192.168.153.132 RMQ-2
    ここに画像の説明を挿入
  • 開発ポート
    4369、5672、15672、25672の4つのポートが開かれます。
    4369は:アーラン検出ポート提供
    25672を:提供アーラン基礎となる通信ポート
    5672は:アプリケーションが接続する開いているポートを提供し
    、開いているポートが可視化サービスを提供:15672
    編集するためのビジュアルインターフェイスに行くことができますまた、コマンドを実行することができ
    、次のようにコマンド開いているポートを:
    #を手放します4369ポート
    ファイアウォール-CMD = --zone 4369 / TCPは--permanent =公共--add-ポート
    #5672のリリースポート
    ファイアウォール-CMD = --zone公共--add-ポート= 5672 / TCP --permanent
    #リリース15672ポート
    ファイアウォール-CMD = --zone公共--add-ポート= 15672 / tcpの--permanent
    #25672ポートオープン
    ファイアウォール-CMD = --zone公共--add-ポート= 25672 / tcpの--permanent
    #リフレッシュファイアウォールサービス
    firewall-cmd --reload
  • RabbitMQの
    インストールインストールプロセスについては、「RabbitMQ Combat-Discussion and Installation(1)」を参照してください。繰り返しは行いません。
  • サーバーの再起動
    上記の操作では、2台のサーバーの内容は同じですが、操作が正常に完了したら、両方のマシンを再起動してください。

3.クラスターを構築する

3.1 erlang.cookieを同期する

.erlang.cookieは、erlang分散システムのトークンファイルです。通信するために同じトークンを保持できるのは、クラスター内のサーバーのみです。
コマンドfind / -name * .cookie searchを実行します。
ここに画像の説明を挿入
オープン/var/lib/rabbitmq/.erlang.cookieトークンの値を取得できます
ここに画像の説明を挿入
ここに画像の説明を挿入
他のサーバーのコンテンツの一貫性を確保するために、コマンドを使用してこのファイルを他のマシンにコピーします
(1)scp / var / lib / rabbitmq / .erlang.cookie 192.168.153.132:/ var / lib / rabbitmq /
(2)yesと入力するかどうかを確認
(3)192.168.153.132のrootパスワードを入力
(4)完全なコピー
ここに画像の説明を挿入
(5)2台のマシンコマンドをそれぞれchmod 400 /var/lib/rabbitmq/.erlang.cookieを実行してファイルを承認します
ここに画像の説明を挿入
(6)2つのサーバーを再起動します。

3.2クラスターに参加する

RMQ-2をRMQ-1クラスターに追加するので、最初
ここに画像の説明を挿入
rabbit @ RMQ-1ののクラスター名示されているRMQ-1クラスター名を見つける必要があります。RMQ-2で操作します。
#RMQ-2のrabbitMqアプリケーションを
停止し
ます
rabbitmqctl stop_app#クラスターに参加しますrabbitmqctl join_cluster rabbit @ RMQ-1
サービス
rabbitmqctl start_appを起動し
ここに画像の説明を挿入
てクラスターが正常に構築されたこと確認し、これら2つのマシンのいずれかを開き、ブラウザーにhttpと入力します。 // localhost:15672の場合、ノード部分が2つのノードとして表示され、クラスターが正常に構築されていることがわかります。
ここに画像の説明を挿入

4.負荷を構築する

上記の操作により、すでにクラスターが作成されています。2台のマシンのRabbitMQはリアルタイムで同期されます。1台のマシンがメッセージを受信し、もう1台のマシンも同時にメッセージを受信できます。次に、アプリケーションが1つのマシンのRabbitMQとのみ対話する場合、他のマシンは必然的にアイドル状態になります。同じように、このマシンのRabbitMQがクラッシュすると、アプリケーションは別のマシンのRabbitMQにアクセスできなくなり、プロジェクトサービスが中断されています。この問題をどのように解決すればよいですか?次に、Nginxプロキシサービスを使用してRabbitMQロードを構築します。
HAProxyをロードバランサーとして使用する同様のチュートリアルがネットワーク上に多数ありますが、本日は、Nginxを介してRabbitMQロードバランシングを構築する方法について説明します。RabbitMQのロードはTCP / IPモードであるため、Nginxを選択するときはそのバージョンに注意する必要があります。このバージョン1.9では、Nginxが対応するTCP / IPの転送をサポートし始めました。
Nginxのインストール手順については、「nginxのTengineに最適化されたバージョンのインストール」を参照してください

  • RabbitMQユーザーを作成します。RabbitMQ
    の元のユーザーはゲストであることに注意してください。このユーザーはこのマシンへのアクセスのみを許可されているため、ユーザーを追加して、インターネットにアクセスできるようにする必要があります。図に示すように、パスワード123456を作成するユーザーを作成します。このユーザーを使用して、将来、外部ネットワークにアクセスします。

ここに画像の説明を挿入

  • ポート
    を開くnginxサーバーのポートを開く必要がありますメモリの便宜上、ポートは5672として定義されています。
    ポートを
    開くfirewall-cmd --zone = public --add-port = 5672 / tcp --permanent#
    ファイアウォールサービスの更新
    firewall-cmd --reload
  • nginx構成ファイルの
    変更nginxサーバー上のnginx構成ファイル[nginx.conf]を変更します。
    ここに画像の説明を挿入
    #構成ファイルは次のコンテンツを追加します

サーバー{

    listen       5672;			#=====================》监听5672端口
    server_name  localhost;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    default_type  application/octet-stream;
	# default_type 'text/html';
	charset utf-8;     
	location /{
		root   /root; 
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        client_max_body_size 30m;    #允许客户端请求的最大单文件字节数
        proxy_connect_timeout 60s;
        proxy_read_timeout 5400s;
        proxy_send_timeout 5400s;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_pass http://server-5672;			#=====================》配置的节点
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }       
}
#=====================》配置节点
upstream  server-5672  {    			
	#RMQ-1
	server  192.168.153.134:5672  max_fails=1 fail_timeout=20s;		
	#RMQ-2
	server  192.168.153.132:5672  max_fails=1 fail_timeout=20s;
}

コマンド./nginx -s reloadを実行して、構成ファイルを有効にします。
nginx構成ファイルの変更により、ポート5672での監視が追加されました。ポート5672へのアクセスが監視されると、それはRMQ-1およびRMQ-2に配信されてロードバランシングを実現します。アプリケーションはnginxサーバーにのみアクセスする必要があります[ IP:5672]負荷にアクセスできます。
上記は、RabbitMQの実際の戦闘シリーズの内容全体です。将来的にいくつかの実用的なヒントを追加する必要があります。機会があれば追加します。このメモがお役に立てば幸いです。みなさん、幸せな研究をしてください。

元の記事を17件公開しました 賞賛されました0 訪問数467

おすすめ

転載: blog.csdn.net/weixin_36008116/article/details/103517378