Ansible实战之Nginx代理Tomcat主机架构
author:JevonWei
版权声明:原创作品
实验架构:一台nginx主机为后端两台tomcat主机的代理,并使用Ansible主机配置
实验环境
Nginx 172.16.252.82
Tomcat-A 172.16.252.67
Tomcat-B 172.16.252.184
Ansible 172.16.252.207
Ansible实战之Nginx代理Tomcat主机架构
配置主机名解析
[root@Ansible ~]# vim /etc/hosts
172.16.252.67 Tomcat-A
172.16.252.184 Tomcat-B
172.16.252.207 Ansible
172.16.252.82 Nginx
配置主机将秘钥认证通信
[root@Ansible ~]# ssh-keygen -t rsa -P ""
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
cb:1b:f0:e5:bb:e7:da:04:96:52:4b:7b:60:c9:ac:1d root@Ansible
The key's randomart image is:
+--[ RSA 2048]----+
| |
| o . |
| E |
| * * |
| . S O . |
| + * o |
| = . . |
| o +. |
| . +=o |
+-----------------+
[root@Ansible ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub Tomcat-A
[root@Ansible ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub Tomcat-B
[root@Ansible ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub Nginx
Ansible
[root@Ansible ~]# yum -y install ansible
添加主机到主机清单文件中
[root@Ansible ~]# vim /etc/ansible/hosts
[lb]
172.16.252.82
[tcsrvs]
172.16.252.67
172.16.252.184
查看主机清单主机的可用主机
[root@Ansible ~]# ansible all --list-hosts
hosts (3):
172.16.252.82
172.16.252.67
172.16.252.184
[root@Ansible ~]# ansible lb --list-hosts
hosts (1):
172.16.252.82
[root@Ansible ~]# ansible tcsrvs --list-hosts
hosts (2):
172.16.252.67
172.16.252.184
定义roles目录
[root@Ansible ~]# mkdir -pv /etc/ansible/roles/{nginx,tomcat,jdk}/{files,templates,tasks,handlers,vars,meta,default}
[root@Ansible nginx]# cd /etc/ansible/roles/nginx/
编辑nginx角色的任务文件
[root@Ansible nginx]# vim tasks/main.yml
- name: install nginx
yum: name=nginx state=latest
when: ansible_os_family == "RedHat"
- name: install conf
copy: src=lb.conf dest=/etc/nginx/conf.d/
tags: conf
notify: restart nginx
- name: start nginx
service: name=nginx state=started enabled=yes
编辑handlers触发文件
[root@Ansible nginx]# vim handlers/main.yml
- name: restart nginx
service: name=nginx state=restarted
定义Nginx的虚拟主机文件
[root@Ansible nginx]# vim files/lb.conf
upstream tcsrvs {
server Tomcat-A.danran.com:8080;
server Tomcat-B.danran.com:8080;
}
server {
listen 8080;
server_name www.danran.com;
location / {
proxy_pass http://tcsrvs;
}
}
配置jdk角色
配置jdk角色的任务文件
[root@Ansible roles]# cd jdk/
root@Ansible jdk]# vim tasks/main.yml
[root@Ansible jdk]# vim tasks/main.yml
- name: install openjdk
yum: name=java-{{ version }}-openjdk-devel state=latest \\{{ version }}使用变量
- name: install env file \\定义jdk程序的环境文件
copy: src=java.sh dest=/etc/profile.d/
编辑jdk的程序环境文件
[root@Ansible jdk]# vim files/java.sh
export JAVA_HOME=/usr
配置tomcat的角色
编辑tomcat的任务文件
[root@Ansible tomcat]# vim tasks/main.yml
- name: install package
yum: name={{ item }} state=latest
with_items:
- tomcat
- tomcat-admin-webapps
- tomcat-webapps
- tomcat-docs-webapp
when: ansible_os_family == "RedHat"
- name: start tomcat
service: name=tomcat state=started enabled=yes
编辑playbook样本文件,调用nginx角色
[root@Ansible ~]# mkdir playbooks
[root@Ansible ~]# cd playbooks/
[root@Ansible playbooks]# vim nginx.yaml
- hosts: lb
remote_user: root
roles:
- nginx
- hosts: tcsrvs
remote_user: root
roles:
- { role: jdk,version: 1.8.0 } \\调用jdk角色及定义version变量
- tomcat
执行nginx.yaml样本文件
[root@Ansible playbooks]# ansible-playbook nginx.yaml
PLAY [lb] **********************************************************************
TASK [setup] *******************************************************************
ok: [172.16.252.82]
TASK [nginx : install nginx] ***************************************************
ok: [172.16.252.82]
TASK [nginx : install conf] ****************************************************
changed: [172.16.252.82]
TASK [nginx : start nginx] *****************************************************
changed: [172.16.252.82]
RUNNING HANDLER [nginx : restart nginx] ****************************************
changed: [172.16.252.82]
PLAY [tcsrvs] ******************************************************************
TASK [setup] *******************************************************************
ok: [172.16.252.67]
ok: [172.16.252.184]
TASK [jdk : install openjdk] ***************************************************
changed: [172.16.252.67]
changed: [172.16.252.184]
TASK [jdk : install env file] **************************************************
changed: [172.16.252.67]
changed: [172.16.252.184]
TASK [tomcat : install package] ************************************************
changed: [172.16.252.67] => (item=[u'tomcat', u'tomcat-admin-webapps', u'tomcat-webapps', u'tomcat-docs-webapp'])
changed: [172.16.252.184] => (item=[u'tomcat', u'tomcat-admin-webapps', u'tomcat-webapps', u'tomcat-docs-webapp'])
TASK [tomcat : start tomcat] ***************************************************
changed: [172.16.252.184]
changed: [172.16.252.67]
PLAY RECAP *********************************************************************
172.16.252.184 : ok=5 changed=4 unreachable=0 failed=0
172.16.252.67 : ok=5 changed=4 unreachable=0 failed=0
172.16.252.82 : ok=5 changed=3 unreachable=0 failed=0
Ansible实战之Nginx代理Tomcat主机架构的更多相关文章
- Puppet单机实战之Nginx代理Tomcat
author:JevonWei 版权声明:原创作品 blog:http://119.23.52.191/ --- 构建实战之Nginx代理Tomcat [root@node1 modules]# mk ...
- nginx代理tomcat
http://blog.csdn.net/kongqz/article/details/6838989 http://www.800l.com/linux-nginx-tomcat-jdk.html ...
- nginx代理tomcat后,tomcat获取真实(非proxy,非别名)nginx服务端ip端口的解决方案
nginx代理tomcat后,tomcat获取服务端ip端口的解决方案 1.注意修改nginx配置代理,标红地方 #user nginx; worker_processes ; error_log l ...
- Docker Compose 一键部署Nginx代理Tomcat集群
Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx ...
- nginx代理 tomcat获得真实用户IP
nginx代理 tomcat获得真实用户IP 2017年04月08日 21:34:17 cf 阅读数 1825更多 分类专栏: nginx html/js/ajax 版权声明:本文为博主原创文章, ...
- Ansible实战之Nginx高可用代理LNMP-wordpress
author:JevonWei 版权声明:原创作品 blog:http://119.23.52.191/ --- 实验环境:前端使用Nginx做代理服务器,静态资源经由缓存服务器,连接后端web集群, ...
- Docker Compose部署 nginx代理Tomcat集群
一.简介 使用Docker镜像部署Nginx代理的多个Tomcat集群: 使用Dockerfile构建nginx镜像 使用Dockerfile构建tomcat镜像 mysql镜像使用docker hu ...
- Nginx与Tomcat/PHP架构优化的技术分享
PHP性能优化 一般我们是在/usr/local/php5/etc/php-fpm.conf这个文件里面进行相应的配置. 1) 如果设置成static,php-fpm进程数自始至终都是pm ...
- https方式nginx 代理tomcat访问不带www的域名301重定向跳转到www的域名帮助seo集中权重
比如我要把 http://gucanhui.com http://www.gucanhui.com 跳转到https://www.gucanhui.com 用F12的network可以看到状态码301 ...
随机推荐
- POJ 3181 Dollar Dayz(递推,两个long long)
题意:John有N美元,有价格为1~K的工具,可以买的个数不限,问1~K组合出N的方案数. f[i = 第i中工具][j = 花费为j] = 方案数. f[i][j] = sigma{ f[i-1][ ...
- noip模拟赛#39
昨晚打开的题想了一会发现都不会后决定慢慢想.然后早上开校会的时候莫名其妙的都想出来了... T1:m=100,ai=50000,i<=5.1到m的数每个数只能用一次,判断是否能够有这些数的某些数 ...
- Ubuntu中文乱码问题
版本 Ubuntu 14.1 系统安装完成后,中文都显示成了乱码 终端或者命令行里输入 sudo apt-get install zhcon 等安装完即可~ 运行的时候记得要加载vgz驱动和utf8支 ...
- 2017.12.20 Java中的 IO/XML学习总结 File类详细
IO / XML 一.File类 1.定义/概念 Java是面向对象的语言,要想把数据存到文件中,就必须要有一个对象表示这个文件.File类的作用就是代表一个特定的文件或目录,并提供了若干方法对这些文 ...
- js清空表单数据的方式(遍历+reset)
方法1:遍历页面元素 /* 清空FORM表单内容 id:表单ID*/ function ClearForm(id) { var objId = document.getElementById(id); ...
- Linux学习记录(三)
1.Linux的软件安装 1.1.jdk安装 注意:rpm与软件相关命令 相当于window下的软件助手 管理软件 步骤: 1)查看当前Linux系统是否已经安装java 输入 rpm -qa | g ...
- Android_组件_Activity基础
一.概述 Activity是应用组件,提供了用户交互的窗口.一个应用由多个彼此联系的Activity组成.它大多数情况是全屏窗口显示,也可以作为悬浮窗口 或者 多窗口模式. 二.生命周期 下图是来自A ...
- .NET 执行命令行乱码
Process可以运行命令行内容儿不用担心会弹出命令行窗口 需要读取命令行结果时,如果不注意内容编码,就会出现读取的结果出现乱码 读取StandardOutput结果时需要指定StandardOutp ...
- h5中的video与audio
·首先带大家熟悉一下video标签的属性方法,根据属性方法做一个小demo, HTML5支持的视频格式: Ogg 带有Theora视频编码+Ogg文件 支持的浏览器:F.O MEPG4 带有H.26 ...
- GC回收的对象
垃圾收集(Carbage Collection) java内存在运行时区域,程序计数器.java虚拟机栈.本地方法三个区域都是线程私有的内存区域,随着线程的启动和销毁而分配和回收.栈帧随着方法的调 ...