尝试使用小型编排的ansible,但很快就会发现一个简单的apache问题。在启用mod_proxy后重新启动时,它失败并显示:
~$ ansible-playbook ansible/playbooks/apache_tomcat_mysql_mongo_stack.yml -u ansible --private-key ~/ansible/ansible.pem
PLAY [web] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.56.103]
TASK: [apache | Update apt cache] *********************************************
ok: [192.168.56.103]
TASK: [apache | Install Apache2] **********************************************
ok: [192.168.56.103]
TASK: [apache | Creating a Document virtualhost file] *************************
skipping: [192.168.56.103]
TASK: [apache | Creating a Reverse Proxy virtualhost file] ********************
ok: [192.168.56.103]
TASK: [apache | Activate Mod Proxy] *******************************************
changed: [192.168.56.103]
NOTIFIED: [apache | Restart-Apache] *******************************************
failed: [192.168.56.103] => {"failed": true}
msg: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
FATAL: all hosts have already failed -- aborting
NOTIFIED: [apache | Restart-Apache] *******************************************
FATAL: no hosts matched or all hosts have already failed -- aborting
FATAL: all hosts have already failed -- aborting
NOTIFIED: [apache | Restart-Apache] *******************************************
FATAL: no hosts matched or all hosts have already failed -- aborting
FATAL: all hosts have already failed -- aborting
PLAY RECAP ********************************************************************
to retry, use: --limit @/home/user/apache_tomcat_mysql_mongo_stack.retry
192.168.56.103 : ok=5 changed=1 unreachable=0 failed=1
以下是playbook apache_tomcat_mysql_mongo_stack.yml
- hosts: web
roles:
- apache
sudo: True
vars:
document_vhost: False
proxy_vhost: True
activate_vhost: False
deactivate_vhost: False
apache_domain_name: node3.localhost
apache_admin_email_address: devops@node3.localhost
apache_port: 80
activate_vhost: True
apache_vhosts:
- apache_proxy_context: /
reversed_server_mod: ajp
reversed_server_ip: 192.168.56.105
reversed_server_port: 8009
reversed_server_context: /
- hosts: tomcat
roles:
- java
- tomcat
sudo: True
vars:
java_version: 7
tomcat_version: 7
tomcat_port: 8080
tomcat_redirection_port: 8443
tomcat_ajp_port: 8009
tomcat_ajp_redirection_port: 8443
tomcat_ajp_server_fake_name: Server
tomcat_jvmroute_name: jvmroute1
为了简洁起见,pastie.org上可以找到所有相关信息,如apache角色和处理程序。我无法弄清楚发生了什么,因为看起来ansible正试图在已经运行的服务旁边启动一个不同的apache服务。
如何解决这样的问题?感谢
答案 0 :(得分:1)
我看到你可以进一步调查的两件事:
msg:(98)地址已被使用:AH00072:make_sock:无法绑定到地址[::]:80 (98)已在使用的地址:AH00072:make_sock:无法绑定到地址0.0.0.0:80 没有可用的侦听套接字,关闭
看起来apache无法绑定TCP端口80,因为其他东西正在使用它。在运行playbook之前运行sudo netstat -ntlp | grep 80
并确认在端口80上确切地监听了哪个进程。确保它是apache。
AH00015:无法打开日志
这看起来似乎是apache的文件系统权限写入它的日志文件可能是错误的。您还应该验证/var/log/apache2
的相关目录权限(或者您的发行版的路径)。