Ansible变量
一、在命令行中定义变量
1 | [root@ansible ~]#ansible webs -a 'echo {{ a }}南汐{{ b }}' -e 'a=欢迎来到' -e 'b=的个人世界' |
二、在play中定义变量
1 |
|
勇敢的去做你认为正确的事情!
1 | [root@ansible ~]#ansible webs -a 'echo {{ a }}南汐{{ b }}' -e 'a=欢迎来到' -e 'b=的个人世界' |
1 | --- |
如果我们ad-hoc看成是单条的shell,那么playbook就是类似shell脚本的存在,虽然它比不上shell脚本的便捷和可用性,但它在自动化运维中绝对是把利器,对于批量化主机管理playbook是我们必须掌握并精通的,因为它可以充分发挥ansible的强大!!!
Ansible-playbook的书写遵循yml语言格式,并以ansible的模块为基础,从而实现对复杂指令的编排应用,如以下的playbook书写,实现了对rsync服务的部署,同样的它可以应用到更多的主机或者集群……
more >> ad-hoc
临时命令,执行完即结束,并不会保存,常用于单条命令的执行,如果涉及到复杂的管理操作,且可能需要持久化使用时,我们会使用playbook
。PlayBook
功能比 ad-hoc
更全,是对 ad-hoc
的一种编排,能很好的控制先后执行顺序,以及依赖关系,而且语法展现更加的直观。但是本节我们仅展示基础的Ansible语法和基本使用模块。
Tomcat是基于JAVA开发的WEB服务,主要用来解析JAVA代码。Nginx仅支持静态资源解析,而Tomcat支持解析Java开发的WEB应用,还支持解析静态资源(效率不高),Nginx适合做前端负载均衡,Tomcat适合做后端应用服务处理,通常情况企业会使用Nginx+Tomcat结合,Nginx处理静态资源,Tomcat处理动态资源。
1 | ### java环境安装 |
1 | ### 安装tomcat软件 |
做事有做事的原则,解决问题有解决问题的方法,那我们在做性能优化工作之前也同样要有自己的逻辑,我们为什么要做优化,我们需要重点考虑哪些方面,和了解哪些方面呢?在南汐看来,一切优化工作的目的就是基于业务稳定安全的前提下尽可能的提高用户的访问体验。
1、首先我们需要了解当前系统的结构和瓶颈,当我们的脑袋里存在一个明确的业务框架逻辑时,那么我们对于就会有一个明确的方向。比如了解我们公司当前使用的是什么,运行的是什么业务,都有哪些服务,了解每个服务最大可支撑多少并发,能支持多少qps(每秒查询率)的访问请求,这组系统的最高瓶颈在哪里?(我们如何评定我们系统的瓶颈呢,例如使用top查看系统的CPU负载、内存使用率、总得运行进程等,也可以通过日志去分析请求的情况,也可以通过我们前面介绍到的stub_statius模块查看当前的连接情况,对线上的业务进行压力测试【低峰期】,去了解当前这套系统能承担多少的请求和并发,做好响应的评估。这个是我们做性能优化最先考虑的地方。)
2、了解业务模式。性能优化是为业务服务的,本质上就是提高业务能力。我们需要了解每个业务接口的类型,比如:电商网站中的抢购模式,这种情况下面,平时没什么流量,但到了抢购时间流量会突增。我们还需要了解系统层次化的结构,比如:我们使用nginx做的是代理、还是动静分离、还是后端直接服务用户,我们要对每一层做好相应的梳理,以便更好的服务业务。
3、性能与安全。通常会有这样一个情况,我们往往注重了性能,但是忽略了安全,往往过于注重安全,对性能又会产生影响。比如:我们在设计防火墙功能时,检测过于严密,这样就会给性能带来影响。那么如果对于性能完全追求,却不顾服务的安全,也会造成很大的隐患。我们需要评估好两者的关系,把握好两者的孰重孰轻。以及整体的相关性,权衡好对应的点。
1 | [root@web1 ~]#yum -y install httpd-tools |
我们可以先以自己的静态网页为例(现在很多的网站基本都会设置屏蔽外界压测),来做一个小测试:
more >>高可用一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,这种快速接管对于访问的用户是无感知的。高可用的实现方式通常有两种:硬件实现高可用(F5)、软件实现高可用(Keepalived),我们主要讲解通过Keepalived实现高可用。
keepalived软件是基于VRRP协议实现的,主要用于解决单点故障问题。
虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议。利用VRRP,一组路由器(同一个VLAN中的接口)协同工作,但只要一个处于Master状态,处于该状态的路由器接口承担实际数据流量的转发任务。在一个VRRP组内的多个路由器接口共用一个虚拟IP地址,该地址被作为局域网内所有主机的缺省网关地址。
more >>Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程。、
1、地址跳转,用户访问www.nanxi.com这个URL时,将其定向至一个新的域名 m.nanxi.com
2、协议跳转,用户通过http协议请求网站时,将其重新跳转至https协议方式
3、伪静态,将动态页面显示为静态页面方式的一种技术,便于搜索引擎的录入,同时减少动态URL地址对外暴露过多的参数,提升更高的安全性。
4、搜索引擎,SEO优化依赖于url路径,好记的url便于支持搜索引擎录入。
rewrite指令根据表达式来重定向URL,或者修改字符串,可以应用于server,location,if环境下,每行rewrite指令最后跟一个flag标记,支持的flag标记有如下表格所示:
flag | 作用 |
---|---|
last | 本条规则匹配完成后,停止本location匹配,重新以本条结果发请求 |
break | 本条规则匹配完成后,停止本location匹配,直接返回本条请求内容 |
redirect | 返回302临时重定向,地址栏会显示跳转后的地址,每一次访问都会访问源站 |
permanent | 返回301永久重定向,地址栏会显示跳转后的地址,只有第一次访问时是源站 |
环境准备 |
角色 | IP地址 |
---|---|
负载均衡(lb) | 192.168.10.3 |
web1(静态资源) | 192.168.10.200 |
web2(动态资源) | 192.168.10.201 |
实现过程 |
1️⃣ web1配置静态资源;
1 | [root@web1 /etc/nginx/conf.d]#vim nanxi.conf |
LNMP是一套技术的组合,L = Linux、N = Nginx、M = MySQL、P = PHP,其工作原理如下:
1.用户通过http协议发起请求,请求会先抵达LNMP架构中的Nginx
2.Nginx会根据用户的请求进行判断,这个判断是有Location进行完成
3.判断用户请求的是静态页面,Nginx直接进行处理
4.判断用户请求的是动态页面,Nginx会将该请求交给fastcgi协议下发
5.fastgi会将请求交给php-fpm管理进程, php-fpm管理进程接收到后会调用工作进程warrap工作
6.warrap进程会调用php程序进行解析,如果只是解析代码php直接返回
7.如果有查询数据库操作,则由php连接数据库(用户 密码 IP)发起查询的操作
8.最终数据由 mysql->php->php-fpm->fastcgi->nginx->http->user
服务准备 | IP地址 | 主机名 |
---|---|---|
Nginx、PHP | 192.168.10.200 | web1 |
nginx前面我们已经讲述过了,三种方式均可,这里不再赘述,我们简要说一下PHP服务和数据库的安装。
more >>
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true