day40综合架构批量管理篇

  • ansible剧本角色功能配置

  • 用户访问网站页面原理过程

  • HTTP协议报文结构

1.ansible剧本角色功能配置说明
1.角色功能作用:
  a.让剧本配置更加规范
  b.可以让剧本信息简化
  c.可以再汇总剧本中看到主机信息
2.如何配置角色功能:

第一个里程:配置好主机清单
  vim /etc/ansible/roles/hosts
  [rsync_server]
  172.16.1.41
  [rsync_client]
  172.16.1.31
  172.16.1.7
  [nfs_server]
  172.16.1.31    
  [nfs_client]
  172.16.1.41
  172.16.1.7
第二个里程:创建角色目录(以rsync举例)
 方式一:自己手动创建目录:
  mkdir /etc/ansible/roles/rsync
  mkdir /etc/ansible/roles/rsync/{tasks,files,vars,handlers,templates}
  tasks:目录中定义任务的剧本信息
  files:保存要分发文件信息
  vars:目录保存定义变量剧本文件
  handlers:目录中保存触发器剧本信息
  templates:目录中保存模板文件(jinjia2)
 方式二:使用命令自己生成目录:
  ansible-galaxy init nginx  --- 创建角色目录路径信息
  [root@m01 roles]#ansible-galaxy init nginx
  - nginx was created successfully
  [root@m01 roles]#ll
  total 0
  drwxr-xr-x 10 root root 135 Aug 27 21:33 nginx
  [root@m01 roles]#tree nginx/
  nginx/
  ├── defaults
  │   └── main.yml
  ├── files
  ├── handlers
  │   └── main.yml
  ├── meta
  │   └── main.yml
  ├── README.md
  ├── tasks
  │   └── main.yml
  ├── templates
  ├── tests
  │   ├── inventory
  │   └── test.yml
  └── vars
      └── main.yml

  8 directories, 8 files
第三个里程:
  1.编写tasks/main.yml
  编写方式一:
    去除主机清单信息、变量、触发器等只留下要执行任务内容
    - name: install software
      yum: name=rsync state=installed
    - name: push file info
      copy: src={{ file_dir }}/{{ item.src }} dest={{ conf_dir }} mode={{ item.mode }}
      notify:
        - rsync_restart
        - rsync_port
        - rsync_port_info
      with_items:
        - {src: 'rsyncd.conf', mode: '644'}
        - {src: 'rsync.password', mode: '600'}
      when: ansible_eth0.ipv4.address == "10.0.0.41"
    - name: create user
      user: name=rsync shell=/sbin/nologin create_home=no
      when: ansible_eth0.ipv4.address == "10.0.0.41"
    - name: create backup dir
      file: path=/backup state=directory owner=rsync group=rsync
      when: ansible_eth0.ipv4.address == "10.0.0.41"
    - name: boot server
      service: name=rsyncd state=started enabled=yes
      when: ansible_eth0.ipv4.address == "10.0.0.41"
    - name: check rsync server status
      shell: netstat -lntup|grep rsync
      register: rsync_state
      when: ansible_eth0.ipv4.address == "10.0.0.41"
    - name: show rsync port info before
      debug: msg={{ rsync_state.stdout_lines }}
      when: ansible_eth0.ipv4.address == "10.0.0.41"
    - name: push pass file
      copy: content='oldboy123' dest=/etc/rsync.password mode=600
      when: ansible_eth0.ipv4.address != "10.0.0.41"
  编写方式二:将一个完整的剧本拆分成多个剧本
  vim /etc/ansible/roles/rsync/tasks/copy_file.yml
       - name: push file info
         copy: src={{ file_dir }}/{{ item.src }} dest={{ conf_dir }} mode={{ item.mode }}
         notify: 
           - rsync_restart
           - rsync_port
           - rsync_port_info
         with_items:
           - {src: 'rsyncd.conf', mode: '644'}
           - {src: 'rsync.password', mode: '600'}
   vim /etc/ansible/roles/rsync/tasks/install_rsync.yml
       - name: install software
         yum: name=rsync state=installed
   将多个拆分开的任务剧本进行整合:
    vim /etc/ansible/roles/rsync/tasks/main.yml
     - include_tasks: install_rsync.yml
     - include_tasks: copy_file.yml
  2.保存files文件信息
    [root@m01 files]# ll
       总用量 8
       -rw-r--r-- 1 root root 409 8月  26 19:00 rsyncd.conf
       -rw-r--r-- 1 root root  23 8月  26 18:23 rsync.password
  3.配置vars/main.yml
    # cat ../vars/main.yml 
       conf_dir: /etc/
       file_dir: /ansible_playbook/file
  4.配置handlers/main.yml
    [root@m01 files]# cat ../handlers/main.yml
       - name: rsync_restart
         service: name=rsyncd state=restarted
       - name: rsync_port
         shell: netstat -lntup|grep rsync
         register: rsync_port
       - name: rsync_port_info
         debug: msg={{ rsync_port.stdout_lines }}
第四个里程:调取角色信息
  [root@m01 ansible]# cat roles/site.yml 
    - hosts: rsync_server,rsync_client
      roles:
        - rsync
第五个里程:执行角色汇总剧本
  ansible-playbook /etc/ansible/roles/site.yml -i /etc/ansible/roles/hosts
i:指定加载自己所配置的主机清单路径
还可以修改ansible配置文件/etc/ansible/ansible.cfg中的
#inventory      = /etc/ansible/hosts
来加载要选择的主机清单

剧本角色调用流程图:


剧本角色调用流程图.png

补充: templates目录作用:
放置存储模板文件

第一个历程: 修改配置文件 变成 模板文件
vim rsyncd.conf
port = {{ prot }}

第二个历程: 需要将模板文件移动到templates/目录中
mv rsync/files/rsyncd.conf rsync/templates/

第三个历程: 修改复制数据的模块
copy     复制文件数据 == ''  所见即所得
template 复制文件数据 == "" 可以解析{{}}调取变量信息

2.用户访问网站原理过程
1.进行域名解析过程(DNS解析原理(本地查询、递归查询、迭代查询))
2.和网站服务建立连接(三次握手过程)
3.发送HTTP请求信息(HTTP请求报文)
4.发送HTTP响应信息(HTTP响应报文)
5.和网站服务断开连接(四次挥手过程)

HTTP协议:
  HTTP--Hyper Text Transfer Protocol,超文本传输协议,是一种建立在TCP上的无状态连接,整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。其中一个请求的开始到一个响应的结束称为事务,当一个事物结束后还会在服务端添加一条日志条目。

HTTP请求报文结构信息:
1.请求行:

> GET / HTTP/1.1

  1. 请求方法 GET(获得 客户端 -- 从 -- 服务端获得页面数据信息 ) POST(提交 客户端 -- 发送数据 --- 服务端)
  2. 请求内容 请求网站资源信息(页面文件 图片 视频 音频) 没有具体只需求会默认请求首页文件(index.html)
  3. 请求使用的协议 HTTP/1.0 HTTP/1.1 HTTP/2.0
    TCP长链接: HTTP/1.1 一次链接,可以发送多个请求
    TCP短链接: HTTP/1.0 一次链接,可以发送一次请求

2.请求头:

Hosts: www.oldboyedu.com --- 指定显示什么网站页面 www bbs blog 主机记录信息
User-Agent: curl/7.29.0 --- 根据用户访问客户端信息不同,可以显示不同的页面

3.空行
4.请求主体:
get方法没有请求主体 post方法具有请求主体

HTTP响应报文结构信息:
1).起始行:

HTTP/1.1 302 Found

  1. 协议信息
  2. 响应状态码信息

2).响应头
3).空行
4).响应主体

HTTP请求与响应报文图示:


HTTP请求与响应报文.png

3.常见状态码:

状态码.png

状态码2.png

4.HTTP协议版本:
HTTP/0.9
  HTTP协议的最初版本,功能简陋,仅支持请求方式GET,并且仅能请求访问HTML格式的资源。

HTTP/1.0:
  在0.9版本上做了进步,增加了请求方式POST和HEAD;不再局限于0.9版本的HTML格式,根据Content-Type可以支持多种数据格式,即MIME多用途互联网邮件扩展,例如text/html、image/jpeg等;同时也开始支持cache,就是当客户端在规定时间内访问统一网站,直接访问cache即可。
  但是1.0版本的工作方式是每次TCP连接只能发送一个请求,当服务器响应后就会关闭这次连接,下一个请求需要再次建立TCP连接,就是不支持keepalive。

HTTP/1.1:
  解决了1.0版本的keepalive问题,1.1版本加入了持久连接,一个TCP连接可以允许多个HTTP请求; 加入了管道机制,一个TCP连接同时允许多个请求同时发送,增加了并发性;新增了请求方式PUT、PATCH、DELETE等。
  但是还存在一些问题,服务端是按队列顺序处理请求的,假如一个请求处理时间很长,则会导致后边的请求无法处理,这样就造成了队头阻塞的问题;同时HTTP是无状态的连接,因此每次请求都需要添加重复的字段,降低了带宽的利用率。

HTTP/2.0:
  为了解决1.1版本利用率不高的问题,提出了HTTP/2.0版本。增加双工模式,即不仅客户端能够同时发送多个请求,服务端也能同时处理多个请求,解决了队头堵塞的问题;HTTP请求和响应中,状态行和请求/响应头都是些信息字段,并没有真正的数据,因此在2.0版本中将所有的信息字段建立一张表,为表中的每个字段建立索引,客户端和服务端共同使用这个表,他们之间就以索引号来表示信息字段,这样就避免了1.0旧版本的重复繁琐的字段,并以压缩的方式传输,提高利用率。
  另外也增加服务器推送的功能,即不经请求服务端主动向客户端发送数据。

当前主流的协议版本还是HTTP/1.1版本。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,864评论 6 13
  • Web 页面的实现 Web 基于 HTTP 协议通信 客户端(Client)的 Web 浏览器从 Web 服务器端...
    毛圈阅读 1,072评论 0 2
  • 1 曾经有段时间生活得特别纠结和抑郁。居然还百度过“如何让自己开心”,“如何让自己生活得幸福”。这样的词条。 当然...
    Cici鹏程万里阅读 473评论 8 9
  • ServiceService 是长期运行在后台的应用程序组件。Service 不是一个单独的进程,它和应用程序在同...
    Sophia_dd35阅读 17,877评论 0 23
  • 明代张岱云:“人无癖不可与交,以其无深情也,人无疵不可与交,以其无真气也。” 一个人既无癖又无疵,四平八稳,谨小慎...
    风熊花吉阅读 109评论 0 0