Linux进程管理
一、进程相关的基本概念
1. 中断
软中断:程序运行过程中,如果需要完成某些特权操作,它就必须向内核申请调用,由内核去判定此操作是否合规,一旦内核通过此申请,此调用功能就将由内核代理并在CPU上运行,此时进程只需等待调用返回即可,待返回结果后即可奔赴下一个流程
2. 进程的模式转换
进程的运行有两个模式,运行自己可执行的代码时叫做用户模式,一旦发生软中断,就会由内核代为执行这段代码段,而由内核代为执行的就叫做内核模式,一个进程运行过程中,可能会不断在两个模式中切换
3. task struct
任务结构体,内核为每一个运行在当前系统上的进程都会创建一个元数据结构,用来保存当前进程的元数据信息,比如运行时长、当前被调度到哪个核心上、占据内存空间等信息,而任务结构体就是为了让内核可以实时追踪到这些信息创建的,多个task struct组成的链接叫做task list
4. 进程的生命周期
进程创建:内核初始化完成后,由内核创建第一个进程,通常称为init进程,至此,也就意味着代码执行的内核空间和用户空间已经创建完毕了,后续的所有用户空间的管理工作就由init来完成了,init不能代替 ...
iptables
一、基础概念
防火墙是是一款报文隔离工具,工作于主机或网络的边缘,它能够根据事先定义的检查规则对进出本主机或网络的报文做匹配检测,发现被规则匹配的报文则做出相应处理。Linux防火墙发展到今天,已经迭代很多次了,Linux内核1.0时代的初代防火墙被叫做ipfirewall,到Linux内核2.0的时候,防火墙就被叫做ipchains,在往后就被称为iptables了,但是到Linux内核4.0又被改名为nftables
1. 防火墙种类
主机防火墙
网络防火墙
2. iptables与netfilter
iptables是用户空间规则管理工具,而真正实现防火的是netfilter。netfilter工作在内核中提供网络报文过滤处理框架(framework),它在内核中提供了五个钩子函数(hooks functions),iptables是在用户空间负责向钩子函数增删改查规则的工具,netfilter只是在tpc/ip协议栈设立的五个卡哨,真正能发挥功能还要在卡哨上添加规则
3. iptables的表
(1) 过滤(filter)
可实现过滤的链
INPUT
FORWARD
OU ...
Tomcat基础
一、 java简单介绍
1. 历史
上个世纪90年代初期,Sun公司有个项目是为电视机顶盒提供一种编程语言,可以让任何应用程序都可以基于这个语言运行在任何品牌机顶盒上。而这个项目在当时来讲实在是太超前了,并没有取得多大的关注。据听说当时他们办公室窗外有一颗高大的橡树,起名为Oak(橡树)。后来这帮工程师经常端着爪哇岛的咖啡讨论这门编程语言,后来又改名为java
Java并没有在其源出的设计应用场景中取得多大成功,但是无心插柳柳成荫,上世纪90年代web服务技术方兴未艾,基于人们对于多媒体技术的渴望,很多人就尝试着在网页中展示出一些动态效果,但是C、C++其实都不合适,而Java这种编程语言其设计的目的就在于一次编译、到处运行。它结合java的虚拟机实现运行在多种多样的平台之上,正是这种特点引起了web开发方面技术人员的关注,直至后来成为市场占有量第一的编程语言
1995年Java1.0诞生,哲学思想为Write once,Run Anywhere(一次编写,到处运行)
1996年发布JDK1.0(Java开发工具箱),JDK是一个能够让程序员开发、调试、运行应用程序的研发环境(Jav ...
Memcached简单介绍
一、简单介绍
Memcached是一个高性能的Key、value数据缓存,早期是LiveJournel旗下的一个程序员研发的一款程序
1. 特性
协议简单:文本格式协议
为了能够实现较高并发性,基于libevent事件处理
基于内存完成数据缓存
支持集群,但它的集群是互不通信集群
2. 内存管理
memcache的内存管理机制叫做slab allocation,它是将内存分配成各种固定大小chunk,把其中尺寸相同的块归类成组
二、安装
可以直接使用yum安装:yum install memcached -y
/usr/bin/memcached:主程序
/usr/bin/mwmcached-tool:tool工具,实现统计数据及管理的工具
/usr/lib/systemd/system/memcached.service:unit file
/etc/sysconfig/memcached:配置文件
三、配置
PORT="11211" 端口USER="memcached" 运行程序的用户MAXCONN="1024& ...
ansible基础
一、 基础概念
Ansible发布于2012年,当年就被评为开源项目top10。基于python语言研发,部署简单
1. 架构
Ansible:基础框架核心模块
Core modules:核心模块,完成最基本的系统配置、管理等相关功能
Custom modules:自定义模块,支持市面上大部分编程语言来开发模块
Plugins:可以基于插件方式完成额外的功能扩展 connection plugins:链接插件,主要功能是链接各被管理的主机host inventory:主机清单,定义被管理主机playbooks:任务清单
2. 特性
平缓的学习曲线(Minimal Learning curve,auditability)
No bootstrapping:无需用到bootstrapping功能
No DAG ordering,Fails Fast:非有向无环图形式,快速失败机制
No Agent、No Server
No additional PKI:不依赖于额外的ssl服务
Modules in any language:高度模块化,通过调用特性的模块完成特定任务
YAM ...
dhcp、tftp基础
一、DHCP相关
早期硬盘曾经是一种非常稀缺的资源,那个时候无盘工作站非常流行,每台工作站没有操作系统,开机时都要到服务器上去加载服务器提供的操作系统到内存中,为了能让其到服务器上获取到必要的文件,诞生了一种协议叫做bootp(boot protocol),其可以借助带有自我唤醒功能的网卡发送广播报文去服务器上申请IP地址,而后服务器再将工作站需要的操作系统文件发送之,但是其分配IP地址为永久分配。所以后来就出现了DHCP(Dynamic Host Configuration Protocol),其引入了租期的概念
1. 工作流程
第一步(dhcp discover):客户端开机后,因自身并没有IP地址,所以通过RARP进行广播寻找DHCP服务器
第二步(dhcp offer):服务器端收到广播后,会分配给客户端IP、MASH、GW、DNS等等
第三步(dhcp request):客户端可能会收到多个dhcp服务器的回应,它会在多个服务端选择一个并发送dhcp请求使用报文,这个报文也是广播的,意思我选定某台dhcp服务器,而后未被选中的dhcp服务器将刚分配的地址回收
第四步(dhc ...
Keepalived基础
一、keepalived的组成
keepalived就是vrrp协议在Linux主机上,以守护进程方式运行的实现,其能够根据配置文件,自动生成IPVS规则,并且还可以对各RS做健康状态检测
核心组件
vrrp stack:vrrp协议实现的核心ipvs wrapper:为集群中的节点生成ipvs规则checkers:为ipvs集群内的各主机做健康状态检测
控制组件:实现keepalived配置文件的分析、加载
IO复用器
内存管理组件:管理高可用时的内存空间占用
二、安装
1. 安装前配置环境
同步个节点时间
配置iptables及selinux
各节点之间可通过主机名ping通(非必须)
确保各节点用于服务的网卡支持多播通信
2. 安装
从CentOS 6.4之后,keepalived就被收录进base仓库中,可直接使用yum安装
yum install -y keepalived
三、相关文件
主配置文件:/etc/keepalived/keepalived.conf
/usr/bin/genhash
核心程序:/usr/sbin/keepalived
Unit fi ...
Nginx基础
一、基础概念
engine X, 是一个高性能的HTTP服务器和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,nginx因高性能、稳定、丰富的功能集、配置简单和低资源消耗而知名,是众多用于解决C10K问题的服务器之一。跟传统的服务器不同,nginx并不依赖线程处理请求,是一个具有扩展能力基于事件驱动或异步I\O的实现,在非常繁重的生产环境中,它只需要很少的内存资源,即便你没有机会处理那么大的并发量,依然可以从nginx的高性能和低内存消耗中受益
1. nginx的架构
由两级程序结构组成:master、worker。master负责管理worker,每一个worker都能处理多个用户请求,可以通过http、fastcgi、memcache协议代理至后端服务器,nginx也可以管理缓存,后端服务器的响应内容可以先缓存在本地,通过cache loader(缓存加载器)和cache manager(缓存管理器)管理缓存空间
2. Nginx特性
高度模块化设计、有较好的扩展性,早期的的模块不支持DSO机制,近期版本支持模块动态装载和卸载
1. 核心模块(core ...
lvs基础应用
一、 基本概念
1. lvs的架构类型
在lvs架构模型中的三种角色
客户端:公网中的用户,在lvs架构中其IP称为CIP
调度器:可以称为Director、dispatcher、balancer,负责将客户端的请求调度至真正提供服务的服务器上,调度器中有两个IP地址,其一为向互联网提供服务的IP地址,称为VIP。其二为与后端服务器通信的IP地址称为DIP
RS:Real Server,真正提供服务的主机,其上的IP地址称为RIP
(1) nat类型
结合上图分析nat类型中的调度机制
① 当用户请求到达时,源地址是CIP,目标地址是VIP
② 调度器收到请求后,按照常规应该送到本机的INPUT链上,但是通过IPVS规则强行将报文定向至POSTROUTING链完成出站,并调度到后端的某个RS上,此时报文的源地址是CIP,目标地址是RIP
③ 请求处理完成后,回复报文将原路返回,此时的源地址为RIP,目标地址为CIP
④ 调度器收到请求后,将报文的源地址改为VIP,目标地址为CIP并返回给客户端
nat类型其实就是后端多目标的DNAT,通过修改请求报文的目标IP地址至挑选出某R ...
Linux内核简单知识点
一、 基础概念
内核的功能:进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能
1. 内核程序的设计流派
单内核设计:把所有功能集成于同一个程序,而后每一个功能在就在程序内部使用线程来实现,这就是内核线程,这种设计好处在于大家结合的更紧密,效率高,但是问题在于任何一个地方产生故障可能会影响全局,Linux是这种设计
微内核设计:每一个功能都使用一个独立的子系统实现,而后在找一个中央调配协调系统,当我们用到什么功能时,就让这些子系统彼此间通信来完成任务。每一个子系统都独立运作,我们可以用一个松散框架将它们联合在一起,问题就是可能效率低,但每一个子系统出现问题不至于影响全局。不过,话虽如此,目前来看虽然微内核设计在理论上是先进的,但是由于其内部的协调机制过于复杂,使得它的任何优越性基本上没能体现,Windows,Solaris就是这种设计
2. Linux内核特点
支持模块化:Linux也充分借鉴了微内核设计的思想,内部的各种功能都被做成独立的功能模块而不是子系统,子系统里面可能包括很多模块并且拥有自制机制,而内核模块就像用户空间库的概念,不过库是被应用程序调用的,而内核模块 ...