Centos7 安装RabbitMq3.8.1 并解决 job for rabbitmq-server.service failed because the control process exite
1.RabbitMq 与 erlang版本对照参考官网: https://www.rabbitmq.com/which-erlang.html2. 下载erlang: https://github.com/rabbitmq/erlang-rpm/releasesmybbitmq-server:https://github.com/rabbitmq/rabbitmq-serve...
1. RabbitMq 与 erlang版本对照
参考官网: https://www.rabbitmq.com/which-erlang.html
2. 下载
erlang: https://github.com/rabbitmq/erlang-rpm/releases
rabbitmq-server: https://github.com/rabbitmq/rabbitmq-server/releases?after=v3.7.21
或者:
rabbitmq-3.8.1&erlang-22.3.2
又或者:
链接:https://pan.baidu.com/s/1GRokQGa_md98FWIk12Lb1w
提取码:wpzt
3. 安装
将erlang 和 rabbitmqserver 上传到 linux 上之后
3.1 安装
首先安装依赖socat,安装erlang(rabbitmq启动)时需要这个。
yum install -y socat
–force: 强制安装
–force: 强制安装
–nodeps : 不检查依赖关系
rpm -ivh erlang-22.3.2-1.el7.x86_64.rpm --force --nodeps
rpm -ivh rabbitmq-server-3.8.1-1.el7.noarch.rpm --force --nodeps
设置开机自启:
systemctl enable rabbitmq-server
3.2 启动
systemctl start rabbitmq-server
- systemctl start rabbitmq-server 启动
- systemctl stop rabbitmq-server 关闭
- systemctl status rabbitmq-server 查看运行状态
3.3 报错!!!
Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.
查看详情
journalctl -xe
3.3 解决:
原因: rabbitmq 不是通过localhost连接主机的,而是通过主机名
方法1: 设置ip映射
1.查看自己的主机名
vi /etc/hostname
我的主机名叫做:hadoop01
2.设置 ip 映射
vi /etc/hosts
3. 重新启动即可
systemctl start rabbitmq-server
方法二: 修改rabbitmq-env.conf配置文件
官方文档: https://www.rabbitmq.com/configure.html#verify-configuration-config-file-location
1. 手动添加配置文件
但是RabbitMQ-3.8.1并没有生成配置文件,需要我们手动添加配置文件
vi /etc/rabbitmq/rabbitmq-env.conf
#添加:
RABBITMQ_NODENAME=rabbit@localhost
2.重启:
systemctl start rabbitmq-server
rabbitmq-env.conf 属性:
属性 | 描述 | 默认值 |
---|---|---|
RABBITMQ_NODE_IP_ADDRESS | 绑定的网络接口 | 默认为空字符串表示绑定本机所有的网络接口 |
RABBITMQ_NODE_PORT | 端口 | 默认为5672 |
RABBITMQ_DISTRIBUTION_BUFFER_SIZE | 节点之间通信连接的数据缓冲区大小 | 默认为128000,该值建议不要使用低于64MB |
RABBITMQ_IO_THREAD_POOL_SIZE | 运行时用于io的线程数 | 建议不要低于32,linux默认为128 ,windows默认为64 |
RABBITMQ_NODENAME | rabbitmq节点名称,集群中要注意节点名称唯一 | linux 默认节点名为 rabbit@$hostname |
RABBITMQ_CONFIG_FILE | rabbitmq 的配置文件路径,注意不要加文件的后缀(.conf) | 默认 $RABBITMQ_HOME/etc/rabbitmq/rabbitmq(二进制安装) /etc/rabbitmq/rabbitmq(rpm 安装) |
RABBITMQ_ADVANCED_CONFIG_FILE | advanced.config文件路径 | 默认 $RABBITMQ_HOME/etc/rabbitmq/advanced(二进制安装) /etc/rabbitmq/advanced(rpm 安装) |
RABBITMQ_CONF_ENV_FILE | 环境变量配置文件路径 | 默认 $RABBITMQ_HOME/etc/rabbitmq/rabbitmq-env.conf(二进制安装) /etc/rabbitmq/rabbitmq-env.conf(rpm 安装) |
RABBITMQ_SERVER_CODE_PATH | 在使用HiPE 模块时需要使用 | 默认为空 |
RABBITMQ_LOGS | 指定日志文件位置 | 默认为 $RABBITMQ_HOME/etc/var/log/rabbitmq/ |
3.3.3 注
因为 rabbitmq节点名称,在集群必须是唯一的,而节点名称默认为: rabbit@$hostname
所以不推荐将节点名称改为localhost RABBITMQ_NODENAME=rabbit@localhost
4. web 访问管理界面
4.1 开启管理界面
rabbitmq-plugins enable rabbitmq_management
4.2 登录遇到问题
web http 默认端口为 15672
注:
不要忘记关闭防火墙
4.3 解决
1. 修改配置
vi /usr/lib/rabbitmq/lib/rabbitmq_server-3.8.1/ebin/rabbit.app
将:{loopback_users, [<<”guest”>>]},
改为:{loopback_users, []},
原因:rabbitmq从3.3.0开始禁止使用guest/guest权限通过除localhost外的访问
2.重启服务
systemctl start rabbitmq-server
3.登录
用户: guest
密码: guest
5. 卸载
1. 查询
rpm -qa rpm软件包名:查询是否安装有某个软件
[root@hadoop01 rabbitmq]# rpm -qa erlang
erlang-22.3.2-1.el7.x86_64
[root@hadoop01 rabbitmq]# rpm -qa rabbitmq-server
rabbitmq-server-3.8.1-1.el7.noarch
2. 卸载
rpm -e rpm软件包名: 卸载某个软件
[root@hadoop01 rabbitmq]# rpm -e erlang-22.3.2-1.el7.x86_64
[root@hadoop01 rabbitmq]# rpm -e rabbitmq-server-3.8.1-1.el7.noarch
6. rabbitmq.conf 配置文件
默认端口:
4369
:erlang发现口
5672
:client端tcp通信端口口
15672
:后台管理界面http端口,进入管理后台时访问url如:http://localhost:15672/
25672
:server间内部通信口
如果想要修改端口:
-
创建 rabbitmq.conf
vim /etc/rabbitmq/rabbitmq.conf
-
进行属性配置
listeners.tcp.default = 0.0.0.0:56773 #web管理,默认15672 management.tcp.port = 15673
属性 | 描述 | 默认值 |
---|---|---|
listeners | 要监听 AMQP 0-9-1 and AMQP 1.0 的端口 | listeners.tcp.default = 5672 |
num_acceptors.tcp | 接受tcp连接的erlang 进程数 | num_acceptors.tcp = 10 |
handshake_timeout | AMQP 0-9-1 超时时间,也就是最大的连接时间,单位毫秒 | handshake_timeout = 10000 |
listeners.ssl | 启用TLS的协议 | 默认值为none |
num_acceptors.ssl | 接受基于TLS协议的连接的erlang 进程数 | num_acceptors.ssl = 10 |
ssl_options | TLS 配置 | ssl_options =none |
ssl_handshake_timeout | TLS 连接超时时间 单位为毫秒 | ssl_handshake_timeout = 5000 |
vm_memory_high_watermark | 触发流量控制的内存阈值,可以为相对值(0.5),或者绝对值 vm_memory_high_watermark.relative = 0.6 ,vm_memory_high_watermark.absolute = 2GB | 默认vm_memory_high_watermark.relative = 0.4 |
vm_memory_calculation_strategy | 内存使用报告策略,assigned:使用Erlang内存分配器统计信息 rss:使用操作系统RSS内存报告。这使用特定于操作系统的方法,并可能启动短期子进程。legacy:使用遗留内存报告(运行时认为将使用多少内存)。这种策略相当不准确。erlang 与legacy一样 是为了向后兼容 | vm_memory_calculation_strategy = allocated |
vm_memory_high_watermark_paging_ratio | 当内存的使用达到了50%后,队列开始将消息分页到磁盘 | vm_memory_high_watermark_paging_ratio = 0.5 |
total_memory_available_override_value | 该参数用于指定系统的可用内存总量,一般不使用,适用于在容器等一些获取内存实际值不精确的环境 | 默认未设置 |
disk_free_limit | Rabbitmq存储数据的可用空间限制,当低于该值的时候,将触发流量限制,设置可参考vm_memory_high_watermark参数 | disk_free_limit.absolute = 50MB |
log.file.level | 控制记录日志的等级,有info,error,warning,debug | log.file.level = info |
channel_max | 最大通道数,但不包含协议中使用的特殊通道号0,设置为0表示无限制,不建议使用该值,容易出现channel泄漏 | channel_max = 2047 |
channel_operation_timeout | 通道操作超时,单位为毫秒 | channel_operation_timeout = 15000 |
heartbeat | 表示连接参数协商期间服务器建议的心跳超时的值。如果两端都设置为0,则禁用心跳,不建议禁用 | heartbeat = 60 |
default_vhost | rabbitmq安装后启动创建的虚拟主机 | default_vhost = / |
default_user | 默认创建的用户名 | default_user = guest |
default_pass | 默认用户的密码 | default_pass = guest |
default_user_tags | 默认用户的标签 | default_user_tags.administrator = true |
default_permissions | 在创建默认用户是分配给默认用户的权限 | default_permissions.configure = .* default_permissions.read = .* default_permissions.write = .* |
loopback_users | 允许通过回环地址连接到rabbitmq的用户列表,如果要允许guest用户远程连接(不安全)请将该值设置为none,如果要将一个用户设置为仅localhost连接的话,配置loopback_users.username =true(username要替换成用户名) | loopback_users.guest = true(默认为只能本地连接) |
cluster_formation.classic_config.nodes | 设置集群节点cluster_formation.classic_config.nodes.1 = rabbit@hostname1 | |
cluster_formation.classic_config.nodes.2 = rabbit@hostname2 | 默认为空,未设置 | |
collect_statistics | 统计收集模式,none 不发出统计信息事件,coarse每个队列连接都发送统计一次,fine每发一条消息的统计数据 | collect_statistics = none |
collect_statistics_interval | 统计信息收集间隔,以毫秒为单位 | collect_statistics_interval = 5000 |
delegate_count | 用于集群内通信的委托进程数。在多核的服务器上我们可以增加此值 | delegate_count = 16 |
tcp_listen_options | 默认的套接字选项 | tcp_listen_options.backlog = 128 … |
hipe_compile | 设置为true以使用HiPE预编译RabbitMQ的部分,HiPE是Erlang的即时编译器,启用HiPE可以提高吞吐量两位数,但启动时会延迟几分钟。Erlang运行时必须包含HiPE支持。如果不是,启用此选项将不起作用。HiPE在某些平台上根本不可用,尤其是Windows。 | hipe_compile = false |
cluster_keepalive_interval | 节点应该多长时间向其他节点发送keepalive消息(以毫秒为单位),keepalive的消息丢失不会被视为关闭 | cluster_keepalive_interval = 10000 |
queue_index_embed_msgs_below | 消息的字节大小,低于该大小,消息将直接嵌入队列索引中 bytes | queue_index_embed_msgs_below = 4096 |
mnesia_table_loading_retry_timeout | 等待集群中Mnesia表可用的超时时间,单位毫秒 | mnesia_table_loading_retry_timeout = 30000 |
mnesia_table_loading_retry_limit | 集群启动时等待Mnesia表的重试次数,不适用于Mnesia升级或节点删除。 | mnesia_table_loading_retry_limit = 10 |
mirroring_sync_batch_size | 要在队列镜像之间同步的消息的批处理大小 | mirroring_sync_batch_size = 4096 |
queue_master_locator | 队列主节点的策略,有三大策略 min-masters,client-local,random | queue_master_locator = client-local |
proxy_protocol | 如果设置为true ,则连接需要通过反向代理连接,不能直连接 | proxy_protocol = false |
management.listener.port | rabbitmq web管理界面使用的端口 | management.listener.port = 15672 |
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)