2020-09-18

目录

一、技能方面

1、linux基础

2、网络方面知识

3、DNS

4、DHCP

5、NFS

6、FTP 

7、shell 脚本的编写

8、python 实现过简单的冒泡排序、插入排序、快速排序

1)Bubble Sort(冒泡排序)

2)插入排序

 3)Quick Sort(快速排序)

9、python 中的 Django 框架,并用 Django 搭建过简单的图书管理系统、文件对比系统等

10、自动化部署过 Apache、Nginx、Tomcat 等网络服务

11、 Apache、Nginx 的配置,例如虚拟主机设定、网页重定向、端口转发、黑白名单等,熟悉 Nginx 等代理软件的工作原理及配置,实现反向代理

12、主流的高可用架构(Nginx、Haproxy、LVS 负载均衡+keepalived)的部署

13、mysql 的主从复制、半同步复制、组复制、高可用原理、索引、引擎

14、CDN 架构原理、流量模型等

15、zabbix 等监控软件部署、配置与维护

16、saltstack、ansible 等自动化部署服务

17、docker

三、项目方面

1、CMDB

2、LVS-DR keepalived

3、tomcat会话保持

4、ansible自动化部署高可用集群

 

 


一、技能方面

1、linux基础

https://blog.csdn.net/ThinkWon/article/details/104588679?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159704426219724811811683%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=159704426219724811811683&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v3~rank_business_v1-1-104588679.ecpm_v3_rank_business_v1&utm_term=linux%E9%AB%98%E5%8F%AF%E7%94%A8%E9%9D%A2%E8%AF%95&spm=1018.2118.3001.4187       linux概述、磁盘、安全、命令大全

https://blog.csdn.net/weixin_46833747/article/details/108052438 高频命令合集(top、ps、tar、ls、mkdir)

https://blog.csdn.net/weixin_46833747/article/details/108230122 iptables三表五链

https://blog.csdn.net/weixin_46833747/article/details/108228180 文本处理三剑客实操

https://blog.csdn.net/weixin_46833747/article/details/107120593 文本三剑客基础

2、网络方面知识

https://blog.csdn.net/weixin_46833747/article/details/107563947  四层、五层、七层模型

https://blog.csdn.net/weixin_46833747/article/details/107913765  http状态码

https://blog.csdn.net/weixin_46833747/article/details/108156267  dns解析 访问url过程  拥塞控制 流量控制

https://blog.csdn.net/weixin_46833747/article/details/108308113  http、https、http1.0 1.1 2.0、close_wait、粘包

https://blog.csdn.net/weixin_46833747/article/details/107775859  三次握手、四次挥手

https://blog.csdn.net/weixin_46833747/article/details/108559433  cookie session,buffer、cache,get、post,TCP流量控制,拥塞控制,进程、线程,负载与cpu使用率,硬链接软连接,系统启动,raid,查看进程使用,五种I/O模型

3、DNS

1)什么是DNS?

域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的
一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制
是63个字符,域名总长度则不能超过253个字符。

2)DNS解析过程?

1.浏览器检查缓存种有没有这个域名对应的解析过的ip地址,如果有该解析过程将会结束。
2.检查本地的hosts文件是否有这个网址映射关系
3.如果hosts种没有这个域名映射,查找本地DNS解析器缓存,如果有直接返回
4.通过首选DNS服务器(本地域名服务器),以递归或循环的方式查询域名对应的ip地址并返回。(顶级域,二级域,三级域)

先递归:

1、浏览器缓存

2、/etc/hosts

3、/etc/resolv.conf


再迭代:

本地域名服务器--->顶级域--->二级域--->三级域

3)DNS架构

关于域名的层次结构,如下图所示:

在这里插入图片描述

比如:www.baidu.com
1. com: 一级域名. 表示这是一个企业域名。同级的还有 “net”(网络提供商), “org”(⾮非盈利组织) 等。
2. baidu: 二级域名,指公司名。
3. www: 只是一种习惯用法。

4)DNS劫持

DNS劫持 就是通过劫持了 DNS 服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原 IP 地址转入到修改后的指定 IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。DNS劫持 通过篡改 DNS 服务器上的数据返回给用户一个错误的查询结果来实现的。

DNS劫持 症状:某些地区的用户在成功连接宽带后,首次打开任何页面都指向 ISP 提供的“电信互联星空”、“网通黄页广告”等内容页面。还有就是曾经出现过用户访问 Google 域名的时候出现了百度的网站。这些都属于 DNS劫持。

对于 DNS劫持,可以通过手动更换 DNS 服务器为 公共DNS 解决。

DNS劫持手段

  1. 利用DNS服务器进行DDOS攻击

      正常的DNS服务器递归查询过程可能被利用成DDOS攻击。假设攻击者已知被攻击机器的IP地址,然后攻击者使用该地址作为发送解析命令的源地址。这样当使用DNS服务器递归查询后,DNS服务器响应给最初用户,而这个用户正是被攻击者。那么如果攻击者控制了足够多的肉鸡,反复的进行如上操作,那么被攻击者就会受到来自于DNS服务器的响应信息DDOS攻击。

      攻击者拥有着足够多的肉鸡群,那么就可以使被攻击者的网络被拖垮至发生中断。利用DNS服务器攻击的重要挑战是,攻击者由于没有直接与被攻击主机进行通讯,隐匿了自己行踪,让受害者难以追查原始的攻击来。

  2. DNS缓存感染

      攻击者使用DNS请求,将数据放入一个具有漏洞的的DNS服务器的缓存当中。这些缓存信息会在客户进行DNS访问时返回给用户,从而把用户客户对正常域名的访问引导到入侵者所设置挂马、钓鱼等页面上,或者通过伪造的邮件和其他的server服务获取用户口令信息,导致客户遭遇进一步的侵害。

  3. DNS信息劫持

      TCP/IP体系通过序列号等多种方式避免仿冒数据的插入,但入侵者如果通过监听客户端和DNS服务器的对话,就可以猜测服务器响应给客户端的DNS查询ID。每个DNS报文包括一个相关联的16位ID号,DNS服务器根据这个ID号获取请求源位置。攻击者在DNS服务器之前将虚假的响应交给用户,从而欺骗客户端去访问恶意的网站。假设当提交给某个域名服务器的域名解析请求的DNS报文包数据被截获,然后按截获者的意图将一个虚假的IP地址作为应答信息返回给请求者。原始请求者就会把这个虚假的IP地址作为它所要请求的域名而进行访问,这样他就被欺骗到了别处而无妨连接想要访问的那个域名。

  4. DNS重定向

      攻击者将DNS名称查询重定向到恶意DNS服务器上,被劫持域名的解析就完全在攻击者的控制之下。

  5. ARP欺骗

      ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP病毒,则感染该ARP病毒的系统将会试图通过”ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。

      ARP欺骗通常是在用户局网中,造成用户访问域名的错误指向。如果IDC机房也被ARP病毒入侵后,则也可能出现攻击者采用ARP包压制正常主机、或者压制DNS服务器,以使访问导向错误指向的情况。

  6. 本机劫持

      本机的计算机系统被木马或流氓软件感染后,也可能会出现部分域名的访问异常。如访问挂马或者钓鱼站点、无法访问等情况。本机DNS劫持方式包括hosts文件篡改、本机DNS劫持、SPI链注入、BHO插件等方式。

5)智能DNS

智能NDS又称为解析切割,是对请求DNS解析的IP地址进行判断,将域名解析成不同的IP地址

一般智能DNS应用常见的场景就是CDN,中国特色的网络结构,就是联通和电信,二者通过在北京的机房的100G的宽带相连,这就导致了电信访问联通的会非常慢,所以CDN的原理就在智能DNS基础上进行web反向代理缓存实现的,通过不同地域的请求解析到对应的缓存服务器上,然后缓存服务器对主服务器进行数据请求,最终返回给客户,这对静态网页的网站非常有用

6)什么是A记录?

A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置自己域名的二级域名。

7)什么是CNAME记录?

即:别名记录。这种记录允许您将多个名字映射到另外一个域名。通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“host.mydomain.com”(A记录)。它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。这两个别名的全称就 http://www.mydomain.com/和“mail.mydomain.com”。实际上他们都指向host.mydomain.com”。

8)使用A记录和CNAME进行域名解析的区别

A记录就是把一个域名解析到一个IP地址(Address,特制数字IP地址),而CNAME记录就是把域名解析到另外一个域名。其功能是差不多,CNAME将几个主机名指向一个别名,其实跟指向IP地址是一样的,因为这个别名也要做一个A记录的。但是使用CNAME记录可以很方便地变更IP地址。如果一台服务器有100个网站,他们都做了别名,该台服务器变更IP时,只需要变更别名的A记录就可以了。

9)使用A记录和CNAME哪个好?

域名解析CNAME记录A记录哪一种比较好?如果论对网站的影响,就没有多大区别。但是:CNAME有一个好处就是稳定,就好像一个IP与一个域名的区别。服务商从方便维护的角度,一般也建议用户使用CNAME记录绑定域名的。如果主机使用了双线IP,显然使用CNAME也要方便一些。

A记录也有一些好处,例如可以在输入域名时不用输入WWW.来访问网站哦!从SEO优化角度来看,一些搜索引擎如alex或一些搜索查询工具网站等等则默认是自动去掉WWW.来辨别网站,CNAME记录是必须有如:WWW(别名)前缀的域名,有时候会遇到这样的麻烦,前缀去掉了默认网站无法访问。

有人认为,在SEO优化网站的时候,由于搜索引擎找不到去掉WWW.的域名时,对网站权重也会有些影响。因为有些网民客户也是不喜欢多写三个W来访问网站的,网站无法访问有少量网民客户会放弃继续尝试加WWW.访问域名了,因此网站访问浏览量也会减少一些。

10)全世界有多少根DNS?

13个,其中10个在美国,英国和瑞典各1个,日本1个。

有被问到中国大陆有没有根DNS。回答亚洲有一台。

11)DNS何时使用TCP协议,何时使用UDP协议?

DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议。
DNS的规范规定了2种类型的DNS服务器,一个叫主DNS服务器,一个叫辅助DNS服务器。
在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。当一个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(zone transfer)。

为什么既使用TCP又使用UDP?

首先了解一下TCP与UDP传送字节的长度限制:
UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。当DNS查询超过512字节时,协议的TC标志出现删除标志,这时则使用TCP发送。通常传统的UDP报文一般不会大于512字节。
区域传送时使用TCP,主要有一下两点考虑:

  1. 辅助域名服务器会定时(一般是3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会执行一次区域传送,进行数据同步。区域传送将使用TCP而不是UDP,因为数据同步传送的数据量比一个请求和应答的数据量要多得多。
  2. TCP是一种可靠的连接,保证了数据的准确性。

域名解析时使用UDP协议

客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。
虽然从理论上说,客户端也可以指定向DNS服务器查询的时候使用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。

4、DHCP

1)什么是DHCP?

DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口。

2)DHCP的作用与应用场景

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。 

3)DHCP分配地址的方式

(1) 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。 

(2) 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。

(3) 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。 [

三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。

4)DHCP工作原理

DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口。详细过程如下:

四步租约:
①客户机请求IP(客户机发DHCPDISCOVER广播包);
②服务器响应(服务器发DHCPOFFER广播包);
③客户机选择IP(客户机发DHCPREQUEST广播包);
④服务器确定租约(服务器发DHCPACK/DHCPNAK广播包)。

5)DHCP搭建过程

服务端:

1.rpm -ivh dhcp-server-4.3.6-30.el8.x86_64.rpm    安装dhcp服务器

2.编辑dhcp配置文件

在这里插入图片描述

在这里插入图片描述

3.重启服务,查看状态

客户端:

1.编辑网卡静态文件

在这里插入图片描述

2.重启网络服务,自动获得ip

在这里插入图片描述

服务端查看分派的ip

在这里插入图片描述

5、NFS

原理

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

NFS包括两部分,服务端及客户端

由于NFS服务功能很多,会有很多端口,这些端口还有可能不固定,那么客户端就无法与服务器进行通信,因为程序间通信必须通过端口(tcp/udp都是端到端通信),那么就需要一个中间的桥接机制,RPC进程即充当这样一个角色,RPC的端口是一定的(111),当NFS启动时,会向RPC进行注册, 那么客户端PRC就能与服务器RPC进行通信, 从而进行文件的传输。 

当客户端用户打开一个文件或目录时,内核会判断,该文件是本地文件还是远程共享目录文件,如果是远程文件则通过RPC进程访问远程NFS服务端的共享目录,如果是本地文件,则直接打开。

为了更好的并发,RPC进程及NFS进程都有多个。

NFS的搭建

首先确保服务端与客户端的火墙与selinux是关闭的

服务端

[root@server1 ~]# mkdir nfs_test                       #创建测试目录
[root@server1 ~]# vim /etc/exports                     #在配置文件中写入要共享的目录及权限
[root@server1 ~]# cat /etc/exports
/nfs_test  172.25.1.0/24(rw,sync)
[root@server1 ~]# exportfs -rv                         #使共享文件生效
[root@server1 ~]# chmod 777 nfs_test/                  #授权,使得客户端对文件可进行读写
[root@server1 ~]# systemctl start nfs-server.service   #开启服务

客户端

[root@server2 ~]# mkdir /nfs_test/              #创建与共享目录名称相同的目录以便挂载
[root@server2 ~]# showmount -e 172.25.1.1       #查看共享目录
Export list for 172.25.1.1:
/nfs_test 172.25.1.0/24
[root@server2 ~]# mount 172.25.1.1:/nfs_test/ /nfs_test/     #进行挂载
[root@server2 ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   17G  8.5G  8.6G  50% /
devtmpfs               966M     0  966M   0% /dev
tmpfs                  982M     0  982M   0% /dev/shm
tmpfs                  982M   11M  972M   2% /run
tmpfs                  982M     0  982M   0% /sys/fs/cgroup
/dev/sr0               4.2G  4.2G     0 100% /iso
/dev/sda1             1014M  179M  836M  18% /boot
tmpfs                  197M  4.0K  197M   1% /run/user/42
tmpfs                  197M   20K  197M   1% /run/user/0
172.25.1.1:/nfs_test    17G  4.3G   13G  26% /nfs_test
[root@server2 ~]# cd /nfs_test/
[root@server2 nfs_test]# ls
[root@server2 nfs_test]# touch sss          #写操作成功,且写入的文件服务端可见,反之亦然
[root@server2 nfs_test]# ls
sss

6、FTP 

ftp:(File Transfer Protocol,文件传输协议) FTP 是 TCP/IP 协议组中的协议之一,互联网中最老牌的文件传输协议。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

https://blog.csdn.net/weixin_46833747/article/details/106341733

服务端:

dnf install vsftpd -y

vim /etc/vsftpd/vsftpd.conf

 anonymous_enable=YES     启动匿名用户的访问功能

systemctl restart vsftpd

客户端:

lftp ip

7、shell 脚本的编写

shell脚本基础知识(test中各种符号)

https://blog.csdn.net/weixin_46833747/article/details/107028615

基础脚本(显示ip、登录用户,清空日志,用户控制)

https://blog.csdn.net/weixin_46833747/article/details/107160543#%E7%BB%83%E4%B9%A05%EF%BC%9A

判断目录存在、路径是否有效、ip是否能ping通,自动搭建服务apache等

https://blog.csdn.net/weixin_46833747/article/details/107321546

8、python 实现过简单的冒泡排序、插入排序、快速排序

https://blog.csdn.net/weixin_46833747/article/details/108105940#%E4%B8%80.Bubble%20Sort%EF%BC%88%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F%EF%BC%89   常见排序方法及其复杂度

1)Bubble Sort(冒泡排序)

过程: 
1. 从0位置开始,比较相邻两个数的大小,如果后面的数小于前面,则交换位置。 
2. 遍历一遍下来,最后一个数为整个数组中的最大值。 
3. 把最后一个数排除,继续比较剩下的数组。 
4. 总共比较次数为N*N,时间复杂度为O(n²)

def bubble_sort(blist):

count = len(blist)

for i in range(0, count):

for j in range(i + 1, count):

if blist[i] > blist[j]:

blist[i], blist[j] = blist[j], blist[i]

return blist



blist = bubble_sort([4, 5, 6, 7, 3, 2, 6, 9, 8])

print(blist)

2)插入排序

过程:

1.从1位置开始,比较与前面数的大小,如果小于前面的数,则交换位置,直到不再小于停止。
2.接着从2位置开始,重复这个过程。直到最后位置为止。
3.时间复杂度取决于数组的排序情况,当数组基本有序时候,复杂度很低,接近O(n)。当数组完全无序时,每个数都要经过多次移动,复杂度趋近于O(n²)。

def insert_sort(ilist):
    for i in range(len(ilist)):
        for j in range(i):
            if ilist[i] < ilist[j]:
                ilist.insert(j, ilist.pop(i))
                break
    return ilist
 
ilist = insert_sort([4,5,6,7,3,2,6,9,8])
print ilist

 3)Quick Sort(快速排序)

快速排序是一种很重要也很常用的排序,也有一些很重要的应用,比如说BFPRT算法,荷兰国旗问题。
快速排序如果每次都选到最大值,或者最小值,就会产生最坏的情况,使复杂度达到O(n²)级别。但是可以通过随机选择partition值,从数学期望上避免这种情况的发生。所以可以默认其复杂度为O(N * lg N)。
一般默认快速排序是非稳定的。
过程:

1.随机选出一个partition值,把大于partition值的放在它右边,小于它的放在它左边。
2.从partition值的左右两边分割,调用自己,开始递归。
3.这里有一点优化,因为partition值在数组中可能不止一个,因此返回一个长度为2的数组,代表partition的左右边界,从边界两端进行递归,更加快速。

def quick_sort(qlist):
    if qlist == []:
        return []
    else:
        qfirst = qlist[0]
        qless = quick_sort([l for l in qlist[1:] if l < qfirst])
        qmore = quick_sort([m for m in qlist[1:] if m >= qfirst])
        return qless + [qfirst] + qmore
 
qlist = quick_sort([4,5,6,7,3,2,6,9,8])
print (qlist)

9、python 中的 Django 框架,并用 Django 搭建过简单的图书管理系统、文件对比系统等

https://blog.csdn.net/weixin_46833747/article/details/107768423 Django常见面试题

10、自动化部署过 Apache、Nginx、Tomcat 等网络服务

nginx

firefox http://nginx.org/en/download.html  下载nginx1.18.0
tar zxf nginx-1.18.0.tar.gz 
cd nginx-1.18.0/
yum install gcc -y               安装依赖项
yum install pcre-devel
yum install -y openssl-devel
./configure --prefix=/usr/local/nginx --with-http_ssl_module 
make
make install
cd /usr/local/nginx/sbin/
./nginx -v
./nginx -t
./nginx 
netstat -antlp|grep :80

tomcat

tomcat部署:

yum insatll jdk-8u121-linux-x64.rpm
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local
cd /usr/local/
ln -s apache-tomcat-7.0.37/ tomcat  制作软连接
cd /usr/local/tomcat/webapps/ROOT
vim test.jsp                        
cd /tomcat/bin/
sh startup.sh                

11、 Apache、Nginx 的配置,例如虚拟主机设定、网页重定向、端口转发、黑白名单等,熟悉 Nginx 等代理软件的工作原理及配置,实现反向代理

https://blog.csdn.net/weixin_46833747/article/details/108121893 Nginx总结

12、主流的高可用架构(Nginx、Haproxy、LVS 负载均衡+keepalived)的部署

https://blog.csdn.net/weixin_46833747/article/details/107849336 负载均衡

13、mysql 的主从复制、半同步复制、组复制、高可用原理、索引、引擎

https://blog.csdn.net/weixin_46833747/article/details/108394728    mysql各种复制+索引+引擎

https://blog.csdn.net/ThinkWon/article/details/104778621    mysql大全

https://blog.csdn.net/weixin_46833747/article/details/108519180#zabbix%E7%9B%91%E6%8E%A7NGINX  redis项目

https://blog.csdn.net/Aimee_c/article/details/106204002 redis+mysql具体流程

https://blog.csdn.net/weixin_46833747/article/details/108140487#redis%E7%9A%84%E4%B8%BB%E4%BB%8E%E5%A4%8D%E5%88%B6 redis主从复制、高可用、集群

https://blog.csdn.net/weixin_46833747/article/details/108175589   redis大全

14、CDN 架构原理、流量模型等

https://blog.csdn.net/weixin_46833747/article/details/108564214

讲解CDN逻辑:

CDN是干啥的(提高访问速度)

CDN的原理(域名--->本地DNS--->特殊DNS服务器返回最近的CDN的ip--->调度至最近的CDN--->CDN用缓存实现加速)

CDN存储的资源(静态资源:图片、视频)

CDN的架构

15、zabbix 等监控软件部署、配置与维护

https://blog.csdn.net/qq_35887546/article/details/104857783   zabbix基础(特点、组件、通讯方式)

在这里插入图片描述

https://blog.csdn.net/weixin_46833747/article/details/108324555    zabbix主动被动、自定义发现、与naigos、open-falcon对比

https://blog.csdn.net/weixin_46833747/article/details/108519180#zabbix%E7%9B%91%E6%8E%A7NGINX  zabbix监控nginx

16、saltstack、ansible 等自动化部署服务

ansible

https://blog.csdn.net/weixin_46833747/article/details/108441827

saltstack

17、docker

https://blog.csdn.net/weixin_46833747/article/details/108441253  namespace隔离 cgroup限定进程资源使用

https://blog.csdn.net/yrx420909/article/details/105358539 什么是docker

https://blog.csdn.net/yrx420909/article/details/105358294 docker与虚拟机区别

三、项目方面

1、CMDB

1.实验目的

通过编写django框架的各个模块,实现对存活主机信息扫描,并以网页方式呈现给用户

2.实验步骤

1.创建本地数据库,将信息写入settings.py,通过models.py定义数据库结构(存储数据类型、需要创建的表),make migrations、migrate到本地数据库中,在admin.py注册数据库,并创建超户后台管理数据库。

2.编写utils封装nmap、telnetlib、paramiko函数,编写views调用三个函数并实现前端与后端的交互。

3.编写urls,主路由调用子路由,子路由调用视图

4.用户通过浏览器输入需要查询的ip,通过post方式传至视图层,视图层将ip在三个函数中遍历,将扫描结果存入数据库,再返回到前端页面,显示给用户

1)创建Django框架,app应用hostinfo。

2)在本地创建数据库,在数据库中创建用户并授权。

3)在settings.py加入app、数据库信息,配置语言、时区

4)配置models.py,定义数据库模型(数据表、后面需要获取到的数据的格式)

5)make migrations生成迁移脚本、migrate将脚本转化为sql语句并在本地数据库中执行,创建相应的库与表

6)创建超户,编辑admin.py实现超户在web界面对后端进行管理。

7)编写utils.py,定义三个函数(nmap探活,telnet探测端口,paramiko远程登录),为views分流

8)整合views.py,使得用户访问http://ip/hostscan/返回一个html页面,用户填写好网段/IP之后,将填写的信息提交给服务器路由处理

9)编写html页面,美化页面(导航栏、对话框、布局等)

10)配置urls,主路由调用admin,子路由调用hostscan app

3.效果

登录页面,输入ip,给出版本信息

4.相关问题

https://blog.csdn.net/weixin_46833747/article/details/107768423

5.项目中遇到的难点

1.Linux中使用mysql需要mysqlclient模块,需安装mysql-devel这个依赖项才可使用。

SQLITE功能简约,小型化,追求最大磁盘效率;MYSQL功能全面,综合化,追求最大并发效率。如果只是单机上用的,数据量不是很大,需要方便移植或者需要频繁读/写磁盘文件的话,就用SQLite比较合适;如果是要满足多用户同时访问,或者是网站访问量比较大是使用MYSQL比较合适。

2.各个模块的探索,以及,views编写的困难,utils的分离

相关问题

https://blog.csdn.net/weixin_46833747/article/details/107768423

2、LVS-DR keepalived

1.实验目的

随着企业信息化的不断发展,需要面对越来越复杂的业务和越来越多样化的用户需求,例如单点故障问题、负载均衡问题。而 LVS+keepalived 构建的高可用负载均衡集群则完美解决了这些问题,提高了运维服务质量。

lvs实现负载均衡   keepalived实现lvs的高可用

2.实验环境

四台主机

server1、2:keepalived

server3、4:apache/nginx

3.步骤简述

1. 设置调度主机工作模式为 DR,调度算法为 rr

调度节点:


ip addr add 172.25.1.100/24 dev eth0

ipvsadm -A -t 172.25.1.100:80 -s rr

ipvsadm -a -t 172.25.1.100:80 -r 172.25.1.3:80 -g

ipvsadm -a -t 172.25.1.100:80 -r 172.25.1.4:80 -g

2. 为调度主机添加备份,并在两台主机上都安装 keepalived,编辑配置文件实现集群高可用

master、pri、vip、后端rs

3. 在真实主机中通过 arptables 将 RS 对 VIP 的响应屏蔽,此时可实现负载均衡,服务配置完毕

rs配置:


yum install -y arptables


arptables -A INPUT -d 172.25.1.100 -j DROP


arptables -A OUTPUT -s 172.25.1.100 -j mangle --mangle-ip-s 172.25.1.3

4.实现效果

调用后端服务器的负载均衡及健康检测

master端keepalived down掉 vip漂移至backup  自动顶上

5.相关问题

四层七层区别、lvs三种模式、十种调度算法

https://blog.csdn.net/weixin_46833747/article/details/107849336

vrrp协议

VRRP是一种容错协议,它既不需要改变组网情况,也不需要在主机上做任何配置,只需要在相关路由器上配置极少的几条命令,就能实现下一跳网关的备份,并且不会给主机带来任何负担。它保证当主机的下一跳路由器出现故障时,由另一台路由器来代替出现故障的路由器进行工作,从而保持网络通信的连续性和可靠性。

工作过程

(1)        虚拟路由器中的路由器根据优先级选举出Master。Master路由器通过发送免费ARP报文,将自己的虚拟MAC地址通知给与它连接的设备或者主机,从而承担报文转发任务;

(2)        Master路由器周期性发送VRRP报文,以公布其配置信息(优先级等)和工作状况;

(3)        如果Master路由器出现故障,虚拟路由器中的Backup路由器将根据优先级重新选举新的Master;

(4)        虚拟路由器状态切换时,Master路由器由一台设备切换为另外一台设备,新的Master路由器只是简单地发送一个携带虚拟路由器的MAC地址和虚拟IP地址信息的免费ARP报文,这样就可以更新与它连接的主机或设备中的ARP相关信息。网络中的主机感知不到Master路由器已经切换为另外一台设备。

(5)        Backup路由器的优先级高于Master路由器时,由Backup路由器的工作方式(抢占方式和非抢占方式)决定是否重新选举Master。

3、tomcat会话保持

1.项目背景

在交易类的电子商务网站,需要有购物车记录用户的购买信息,用户每次购买请求都是向购物车中增加商品;在社交类的网站中,需要记录用户的当前登录状态、最新发布的消息及好友状态等, 用户每次刷新页面都需要更新这些信息。而基于 nginx+tomcat+memcache 实现的会话保持则完美解决了这些问题,提升了客户体验与运维服务质量。

2.项目目

同一客户端访问业务网站,经过调度器负载调度到达后端,不管选择的是那个后端,session ID都不变,都保存在两台或多台的memcached缓存中(负载冗余);以保持会话;客户端请求时nginx通过负载调度算法将请求调度至某一后端服务器;并把session存储到两台memcached中;客户端刷新(不换浏览器)时,请求换成另一个后端服务器响应时session ID保持不变;

3.实验环境

server1:nginx调度器

server2、server3:安装tomcat、jdk,编写test.jsp

4.项目流程

1.环境:server1:nginx   server2 : tomcat   实验完添加server3:tomcat

编写test.jsp实现用户登录信息页面。使得nginx将对jsp的访问代理至后端tomcat,只开启一个tomcat时,产生的数据会保存到本地。再实现nginx+tomcat负载均衡。

问题:当开启两个tomcat时,由于在负载均衡状态,受到nginx的调度,server2端提交数据后直接跳到了server3,与之前的建立的session断开了,再次回来数据就不存在了。

2.重新编译nginx,加入sticky模块,避免请求来回跳,信息丢失。此时只要访问的server2不挂,数据会一直保存。

问题:如果server2的tomcat挂掉,那么server2上的数据依然会丢失,因此我们需要memcache的加入实现session交叉存放,就是将访问server2中的tomcat上的数据存放在sever3中的memcache去,将访问server3中tomcat上的数据存放在server2中。

3.serve2、server3配置session管理器,将tomcat/conf/context.xml,n1改为n2,即将2中的缓存存至3中,反之亦然。开启memcache,并重启tomcat,此时多次登录仍会保存之前的登录信息,且当一个服务端挂掉时,另一个服务端会接管并保存之前的登录信息在页面中。

项目中插件简

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载。

在这里插入图片描述

相关问题

1.cookie与session的区别

session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。

2.MemCache的介绍

(1)什么是memcache?
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

(2)工作原理:
先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。

3.memcache与redis的相似点与区别

Redis 和 Memcache 都是基于内存的数据存储系统。Memcached是高性能分布式内存缓存服务;Redis是一个开源的key-value存储系统。memcache通过缓存数据库查询结果,减少数据库访问次数,以提高动态 Web 应用的速度、提高可扩展性。

以下为区别

1)数据操作不同

Memcached基本只支持简单的key-value存储,不支持枚举,不支持持久化和复制等功能。Redis支持服务器端的数据操作相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,支持list、set、sorted set、hash等众多数据结构,还同时提供了持久化和复制等功能。

2)内存管理机制不同。

在Redis中,并不是所有的数据都一直存储在内存中的。这是和Memcached相比一个最大的区别。当物理内存用完时,Redis可以将一些很久没用到的value交换到磁盘。Redis只会缓存所有的key的信息,如果Redis发现内存的使用量超过了某一个阀值,将触发swap的操作,Redis根据“swappability = age*log(size_in_memory)”计算出哪些key对应的value需要swap到磁盘。然后再将这些key对应的value持久化到磁盘中,同时在内存中清除。这种特性使得Redis可以保持超过其机器本身内存大小的数据。

而Memcached默认使用Slab Allocation机制管理内存,其主要思想是按照预先规定的大小,将分配的内存分割成特定长度的块以存储相应长度的key-value数据记录,以完全解决内存碎片问题。

3)存储数据安全性不同

memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化),数据丢失后可以通过aof恢复;

4)集群管理不同

Memcached是全内存的数据缓冲系统,Redis虽然支持数据的持久化,但是全内存毕竟才是其高性能的本质。作为基于内存的存储系统来说,机器物理内存的大小就是系统能够容纳的最大数据量。如果需要处理的数据量超过了单台机器的物理内存大小,就需要构建分布式集群来扩展存储能力。

Memcached本身并不支持分布式,因此只能在客户端通过像一致性哈希这样的分布式算法来实现Memcached的分布式存储。相较于Memcached只能采用客户端实现分布式存储,Redis更偏向于在服务器端构建分布式存储。

5)应用场景不同

Redis出来作为NoSQL数据库使用外,还能用做消息队列、数据堆栈和数据缓存等;Memcached适合于缓存SQL语句、数据集、用户临时性数据、延迟查询数据和session等。

4.memcache高可用

2015:使用magent代理
出现故障:使用Magent代理Memcache节点出现故障恢复导致缓存返回为空,即当master挂了之后再次启动就会把用户踢出去,也就是sesson miss。

2018:Repcached

全称replication cached,日本人高可用技术,简称复制缓冲区技术。
使用场景:它是一个单Master单Slave的方案,但它的Master和Slave都是可读可写的,而且可以相互同步,并且Master和Slave会自动切换(主变从,从变主自由切换)。如果Master宕机,Slave侦测到连接断了,它会自动Listen而成为Master,而如果Slave坏掉,Master也会侦测到连接断了,它就会重新等待新的Slave加入。

优点:
1)能够实现memcached节点冗余备份
2)主从之间可以互相读写

缺点:
1)只支持一主一从备份,单对单
2)冗余备份,占用内存较多

4、ansible自动化部署高可用集群

1.实验目的

通过ansible自动化部署haproxy+keepalived负载均衡高可用架构

2.实验环境

主机:配置epel源,安装ansible  2.9.0

server1、2:部署haproxy+keepalived

server3、4:部署nginx

3.实验步骤

1.主机ansible目录下ansible-galaxy init生成三个角色haproxy keepalived nginx

2.在ansible.cfg下更改角色读取路径为当前目录

3.分别编写各角色下的task、vars、template、handlers等模块

4.编写playbook调用各个角色完成推送

5.测试高可用架构及负载均衡是否实现

4.相关问题

https://blog.csdn.net/weixin_46833747/article/details/108441827#6%EF%BC%89playbook%E4%B8%AD%E7%9A%84%E8%A7%92%E8%89%B2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值