Ansible角色部署Nginx调度两台Tomcat。Tomcat第一台:192.168.10.10,Tomcat第二台:192.168.10.20 Nginx:192.168.10.30
5条回答 默认 最新
檀越@新空间 2025-07-28 16:56关注下午好🌅🌅🌅
本答案参考通义千问在Ansible中,可以通过角色(Roles)来组织和部署Nginx调度两台Tomcat服务器。以下是详细的部署步骤,包括创建角色、编写任务文件、配置Nginx反向代理等。
目标
- 使用 Ansible 角色部署 Nginx
- 配置 Nginx 作为反向代理,将请求调度到两台 Tomcat 服务器:
- Tomcat 1:
192.168.10.10 - Tomcat 2:
192.168.10.20
- Tomcat 1:
- Nginx 服务器为:
192.168.10.30
步骤一:准备环境
确保以下几点:
- 所有主机(包括 Nginx 和 Tomcat)已安装 Ansible。
- 所有主机之间可通过 SSH 相互通信。
- 在 Ansible 控制机上,配置好 hosts 文件(如
/etc/ansible/hosts),添加如下内容:
[tomcats] 192.168.10.10 192.168.10.20 [nginx] 192.168.10.30
步骤二:创建 Ansible 角色
使用 Ansible 的
role功能,创建一个用于部署 Nginx 的角色。1. 创建角色目录结构
mkdir -p nginx-role/{tasks,templates}2. 编写 tasks/main.yml
在
nginx-role/tasks/main.yml中定义安装 Nginx 和配置反向代理的任务:--- - name: Install Nginx apt: name: nginx state: present update_cache: yes when: ansible_distribution == "Ubuntu" - name: Copy Nginx configuration template template: src: nginx.conf.j2 dest: /etc/nginx/sites-available/default owner: root group: root mode: 0644 notify: restart nginx - name: Enable default site file: src: /etc/nginx/sites-available/default dest: /etc/nginx/sites-enabled/default state: link
步骤三:编写模板文件
1. 创建模板文件
nginx-role/templates/nginx.conf.j2server { listen 80; server_name localhost; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } upstream backend { least_conn; server {{ tomcat1_ip }} weight=3; server {{ tomcat2_ip }} weight=1; } }注意: 模板中的
{{ tomcat1_ip }}和{{ tomcat2_ip }}是变量,将在 playbook 中传入。
步骤四:编写 Playbook
创建一个 playbook 文件,例如
deploy_nginx.yml,并指定角色和变量:--- - name: Deploy Nginx with load balancing hosts: nginx roles: - role: nginx-role vars: tomcat1_ip: 192.168.10.10 tomcat2_ip: 192.168.10.20
步骤五:执行 Playbook
运行 playbook:
ansible-playbook deploy_nginx.yml
步骤六:验证部署
- 登录到 Nginx 服务器(
192.168.10.30)。 - 检查 Nginx 是否正常运行:
systemctl status nginx- 访问
http://192.168.10.30,查看是否能访问 Tomcat 应用。
解决方案总结
- 创建 Ansible 角色:用于封装 Nginx 安装和配置逻辑。
- 编写任务文件:定义安装 Nginx 和复制配置的步骤。
- 编写模板文件:使用 Jinja2 模板动态生成 Nginx 配置。
- 编写 Playbook:调用角色并传递变量(Tomcat IP)。
- 执行 Playbook:自动化部署 Nginx 并配置负载均衡。
注意事项
- 确保所有节点的防火墙允许 HTTP 流量(端口 80)。
- 如果使用 CentOS,需将
apt替换为yum。 - 可根据需要调整
least_conn或round_robin负载均衡算法。
代码示例(修改后的 playbook)
--- - name: Deploy Nginx with load balancing hosts: nginx roles: - role: nginx-role vars: tomcat1_ip: 192.168.10.10 tomcat2_ip: 192.168.10.20
如需进一步优化,可以添加健康检查、日志管理、SSL 支持等功能。欢迎继续提问!
解决 无用评论 打赏 举报