第一章
大数据的概念:海量数据的规模巨大到无法通过目前主流的计算机系统在公道时间内获取、存储、管理、处理惩罚并提炼以帮助使用者决策
大数据的特点:①数据量大,存储的数据量巨大,PB级别是常态;②多样,数据的来源及格式多样,数据格式除了传统的布局化数据外,还包括半布局化和非布局化数据;③快速,数据的增长速度快,而且越新的数据代价要求对数据的处理惩罚也要快;④代价密度低,要求设计一种在成本可接受的条件下,快速收罗,发现和分析,从大量多种类别的数据提取代价的体系架构;⑤复杂度,对数据分析处理惩罚的难度大
云计算的概念:云计算是一种商业计算模型,将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据必要获取计算力,存储空间等服务
短定义:云计算是通过网络按需提供可动态伸缩的便宜计算服务
云计算的特点:①超大规模②假造化,支持用户在任意位置在各种终端获取服务,但现实上不必要了解应用运行的详细位置③高可靠性,采用数据多副本容错,节点同构可互换的步伐来保障服务的高可靠性④通用性,云的特殊容错步伐使得可以采用及其便宜的节点来构成云⑤高可伸缩,云的规模可以伸缩⑥按需服务⑥极其便宜,云的特殊容错步伐可以使得用极其便宜的节点来构成云
云计算的分类:
按照服务类型分类:
①将底子办法作为服务IaaS,给用户提供对所有办法的利用服务,弹性云计算ECS、AWS
②将平台作为服务PaaS,将软件研发的平台作为一种服务,百度BAE,新浪SAE,阿里ACE,京东JAE
③将软件作为服务SaaS,协同OA,CRM,财务系统,企业智能系统和企业邮箱
按照摆设模式分类:
①公有云,向公众开放,任何人都能够租赁
②私有云,只向一个企业或单位内的职员使用;分为当地私有云(摆设在企业内部,得当运行关键和秘密业务),托管私有云(托管在第三方机房)
③混合云,只供两个或以上的特定企业或者单位内的职员使用,其他人无权租赁和使用
④社区云,由两个或者以上不同类型的云构成,但用户使用感觉是一个云端资源
第二章
NAT | 假造机可以访问外网,外网不能访问假造机,网段不可以调整 | NAT Network | 假造机可以访问外网,外网不能访问假造机,网段可调整 | Bridged | 假造机可以访问外网,外网可以访问假造机,网段和主机类似 | Host-Only | 假造机不可以访问外网,外网不可以访问假造机,网段和主机类似 | 系统情况配置的步调:①下载安装VirtualBox,下载系统镜像
②最小化安装CentOS,出现安装引导页面时点击Tab键,打开kernel启动选项,增加选项:net.ifnames=0 biosdevname=0,进入后网卡名会按照eth0,eth1的规则命名,同时进入安装页面之后选择最小化安装
③配置假造网络,①设置Nat Network网段(192.168.56.0/24)和 Host-only网段(10.0.0.0/24),网卡一用于Nat网段,网卡二用于Host-only网段。②在/etc/sysconfig/network-script/中设置主机网络,自举协议为static,启动开机自启,设置IPADDR、NETMASK、GATEWAY、DNS1和DNS2;③/etc/hostname修改本主机名称;/etc/hosts修改其他主机名称剖析,然后测试网络连接
④禁用防火墙和SELinux,关闭防火墙(临时关闭)systemctl stop firewalld ,防止自动启动systemctl disable firewalld ;关闭SELinux:修改配置文件/etc/sysconfig/selinux,设置SELINUX=disabled,查抄关闭是否成功(systemctl status firewalld)
⑤配置EPEL,安装wget,然后使用淘宝等镜像源
⑥安装底子软件,安装工具软件包,服务器软件包,和开发工具(JAVA、node.js、gcc)
⑦创建快照并克隆假造机,克隆完成后必要举行网络连通性测试,随后对宿主机配置对所有假造机的免密登录
第三章
集群:一组相互独立的,通过高速网络互联的计算机,构成了一个组,并以单一系统的模式举行管理
集群的特性:一个用户与集群相互作用时,集群就像是一个独立的服务器
使用集群的目的:①提高性能;②低完工本;③提高可扩展性;④增强可靠性
集群的组织方式:①主从布局,将备份服务器连接到主服务器上,备份服务器一样平常不自动提供服务
②多级布局,多个服务器构成的集群服务器,对外都有一个同一的地址,每个集群服务器上都装有类似的应用程序
常用的下令:
取消开机启动systemctl disable nginx;
重启systemctl restart nginx ;
查抄nginx进程ps aux | grep nginx;
查抄端口netstat intp | grep 80或netstat intp | grep nginx
负载均衡的配置搭建
常见的负载均衡方案,分为硬件方案和软件方案;硬件方案采用F5等设备,但是比较贵。软件方案采用在四层使用LVS和在七层使用NginX实现负载均衡
Nginx仅仅是作为Nginx Proxy反向署理使用的,但我们称这个反向署理体现的结果是负载均衡的结果。以是可以称之为负载均衡;真正的负载均衡是转发用户请求的数据包,真正负载均衡是转发用户请求的数据包,而NginX反向署理是接收用户的请求然后重新发起请求去请求厥后面的节点。
三个假造机都打开nginx服务,并查抄nginx的状态
在第三台假造机中(NginX服务器)中必要在/etc/nginx/nginx.conf文件中举行配置,在upstream模块中必要添加模块配置
- upstream www_servers_pool{
- server 192.168.0.11;#可以设置weight=10或20来增加访问节点的权重
- server 192.168.0.12;
- }
复制代码- 在server段中配置
- server{
- ...
- location / {
- proxy_pass http://www_servers_pool;
- }
- }
复制代码 重启第三台假造机的NginX服务,访问10.0.0.13测试,是否能够把流量分布到节点1和节点2中
高可用技术
高可用方案:Keepalived,Heartbeat
VRRP通过竞选机制来将路由的任务交给某台VRRP路由器,工作时主节点发包,备节点接包。当备节点接收不到主节点发送的数据包的时间,就启动接管程序接管主节点中的资源
Keepalived高可用对之间通过VRRP举行通信,在Keepalived服务对之间,只有作为主服务器的一方会一直发送VRRP广播包。
①打开每台假造机的NginX服务
②开启第四台假造机的NginX服务,配置第四台假造主机的/etc/nginx/nginx.conf中的server字段和upstream字段,然后验证访问10.0.0.14是否能够将流量分配到节点1和节点2中
③设置第三个假造机/etc/keepalived/keepalived.conf,添加邮箱,router_id,优先级,以及vrrp的假造IP地址
- notification_defs {
- rainsa@163.com
- ···
- }
- priority 101
- router_id lb01
- vrrp_instance VI_1 {
- virtual_ipaddress {
- 10.0.0.200/8 dev eth1
- }
- }
复制代码 systemctl start keepalived开启keepalived服务,验证访问10.0.0.200时能否将流量分配至节点1和节点2中
④同理在第四个互换机中配置keepalived,只必要修改优先级为99,并且state为BACKUP即可
如何验证节点3和节点4之间keepalived是否配置成功:在假造机3中关闭keepalived服务,然后查抄假造机的eth1中是否会出现10.0.0.200这个网段,且能负载分担;节点三关机后,访问10.0.0.200仍然能实现负载分担;节点三重新开机后又能成为主设备实现负载分担
NginX纵然失效,Keepalived仍然有效,假造IP地址并不会自动迁移。只有当Keepalived服务关闭后迁移假造IP地址。
- #!/bin/bash
- if [ `netstat -lntp | grep nginx | wc -l` -lt 1 ];
- then
- systemctl stop keepalived
- fi
- #赋予权限chmod 777 check_status.sh
- #./check_status.sh
复制代码 但是存在一定的问题,当NginX恢复时,Keepalived并不会自动恢复。Keepalived可以根据返回的状态修改服务状态,比方低落实例的优先级
- #check_nginx.sh
- #!/bin/bash
- if [ `netstat -lntp | grep nginx | wc -l` -lt 1 ];
- then
- exit 2#代表非正常退出
- else
- exit 0
- fi
复制代码-
- vrrp_script check_nginx {
- script "/root/bin/check_nginx.sh"
- interval 2 #执行时间间隔
- weight -50 #设置脚本的权重为-50
- fall 3 #连续执行失败的阈值次数为3,连续三次执行中,执行失败就返回失败
- rise 3 #连续三次执行中,执行成功就返回成功
- timeout 2 #超时内没有得到执行结果就返回执行失败
- }
-
- vrrp_instance VI_1 {
- ...
- track_script {
- check_nginx#跟踪脚本的执行状态
- }
- }
复制代码 网站动静分离
动静分离的拓扑:动态网站+静态网站+负载均衡器,采用NginX实现
动态网站:配置开发情况(Eclipse/IDEA,Gradle/Maven),创建springBoot项目,springBoot项目打包,jar包摆设,为网站创建服务,开机自动启动
注意:NginX默认的负载均衡机制无法支持动态网站,必须修改请求头的内容才气在动态网站之间举行负载均衡
- server{
- ···
- location / {
- proxy_pass http://www.servers_pool;
- proxy_set_header Host $host;
- proxy_set_header X-Forward-For $remote_addr
- }
- }
复制代码 静态网站:Html、css、js文件;静态网站与动态网站之间通过Ajax技术或WebSocket技术相互通信完成前后端对接
最后,在NginX处实现动态网站和静态网站的分离,主要依靠配置不同的路径对应的网址。首先为动态和静态部门配置不同的uptream
- upstream static_servers_pool {
- server 192.16.56.14;
- }
- upstream dynamic_servers_pool {
- server 192.168.56.11
- server 192.168.56.12
- }
复制代码 然后为不同的路径配置不同的upstream:
- location /static/ {
- proxy_passs http://static_servers_pool;
- }
- location / {
- proxy_pass http://dynamic_servers_pool;
- }
复制代码 session保持
session问题的出现是由于负载均衡会将同一个用户的请求往不同的服务器转发,而服务器之间无法共享其他服务器的session数据
主要的解决方案:①服务器之间共享session②使用session集群③使得同一个用户的请求永远转发到同一个服务器
ip-hash的原理:根据用户请求包中的五元组来判断是不是同一个用户的请求
文件上传
文件上传只能上传到单个服务器,不同的用户将负载均衡器分配到不同的服务器节点,则访问的文件可能完全不同
解决的计谋:设置一个(或多个)文件共享节点,然后用户的文件主要上传到这些共享文件节点,不同的用户都能从这个共享文件节点获取;常用的技术是NFS
磁盘阵列
RAID0 | 使用条带化,适用于不必要容错情况中的大型文件 | RAID1 | 使用镜像,写入到一个硬盘的数据同时写入到另一个硬盘 | RAID5 | 在所有硬盘上使用硬盘条带化和分布式奇偶校验 | RAID6 | 分布式奇偶校验(每个带区有两个独立奇偶校验块) | 条带:将数据分割成离散的数据块,并分布到硬盘阵列中的每个物理硬盘上
RAID0:提供高带宽,但是不提供任何的冗余,硬盘发生故障会导致整个阵列数据丢失
RAID1:能提供双倍的读速度,一个硬件发生故障其它硬盘的内容也能运行系统,硬盘要求最少2块硬盘,且必须是偶数;有效容量小,存储空间利用率低
RAID5:适用于读取请求率高但是写入请求率低,必要数据冗余的情况。以最低的容量丧失提供数据冗余,高性能读取;缺点是不得当大量的写入工作;最少必要三块硬盘,允许阵列中的1块硬盘发生故障
RAID6:适用于读取请求率高但写入率低,且必要较高的数据冗余的情况;较高的数据冗余和数据读取率;缺点是双奇偶校验会导致写入性能降落,必要丧失两块硬盘的容量来存放奇偶校验块
RAID10:最多支持8个阵列跨接,有较高的读取性能和数据冗余。缺点是有效容量小,且存储空间利用率较低;每个RAID1阵列允许1块硬盘发生故障
RAID50:最多支持8个阵列跨接每个RAID5阵列允许1个硬盘发生故障,适用于高可靠性,高速率,高速读写的中大型容量情况;必要浪费部门存储空间做奇偶校验
RAID60:每个RAID阵列允许2个硬盘发生错误,最多支持8个硬盘阵列跨接;提供较高的读取性能和数据冗余;不得当大量的写入工作
第四章
分布式的概念:一组独立的计算机展现给用户的是一个系统来完成一个同一的工作,但是系统内可以动态地分配任务。分散的物理和逻辑资源通过计算机网络实现信息的互换
分布式的特点:计算速度加快,对等性(没有主从之分)、并发性、缺乏全局时钟、故障总会发生
分布式与集群的区别:①原理上,集群中每台服务器执行的任务都是一样的。本质上是将几台服务器集合到一起来实现同一业务。分布式是按照一定的算法将任务分配给多台服务器,提高的是执行任务的时间,业务被分配到不同的地方
②容错能力上,集群服务器中如果有故障的服务器,可以自动隔离,问题解决后再自动恢复;而分布式服务器一旦出现问题,任务就无法正常执行
Reidis的根本操作
Redis不区分下令大小写,但是区分键名的大小写
help @获取组中的所有下令
help获取下令帮助
quit退出
- 获得符号规则的键名称
- keys 表达式 (?,*,[],\?)
- 判断一个键是否存在
- exists key
- 删除键
- del key
- del key1 key2
- 批量删除
- redis-cli del `redis-cli keys "key*"`
- redis-cli keys "key*": 这是在 redis-cli内部再次执行keys 命令,以匹配所有以 "key" 开头的键。keys` 命令用于获取匹配指定模式的所有键的列表。
- 获得键值的数据类型
- type key
- 返回的值可能是string,hash,list,set,zset
复制代码 使用config set 可以动态地设置参数信息,服务器重启后就失效了
- config set appendonly yes
- config set save "90 1 30 10 60 100"
复制代码 使用config get可以查看所有可以使用config set下令设置的参数
使用config rewrite下令对启动Redis服务器时所指定的redis.conf文件举行改写。该指令对文件的重写是原子性的,并且是同等的。如果重写失败或出错那么这个文件就不会被修改
IP Hash实现session保持的缺点解决办法:
①持续化session到数据库
②使用Redis共享session
③使用memcache同步session
④通过脚本或保卫进程在多台服务器之间同步session
⑤使用NFS共享session
⑥使用cookie共享session
HDFS
两类节点:①namnode,管理文件系统的命名空间,维护系统文件树及整棵树内所有的文件和目录关系
②datanode,以数据块的形式存储详细的数据
缓存与同等性哈希
缓存是存储在计算机上的一个原始数据复制集,介于数据访问者与数据源之间的一种高速存储。当数据读取的时间,直接从高速存储中获取,如果可以获取到结果就无需访问数据库直接返回缓存的内容
如果缓存未掷中,就从数据库中获取,一方面可以提高数据的读取速度,另一方面还能低落数据库的性能斲丧。没有缓存拦截,大量的请求直接落到系统的底层,系统很难撑住高并发的打击
缓存穿透:查询一个根本不存在的数据,大量的缓存穿透直接落到存储层,后端系统容易被压垮
缓存雪崩:缓存层由于某些原因不等你提供服务,导致所有的请求直接到达存储层
防备和解决缓存穿透与缓存雪崩的方案:
①取模法,对键值取节点数的余。存在一定问题:扩展能力差,容错能力不佳
②同等性哈希,首先构建一个哈希环,然后计算缓存集群中服务器的IP或主机名来计算得到Hash值,计算得到的Hash值就是服务节点在环上的位置
然后对每个必要存储的数据key也同样计算一次哈希值,计算之后的哈希值也映射到环上,然后沿着环的顺时针方向寻找到第一个服务器节点,就是存储节点
同等性哈希能把节点宕机造成的影响控制在顺时针相邻节点之间,避免对整个集群造成影响
同等性哈希存在的问题:当服务器节点聚集在一起,容易造成数据倾斜问题,给单个节点造成很大的压力。解决办法是采用假造节点,将假造节点分散在哈希环的各个部门,打在假造节点上的数据现实也是映射到物理节点上
假造化
假造机迁移:将假造机实例从原宿主机迁移到目标宿主机中,并且在目标宿主机上能够将假造机运行状态恢复到其在迁移之前类似的状态,以便继续完成应用程序的任务
假造机迁移的分类:①从源和目的角度分:物理机到假造机,假造机到物理机,假造机到假造机
②按照迁移的状态:假造机停机迁移(冷迁移)、假造机在线迁移(热迁移、实时迁移)
实时迁移的步调:①预迁移;②预定资源;③预复制;④停机复制;⑤提交启动
假造机和假造化容器的区别
Docker
Docker是一个开源的应用容器引擎,基于GO语言并可以让开发者打包他们的应用及依赖包到一个轻量级,可移植的容器中,然后发行到任何流行的Linux机器上
Docker包罗三个根本概念:镜像(相当于一个root文件系统)、容器(镜像运行时的实体)、仓库(一个代码中心,可以用来生存镜像)
Docker使用客户-服务器(C/S)的架构模式,使用远程API来管理和创建Docker容器
常见下令:
- 在容器内运行应用程序
- docker run ubuntu:15.10 /bin/echo "Hello world"
- -t指定一个伪终端,-i允许对容器内的输入进行交互
- docker run -i -t ubuntu:15.10 /bin/bash
- 以进程的方式运行容器
- docker run -d ubuntu:15.10 /bin/sh -c "命令"
- 查看运行中的容器
- docker ps
- 查看容器内的标准输出
- docker logs [容器ID或容器名]
- 停止容器
- docker stop [容器ID或容器名]
- 从远程仓库载入ubuntu镜像
- docker pull ubuntu
- 进入交互模式
- docker attach:退出会导致容器停止
- docker exec:退出容器终端并不会导致容器停止
- 删除容器
- docker rm -f [容器ID或容器名]
- docker rmi [ID或镜像名]
- 查看网络端口
- docker ps
- docker port [容器ID] 将内部的TCP端口映射到外部端口 5000 tcp -> 0.0.0.0:5000
- 查看容器内部运行的进行
- docker top
- 列出本地主机上的镜像
- docker images
- 搜索镜像
- docker search httpd
- 提交容器副本
- docker commit -m="has update" -a="镜像作者" [容器ID] [创建的目标镜像名]
- 镜像标签
- docker tag [镜像ID] [用户名字] [镜像源名称] [新的标签名]
- 端口映射,让外部也能访问这些应用
- docker run -d -p 5000:5000 training/webapp python app.py //先是主机端口,再是容器端口
- -p是容器内部端口绑定到指定的主机端口
- -P是内部端口随机映射到主机的高端口
复制代码 OpenStack
OpenStack的核心服务(组件):①计算服务Nova;②存储服务Swift;③镜像服务Glance;
别的主要服务(组件):④身份认证服务keystone;⑤网络管理服务Quantum;⑥存储管理服务Cinder;⑦仪表盘Horizon
计算服务:Nova
是OpenStack云中的计算组织控制器,处理惩罚OpenStack云中实例生命周期内的所有活动,不具备假造化能力
组件:API Server:向外提供与云底子办法交互的接口
Message Queue:OpenStack节点之间通过消息队列完成通信
computer worker:管理实例生命周期
Network Controller:处理惩罚主机的网络配置
Volume Workers:管理基于LVM的实例卷
Scheduler:调度器作为一个保卫进程运行,并通过适当的调度算法从资源池得到计算服务
LibVirt的主要支持功能:
①假造机管理
②远程机器支持
③存储管理
④网络接口管理
⑤假造NAT和基于路由的网络
OpenStack的版本
采用次序命名法,用完了再回来重新命名
第五章
数据中心网络与传统Internet网络的区别:高设备利用率,采用假造化技术举行系统和数据中心整合,优化资源利用率,简化管理
绿色节能,通过先进的供电和散热技术,低落数据中心的能耗
高可用性,提供大量同质化设备和替换恢复机制,确保资源的可用性和数据的持久性
自动化管理
FatTree
相对于传统条理布局而言,FatTree的特点:①消除了树形布局上层链路对吞吐量的限制,所有互换机配置均类似;②为内部节点间通信提供多条并行链路;③横向扩展的尝试低落了构建数据中心网络的成本;④与现有数据中心网络使用的以太网布局和IP配置的服务器兼容
FatTree的计算
核心层互换机有k个出口,能够创建k个Pod吗,每个pod有k个互换机。接入层与汇聚层有一半的端口是完全关联的。
汇聚层互换机数量=接入层互换机数 = (k/2)* k
核心层互换机数量 = (k/2) * (k/2) 因为一个pod中一个汇聚层互换机向上有k/2个接口
主机数 = (k/2) * (k/2) * k
从终端到接入层的网络容量 = (k/2) * (k/2) * k
接入层到汇聚层的网络流量 = (k/2) * k * (k/2)
汇聚层到核心层的网络流量 = (k/2)*k*(k/2)
改进型树布局:采用VL2架构,将流量同一地分配到网络路径
递归条理数据中心:构建高条理网络时,必要的低层网络的个数等于每个低层网络中的服务器个数加1
光互换数据中心
无线数据中心
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |