我正在配置ansible脚本来为具有3个节点的rabbitmq创建HA设置,在执行整个脚本后,它运行处理程序来重新启动rabbitmq服务器,但无法重新启动节点。最初,当我运行脚本而不在其他节点中复制 erlang cookie 时,它运行良好,但是当我在其他节点中复制 erlang cookie 时,它没有重新启动。
\n\n任务/main.yml
\n\n---\n- name: Install prerequisites\n apt:\n name: "{{ item }}"\n update_cache: yes\n state: present\n with_items:\n # - apt-transport-https\n # - ca-certificates\n # - python3-pip\n - curl\n - software-properties-common\n\n#- name: packages - install erlang\n# apt:\n# pkg: erlang\n# update_cache: yes\n# cache_valid_time: 3600\n# state: latest\n\n- name: "add the official rabbitmq repository\'s key"\n apt_key:\n url: "https://www.rabbitmq.com/rabbitmq-release-signing-key.asc"\n state: present\n when: not rabbitmq_os_package\n\n- name: Add RabbitMQ APT repository\n apt_repository:\n repo: \'deb https://dl.bintray.com/rabbitmq-erlang/debian bionic erlang-22.x\'\n state: present\n\n- name: Install RabbitMQ\n apt:\n deb: "https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.3/rabbitmq-server_3.8.3-1_all.deb"\n\n- name: enable rabbitmq plugins\n rabbitmq_plugin:\n names: rabbitmq_management,rabbitmq_tracing,rabbitmq_federation,rabbitmq_shovel,rabbitmq_shovel_management\n state: enabled\n notify:\n - rabbitmq restart\n\n- name: Capturing Erlang Cookie On Master\n command: "cat {{ rabbitmq_erlang_cookie_file }}"\n become: true\n register: "rabbitmq_erlang_cookie"\n when: inventory_hostname == "rabbit-node1"\n\n- name: Check if rabbitmq_conf_vm_memory_high_watermark is under the recommended range\n fail:\n msg: "The recommended vm_memory_high_watermark range is 0.4 to 0.66."\n when: rabbitmq_conf_vm_memory_high_watermark < 0.4 or rabbitmq_conf_vm_memory_high_watermark > 0.66\n\n- name: copy the rabbitmq configuration file\n template:\n src=rabbitmq.config.j2\n dest={{ rabbitmq_config_file_path }}\n owner={{ rabbitmq_config_file_owner }}\n group={{ rabbitmq_config_file_group }}\n mode={{ rabbitmq_config_file_mode }}\n backup=yes\n\n#- name: generate rabbitmq environment-variables file\n# template:\n# src=rabbitmq-env.conf.j2\n# dest={{ rabbitmq_env_variables_file_path }}\n# owner={{ rabbitmq_config_file_owner }}\n# group={{ rabbitmq_config_file_group }}\n# mode={{ rabbitmq_config_file_mode }}\n# backup=yes\n# when: rabbitmq_conf_env is defined\n\n- name: alter number of system\'s open file if rabbitmq_system_number_open_files is set\n block:\n - name: check if value is under 500k\n fail:\n msg: "The number of open files in the system should not exceed 500K."\n when: rabbitmq_system_number_open_files > 500000\n\n - name: make sure service.d exists\n file:\n path: "{{ rabbitmq_service_d_path }}"\n state: directory\n\n - name: change limit of system\'s number of open file\n template:\n src: limits.conf.j2\n dest: "{{ rabbitmq_service_d_path }}/limits.conf"\n backup: true\n when: rabbitmq_system_number_open_files is defined\n\n- name: Capturing Erlang Cookie On Master\n command: "cat {{ rabbitmq_erlang_cookie_file }}"\n become: true\n register: "rabbitmq_erlang_cookie"\n when: inventory_hostname == "rabbit-node1"\n\n- name: Setting Erlang Cookie Of Master on Non-Master\n set_fact:\n rabbitmq_erlang_cookie: "{{ hostvars[\'rabbit-node1\'][\'rabbitmq_erlang_cookie\'][\'stdout\'] }}"\n when: inventory_hostname != "rabbit-node1"\n\n- name: Copy erlang cookie\n template:\n src: erlang.cookie.j2\n dest: "{{ rabbitmq_erlang_cookie_file }}"\n owner: rabbitmq\n group: rabbitmq\n mode: 0400\n # backing up in case the need to recover\n backup: yes\n become: true\n when: inventory_hostname != "rabbit-node1"\n notify:\n - rabbitmq restart\n\n- name: ensure the users are removed\n rabbitmq_user:\n user={{ item }}\n state=absent\n with_items: "{{ rabbitmq_users_remove }}"\n\n- name: ensure users exist\n rabbitmq_user:\n user: "{{ item }}"\n password: \n vhost: /\n configure_priv: .*\n read_priv: .*\n write_priv: .*\n tags: "{{ rabbitmq_administrator_tag }}"\n state: present\n with_items: "{{ rabbitmq_users }}"\n\n- name: ensure rabbitmq server is running\n service:\n name: rabbitmq-server\n daemon_reload: true #changed systemd conf file\n state: started \nRun Code Online (Sandbox Code Playgroud)\n\n这是在脚本末尾运行的处理程序文件。
\n\n处理程序/main.yml
\n\n---\n\n- name: rabbitmq restart\n service:\n name: rabbitmq-server\n state: restarted\nRun Code Online (Sandbox Code Playgroud)\n\n错误
\n\nfatal: [rabbit-node2]: FAILED! => {"changed": false, "msg": "Unable to restart service rabbitmq-server: Job for rabbitmq-server.service failed because the control process exited with error code.\\nSee \\"systemctl status rabbitmq-server.service\\" and \\"journalctl -xe\\" for details.\\n"} \n\nfatal: [rabbit-node3]: FAILED! => {"changed": false, "msg": "Unable to restart service rabbitmq-server: Job for rabbitmq-server.service failed because the control process exited with error code.\\nSee \\"systemctl status rabbitmq-server.service\\" and \\"journalctl -xe\\" for details.\\n"}\nRun Code Online (Sandbox Code Playgroud)\n\n通过检查节点中的 systemctl 状态,它显示以下消息:
\n\n\xe2\x97\x8f rabbitmq-server.service - RabbitMQ broker\nLoaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)\nDrop-In: /etc/systemd/system/rabbitmq-server.service.d\n\xe2\x94\x94\xe2\x94\x80limits.conf\nActive: activating (start) since Thu 2020-04-16 09:27:18 UTC; 889ms ago\nProcess: 929 ExecStop=/usr/lib/rabbitmq/bin/rabbitmqctl shutdown (code=exited\nstatus=78)\nMain PID: 7865 (rabbitmq-server)\nTasks: 23 (limit: 4703)\nCGroup: /system.slice/rabbitmq-server.service\n\xe2\x94\x9c\xe2\x94\x807865 /bin/sh /usr/lib/rabbitmq/bin/rabbitmq-server\n\xe2\x94\x9c\xe2\x94\x807981 /usr/lib/erlang/erts-10.7.1/bin/beam.smp -- -root /usr/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.8.3/ebin -boot start_clean -noshell -no\n\xe2\x94\x9c\xe2\x94\x807991 /usr/lib/erlang/erts-10.7.1/bin/epmd -daemon\n\xe2\x94\x94\xe2\x94\x807995 erl_child_setup 65535 \nRun Code Online (Sandbox Code Playgroud)\n\n通过应用journalctl -xe命令我收到以下消息:
\n\nrabbit-node2 rabbitmq-server[16137]: Crash dump is being written to: /var/log/rabbitmq/erl_crash.dump...done\nrabbit-node2 systemd[1]: rabbitmq-server.service: Main process exited, code=exited, status=1/FAILURE\nrabbit-node2 systemd[1]: rabbitmq-server.service: Failed with result \'exit-code\'.\nrabbit-node2 systemd[1]: Failed to start RabbitMQ broker.\nRun Code Online (Sandbox Code Playgroud)\n
可以尝试这个过程:
如果上面的命令显示没有。进程数 < 5,然后继续后续步骤。
清空目录 /var/lib/rabbitmq/*
sudo invoke-rc.drabbitmq-server启动
ps-ef | grep 兔子
现在,运行 http://localhost:15672。
注意:1)代码是在本地主机上测试的,而不是在服务器上测试的。
2) 使用命令启用 RabbitMQ UI:rabbitmq-plugins enablerabbitmq_management
| 归档时间: |
|
| 查看次数: |
11795 次 |
| 最近记录: |