1、操作系统基本配置
-配置yum
mkdir /media/cdrom
mount /dev/cdrom /media/cdrom
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
cp /etc/yum.repos.d/bak/CentOS-Media.repo /etc/yum.repos.d/
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf java-1.8.0-openjdk-devel git
--wxWidgets-devel
--关闭防火墙
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service
iptables -L -vn
--关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
getenforce
--配置ntp
sed -i s@centos.pool.ntp@cn.pool.ntp@g /etc/chrony.conf
timedatectl set-timezone Asia/Shanghai
--timedatectl set-local-rtc 0
systemctl enable chronyd
systemctl restart chronyd
systemctl status chronyd
#校准时间
chronyc -a makestep
chronyc tracking
--sysctl
cat << EOF >>/etc/sysctl.conf
vm.swappiness =5
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.core.somaxconn = 32768
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 0
EOF
sysctl -p
--limit
cat << EOF >>/etc/security/limits.conf
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
* soft stack 65535
* hard stack 65535
EOF
--ssh配置
sed -i 's@GSSAPIAuthentication yes@GSSAPIAuthentication no@g' /etc/ssh/sshd_config
sed -i 's@#UseDNS yes@UseDNS no@g' /etc/ssh/sshd_config
sed -i '/StrictHostKeyChecking/ {s/.*/StrictHostKeyChecking no/}' /etc/ssh/ssh_config
systemctl reload sshd
--配置主机名、hosts
hostnamectl set-hostname rabbitmq1
hostnamectl set-hostname rabbitmq2
hostnamectl set-hostname rabbitmq3
cat << EOF >>/etc/hosts
192.168.100.61 rabbitmq1
192.168.100.62 rabbitmq2
192.168.100.63 rabbitmq3
EOF
--reboot 主机
2、安装erlang
tar xzvf otp_src_23.2.tar.gz -C /usr/local/
cd /usr/local/otp_src_23.2
./configure --prefix=/usr/local/erlang23.2
make -j 4
make install
ln -s /usr/local/erlang23.2 /usr/local/erlang
echo 'export PATH=$PATH:/usr/local/erlang/bin' >>/etc/profile
source /etc/profile
echo 'export PATH=$PATH:/usr/local/erlang/bin' >>~/.bashrc
source ~/.bashrc
--验证erl 安装成功
[root@rabbitmq1 ~]# erl
Erlang/OTP 23 [erts-11.1.4] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]
Eshell V11.1.4 (abort with ^G)
1> halt().
[root@rabbitmq1 ~]# erl -version
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 11.1.43、安装rabbitmq3.8.14
tar xJvf rabbitmq-server-generic-unix-3.8.14.tar.xz -C /usr/local/
ln -s /usr/local/rabbitmq_server-3.8.14 /usr/local/rabbitmq
echo 'export PATH=$PATH:/usr/local/rabbitmq/sbin' >>/etc/profile
source /etc/profile
echo 'export PATH=$PATH:/usr/local/rabbitmq/sbin' >>~/.bashrc
source ~/.bashrc
--后台启动rabbitmq,三台主机都启动
rabbitmq-server -detached
--rabbitmqctl status
--rabbitmqctl start_app
--rabbitmq-plugins enable rabbitmq_management
--关闭rabbitmq2 rabbitmq3 主机上的rabbitmq 服务
rabbitmqctl shutdown 4、配置rabbitmq集群
4.1 查看 .erlang.cookie 配置信息,并复制到另外两个节点,三个节点的.erlang.cookie 信息要一致
scp .erlang.cookie rabbitmq2:/root/
scp .erlang.cookie rabbitmq3:/root/4.2 最后在rabbitmq2 rabbitmq3 执行如下命令
rabbitmq-server -detached
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq1 --ram
rabbitmqctl start_app
--rabbit@rabbitmq1 node名字,可以在节点一使用 rabbitmqctl status 命令查看
[root@rabbitmq1 ~]# rabbitmqctl status
Status of node rabbit@rabbitmq1 ...
Runtime
4.3 修改集群名(任意节点都可以)
rabbitmqctl set_cluster_name rabbit@rabbitmq14.4 查看集群状态
[root@rabbitmq1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@rabbitmq1 ...
Basics
Cluster name: rabbit@rabbitmq1
Disk Nodes
rabbit@rabbitmq1
RAM Nodes
rabbit@rabbitmq2
rabbit@rabbitmq3
Running Nodes
rabbit@rabbitmq1
rabbit@rabbitmq2
rabbit@rabbitmq3
Versions
rabbit@rabbitmq1: RabbitMQ 3.8.14 on Erlang 23.2
rabbit@rabbitmq2: RabbitMQ 3.8.14 on Erlang 23.2
rabbit@rabbitmq3: RabbitMQ 3.8.14 on Erlang 23.2
Maintenance status
Node: rabbit@rabbitmq1, status: not under maintenance
Node: rabbit@rabbitmq2, status: not under maintenance
Node: rabbit@rabbitmq3, status: not under maintenance
Alarms
(none)
Network Partitions
(none)
Listeners
Node: rabbit@rabbitmq1, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@rabbitmq1, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: rabbit@rabbitmq2, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@rabbitmq2, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: rabbit@rabbitmq3, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@rabbitmq3, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Feature flags
Flag: implicit_default_bindings, state: enabled
Flag: maintenance_mode_status, state: enabled
Flag: quorum_queue, state: enabled
Flag: user_limits, state: enabled
Flag: virtual_host_metadata, state: enabled4.5 启用镜像队列
[root@rabbitmq1 ~]# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
Setting policy "ha-all" for pattern "^" to "{"ha-mode":"all","ha-sync-mode":"automatic"}" with priority "0" for vhost "/" ...
--查看当前策略
[root@rabbitmq1 ~]# rabbitmqctl list_policies
Listing policies for vhost "/" ...
vhost name pattern apply-to definition priority
/ ha-all ^ all {"ha-mode":"all","ha-sync-mode":"automatic"} 0
--删除策略
rabbitmqctl clear_policy ha-all
# 策略说明
格式:rabbitmqctl set_policy [-p <vhost>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern> <definition>
-p Vhost:可选参数,针对指定vhost下的queue进行设置
--priority:可选参数,policy的优先级
--apply-to:可选参数,策略适用对象类型,可选queues,exchanges,all
name:policy策略的名称
pattern:queue的匹配模式(正则表达式),^表示匹配所有队列
definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode
1、ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes
all:表示在集群中所有的节点上进行镜像
exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定
2、ha-params:ha-mode模式需要用到的参数
3、ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual,默认manual
其它示例:新增一个名为myPolicy的策略,适用队列与交换机,优先级为1,同步 virtual host 为"/" 下名称前缀为"mirroring"的队列,并且自动保存到两个节点上,队列中消息的同步方式为automatic(自动的)
rabbitmqctl set_policy -p / --priority 1 --apply-to all myPolicy "^mirroring" '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'4.6 插件查看
[root@rabbitmq1 ~]# rabbitmq-plugins list
Listing plugins with pattern ".*" ...
Configured: E = explicitly enabled; e = implicitly enabled
| Status: * = running on rabbit@rabbitmq1
|/
[ ] rabbitmq_amqp1_0 3.8.14
[ ] rabbitmq_auth_backend_cache 3.8.14
[ ] rabbitmq_auth_backend_http 3.8.14
[ ] rabbitmq_auth_backend_ldap 3.8.14
[ ] rabbitmq_auth_backend_oauth2 3.8.14
[ ] rabbitmq_auth_mechanism_ssl 3.8.14
[ ] rabbitmq_consistent_hash_exchange 3.8.14
[ ] rabbitmq_event_exchange 3.8.14
[ ] rabbitmq_federation 3.8.14
[ ] rabbitmq_federation_management 3.8.14
[ ] rabbitmq_jms_topic_exchange 3.8.14
[ ] rabbitmq_management 3.8.14
[ ] rabbitmq_management_agent 3.8.14
[ ] rabbitmq_mqtt 3.8.14
[ ] rabbitmq_peer_discovery_aws 3.8.14
[ ] rabbitmq_peer_discovery_common 3.8.14
[ ] rabbitmq_peer_discovery_consul 3.8.14
[ ] rabbitmq_peer_discovery_etcd 3.8.14
[ ] rabbitmq_peer_discovery_k8s 3.8.14
[ ] rabbitmq_prometheus 3.8.14
[ ] rabbitmq_random_exchange 3.8.14
[ ] rabbitmq_recent_history_exchange 3.8.14
[ ] rabbitmq_sharding 3.8.14
[ ] rabbitmq_shovel 3.8.14
[ ] rabbitmq_shovel_management 3.8.14
[ ] rabbitmq_stomp 3.8.14
[ ] rabbitmq_top 3.8.14
[ ] rabbitmq_tracing 3.8.14
[ ] rabbitmq_trust_store 3.8.14
[ ] rabbitmq_web_dispatch 3.8.14
[ ] rabbitmq_web_mqtt 3.8.14
[ ] rabbitmq_web_mqtt_examples 3.8.14
[ ] rabbitmq_web_stomp 3.8.14
[ ] rabbitmq_web_stomp_examples 3.8.14
--启用插件
rabbitmq-plugins enable rabbitmq_management
[root@rabbitmq1 ~]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@rabbitmq1:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@rabbitmq1...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
started 3 plugins.
[root@rabbitmq1 ~]# rabbitmq-plugins list
Listing plugins with pattern ".*" ...
Configured: E = explicitly enabled; e = implicitly enabled
| Status: * = running on rabbit@rabbitmq1
|/
[ ] rabbitmq_amqp1_0 3.8.14
[ ] rabbitmq_auth_backend_cache 3.8.14
[ ] rabbitmq_auth_backend_http 3.8.14
[ ] rabbitmq_auth_backend_ldap 3.8.14
[ ] rabbitmq_auth_backend_oauth2 3.8.14
[ ] rabbitmq_auth_mechanism_ssl 3.8.14
[ ] rabbitmq_consistent_hash_exchange 3.8.14
[ ] rabbitmq_event_exchange 3.8.14
[ ] rabbitmq_federation 3.8.14
[ ] rabbitmq_federation_management 3.8.14
[ ] rabbitmq_jms_topic_exchange 3.8.14
[E*] rabbitmq_management 3.8.14
[e*] rabbitmq_management_agent 3.8.14
[ ] rabbitmq_mqtt 3.8.14
[ ] rabbitmq_peer_discovery_aws 3.8.14
[ ] rabbitmq_peer_discovery_common 3.8.14
[ ] rabbitmq_peer_discovery_consul 3.8.14
[ ] rabbitmq_peer_discovery_etcd 3.8.14
[ ] rabbitmq_peer_discovery_k8s 3.8.14
[ ] rabbitmq_prometheus 3.8.14
[ ] rabbitmq_random_exchange 3.8.14
[ ] rabbitmq_recent_history_exchange 3.8.14
[ ] rabbitmq_sharding 3.8.14
[ ] rabbitmq_shovel 3.8.14
[ ] rabbitmq_shovel_management 3.8.14
[ ] rabbitmq_stomp 3.8.14
[ ] rabbitmq_top 3.8.14
[ ] rabbitmq_tracing 3.8.14
[ ] rabbitmq_trust_store 3.8.14
[e*] rabbitmq_web_dispatch 3.8.14
[ ] rabbitmq_web_mqtt 3.8.14
[ ] rabbitmq_web_mqtt_examples 3.8.14
[ ] rabbitmq_web_stomp 3.8.14
[ ] rabbitmq_web_stomp_examples 3.8.144.7 添加账号
rabbitmqctl add_user admin 123456
abbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'
[root@rabbitmq1 ~]# rabbitmqctl add_user admin 123456
Adding user "admin" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
[root@rabbitmq1 ~]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
[root@rabbitmq1 ~]# rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'
Setting permissions for user "admin" in vhost "/" ...
4.8 web登录
http://192.168.100.61:15672/ admin/123456 4.9 另外两个节点也开启web插件
rabbitmq-plugins enable rabbitmq_management
4.10 将某个节点退出集群
# 在退出的节点上执行
rabbitmqctl stop_app
# 在主节点上执行(如去除rabbit@rabbitmq3),offline参数代表允许离线删除
rabbitmqctl forget_cluster_node rabbit@rabbitmq3 [--offline]「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




