资讯详情

面试总结大全

预定义变量 $0 脚本名 $* 所有的参数 $@ 所有的参数 $# 参数的个数 $$ 当前进程的PID $! 最后一个后台过程PID $? 上一个命令的返回值 0表示成功 for:循环次数是固定的 for i in (取值) 范围{1…20} zhangsan lisi wanger mazi ${array[*]} for 变量名 [ in 取值列表 ] do 循环体 done

while 条件测试 do 循环体 done 当条件测试成立(条件测试为真)时,实施循环体

case num in 模式1) 选项 命令序列1 命令/if语句/for循环…… ;; 模式2) 命令序列2 ;; 模式3) 命令序列3 ;; *) 命令序列不匹配 esac

iptables四表五链

四表: raw 追踪数据包 mangle 标记数据包 nat 地址转换 filter 数据包过滤

 五链:  PREROUTING          在路由之前     prerouting  INPUT                    进入数据包时   input  FORWARD              当数据包通过时   forward  OUTPUT                 数据包出去时  output  POSTROUTING       在路由之后     postrouting 

iptables -t 表 动作 链 匹配条件 -j 目标动作 iptables -t filter -A INPUT -p tcp --dport 22 -s 192.168.222.129 -j REJECT

firewalld

九区: drop(丢弃)     任何接收到的网络数据包都被丢弃,没有回复。只有发送的网络连接。 block(限制)     任何接收的网络连接都被接收 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息拒绝。 public(公共)     在公共区域使用,不能相信网络中的其他计算机不会对你的计算机造成伤害,只能接收选定的连接。 external(外部)     特别是对路由器的伪装功能。您不能相信来自网络的其他计算,也不能相信它们不会对您的计算机造成伤害,只能接收选定的连接。 dmz(非军事区)     用于您的非军事区计算机,可以公开访问,可以有限地进入您的内部网络,只接收选定的连接。 work(工作)     用于工作区。你基本上可以相信网络中的其他电脑不会伤害你的电脑。只接收选定的连接。 home(家庭)     用于家庭网络。您基本上可以相信网络中的其他计算机不会伤害你的计算机。只接收选定的连接。 internal(内部)     用于内部网络。你基本上可以相信网络中的其他计算机不会威胁你的计算机。只接受选定的连接。 trusted(信任)     所有网络连接都可以接受。 

配置方法: 三种:firewall-config(图形),firewall-cmd(命令)和直接编辑xml文件

tcp三次握手

客户端向服务端发送连接请求,服务端收到请求并回复客户端建立连接,然后客户端与服务端开始正常沟通。 

tcp四次握手

客户端要求服务端断开连接,服务器端确认可以断开,服务器端也发送断开连接请求,客户端也确认可以断开。 

NFS和FTP

NFS借助远程共享存储rpc服务端与客户端沟通,但centos7好像不用装rpc也行; 文件传输协议FTP,基于该协议FTP共享文件、上传文件、下载文件可以在客户端和服务端实现,21端口是连接端口,20端口是传输数据,vsftpd是ftp流程软件服务(cs架构,ftp服务端,lftp客户端)

四层负荷和七层负荷的区别?

所谓四层就是基础IP 端口负载平衡;七层是基于URL平衡应用层信息的负载。

http和https的区别?

1,HTTP 未加密,安全性差,HTTPS(SSL HTTP) 数据传输过程加密,安全性好。 2,使用 HTTPS 协议需要到 CA机构申请证书,一般免费证书较少,需要一定的费用。 3,HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 客户端和服务器需要三次握手来建立连接 3 个包,而 HTTPS除了 TCP 加三个包 ssl 握手需要的 9 所以一共是个包 12 个包。 4,http 和 https 连接方式完全不同,端口也不同。 80,后者是 443。 5,HTTPS 实际上是建构 SSL/TLS 之上的 HTTP 因此,要比较协议 HTTPS 比 HTTP 服务器资源消耗更多。

谈谈常见的状态码?

15、301永久重定向,302临时重定向;url跳转后地址不变,后者是url跳转后地址不固定。403请求被拒绝,404请求资源不存在。500服务器内部错误.

常见的web服务器由apache和nginx,apache是开源的web服务器,广泛使用,主要功能是访问控制和虚拟主机多实例,基于IP,端口和域名。

find的用途

1,find主要是搜索文件,可以搜索文件名称、文件大小、文件修改时间、文件类型等。也可以结合exec和xargs后续动作处理。 find / -name “.txt" -exec rm -rf {} ; find / -name ".txt” | xargs -i rm -rf {} 2.包装压缩命令gzip,bzip2,tar

cpu利用率和负载有什么区别?

回答:cpu的平均负载,指在某段时间,cpu处理过程的数量  回答:cpu利用率是指当前占用的所有过程cpu的百分比 

磁盘怎样挂载?

首先创建挂载目录 再用mount命令挂载即可  vim /etc/fstab  mount -a刷新挂载   取消挂载 umount 挂载路径 

磁盘分区模式区分

MBR  <2TB  分区工具:fdisk   可分为14个分区(4个主分区,扩展分区,逻辑分区) 例如: 3主   1扩展(n逻辑) MBR 小于2TB的可以。 一块硬盘最多分为四个主分区。  查看磁盘lsblk空间-->fdisk创建分区-->文件系统格式化xfs或者ext4格式-->mount挂载使用  GPT >2TB和<2TB 分区工具:gdisk 可分为128个主分区 GPT大于小于2TB都可以。 #注意:从MBR转到GPT,或从GPT转换到MBR所有数据都会丢失! 

如何开启路由转发工能?

sysctl.conf #系统配置 vim /etc/sysctl.conf  net.ipv4.ip_forward = 1 保存退出  sysctl -p #生效 

过程是什么?

这个过程是内存中的一种表现形式,这个过程是可执行程序的运行实例,是程序运行的过程,动态的,有生命周期. 

top命令中VSZ和RSS的区别

VSZ:虚拟内存空间占用虚拟内存空间 RSS:物理内存空间占内存空间 

请解释下telnet和ssh的区别

首先,他们都是远程连接服务  telnet明文传输不安全。ssh加密传输非常安全 (个人认为这是最大的区别) 

软硬链接的区别?

1:- 软链接可以跨文件系统,硬链接不能; 2:- 软链接可以连接目录,硬链接不能; 3:- 删除源文件后,软链接失效,硬链接无影响; 4:- 两个链接都可以通过命令 ln 来创建; 5:- ln 默认创建硬链接; 6:- 使用 -s 软链接可以创建参数。 7:-软链接的inode数量不同,硬链接相同。 总结创建硬链接ln,软链接的创建是ln -s;软链接可以跨文件系统链接目录,硬链接不好; 硬链接的inode数字相同,软链接不同,删除源文件,硬链接无影响,软链接无效。 

linode号

磁盘存储文件,存储不成功,可能是 Inode号不够用了 可向主管申请 重启虚拟机 reboot Inode号 一共是65536个

磁盘格式和磁盘的分区?

自定义磁盘分区有;
1)/;根分区
2)/swap;交换分区
3)/boot;系统内核

如何做扩容(也就是如何做逻辑卷)

首先用fdisk创建磁盘分区
如何做pv(物理卷)
如何将pv加入到vg(卷组中)
再将vg加入到lv(逻辑卷中)

tcp和udp的区别?

首先他们都是dns域名解析的一种
tcp面向连接        udp面向无连接
tcp安全           udp不安全
tcp的传输速度慢     udp的传输速度块
                  udp用于网络直播,qq聊天等等
                  
arp协议主要解析mac地址;icmp是ping命令的协议。

对称加密和非对称加密的区别?

对称加密就是加密和解密都是一个私钥
非对称加密就是公钥加密私钥解密

raids磁盘阵列最常用的raid级别:0、1、5、6、10?(磁盘阵列)

raid0的话最少需要2块磁盘,读写速度快,磁盘利用率高,但是没有冗余和校验,容易出现单点故障,数据安全性不高。
raid1的话最少需要2块磁盘,读速度快,写速度比较慢,有冗余校验,磁盘利用率不高,但数据安全性比较高。
raid5的话比较常用,最少需要3块磁盘,读写快,有校验机制,磁盘的利用率比较高,数据安全性比较高。
raid6的话最少需要4块磁盘,是在raid5的基础上增加了双校验的的方式,但是写入速度差,成本高。
redis10的话需要4块,读写速度很快,有冗余,无单点故障,镜像成本高。

常见协议的分类

http(不安全的超文本传输协议)
https(安全的文本传输协议)
ftp(文件传输协议)
stmp(邮件传输协议)
dns(域名解析)
telnet(远程登录协议)
ARP协议(解析mac地址)
icmp协议(ping命令的协议)
VRRP协议(虚拟路由冗余协议,用于keepalived)
iptunnel协议(主要用于LVS的隧道模式)

OSI七层模型

7 应用层;   (ssh,http,https,应用)服务都是第七层
6 表示层;    (传递报文)
5 会话层;    (smtp,ftp,telnet,dns,tftp。。。)
4 传输层;   (tcp,udp【传输协议组】)
3 网络层;   (icmp协议 【ping命令】)
2 数据链路层;(网络接口协议)
1 物理层;   (物理硬件设施)

怎么查看一个磁盘的io

第一种:用 top 命令 中的cpu 信息观察
第二种:用vmstat
第二种:用iostat

如何写计划任务

crontab -e
* * * * *  后面接路径

每周末早上8点重启
0 8 * * 7 reboot

ssh端口不用22号默认端口,使用20022

设置防火墙规则:

如果是nginx服务器,80端口和443端口对外开放;

mysql服务器,3306只能对程序所在的服务器ip地址进行开放


堡垒机JumpServer

重要服务器不允许root用户登录,只允许普通用户登录,而且只允许使用秘钥认证方式登录;

修改/etc/pam.d/login文件,能设置用户冻结策略


磁盘:调整文件句柄数vim /etc/security/limits.conf 

cpu:调整进程优先级nice值大小,将进程绑定到某个cpu上,能提升cpu处理此进程的效率

内存:内存充分情况下,完全禁用swap分区;内存不充足情况下,启用swap分区策略

mysql数据库专题

1,如何设置弱密码?

弱密码设置validate_password=off添加到/etc/my.cnf

2,数据库如何重置?

如果mysql密码忘记,可以进行数据库重置或则进行重新安装,要是初始化的话第一:停止服务,删除数据库存放目录下的所以内容,rm -rf /var/lib/mysql/*,清除my.cnf内修改的内容,然后重启mysql,查看密码修改密码。

3,数据的编译安装?

数据库的编译安装:清理环境(卸载并删除yum安装的mariadb和mysql)–安装编译环境(如gcc,make,cmake等)–指定mysql为不可登录的系统用户–解压源码包到指定目录下然后cmake配置–编译安装(make && make install)–初始化修改密码–登录验证。

4,数据库存储引擎有哪些?

innodb默认的存储引擎:支持事务,外键,支持表和行,支持崩溃修复和并发控制。 myisam存储引擎:MyISAM拥有较高的插入、查询速度,支持锁表,不支持锁行,不支持事务。 memory存储引擎:数据主要存储在内存里,因此读写速度很快,数据的安全风险比较大。

innodb,myisam, innodb支持锁表或锁到表的某一行,更加精确一点,myisam也可以锁表,但只能锁整张表,不能锁表的某一行(锁完表后就只能读不能写)。

数据库的增删改查?

创建表:create table 表名 查看表:select * from 表名 表插入:insert into 表名 修改表:alter table 表名 add 字段 alter table 表名 change 旧的字段 新字段名 删除数据 delete from 表名 where id=1 删除字段 alter table 表名 drop 字段名; 删除表 drop table 表名;

关系型和非关系型?

常见的关系型数据库:mysql/mariadb,sql server,oracle.非关系数据库:redis,mongodb,memcached.

什么是备份和冗余?

备份是文件保存到其他地方,能防止机械故障和认为误操作带来的数据丢失;冗余不是备份,只能防止机器故障带来的数据丢失,例如主备模式和数据库群。

数据库的备份方式有哪些,具体是?

物理备份和逻辑备份 物理备份:备份的是数据库的文件,不受存储引擎影响,常用于大型数据库环境,不能跨版本恢复。备份的文件速度相对较慢,但恢复速度快。主要用到的是xtrbackup 计划任务+脚本,实现自动化备份。 逻辑备份:备份的是增改查sql语句,效率比较低,主要用于中小型数据库。备份速度相对较快,但恢复速度慢。binlog日志,mysqldump。

说一下xtrbackup备份

主要是有完整备份、增量备份、差异备份,完整备份备份所有数据,增量备份备份上一次到现在的数据,差异备份备份与上一次完整备份不同的数据。 我们公司周一做完整备份,周三周天做差异备份,这要脚本结合计划任务进行。

数据库事务特性?

原子性:要么都执行,要么都不执行 一致性:在事务开始之前和完成之后,数据都必须保持一致状态,必须保证数据库的完整性 隔离性:事务与事务间互不影 持久性:事务中通过SQL语句产生的信息会写入到磁盘中

隔离级别?

隔离性四个级别: 读未提交(Read uncommitted),最低级别,任何情况都无法保证。 读提交(read committed),可避免脏读的发生。 可重复读(repeatable read),可避免脏读、不可重复读的发生。 串行化(Serializable),可避免脏读、不可重复读、幻读的发生。 【1】脏读(脏读是指一个事务读取到了另外一个事务未提交的数据) 【2】不可重复读(一个事务读取2次,得到的结果不一致) 【3】幻读(一个事务读取2次,记录数量不一致)

mysql主从集群原理?

主从复制集群实际上是冗余的一种解决方案,可以防止单点故障。主从原理:从库的slave会产生两个线程,i/o线程和sql线程,i/o线程将主库的binlog日志中的sql语句发送到从库,再写入到中继日志中,sql线程会将中继日志中更新的语句读取并执行,从而让保证主从复制数据的一致性。

gtid主从集群原理?

gtid主从复制是基于事务id,与普通的主从复制最大不同有:不需要指定binlog日志的文件名和位置点,MASTER_AUTO_POSTION=1的方式开始复制,并且从库的binlog日志要强制开启,目的是记录执行过的GTID。 GTID的工作原理: 1、master更新数据时,会在事务前产生GTID,一同记录到binlog日志中。 2、slave端的i/o 线程将变更的binlog,写入到本地的relay log中。 3、sql线程从relay log中获取GTID,然后对比slave端的binlog是否有记录。 4、如果有记录,说明该GTID的事务已经执行,slave会忽略。 5、如果没有记录,slave就会从relay log中执行该GTID的事务,并记录到binlog。

mysql主从复制不成功_mysql主从同步失败处理?

注意:show binlog events 来查看一个sql里有多少个event。

#查看同步状态,show slave status \G; 方法一:忽略错误后,继续同步。该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况 解决: stop slave; #表示跳过一步错误,后面的数字可变 set global sql_slave_skip_counter =1; start slave; show slave status\G 查看 方式二:备份恢复数据 解决步骤如下: 1.先进入主库,进行锁表,防止数据写入 使用命令: mysql> flush tables with read lock; 注意:该处是锁定为只读状态,语句不区分大小写 2.mysqldump进行数据备份 #把数据备份到mysql.bak.sql文件 [root@server01 mysql]#mysqldump -uroot -p -hlocalhost > mysql.bak.sql 这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失 3.查看master 状态 mysql> show master status; 4.把mysql备份文件传到slave,进行数据恢复 #使用scp命令 [root@server01 mysql]# scp mysql.bak.sql root@192.168.128.101:/tmp/ 5.停止从库的状态 mysql> stop slave; 6.然后到从库执行mysql命令,导入数据备份 mysql> source /tmp/mysql.bak.sql 7.设置从库同步,注意该处的同步点,就是主库show master status信息里的| File| Position两项 change master to master_host = ‘192.168.128.100’, master_user = ‘rsync’, master_port=3306, master_password=‘’, master_log_file = ‘mysqld-bin.000001’, master_log_pos=3260; 8.重新开启从同步 mysql> start slave; 9.查看同步状态 mysql> show slave status\G 查看: Slave_IO_Running: Yes Slave_SQL_Running: Yes

好了,同步完成啦。 ————————————————

apache专题

apache和nginx的区别?

apache的稳定性比nginx好,但是nginx的并发量要远远大于apache apache处理请求是阻塞型的,nginx处理请求是异步非阻塞的 高并发下apache的话资源消耗大,处理比较慢,而nginx消耗资源比较少,并且处理比较快 apache擅长处理动态资源,nginx擅长处理静态资源

apache的主配置文件是/etc/httpd/conf/httpd.conf;子配置文件是/etc/httpd/conf.d;默认的网站发布目录/var/www/html. 基于域名的虚拟主机

<virtualhost  *:80>
server name   www.alan.com
documentroot   /web1
</virtualhost>
<directory  "/web1">
require all  granted
</directory>

<virtualhost  *:80>
server name   www.haha.com
documentroot   /web2
</virtualhost>
<directory  "/web2">
require all  granted
</directory>

18,apache的访问控制

只允许一部分客户端访问:  ALL
<directory "/var/www/html/web">
allowoverride none
require ip 192.168.222.222  可以写IP
require ip 10.0.0.0    可以写网段
</directory>

只拒绝一部分客户端访问:
<directory  "/var/www/html/web">
allowoverride none
<requireall>
	require not ip 10.0.0.10 192.168.222.131
	require all granted
</requireall>
</directory>

拒绝所有人
<directory "/var/www/html/web">
allowoverride none
<requireall>
require all denied
</requireall>
</directory>

nginx专题

什么是pv和uv?

pv页面访问量,uv用户访问数,也叫独立IP访问量

简单说说nginx的优势?

nginx是开源的,轻量级,高性能的,高并发代理服务器,功能丰富,资源消耗少

nginx的主要功能?

nginx的三大功能: WEB服务器 代理服务器(正向代理和反向代理) 负载均衡器

什么是异步非阻塞?

同步与异步的重点在消息通知的方式上,也就是调用结果通知的方式,同步调用是坐等结果通知,异步调用是等结果通知或者主动询问结果。 阻塞与非阻塞的重点在于进/线程等待消息时候的是挂起状态,还是非挂起状态。阻塞调用是没消息就挂起,有消息就激活工作,非阻塞调用发出后,当前进程/线程不会阻塞,也不会挂起,还积极返回干其他活。

nginx为什么能实现这么多的性能呢?

nginx是高性能高并发高效率的web服务器,并广泛用于反向代理和负载均衡。怎么实现这些性能呢? 第一,nginx工作时,有master主进程和worker工作进程,主进程主要负责调度worker工作进程,worker进程主要处理网络请求; 第二是模块化设计,可以根据业务需求,对功能模块进行修改,满足不同的功能需求。 第三,异步非阻塞,这是nginx获得高并发性能的关键因素, 第四,nginx高性能的代理服务器

nginx编译安装的步骤?

1.安装编译安装所需要的环境(软件包,创建用户) 2.下载编译安装所需要的包(源码包)解压的操作 3.到解压后的目录下进行配置(./configure 配置所需要的参数)【mysql:cmake进行配置】 4.编译 make 5.安装 make install 23,http块中有多个server块,server块中有多个location块

nginx的虚拟主机?

nginx的虚拟主机(基于域名,端口和IP)一台主机可以分成多个虚拟主机,同时对外提供相同的web服务。

server{ 
        
	listen 80;
	server_name www.haha.com
	location / { 
        
	root  /web1;
	index  index.html index,htm;
  	}
}

server{ 
        
	listen 80;
	server_name www.alan.com
	location / { 
        
	root  /web1;
	index  index.html index,htm;
  	}
}

nginx的代理概念?

正向代理是给客户端代理,反向代理是给后端服务器代理

nginx的负载均衡代理?

负载均衡代理

server { 
        
	listen 80;
	server_name localhost;
	location /{ 
        
	proxy_pass http://web
	}
}

upstream web{ 
        
server 192.168.222.131;
server 192.168.222.132;
}

负载均衡的算法有哪些?

轮询,还有加权轮询,根据性能权重来处理请求 ip_hash,同网络的IP固定到后端服务器来处理 url_hash,访问的每个url定向到同一个后端服务器。 还支持热备

1,热备
upstrem web { 
        
server  10.0.0.10;
server  10.0.0.20 backup;  热备
}
2,轮询
upstream web { 
        
server 10.0.0.10;
server 10.0.0.20;
}
3,加权轮询
upstrem web { 
        
server 10.0.0.10  weight=1;
server  10.0.0.20  weight=2;
}
4,ip_hash会让相同的客户端ip请求相同的服务器
upstream web { 
        
server 10.0.0.10;
server 10.0.0.20;
ip_hash;
}

nginx的会话保持?

nginx的会话保持有两种方式: 一是ip_hash算法将同一网段客户端的请求总是发往同一个后端服务器,除非该服务器不可用,ip_hash是基于IP来判断的;sticky_cookie_insert是利用会话亲缘关系将同一客户端的请求总是发往同一个后端服务器,基于cookie来判断的。

nginx的动静分离?

动静分离:加快网站的解析速度,把动态页面和静态页面交给不同的服务器去解析,可以大大降低原来单个服务器处理动静的压力,提高解析速度。

nginx的防盗链?

防盗链就是防止别人网站引用自己网站的图片。

nginx的rewrite?

Rewrite对称URL Rewrite,即URL重写,就是把传入Web的请求重定向到其他URL的过程。比如伪静态http://www.123.com/news/index.php?id=123 使用URLRewrite 转换后可以显示为 完美的http://www.123.com/news/123.html。从安全角度上讲,如果在URL中暴露太多的参数,无疑会造成一定量的信息泄漏,所以静态化的URL地址可以给我们带来更高的安全性。

nginx的模块有哪些?

nginx的内部模块http是协议级别的,server是服务器级别的,location是请求级别的。location 是在 server 块中配置的,根据不同的 URI 使用不同的配置,来处理不同的请求。

nginx的访问日志?

nginx的日志access_log,error_log等。访问日志可以给我们提供很多有价值的数据分析,如可以统计UV和PV,利用awk,uniq,sort,或者awk数组遍历获取。

nginx的性能优化?

两方面:内核优化和nginx自身优化 内核优化/etc/sysctl.conf 来修改内核参数 系统性能优化设置文件句柄 /etc/security/limits.conf

nginx本身优化: worker进程数量auto自动获取 配置cpu亲和,auto代表自动绑定:减少进程迁移的频率,减少损耗 nginx 进程打开文件的数量 gzip压缩级别1-9提高 定义日志的输出格式 利用ab进行压力请求测试

系统性能优化,系统的文件句柄设置修改,配置文件etc/security/limits.conf 。 进程服务的局部性修改调整,如nginx的配置性能优化,worker进程优化,nginx的文件句柄设置,并发连接数设置,文件压缩设置,nginx的cpu亲和配置,使nginx对于不同的work进程绑定到不同的cpu上,减少进程迁移的频率,从而减少性能损耗,定义日志的输出格式等。利用ab进行压力请求测试。

jenkins工作流程?

jenkins是做 jenkins做持续集成,持续发布的一个工具,首先jenkins是java开发出来的,所以需要Java环境才能运行,我们得配置jdk基础环境,然后我们用的是jenkins的war包,把它放在tomcat的发布目录下,启动tomcat即可启动jenkins。 我们公司用的gitlab,首先jenkins从gitlab仓库上拉取代码,拉到jenkins的工作目录下,然后把这些代码进行编译打包,我们后台开发用的是java语言,这里用到了maven工具进行编译打包,然后把打包出来的war发送到后端服务器上,然后把后端服务器的应用重启一下,这里面涉及到拉取发送的密码问题,我们使用的是秘钥对来实现免密操作。首先jenkins生成密钥对,然后在gitlab上添加ssh公钥,建立连接,然后再把密钥发送给后端服务器,给后端服务器建立连接,这样我们就可以在使用过程中实现免密操作。 我们公司刚开始用jenkns发布的时候,也不太了解,用的方式可能有点普通,就比如,我们发布的版本出现问题时,然后需要进行版本回退,我们需要手动在这个tomcat上面,把新版本的war包替换成老版本的,这样就很不方便,后来了解到jenkins有参数化构建的功能,用了jenkins参数化构建时,我们就和开发进行了沟通嘛,让他们在推送代码到gitlab上的时候打上标签,但是,由于打标签用到tag,他们不怎么乐意,于是就让他们在往gitlab上推送新版本的时候打上版本号和描述信息,然后我们利用参数化构建的选择 修订,然后选择对应版本进行构建就可以了,这里面我们参数化构建选用的是脚本的方式,据我老大说,参数化构建还可以结合ansible剧本,让然这里我只是了解,只在实验环境下构建过一些简单的操作, 对了参数化构建里边还有一个小细节,起初我没考虑到,然后我们老大后来点拨了我一下,就是在设置参数化构建的时候,对版本信息进行倒叙排列,这样在后期回退版本或者其他操作的时候,方便查找。

jenkins也有自动构建的功能,如果使用gitlab,依赖于gitlab的webcook组键,所以要提前下载好jenkins插件。要将jenkins中的url复制到gitlab中的webcook上,可以给予分支变动或者tag的变动,只要有人推送到分支上,就会触发自动构建,如果推送了新版本,也会触发自动构建,这都是jenkins可以做的。 遇到的问题:采用yum安装的jenkins的插件不太完善,安装其他maven工具的时候会存在兼容性问题。我在实验环境中试了试,做后还是选择war包的方式。

什么是mycat?

MyCAT是一个数据库中间件 MyCAT可以实现对数据库的读写分离和分库分表 MyCAT对前端应用隐藏了后端数据库的存储逻辑

mycat配置文件?

mycat服务默认的数据端口是8066,而9066端口则是mycat管理端口

server.xml的配置的什么?

配置系统相关参数:配置mycat的端口,IP地址,队列大小4096,连接数据库的隔离级别设置等 配置用户访问权限 配置SQL防火墙以及SQL拦截功能

schema.xml的配置是什么

配置逻辑库和逻辑表 配置逻辑表所存储的数据节点 配置数据节点所对应的物理数据库服务器信息

LVS介绍?

1,lvs是高性能的四层负载均衡软件,特点是成本低廉,高并发,稳定性强,配置简单,支持多种算法。 2,高并发是指lvs有超强的承载力和并发处理能力,单台可支持上万并发链接请求; 3,稳定性强是它对内存和cpu消耗极地; 4,开源免费,性价比高; 5,LVS配置非常简单,仅需几行命令即可完成配置,也可写成脚本进行管理; 6,支持多种轮调算法,可根据业务场景灵活调配进行使用。

lvs的四种的工作模式:

nat网络地址转换模式;DR直接路由模式;tun隧道模式;full-nat双向转换模式。

NAT:网络地址转换模式,进站/出站的数据流量经过分发器(IP负载均衡,他修改的是IP地址) ,具体来说的话就是客户端请求的数据包目标IP通过lvs转发到后端服务器来处理,然后数据的处理完后再经过lvs把目标IP改为客户端IP,数据回传给客户端。 优点:负载均衡只需要一个合法的IP地址 缺点:扩展性有限,节点服务器增加,负载均衡器会成为架构的瓶颈,大量的请求和响应数据交会于此,速度会变慢。

DR :直接路由模式,只有进站的数据流量经过分发器(数据链路层负载均衡,因为他修改的是目标mac地址),具体就是后端服务器ARP保持静默,网关只接受负载均衡器的请求,lvs修改请求端的目标mac地址为后端服务器的mac地址,后端服务器处理完后直接返给客户端。 优点:负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端,支持大多数操作系统。

TUN: 隧道模式,只有进站的数据流量经过分发器,跟DR模式有点类似, 需要所有的服务器支持iptunnel协议,服务器只能局限在linux系统上。

full-nat:双向转换,用的比较少

LVS的算法?

静态算法

静态:只根据算法进行调度 轮叫调度;按顺序轮流分配给后端服务器 加权轮叫:根据服务器的处理能力来调度访问请求。

动态算法

动态:会根据后端服务器的实际连接情况进行分配请求 最少链接;分发给当前处理请求出最少的服务器 加权最少链接;会询问连接最少的服务器负载情况,动态调整,而不是直接分发请求过去。 最少队列调度;只要后端服务器的连接数是0,就立马分配请求。

介绍haproxy?

haproxy高性能的负载均衡软件,与nginx相比,它更专业,做的会更好。

haproxy的特点?

1,支持四层负载和七层负载均衡; 2,支持多种算法,特别是七层负载支持的功能比较丰富。 3,拥有一个功能出色的监控页面,实时了解系统的当前状况。

haproxy配置文件有四大模块?

全局配置块global:对最大连接限制4096,用户,日志等进行配置。 默认配置块default:默认是http七层负载,默认连接数是2048,健康检查连接次数,超时连接时间设置等。 frontend前端配置块,面对用户侧:IP地址和端口设置,访问的url设置。 backed后端服务器配置块:填写真实服务器的IP地址和相关的算法配置等。

haproxy的算法?

动态权重轮询roundrobin ,静态权重轮叫static-rr,最少连接数leastconn,source的hash运算。

介绍一下keepalived?

keepalived高可用,用来防止单点故障。

keepalived工作原理?

以vrrp虚拟路由冗余协议为基础的,当backup收到不到master的vrrp包时就认为它宕机了,这时候vrrp协议会根据优先级重新选择master,来保证集群的高可用。

keepalived三个模块?

keepalived的配置文件主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。

介绍一下tomcat?

Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器。 目前Tomcat最新版本为10.0,nginx最新的是1.22

tomcat的三个端口?

tomcat自身服务的端口:8005 tomcat和其他应用通信的端口:8009 tomcat给客户端浏览器访问页面使用的端口:8080

tomcat的主目录介绍?

tomcat的主目录:bin目录存放二进制命令的,conf存放配置文件server.xml,logs是日志存放,webapps是网站的默认发布目录,启动日志catalinna.out 部署tomcat:jdk1.8+tomcat8.0+mysql5.7+项目jspgou商城+nginx负载均衡

tomcat多实例?

tomcat多实例:单机多实例端口访问,多实例运行相同的应用(实现负载均衡,支持高并发处理,session问题)

tomcat服务调优?

考虑从内存,并发,缓存,安全,网络,系统等进行入手 1、日志格式配置vim tomcat/conf/server.xml 2,JVM 参数优化(java堆),结合服务器性能设置Xms初始堆大小,-Xmx:最大堆大小 3、开启GC日志vim catalina.sh,GC日志,我们可以了解Java虚拟机内存分配与回收策略。

ELK日志中心集群

elasticsearch集群+logstash业务服务器+kibana展示 es主要是用来存储日志的,logstash主要用来搜集日志,kibana主要用来日志展示的

logstash是怎么实现搜集过滤发送的?

Logstash实现的功能主要依赖对应的插件,依次是input插件是读取文件、filter插件是过滤解析的、output插件是发送到es集群的。也就是说在一个完整的Logstash配置文件中,必须有input插件和output插件。

es怎么保证安全性?

设置集群证书和访问密码,可以防止别人恶意创建节点加入集群。

什么是kafka以及特性是什么?

kafka是一个分布式的消息订阅和发布系统,本质是消息队列 kafka的特性: 1,高吞吐量低延迟,每秒可以处理十几万条消息,延迟只有几毫秒。 2,可扩展性强,kafka集群支持热扩展 3,可靠性强,消息持久化到本地磁盘,并且支持数据备份防止数据丢失 4,容错性强:集群中的某一节点失败,不会影响集群的使用 5,高并发:支持数千客户端同时读写

EFK架构?

EFK集群:elasticsearch集群+filebeat业务服务器+kibana展示 kibana展示<-----elasticsearch集群<-------logstash转发消费者消息<----kafka消息队列集群<-----filebeat搜集日志也是消息的生产者

logstash是日志搜集的工具,filebeat是轻量级的本地文件和日志搜集器,不占用系统资源,即使意外关闭,不会造成日志传输的丢失,重启后,依旧继续执行未完成的工作,但是远端的文件和日志读取不了。

CI/CD持续集成交付发布

git和svn的区别?

1,git是分布式的,svn不是。 2,git是元数据方式存储,svn是按照文件存储的。 3,git的内容完整性比svn好,是因为引用了哈希算法。

单台服务器发布模式?

平滑发布是发布过程中不会影响用户的正常使用 灰度发布是部分用户升级使用新版本,部分用户使用老版本,逐步更新,例如华为的鸿蒙系统跟新就是如此。

多台服务器的发布模式?

蓝绿发布是项目分为AB两组,A组停掉服务,进行新版本部署,B组仍对外提供服务;然后B组停掉服务,进行新版本部署,A组对外提供服务;最后就完成了平滑的无感知发布,需要注意的是需要准备备用的服务器,防止业务的突发造成单点故障。

灰度发布是部分服务升级新版本,部分用户使用老版本,逐步更新扩大范围直到版本更新完毕,发现问题可以及时调整,但是自动化要求高

滚动发布是每次只更新一个或者多个服务,升级完成后再加入生产环境,不断执行这个过程,知道集群中的旧版本全部升级为新版本。节约资源,但时间慢,过程较复杂,

实际工作如何选择?

如果你们运维自动化能力储备不够,肯定是越简单越好,建议蓝绿发布,如果业务对用户依赖很强,建议灰度发布。如果是K8S平台,滚动更新是现成的方案,建议先直接使用。

消息中间件?

消息中间件或者叫消息队列(rabbimq,kafka) 特点:解耦,削峰,扩展性强,冗余存储

消息中间件的两种模式?

p2p模式?

主要有三个角色:消息队列,发送者,接收者。每个消息只有一个消费者,一旦被消费,消息就不再队列中了。如果希望发送的每个消息都会被成功处理的话,那么需要P2P模

pub模式?

主要有三个角色:主题,发布者,订阅者。每个消息可以有多个消费者,如果希望发送的消息可以不被做任何处理、或者只被一个消费者处理、或者可以被多个消费者处理的话,那么可以采用Pub/Sub模型。

rabbimq和kafka的区别?

rabbimq主要面向消息、队列、路由,数据存储的,它的一致性,稳定性,可靠性和安全性比较高,但是性能和吞吐量一般。 kafka主要用于日志的收集和传输,对消息的重复丢失错误没有严格要求,但是吞吐量是其最大的特色。

rabbimq的特点?

可靠,灵活,扩展性,高可用,支持多种协议等

rabbimq的端口?

15627是web界面的访问端口 25672是rabbitmq的自身端口 5672程序客户端连接rabbitmq的通信端口

rabbitmq 集群模式是?

普通模式?

默认模式,以两个节点为例,消息出口总在其中的一个节点上,会产生瓶颈;如果没有持久化,会产生消息丢失现象。

镜像模式?

高可用模式,消息实体会主动在镜像节点间同步,该模式可以解决普通模式的问题,但是不足是,镜像队列太多,大量的消息进入,系统性能会降低。

mysql和redis的区别对比?

1,从类型上来说,MySQL是关系型数据库,Redis是非关系型缓存数据库 2,mysql数据存放到磁盘中,redis存放在缓存中 3,mysql支持表结构,支持复杂的表查询。 4,mysql偏重于存储数据,redis偏重于读取数据,因此热门的数据放redis上,mysql存放基本的数据。

memcache,redis,mongodb区别?

memcache数据结构单一,只支持内存服务,不支持持久化,数据不能备份,重启后数据全部丢失。 redis支持多种数据类型,数据可以做持久化,可以做主从复制和备份,读写性能优异。 mongodb是文档型非关系型数据库,支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富,因此查询功能比较强大 https://cloud.tencent.com/developer/article/1676767(三者区别详解)

redis的持久化存储方式有两种?

RDB:根据不同的时间点,将数据已快照的方式存入磁盘 AOF:主要是记录redis的指令,实时性完整性好,但是体积大 若RDB和AOF两种同时使用的话,优先采用AOF方式恢复数据,因为所有的指令都可以恢复回来,恢复的完整度好

redis的数据类型?

redis的端口6379 数据类型说明: string(字符串)做访问计数, hash(哈希字典),适用于存储对象 list(列表)做简单的消息队列, set(集合)有去重功能 zset(有序集合)做排行榜应用

redis的哨兵模式?

Redis Sentinel(哨兵)实现 Redis 的高可用性(通过ping发送消息来判断连通性)

redis哨兵模式主观下线和客观下线(网络延迟)?

主观下线:只有一个哨兵节点认为主节点不可用 客观下线:主服务器故障时,哨兵会询问其他的哨兵节点主服务器的状态,超过半数以上就认为主服务器不可达,判定为客观下线。简单来说半数以上的节点认为某节点不可用,就是主观下线。

Redis-cluster去中心化集群?

Redis-cluster去中心化集群中有16384个哈希槽,每个redis实例负责一部分槽点,集群中的所有信息通过节点数据交换更新。一个hash 槽点会有很多键值对。 https://blog.csdn.net/weixin_43451430/article/details/115708479

为什么使用Redis-cluster去中心化集群?

Redis Cluster的架构,是属于分片集群的架构,当遇到内存、并发、流量等瓶颈时,就可以使用。而redis本身在内存上操作,不会涉及IO吞吐,即使读写分离也不会提升太多性能,Redis在生产上的主要问题是考虑容量,单机最多10-20G,key太多降低redis性能.因此采用分片集群结构,已经能保证高性能。其次,用上了读写分离后,还要考虑主从一致性,主从延迟等问题,徒增业务复杂度。

redis的雪崩,穿透,击穿?

什么是雪崩?

简单来说雪崩:高峰值的极限请求造成数据库缓存全盘宕机,从而数据库 也扛不住宕机,

雪崩怎么解决?

事前:redis高可用,主从+哨兵,redis cluster多主多从,避免全盘 崩溃。 事中:本地ehcache缓存+hystrix限流&降级,避免MySQL被打死。 事后:redis持久化,一旦重启,自动从磁盘上加载数据,快速恢复缓存 数据。

什么是穿透?

简单来说:恶意的高并发请求越过数据库缓存redis,直奔数据库,造成数据库 宕机。

穿透怎么解决?

解决方式很简单,每次系统 A 从数据库中只要没查到,就写一个空值到 缓存里去,比如 set -999 UNKNOWN。然后设置一个过期时间,这样的话, 下次有相同的 key 来访问的时候,在缓存失效之前,都可以直接从缓存 中取数据。

什么是击穿?

缓存击穿,就是说某个 key 非常热点,访问非常频繁,处于集中式 高并发访问的情况,当这个 key 在失效的瞬间,大量的请求就击穿了 缓存,直接请求数据库,就像是在一道屏障上凿开了一个洞。

解决方案?

解决方式也很简单,可以将热点数据设置为永远不过期

什么是ansible? ansible是基于python开发的,基于ssh工作的,分布式的,轻量级,无需客户端的自动化运维工具,可以实现批量化的系统配置,服务部署,命令运行等。

ansible怎么部署?

部署简单,所有机子做解析,master发送公钥给其他被控制节点,就可以完成。 在主机清单里/etc/ansible/hosts添加被控制节点IP主机名或者域名,也可以自定义创建主机组。

ansible的模块都有哪些?

有很多命令模块: shell模块;copy复制模块;yum下载模块;service服务管理模块;启动停止重启等;file文件模块 playbook剧本:执行批量化复杂的操作指令

vim handlers.yml

  • hosts: web1 user: root tasks:
    • name: test copy copy: src=/root/a.txt dest=/mnt notify: test handlers #通知的意思 handlers:
    • name: test handlers shell: echo “abcd” >> /mnt/a.txt

ansible的5大核心元素?

files存储文件 variables变量元素:存放定义变量的文件 tasks任务元素:专门存储任务的目录, templates模板元素:调用存储在该目录下的变量配置文件 handlers触发器:前一个任务执行成功后,才触发执行后面的任务

zabbix的优缺点?

zabbix优点有哪些? 开源,无软件成本投入 Server 对设备性能要求低 支持设备多,自带多种监控模板 支持分布式集中管理,有自动发现功能,可以实现自动化监控 开放式接口,扩展性强,插件编写容易 Api 的支持,方便与其他系统结合

缺点: 所有数据都存在数据库里, 产生的数据据很大,瓶颈主要在数据库。因此监控项历史数据保存选择30天

监控的对象有哪些?

zabbix监控系统监控对象(数据库,应用软件,集群,虚拟化软件,操作系统,硬件设备,网络)

监控的模式?

默认是被动模式,server向agent请求获取监控的数据; 主动模式是主动地将监控数据发送给server。

zabbix都有什么动作?

触发器动作,自动发现

Zabbix Proxy 代理服务器?

Zabbix Proxy 代理服务器,可代替zabbix服务器搜集数据,分担负载压力,主要用于跨区域

Zabbix监控项?

预定义参数监控项,自定义用户参数UserParameter,用zabbix_get相关命令查看能否获取值

系统参数获取?

vim /proc/meminfo可以得到linux内核的很多详细参数,再结合脚本,获取监控项

zabbix监控nginx?

预定义监控nginx服务端口?

通过预定义监控项监控80端口(主机组-主机-监控项-图形-聚合图像-触发器-动作-媒介类型等)

自定义监控nginx其他监控项?

首先安装ngx_http_stub_status_module,这个模块提供了基本的监控功能的数据 其次修改nginx的配置文件后,打开server { listen 80; server_name localhost; location /nginx-status { stub_status on; access_log on; } } 用curl 10.0.0.19/nginx_status测试是否可以获取想要的监控数据。 然后是脚本编写:通过定义函数和使用case 最后通过userparemeter编写自定义监控值,再server端通过zabbix_get -s 获取值后,把监控的项写入监控项中。

监控Nginx活动连接数,监控Nginx处理连接数,监控Nginx处理请求总数等等 监控Nginx活动连接数,vim /etc/zabbix/zabbix_agentd.d/nginx_status.conf UserParameter=Nginx.Active.Connections,/usr/bin/curl -s http://10.8.165.27/ngx_status 2>/dev/null |grep ‘Active connections:’|awk ‘{print $NF}’

自定义监控tomcat服务的三个端口?

写一个脚本监听Tomcat的端口 Vim tomcat_monitor.sh 判断8005、8009、8080端口服务是否正常

zabbix监控redis主从集群?

预定义监控redis服务端口?

通过预定义监控项监控6379端口(主机组-主机-监控项-图形-聚合图像-触发器-动作-媒介类型等)

自定义监控redis其他监控项?

redis-cli -h 127.0.0.1 -p 6379 info 该命令可以查看集群详细信息可以获取,如cpu使用,内存使用等 通过用户参数UserParameter结合脚本的方式获取对应的监控项,用zabbix_get命令查看获取的值

zabbix监控mysql主从集群?

预定义监控mysql服务端口?

通过预定义监控项监控3306端口(主机组-主机-监控

标签: sub板端连接器wide差压变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台