保证三台服务器时间同步
#ntpdate ntp.api.bz
2、配置好主机名(3台配置一样,主机名必须和host文件对应)
#vim /etc/hosts
10.200.3.112 rabbitMQ-001
10.200.3.113 rabbitMQ-002
10.200.3.114 rabbitMQ-003
3、安装依赖包
#yum -y install gcc gcc-c++ glibc glibc-devel make git kernel-headers ncurses-devel openssl-devel autoconf automake unzip zip bzip2 gzip xmlto xsltproc libxslt nc
4、安装erlang(rabbitMQ是机遇erlang的,所以需要配置erlang环境)
下载地址:http://www.erlang.org/download.html
wget http://www.erlang.org/download/otp_src_17.3.tar.gz
#tar -zxvf otp_src_17.3.tar.gz
#cd otp_src_17.3
#./configure --prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac
#make
#make install
#echo "export PATH=/usr/local/erlang/bin:\$PATH" >> /etc/profile.d/app.sh
#source /etc/profile
5、安装Python
#wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
#tar zxvf Python-2.7.6.tgz
#cd Python-2.7.6
#./configure --prefix=/usr/local/python276 && make && make install
#echo "export PATH=/usr/local/python276/bin:\$PATH" >> /etc/profile.d/app.sh
#source /etc/profile
#python -V 查看版本
6、安装rabbitmq-server:
下载地址:http://www.rabbitmq.com/download.html
#wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.0/rabbitmq-server-3.4.0.tar.gz
#cd /usr/local/src
#tar zxvf rabbitmq-server-3.4.0.tar.gz
#cd rabbitmq-server-3.4.0
#make
#make install TARGET_DIR=/usr/local/rabbitmq SBIN_DIR=/usr/local/rabbitmq/sbin MAN_DIR=/usr/local/rabbitmq/man DOC_INSTALL_DIR=/usr/local/rabbitmq/doc
#echo "export PATH=/usr/local/rabbitmq/sbin:\$PATH" >> /etc/profile.d/app.sh
#source /etc/profile
7、配置 web的监控页面系统
#mkdir /etc/rabbitmq
#/usr/local/rabbitmq/sbin/rabbitmq-plugins enable rabbitmq_management
#/usr/local/rabbitmq/sbin/rabbitmqctl change_password guest guest
8、配置文件 (rabbitmq默认配置可以使用,配置文件默认是没有的,需要自己创建,各服务器按实际情况更改配置文件)
vim /etc/rabbitmq/rabbitmq-env.conf
vim /etc/rabbitmq/rabbitmq.config
7、 配置erlang
Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节 点是通过一个magic cookie来实现的,这个cookie存放在$HOME/.Erlang.cookie 中,文件是400的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信。
将其中一台节点上的.erlang.cookie值复制下来保存到其他节点上。或者使用scp的方法也可,但是要注意文件的权限和属主属组。
$ cat .erlang.cookie
IYZNFNJIUWABJUELIUFE
将值保存到其他节点上: 先更改文件权限,给予其可写权限:
$chmod 700 .erlang.cookie
$ echo -n " IYZNFNJIUWABJUELIUFE" >$HOME/.erlang.cookie
$chmod 400 .erlang.cookie
直接把.erlang.cookie这个文件scp到其它节点也可以。
9、启动结点:
主节点的操作:
# rabbitmq-server -detached
# rabbitmqctl status
node节点的操作:
# rabbitmq-server -detached
# rabbitmqctl stop_app
# rabbitmqctl reset
# rabbitmqctl join_cluster rabbit@rabbitMQ-001 --ram #node服务器命令,主服务器不需要此命令。(在两个节点上执行,将节点加入集群)
# rabbitmqctl start_app
# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}' #选择其中一个结点执行node服务器命令,主服务器不需要此命令。(将所有队列设置为镜像队列,即队列被复制到各个节点,各个节点状态保持一致)
10、另外找两台机器做成高可用的haproxy,并配置,以下为示例部分:
#vim haproxy.cfg
常用命令:
修改节点类型
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type disc
rabbitmqctl start_app
查看集群状态
rabbitmqctl cluster_status查看集群状态
登陆web界面:
http://10.200.3.112:15672/
#ntpdate ntp.api.bz
2、配置好主机名(3台配置一样,主机名必须和host文件对应)
#vim /etc/hosts
10.200.3.112 rabbitMQ-001
10.200.3.113 rabbitMQ-002
10.200.3.114 rabbitMQ-003
3、安装依赖包
#yum -y install gcc gcc-c++ glibc glibc-devel make git kernel-headers ncurses-devel openssl-devel autoconf automake unzip zip bzip2 gzip xmlto xsltproc libxslt nc
4、安装erlang(rabbitMQ是机遇erlang的,所以需要配置erlang环境)
下载地址:http://www.erlang.org/download.html
wget http://www.erlang.org/download/otp_src_17.3.tar.gz
#tar -zxvf otp_src_17.3.tar.gz
#cd otp_src_17.3
#./configure --prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac
#make
#make install
#echo "export PATH=/usr/local/erlang/bin:\$PATH" >> /etc/profile.d/app.sh
#source /etc/profile
5、安装Python
#wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
#tar zxvf Python-2.7.6.tgz
#cd Python-2.7.6
#./configure --prefix=/usr/local/python276 && make && make install
#echo "export PATH=/usr/local/python276/bin:\$PATH" >> /etc/profile.d/app.sh
#source /etc/profile
#python -V 查看版本
6、安装rabbitmq-server:
下载地址:http://www.rabbitmq.com/download.html
#wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.0/rabbitmq-server-3.4.0.tar.gz
#cd /usr/local/src
#tar zxvf rabbitmq-server-3.4.0.tar.gz
#cd rabbitmq-server-3.4.0
#make
#make install TARGET_DIR=/usr/local/rabbitmq SBIN_DIR=/usr/local/rabbitmq/sbin MAN_DIR=/usr/local/rabbitmq/man DOC_INSTALL_DIR=/usr/local/rabbitmq/doc
#echo "export PATH=/usr/local/rabbitmq/sbin:\$PATH" >> /etc/profile.d/app.sh
#source /etc/profile
7、配置 web的监控页面系统
#mkdir /etc/rabbitmq
#/usr/local/rabbitmq/sbin/rabbitmq-plugins enable rabbitmq_management
#/usr/local/rabbitmq/sbin/rabbitmqctl change_password guest guest
8、配置文件 (rabbitmq默认配置可以使用,配置文件默认是没有的,需要自己创建,各服务器按实际情况更改配置文件)
vim /etc/rabbitmq/rabbitmq-env.conf
- RABBITMQ_NODENAME=rabbit@rabbitMQ-001
- RABBITMQ_NODE_IP_ADDRESS=10.200.3.112
- RABBITMQ_NODE_PORT=5672
- RABBITMQ_LOG_BASE=/usr/local/rabbitmq/log
- RABBITMQ_MNESIA_BASE=/usr/local/rabbitmq/mnesia
- RABBITMQ_PLUGINS_DIR=/usr/local/rabbitmq/plugins
vim /etc/rabbitmq/rabbitmq.config
- [{rabbit,[
- {auth_backends,[rabbit_auth_backend_internal]},
- {auth_mechanisms,['PLAIN','AMQPLAIN']},
- {backing_queue_module,rabbit_variable_queue},
- {cluster_nodes,[]},
- {collect_statistics,fine},
- {collect_statistics_interval,5000},
- {default_permissions,[<<".*">>,<<".*">>,<<".*">>]},
- {default_user,<<"guest">>},
- {default_user_tags,[administrator]},
- {default_vhost,<<"/">>},
- {delegate_count,16},
- {error_logger,{file,"/usr/local/rabbitmq/log/rabbitmq/rabbit@rabbitMQ-001.log"}},
- {frame_max,131072},
- {hipe_compile,false},
- {included_applications,[]},
- {msg_store_file_size_limit,16777216},
- {msg_store_index_module,rabbit_msg_store_ets_index},
- {queue_index_max_journal_entries,262144},
- {sasl_error_logger,{file,"/usr/local/rabbitmq/log/rabbitmq/rabbit@rabbitMQ-001-sasl.log"}},
- {server_properties,[]},
- {ssl_listeners,[]},
- {ssl_options,[]},
- {
- tcp_listen_options,
- [
- binary,
- {packet,raw},
- {reuseaddr,true},
- {backlog,128},
- {nodelay,true},
- {exit_on_close,false}
- ]
- },
- {tcp_listeners,[5672]},
- {trace_vhosts,[<<"/">>]},
- {vm_memory_high_watermark,0.4},
- {loopback_users,[]}
- ]}].
7、 配置erlang
Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节 点是通过一个magic cookie来实现的,这个cookie存放在$HOME/.Erlang.cookie 中,文件是400的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信。
将其中一台节点上的.erlang.cookie值复制下来保存到其他节点上。或者使用scp的方法也可,但是要注意文件的权限和属主属组。
$ cat .erlang.cookie
IYZNFNJIUWABJUELIUFE
将值保存到其他节点上: 先更改文件权限,给予其可写权限:
$chmod 700 .erlang.cookie
$ echo -n " IYZNFNJIUWABJUELIUFE" >$HOME/.erlang.cookie
$chmod 400 .erlang.cookie
直接把.erlang.cookie这个文件scp到其它节点也可以。
9、启动结点:
主节点的操作:
# rabbitmq-server -detached
# rabbitmqctl status
node节点的操作:
# rabbitmq-server -detached
# rabbitmqctl stop_app
# rabbitmqctl reset
# rabbitmqctl join_cluster rabbit@rabbitMQ-001 --ram #node服务器命令,主服务器不需要此命令。(在两个节点上执行,将节点加入集群)
# rabbitmqctl start_app
# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}' #选择其中一个结点执行node服务器命令,主服务器不需要此命令。(将所有队列设置为镜像队列,即队列被复制到各个节点,各个节点状态保持一致)
10、另外找两台机器做成高可用的haproxy,并配置,以下为示例部分:
#vim haproxy.cfg
- global
- log 127.0.0.1 local0
- log 127.0.0.1 local1 notice
- maxconn 4096
- user haproxy
- group haproxy
- daemon
- defaults
- log global
- #使用tcp监听模式
- mode tcp
- option tcplog
- option dontlognull
- retries 3
- option redispatch
- maxconn 2000
- contimeout 5000
- clitimeout 50000
- srvtimeout 50000
- listen admin_stat
- #haproxy的web管理端口 8888,自行设置
- bind 0.0.0.0:8888
- mode http
- stats refresh 30s
- #haproxy web管理url,自行设置
- stats uri /haproxy_stats
- stats realm Haproxy\ Statistics
- #haproxy web管理用户名密码,自行设置
- stats auth admin:admin
- stats hide-version
- listen rabbitmq 0.0.0.0:5670
- #监听5670端口,并转发给三个节点的5672端口,采用轮询策略
- mode tcp
- balance roundrobin
- server rabbitMQ-001 10.200.3.112:5672 check inter 2000 rise 2 fall 3
- server rabbitMQ-002 10.200.3.113:5672 check inter 2000 rise 2 fall 3
- server rabbitMQ-003 10.200.3.114:5672 check inter 2000 rise 2 fall 3
常用命令:
修改节点类型
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type disc
rabbitmqctl start_app
查看集群状态
rabbitmqctl cluster_status查看集群状态
登陆web界面:
http://10.200.3.112:15672/