网站服务-Apache
Socket概念TCP/IP协议示意图
跨网络的主机间通讯
在建立通信连接的每一端,进程间的传输要有两个标志:
IP地址和端口号,合称为套接字地址 socket address
客户机套接字地址定义了一个唯一的客户进程
服务器套接字地址定义了一个唯一的服务器进程
Socket套接字
Socket:套接字,进程间通信IPC的一种实现,允许位于不同主机(或同一主机) 上不同进程之间进行通信和数据交换,SocketAPI出现于1983年,4.2 BSD实现
Socket API:封装了内核中所提供的socket通信相关的系统调用
Socket Domain:根据套接字所使用的地址格式
AF_INET:Address Family,IPv4
AF_INET6:IPv6
AF_UNIX:同一主机上不同进程之间通信时使用
Socket API:封装了内核中的socket通信相关的系统调用
SOCK_STREAM:流,tcp套接字,可靠地传递、面向连接
SOCK_DGRAM:数据报,udp套接字,不可靠地传递、无连接
SOCK_RAW: 裸套接字,无须tcp或udp,A ...
Git
常见版本控制器集中式版本控制器
CSV/SVN
速度慢,必须联⽹
只有⼀个中央数据仓库,如果中央数据仓库挂了或者⽆法访问,所有的使⽤者⽆法使⽤SVN,⽆法进⾏提交或备份操作
分布式版本控制器
Git
无中央服务器,每个人的电脑都是一个完整的版本库
安全性能更高
通常有一台充当“中央服务器”的电脑,仅仅作为方便“交换”大家的修改
安装使用
yum安装
1[root@node1 ~]# yum install git ‐y
配置git⽤户、邮箱
12345git configgit config --global user.name "kinmfer"git config --global user.email "kinmfer@foxmail.com"git config --global color.ui truegit config --list
创建并初始化版本库
1234# 在当前⽬录新建⼀个Git代码库git init# 新建⼀个⽬录,将其初始化为Git代码库2git init [project-name]
...
Linux基础-16-DHCP+DNS+NAT
DHCP服务原理DHCP:动态主机设置协议,是一个局域网协议,使用UDP协议工作
主要有两个用途
用于局域网或网络服务供应商自动分配IP地址
给用户用于内部网管理员作为所有计算机的中央管理的手段
DHCP优点
减少管理员的工作量
避免IP地址冲突
提高IP地址的利用率
移动计算机之后不用重新配置网络信息,能够方便更改错误的可能性
DHCP相关概念
DHCP客户端:获取网络配置信息
DHCP服务端:提供网络配置参数(IP地址、DNS、Gateway等)
DHCP中继代理:服务端和客户端之间转发DHCP的设备
作用域:一个网络中所有可分配的IP地址的连续范围,主要用来定义物理子网的单一IP地址范围
超级作用域:一组作用域的集合,实现一个物理子网中多个逻辑IP地址
排除范围:移除作用域中有限的IP地址序列(不使用DHCP服务)
地址池:定义作用域-排除范围之后,剩余的所有地址形成可用地址池
保留:DHCP服务器提供永久地址租约,确保客户端始终使用相同的IP地址
租用:客户从服务器上获得并临时占用某个IP地址的过程
租约:
获得的IP地址使用时间
获得IP地址时租约会被激活并更新其地址租 ...
Linux基础-15-Shell脚本
shell脚本基础
shell脚本:包含一些命令或声明,并符合一定格式的文本文件
格式要求:首行
#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl
shell脚本的用途有:
自动化常用命令
执行系统管理和故障排除
创建简单的应用程序
处理文本或文件
创建shell脚本
第一步:使用文本编辑器来创建文本文件
第一行必须包括shell声明序列:#! 示例:#!/bin/bash
添加注释
注释以#开头
第二步:运行脚本
给予执行权限,在命令行上指定脚本的绝对或相对路径
直接运行解释器,将脚本作为解释器程序的参数运行
脚本规范
脚本代码开头约定
第一行一般为调用使用的语言
程序名,避免更改文件名为无法找到正确的文件
版本号
更改后的时间
作者相关信息
该程序的作用,及注意事项
最后是各版本的更新简要说明
12345678910111213#!/bin/bash# ------------------------------------------# Filename: hello.sh# R ...
Linux基础-14-加密+安全
墨菲定律:一种心理学效应,是由爱德华·墨菲(Edward A. Murphy)提出的, 原话:如果有两种或两种以上的方式去做某件事情,而其中一种选择方式将导 致灾难,则必定有人会做出这种选择
主要内容:
任何事都没有表面看起来那么简单
所有的事都会比你预计的时间长
会出错的事总会出错
如果你担心某种情况发生,那么它就更有可能发生
安全安全机制
信息安全防护的目标
保密性 Confidentiality
完整性 Integrity
可用性 Usability
可控制性 Controlability
不可否认性 Non-repudiation
安全防护环节
物理安全:各种设备/主机、机房环境
系统安全:主机或设备的操作系统
应用安全:各种网络服务、应用程序
网络安全:对网络访问的控制、防火墙规则
数据安全:信息的备份与恢复、加密解密
管理安全:各种保障性的规范、流程、方法
安全攻击: STRIDE
Spoofing 假冒
Tampering 篡改
Repudiation 否认
Information Disclosure 信息泄漏
Denial of Service ...
Ansible-03-Role
介绍
roles
ansible自1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles 能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单来讲,roles就是通过分别将变量、 文件、任务、模板及处理器放置于单独的目录中,并可以便捷地include它们的一种机制。角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中
复杂场景:建议使用roles,代码复用度高
变更指定主机或主机组
如命名不规范维护和传承成本大
某些功能需多个Playbook,通过includes即可实现
目录编排
结构
每个角色,以特定的层级目录结构进行组织
roles目录结构:
playbook.yml
123456789roles/ project/ tasks/ files/ vars/ templates/ handlers/ default/ 不常用 meta/ 不常用
作用
roles/appname ...
Ansible-02-Playbook
注意:对于本文中出现的 { { } }和{ % % },前后 “{ {“ 以及 “{ %” 中间在实际操作中是没有空格的,由于hexo模板渲染问题,导致不得不加空格
YAML介绍
YAML是一个可读性高的用来表达资料序列的格式。YAML参考了其他多种语言,包括: XML、C语言、Python、Perl以及电子邮件格式RFC2822等。Clark Evans在2001年首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者
YAML Ain’t Markup Language,即YAML不是XML。不过,在开发的这种语言时, YAML的意思其实是:”Yet Another Markup Language”(仍是一种标记语言)
特性
YAML的可读性好
YAML和脚本语言的交互性好
YAML使用实现语言的数据类型
YAML有一个一致的信息模型
YAML易于实现
YAML可以基于流来处理
YAML表达能力强,扩展性好
更多的内容及规范参见:http://www.yaml.org
语法
在单一档案中,可 ...
Ansible01-简介
Ansible之前
运维工程师职能划分云计算
Linux
企业实际应用场景分析
Dev开发环境
使用者:程序员
功能:程序员开发软件,测试BUG的环境
管理者:程序员
测试环境
使用者:QA测试工程师
功能:测试经过Dev环境测试通过的软件的功能
管理者:运维
说明:测试环境往往有多套,测试环境满足测试功能即可,不宜过多
1、测试人员希望测试环境有多套,公司的产品多产品线并发,即多个版本, 意味着多个版本同步测试
2、通常测试环境有多少套和产品线数量保持一样
发布环境:代码发布机,有些公司为堡垒机(安全屏障)
使用者:运维
功能:发布代码至生产环境
管理者:运维(有经验)
发布机:往往需要有2台(主备)
生产环境
使用者:运维,少数情况开放权限给核心开发人员,极少数公司将权限完全 开放给开发人员并其维护
功能:对用户提供公司产品的服务
管理者:只能是运维
生产环境服务器数量:一般比较多,且应用非常重要。往往需要自动工具协 助部署配置应用
灰度环境(生产环境的一部分)
使用者:运维
功能:在全量发布代码前将代码的功能面向 ...
综合架构-文件共享服务+传输服务
FTP服务ftp协议文件传输协议
协议定义了一个远程计算机系统和本地计算机系统之间传输文件的一个标准
FTP运载OSI七层模型的应用层,并利用传输协议TCP在不同主机之间提供可靠的数据传输
FTP在文件传输中还支持断点续传功能,可以大幅的减少CPU网络带宽的开销
ftp模型
用户接口: 提供了一个用户接口并使用用户端协议解释器的服务
客户端协议解释器:向远程主机发送命令,并建立客户端数据传输过程
服务端协议解释器:响应客户端协议发出的命令并驱动服务器的数据传输
客户端数据传输协议:负责完成和服务端数据传输过程及客户端本地文件系统的通信
服务端数据传输协议:负责完成和客户端数据传输过程及服务端本地文件系统的通信
连接方式:不同的连接方式需要合适的服务质量
命令连接: 建立连接及命令发送和响应(需要更小的延迟时间) 21端口
数据连接: 用于数据传输(需要更大的数据吞吐量) 20端口
命令连接
主要用来传输实际通信中需要执行的FTP命令以及命令响应
只需要很小的网络带宽
FTP服务器监听在21端口来等待控制连接建立
建立控制连接之后,还需要验证客户端身份,决定是否建立数据连接
当 ...
小实验-02-实时同步
Inotify背景与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。
随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。基于以上原因,rsync+inotify组合出现了!
概念Inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各 ...