rabbitmq構成

8899 ワード

プロジェクトで使われているのは、きっと使いやすいので、誰が使っているか知っています.
RabbitMQはポピュラーなオープンソースメッセージキューシステムであり、AMQP(Advanced Message Queue Protocol)の標準実装であり、erlang言語で開発されている.RabbitMQは、優れたパフォーマンスと時効性を備え、クラスタと負荷の導入を非常にサポートし、大規模な分散システムで使用するのに適していると言われています.具体的な特性は検証中であり、検証されています.プロジェクトの必要に応じてRabbitMQをインストールして構成し、サーバオペレーティングシステムはCentOS 7であり、サーバは仮想マシンである.
具体的な手順は次のとおりです.
1依存ファイルのインストール:
 yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto
2.Erlangインストール構成
インストールパッケージ、アドレスのダウンロードhttp://www.erlang.org/downloadsああ、私が選んだのはotp_src_18.3.tar.gz.erlangについて理解する必要があります.
ファイルを解凍します.
[root@iZ25e3bt9a6Z rabbitmq]# tar -xzvf otp_src_18.3.tar.gz
[root@iZ25e3bt9a6Z rabbitmq]# cd otp_src_18.3/

インストールパスのコンパイルコードを設定するには、次の手順に従います.
[root@iZ25e3bt9a6Z otp_src_18.3]# ./configure --prefix=/opt/erlang

コンパイルの結果:
[root@iZ25e3bt9a6Z otp_src_18.3]# make && make install

次に、Erlang環境変数、vi/etc/profileファイルを構成し、次の環境変数を追加します.
#set erlang environment
export PATH=$PATH:/opt/erlang/bin

  source /etc/profileファイルを有効にする
完了したら/opt/erlangに入って実行結果を表示します
[root@iZ25e3bt9a6Z rabbitmq]# cd /opt/erlang/
[root@iZ25e3bt9a6Z erlang]# erl
Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V7.3  (abort with ^G)
1> 

以上のメッセージが表示されると、インストールが完了したことを示します.次に‘halt().’を入力して終了すればよい.
 
Erlangのインストール中に、システムに適切なパッケージが欠けているため、どのパッケージが欠けているかを直接yumインストールすればよいという問題が発生する可能性があります.
3.RabbitMqのダウンロードインストール
[root@iZ25e3bt9a6Z rabbitmq]# weget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.7/rabbitmq-server-generic-unix-3.5.7.tar.xz

ファイルの解凍
[root@iZ25e3bt9a6Z rabbitmq]# xz -d rabbitmq-server-generic-unix-3.5.7.tar.xz
[root@iZ25e3bt9a6Z rabbitmq]# tar -xvf rabbitmq-server-generic-unix-3.5.7.tar  -C /opt

解凍後フォルダ/optに入ると、複数のフォルダrabbitmq-server-generic-unix-3.5.7が見つかり、rabbitmqと名前を変更して記憶します.
次にrabbitmq環境変数、vi/etc/profileファイルを構成し、次の環境変数を追加します.
#set rabbitmq environment
export PATH=$PATH:/opt/rabbitmq/sbin

  source /etc/profileファイルを有効にする
4.RabbitMQサービス起動閉鎖
以上でRabbitMqのインストールが完了しましたが、どうやってサービスを開始しますか?
サービスの開始:
[root@iZ25e3bt9a6Z rabbitmq]# cd sbin/
[root@iZ25e3bt9a6Z sbin]# ./rabbitmq-server -detached

サービスステータスの表示:
[root@iZ25e3bt9a6Z sbin]# ./rabbitmqctl status
Status of node rabbit@iZ25e3bt9a6Z ...
[{pid,11849},
 {running_applications,
     [{rabbitmq_management,"RabbitMQ Management Console","3.6.1"},
      {rabbitmq_management_agent,"RabbitMQ Management Agent","3.6.1"},
      {rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.6.1"},
      {webmachine,"webmachine","1.10.3"},
      {amqp_client,"RabbitMQ AMQP Client","3.6.1"},
      {mochiweb,"MochiMedia Web Server","2.13.0"},
      {syntax_tools,"Syntax tools","1.7"},
      {ssl,"Erlang/OTP SSL application","7.3"},
      {public_key,"Public key infrastructure","1.1.1"},
      {asn1,"The Erlang ASN1 compiler version 4.0.2","4.0.2"},
      {crypto,"CRYPTO","3.6.3"},
      {compiler,"ERTS  CXC 138 10","6.0.3"},
      {inets,"INETS  CXC 138 49","6.2"},
      {rabbit,"RabbitMQ","3.6.1"},
      {mnesia,"MNESIA  CXC 138 12","4.13.3"},
      {rabbit_common,[],"3.6.1"},
      {xmerl,"XML parser","1.3.10"},
      {os_mon,"CPO  CXC 138 46","2.4"},
      {ranch,"Socket acceptor pool for TCP protocols.","1.2.1"},
      {sasl,"SASL  CXC 138 11","2.7"},
      {stdlib,"ERTS  CXC 138 10","2.8"},
      {kernel,"ERTS  CXC 138 10","4.2"}]},
 {os,{unix,linux}},
 {erlang_version,
     "Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:8:8] [async-threads:64] [hipe] [kernel-poll:true]
"}, {memory, [{total,64111264}, {connection_readers,0}, {connection_writers,0}, {connection_channels,0}, {connection_other,2808}, {queue_procs,2808}, {queue_slave_procs,0}, {plugins,367288}, {other_proc,19041296}, {mnesia,61720}, {mgmt_db,158696}, {msg_index,47120}, {other_ets,1372440}, {binary,128216}, {code,27368230}, {atom,992409}, {other_system,14568233}]}, {alarms,[]}, {listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]}, {vm_memory_high_watermark,0.4}, {vm_memory_limit,6556241100}, {disk_free_limit,50000000}, {disk_free,37431123968}, {file_descriptors, [{total_limit,65435}, {total_used,2}, {sockets_limit,58889}, {sockets_used,0}]}, {processes,[{limit,1048576},{used,204}]}, {run_queue,0}, {uptime,412681}, {kernel,{net_ticktime,60}}]

サービスを終了するには、次の手順に従います.
[root@iZ25e3bt9a6Z sbin]# ./rabbitmqctl stop
Stopping and halting node rabbit@iZ25e3bt9a6Z ...

4.Webプラグインの構成
まずディレクトリを作成します.そうしないと、エラーが発生する可能性があります.
mkdir /etc/rabbitmq 

次にプラグインを有効にします.
./rabbitmq-plugins enable rabbitmq_management 

linuxポート15672のWeb管理の構成  5672 AMQPポート
     /opt/rabbitmq/etc/rabbitmq 下にrabbitmq.config.exampleファイルをコピーします.  rabbitmq.config  ,rabbitmq.configで構成可能       {tcp_listeners, [5672]},
そしてアクセスhttp://localhost:15672または、仮想マシンip:15672でもよい 
デフォルトユーザーguestパスワードguest
  
5.リモートアクセス構成
デフォルトのWebページではアクセスが許可されていません.ユーザーを追加して権限を変更する必要があります.コードは次のとおりです.
ユーザーの追加:rabbitmqctl add_user hxb hxb
権限の追加:rabbitmqctl set_permissions -p "/" hxb ".*"".*"".*"
      ユーザーロールrabbitmqctlの変更 set_user_tags hxb administrator
その後、リモートアクセスが可能になり、ユーザー権限などの情報を直接構成できます.
  
6.rabbitmq共通コマンド
      ./rabbitmqctl status                           ステータスの表示
     ./rabbitmq-server -detached  サーバの起動
     ./rabbitmqctl stop                   サービスクローズ
      ./rabbitmq-server &               サーバー起動とWebプラグイン起動
    ./rabbitmq-plugins enable rabbitmq_management    Webプラグインの起動
  add_user           ログインユーザー、パスワードの追加
  delete_user    
  change_password
  list_users
  add_vhost   
  delete_vhost
  list_vhostsset_permissions   [-p ]
  clear_permissions [-p ]
  list_permissions  [-p ]
  list_user_permissions
  list_queues    [-p ] [ ...]
  list_exchanges [-p ] [ ...]
  list_bindings  [-p ]
  list_connections [ ...]
7クラスタの構成
(1)Erlang Cookieファイル:$home/.erlang.cookie  見えなかったらどうぞ 
[root@n1 ~]# ll -a

いずれかのクッキーファイルまたはコンテンツをクラスタの他のマシンに置き換えます.最後に、ファイル権限が400であることを確認します.  3台のマシンのクッキーが同じであることを保証します
[root@n1 ~]# cat /var/lib/rabbitmq/.erlang.cookie 
YZCUPNLBNOMPTDCUALZC

rabbitmqを閉じてクッキーを他のマシンにコピー...
[root@n3~]# rabbitmqctl stop
[root@n3~]# echo YZCUPNLBNOMPTDCUALZC > /var/lib/rabbitmq/.erlang.cookie 

[root@n2~]# rabbitmqctl stop
[root@n2~]# echo YZCUPNLBNOMPTDCUALZC > /var/lib/rabbitmq/.erlang.cookie 

クッキー同期完了後に起動  detachedで起動
(2) 各ノードのhostsファイルを構成し、ノード間のホスト名が相互に解析できるようにします.
         192.168.1.10   node1
         192.168.1.11   node2
         192.168.1.12   node3
(3)rabbitmqクラスタの自動構成:
    rabbitmqのデフォルト構成スクリプトは  インストールディレクトリの下のたとえば私のインストールディレクトリは/opt/rabbitmqです ,スクリプトパスは/opt/rabbitmq/etc/rabbitmq/rabbitmq.confです
         このファイルが存在しない場合は、ディレクトリの下にあるrabbitmq.config.exampleファイルをコピーし、名前を変更します.
    追加
 
          [
           ...
           {rabbit, [
            ...
           {cluster_nodes, ['rabbit@node1', 'rabbit@node2', 'rabbit@node3']},
            ...
            ]},
            ...
            ].
     各rabbitmqノードをそれぞれ起動
            rabbitmq -detached
     rabbitmqは自動的にクラスタを構成して、ページで実験して使いやすいかどうか、使いにくいなら
手動で追加すると、
Node 2ノードをRAMタイプノードとしてnode 1に追加
[root@n2 ~]#rabbitmqctl stop_app
[root@n2 ~]#rabbitmqctl reset
[root@n2 ~]#rabbitmqctl join_cluster rabbit@n1 --ram
[root@n2 ~]#rabbitmqctl start_app

node 3ノードをdiscタイプノードとしてnode 1に追加
[root@n3 ~]#rabbitmq stop_app  [root@n3 ~]#rabbitmqctl reset  [root@n3 ~]#rabbitmqctl join_cluster rabbit@n1  [root@n3 ~]#rabbitmqctl start_app  (rabbitmqクラスタノードにはdiscとramの2種類があり、1つのクラスタには少なくとも1つのdiscタイプのノードが必要であり、デフォルトでdiscに追加することを指定しない)
注意事項:
1)   各ノードのerlang Cookieは同じで、起動サーバに-setcookieパラメータを追加して同じパラメータを設定することができます.     ホームディレクトリの下に同じ.erlang.cookieファイルを設定することもできます.
2)   ノード間で相互に解析できるはずです./etc/hostsファイルを変更することで実現できます.