wget http://ftp.gnu.org/gnu/ncurses/ncurses-6.1.tar.gz tar zxf ncurses-6.1.tar.gz cd ncurses-6.1 ./configure make make install
wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2p.tar.gz mkdir /usr/local/openssl tar zxf openssl-1.0.2p.tar.gz cd openssl-1.0.2p/ ./config --prefix=/usr/local/openssl #新版本openssl默認編譯出來的libcrypto.a是沒有加-fPIC參數的,當重定位被引用的代碼段數據對象時出錯。 #修改openssl源碼的Makefile #參考:https://blog.csdn.net/erlib/article/details/20995947 #在CFLAG= 添加 -fPIC make sudo make install
#下載erlang:http://www.erlang.org/downloads/19.3 #安裝指南:http://erlang.org/doc/installation_guide/INSTALL.html wget http://erlang.org/download/otp_src_19.3.tar.gz tar zxf otp_src_19.3.tar.gz cd otp_src_19.3/ sudo mkdir /usr/local/erlang ./configure --prefix=/usr/local/erlang/ --with-ssl=/usr/local/openssl make sudo make install
# rabbitmq下載地址:http://www.rabbitmq.com/releases/rabbitmq-server/ # 下載須要安裝的版本: wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.12/rabbitmq-server-generic-unix-3.6.12.tar.xz tar xJf rabbitmq-server-generic-unix-3.6.12.tar.xz sudo mv rabbitmq_server-3.6.12 /usr/local/ sudo ln -s /usr/local/rabbitmq_server-3.6.12 /usr/local/rabbitmq
配置環境變量:html
$ cat /etc/profile export ERLANG_HOME=/usr/local/erlang export PATH=$ERLANG_HOME/bin:$PATH export RABBITMQ_HOME=/usr/local/rabbitmq export PATH=$RABBITMQ_HOME/sbin:$PATH
# 查看現有的虛擬主機 $ rabbitmqctl list_vhosts # 查看是否使用了trace功能 $ rabbitmqctl list_vhosts name tracing
$ rabbitmqctl add_vhost myvhost
$ rabbitmqctl delete_vhost myvhost
$ rabbitmqctl list_permissions -p myvhost
rabbitmqctl set_permissions -p vhost root ".*" ".*" ".*"
格式:rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read} vhost:授予用戶訪問權限的vhost的名稱 user:能夠訪問指定vhost的用戶名 conf:用於匹配用戶在哪些資源是擁有可配置權限的正則表達式(隊列和交換機的建立及刪除之類) write:用於匹配用戶在哪些資源是擁有可寫權限的正則表達式(發佈消息) read:用於匹配用戶在哪些資源是擁有可讀權限的正則表達式(讀取消息和清空隊列)
$ rabbitmqctl list_user_permissions root
$ rabbitmqctl add_user root root
$ rabbitmqctl change_password root 123456
$ rabbitmqctl clear_password root
$ rabbitmqctl list_users
$ rabbitmqctl set_user_tags root administrator 用戶角色類型: none: 無任何角色,新建立的用戶角色默認爲none management:能夠訪問web管理界面 policymaker:包含management的全部權限,並可能夠管理策略和參數 monitoring:包含management的全部權限,能夠看到全部鏈接、信道及節點相關信息 administrator: 最高權限
$ rabbitmqctl authenticate_user root 123456
$ rabbitmqctl delete_user root
$ rabbitmq-plugins list
$ rabbitmq-plugins enable rabbitmq_management
$ rabbitmqctl add_user monitor monitor $ rabbitmqctl set_user_tags monitor administrator
登錄管理界面node
http://serverip:15672web
$ rabbitmq-plugins disable rabbitmq_management
$ rabbitmq-server -detached
# 中止運行Rabbitmq Erlang虛擬機和Rabbitmq服務應用 $ rabbitmqctl stop # 中止運行Rabbitmq Erlang虛擬機和Rabbitmq服務應用(阻塞直達Erlang虛擬機進程退出) $ rabbitmqctl shutdown
$ rabbitmqctl stop_app
$ rabbitmqctl start_app
$ rabbitmqctl reset
格式:rabbitmqctl list_queues [-p vhost] [queueinfoitem ...]正則表達式
$ rabbitmqctl list_queues -p myvhost
格式:rabbitmqctl list_exchange [-p vhost] [exchangeinfoitem ...]ubuntu
$ rabbitmqctl list_exchanges -p myvhost name type durable auto_delete internal arguments policy
格式:rabbitmqctl list bindings [-p vhost] [bindinginfoitem ...]安全
$ rabbitmqctl list_bindings -p myvhost -q
格式:rabbitmqctllist_connections [connectioninfoitem ...]bash
$ rabbitmqctl list_connections
格式: rabbitmqctl list_channels [channelinfoitem ...]cookie
$ rabbitmqctl list_channels
格式:rabbitmqctl list_consumers [-p vhost]app
$ rabbitmqctl list_consumers -p myvhost
# Broker 狀態 $ rabbitmqctl status # 節點健康檢測 $ rabbitmqctl node_health_check # 環境變量名稱和值 $ rabbitmqctl environment # 生成服務狀態報告 $ rabbitmqctl report > report.txt
保持默認配置,基本不須要更改: 服務端口的更改。
$ cat etc/rabbitmq/rabbitmq.config [ { rabbit,[ {tcp_listeners,[ {"172.16.10.101",5673} ] } ] } ].
Rabbitmq集羣中的全部節點都會備份全部元數據信息,包括:運維
消息不會備份:只會在單節點建立隊列幷包含完整的隊列信息(元數據、狀態和內容 )
cat /etc/hosts 172.16.10.101 node1 172.16.10.102 node2
ubuntu@node1:~$ scp -r /usr/local/erlang ubuntu@node2:~/ ubuntu@node1:~$ scp -r /usr/local/rabbitmq ubuntu@node2:~/ ubuntu@node2:~$ sudo mv erlang /usr/local/ ubuntu@node2:~$ sudo mv rabbitmq /usr/local/
$ cat /etc/profile export ERLANG_HOME=/usr/local/erlang export PATH=$ERLANG_HOME/bin:$PATH export RABBITMQ_HOME=/usr/local/rabbitmq export PATH=$RABBITMQ_HOME/sbin:$PATH
編譯安裝的cookie文件在 $HOME/.erlang.cookie
ubuntu@node1:~$ scp $HOME/.erlang.cookie ubuntu@node2:~/
ubuntu@node2:~$ rabbitmq-server -detached ubuntu@node2:~$ rabbitmqctl stop_app Stopping rabbit application on node rabbit@node2 ubuntu@node2:~$ rabbitmqctl reset Resetting node rabbit@node2 ubuntu@node2:~$ rabbitmqctl join_cluster rabbit@node1 Clustering node rabbit@node2 with rabbit@node1 ubuntu@node2:~$ rabbitmqctl start_app Starting node rabbit@node2
$ rabbitmqctl cluster_status
# 須要現中止rabbitmq應用:rabbitmqctl stop_app $ rabbitmqctl change_cluster_node_type disc
$ rabbitmqctl forget_cluster_node rabbit@node2
$ rabbitmqctl force_boot
rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all","ha-sync-mode":"automatic"}'