Linux运维跳槽必备面试题

如何优化 Linux系统(能够不说太具体)?
一、root,添加普通用户,经过sudo受权管理;二、更改默认的远程链接SSH服务端口及禁止root用户远程链接;三、自动更新服务器时间;四、配置国内yum源;五、关闭selinux及iptables(iptables工做场景若是有外网IP必定要打开,高并发除外); 六、调整文件描述符的数量;七、精简开机启动服务(crond rsyslog network sshd);八、内核参数优化(/etc/sysctl.conf);九、更改字符集,支持中文,但建议仍是用英文字符集,防止乱码;十、锁定关键系统文件;十一、清空/etc/issue,去除系统及内核版本登陆前的屏幕显示
Centos开机流程:
一、开机加电自检,加载BIOS的硬件信息,获取第一个启动设备;二、读取第一个启动设备MBR的引导加载程序(grub)的启动信息;三、加载核心操做系统的核心信息,核心开始解压缩,并尝试驱动全部的硬件设备;四、核心执行init程序,并获取默认的运行信息;五、init程序执行/etc/rc.d/rc.sysinit文件;六、启动核心的外挂模块;七、init执行运行的各个批处理文件scripts;八、init执行/etc/rc.d/rc.local;九、执行/bin/login程序,等待用户登陆;十、登陆后开始以shell控制主机。
redhat 6.X版本系统 和 centos 7.X版本有啥区别?
桌面系统(6/GNOE2.x、7/GNOME3.x)、文件系统(6/ext四、7/xfs)、内核版本(6/2.6x、7/3.10x)、防火墙(6/iptables、7/firewalld)、默认数据库(6/mysql、7/mariadb)、启动服务(6/service启动、7/systemctl启动)、网卡(6/eth0、7/ens192)
centos7破解root口令:
一、首先在菜单界面按【e】键,进入启动文件界面后;二、按【↓】拉到底部
在 “LANG=zh_cn.UTF-8” 同行后面加上“init=/bin/sh” ;而后按【Ctrl+X】进入“单用户模式”
三、输入【ls】,回车,再输入【mount –o remount ,rw / 】,回车 (注意空格)
四、输入【passwd】(注意:密码不能少于8位),重复输入两次密码
五、输入【touch /.autorelabel】,回车,再输入【exec /sbin/init】回车,以便重启系统。
安装虚拟机时修改网卡名称为eth0的方法:(按tab键即会弹出)
Linux运维跳槽必备面试题
web服务器的负载架构:
Linux运维跳槽必备面试题
用tcpdump嗅探80端口的访问看看谁最高:
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4}’| sort | uniq -c | sort -nr |head -20
统计/var/log/httpd/access.log日志访问频繁前十的地址,并从大到小排序。
cat access.log |cut -d” ” -f1 |sort |uniq -c |sort -nr|head -n10
常见的Linux发行版本都有什么?你最擅长哪个?它的官网网站是什么?说明你擅长哪一块?
常见的Linux发行版本有Redhat、Centos、Debian、Ubuntu、Suse
最擅长Redhat和Centos;Redhat官网:www.redhat.com; Centos官网:www.centos.org
我最擅长Linux基本命令操做及相关服务搭建
用虚拟机安装了一台Linux系统,忽然想克隆一台服务器,克隆后发现没法上网,如何解决?要使服务器上外网,必须知足的条件有哪些?须要配置什么?
a、编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0,将HWADDR和MAC地址这两行删除。b、修改文件/etc/udev/rules.d/70-persistent-net.rules,删除以前eth0所在的行,将下一行eth1修改成eth0;c、reboot
要上外网须要:可以连接internet的网线(或无线)、有网卡; 须要配置:IP、netmask、gateway、dns(自动或手动都ok,服务器通常自动)
某天误操做,执行了rm -rf * ,会有哪些状况发生?请举例。
a、若是当前目录为”/tmp” ,那么这个目录下的东西会所有删除(默认不包含隐藏文件) b、若是当前目录为”/”,那么系统上的数据将会丢失,且没法启动,系统崩溃(谨慎使用这个命令)
软硬:{共性}:修改软硬连接文件,全部的文件都是同步修改的。
硬连接: 本质:同一个文件多个名字、连接数:有一个以上的连接,不可跨分区,只容许对文件建立连接,不依赖原始文件,删除硬连接文件的源文件,硬连接文件仍然存在,不占用空间,格式:ln 目标文件 连接名 
软链接:本质: 一个文件对应快捷方式,是不一样文件,连接数:只有一个连接,能够跨分区,能够对目录和文件夹进行连接,依赖于原始文件,删除源文件,软链接则指向一个空文件,它具备依赖性,占用磁盘空间,格式: ln -s 目标文件 源文件
取IPV4地址:ifconfig ens33| grep -Eo “([0-9]{1,3}.){3}[0-9]{1,3}” head -1
取分区利用率:df | grep ” /dev/sd ” | grep -o ” [0-9]{1,3}%” | grep -o ” [0-9]+ ” | sort -nr | head – n1
取分区利用率:sed -rn ‘ s/^([^[:space:]]+).([0-9]+)%./\2/p’
用户:sed -rn ‘ s/^([^[:space:]]+).([0-9]+)%./\1/p’
查看版本型号: cut -d “.” -f1 /etc/redhat-release |egrep -o “[0-9]+”
查看版本型号:grep -o ” [0-9]+. ” /etc/redhat-release | grep -o ” [0-9]+ “
查看版本型号:sed -rn ” s/.([0-9]+)../\1/p ” /etc/redhat-release
匹配手机号码:egrep -o ” 1[0-9]{10} ” tel.txt
匹配email邮箱:egrep -o “([[:alnum:]]|_)+@[[:alnum:]]+.com$” mail.txt
使用sed命令取IPV4地址:
一、|sed -n ‘2p’ |sed -r ‘s/inet//’ |sed -r ‘s/netmask.//’ |tr -d ” ” 二、|sed -n ‘2p’ sed -e ‘s/^.inet//’ -e ‘s/.//’ 3、|sed -n -e ‘2s/^.inet//’ -e ‘2s/ .//p’ 四、|sed -nr ‘2s@.inet (.) .n.@\1@p’ 五、|sed -nr ‘2s/[^0-9]+([0-9.]+)./\1/p’
在Linux系统中,以文件方式访问设备。每一个文件用索引节点来标识。 Linux内核引导时,从文件/etc/fstab中读取要加载的文件系统。所有磁盘块由四个部分组成,分别为引导块、专用块、i节点表块和数据存储块。 内核分为:进程管理系统、内存管理系统、I/O管理系统、文件管理系统。
网络管理具有:配置管理、故障管理、性能管理、安全管理和计费管理等功能。网络管理的重要任务是:控制、监控 。网络管理员对WWW服务器进行访问、控制存取和运行等控制,这些控制可在 httpd.conf 文件中体现。PHP和MySQL的联合使用解决了:在WWW服务器上处理数据库的访问问题。
进程的运行有两种方式,即:独立运行和使用父进程运行。 进程查看的命令:ps、top;进程调度的命令:at、crontab、batch、kill
为什么要给硬盘分区①、易于管理和使用;②、有利于数据安全;③、节约寻找文件的时间
①、文件系统查看命令:df;②、统计目录或文件大小:du;③、文件系统修复命令:fsck;、显示磁盘状态命令:dumpe2fs;实现从IP地址到以太网MAC地址转换的命令为:arp
快速查找/root目录中大于2M的文本,并将文件中的magedu,换成www.magedu.com
find /root –size +2M -type f -exec sed -i ‘s/magedu/www.magedu.com/g’ {} \;
以txt结尾,30天没有修改的文件大小大于20K同时具备执行权限的文件并备份到/data/backup/目录下:
find / -name *txt -mtime +30 -type f -size +20k -perm a=x -exec cp {} /data/backup/ \;
每次开机在/tmp目录下建立一个当天的日期文件夹(提示:当前日期表示的方法为:date +%Y%m%d)
echo “mkdir /tmp/date +%Y%m%d” >> /etc/rc.d/rc.local
如何开启linux服务器路由转发功能? echo “1” > /proc/sys/net/ipv4/ip_forward
如何将本地80端口的请求转发到8080端口,当前主机ip 192.168.16.1,网卡eth0
iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp –dport 80 -j REDIRECT –to-ports 8080
如何添加一块新的50G硬盘到linux服务器系统做为单独的分区,并正常使用?
a、格式化分区用fdisk命令进行,b、制做文件系统用mkfs.xfs命令进行,c、挂载用mount命令进行,d、编辑配置文件“ /etc/fstab ”实现自动挂载。
说出配置过的路由器型号?并举例经常使用的配置命令?
H3C路由器;system-view 进入系统视图模式、display ip routing-table 显示当前路由表、 shutdown 关闭以太网端口、quit 退出。
交换机的端口模式有几种?各有什么功能?
一、RJ-45接口。这种接口应用最为广泛。因其适配线缆\传输介质制做简单,传输速率快。支持的双工工做方式齐全。
二、BNC。所用的传输介质为细同轴电缆,当前已不常见。不要觉得一讲以太网就都是RJ-45接口的,只不过双绞线类型的RJ-45接口在网络设备中很是广泛而已。
三、AUI。所用的传输介质为粗同轴电缆。当前可能是广电宽带采用同轴电缆做为网络传输介质,范围不广。为了在RJ-45接口的基础上兼顾同轴电缆介质的网络链接,配上BNC或AUI接口。
有客户反映原来能通47.58.23.99的ip,如今不通了,应该怎么排查?
先看水晶头是否松动,再看网络适配器是否链接,再看onboot是否为yes,再检查客户端是否指定DNS,是否能ping通百度。
su、su -、sudo三者区别:
su:非交互式登陆,在环境变量下不切换。su-:交互式登陆(彻底切换),当前目录改变为切换用户,在家目录,连同环境一同切换。sudo相对于权限无限制性的su来讲,仍是比较安全的,因此sudo也能被称为受限制的su,另外sudo是须要受权许可的,因此也被称为受权许可的su。sudo执行命令的流程是当前用户切换到root,而后以root身份执行命令,执行完成后,直接退回到当前用户,而这些的前提是要经过sudo的配置文件/etc/sudoers来进行受权。
三个私有地址网络: A:10.0.0.0/8~10.255.255.255/8 A类保留1个网络数为私有地址:10.0.0.0 B、172.16.0.0/16 ~ 172.31.255.255/16 31-16+1=16个地址用于内部 C、192.168.0.0/24 ~ 192.168.255.255/24 255-0+1=256个地址用于内部
cp /etc/fstab /data/dir 问:它须要有最小权限是什么?
一、探究cp外部命令有啥权限,它至少必需要有x:执行权限。二、/etc/fstab:/fstab 只要有读权限就能够了,前提是/etc要有x执行权限,/etc能够没有读权限,只要/etc有基本可执行权限进得去就能够。三、/data/dir:至少要有执行和写权限。
cpu单核和多核有啥区别?
双核CPU就是能处理多份任务,顺序排成队列来处理。单核CPU一次处理一份任务,轮流处理每一个程序任务。双核的优点不是频率,而是对付同时处理多件事情。单核同时只能干一件事,好比你同时在后台BT下载,前台一边看电影一边拷贝文件一边QQ。
网络稳定性若是保证?
1.选用可靠的设备,规范的综合布线,打造稳定的基础网络;2.对网络进行约束,上网行为管理;避免病毒,p2p下载。3.有效的网络监控,对网络的主干线路进行速率监控。
应用系统中常见的网络故障有哪些,如何去分析和解决这些问题?
1.病毒问题:遭遇DOOs对网络形成波动。或者是大规模的丢包。断网,或者是网络地址被欺骗;2.线路回路:会形成网络频繁的中断,甚至完全中断。3.设备老化:高温。粉尘,不稳定电压等因素都会形成设备的不稳定。不少时候重启设备就恢复正常。4.地址冲突:网络配置错误会直接形成重要设备的网络中断。
web网站访问缓慢排查思路:
一、服务器状态:负载状况,CPU,网络,内存,日志是否作切割。若是单台服务器性能受限,能够调整为分布式架构,LB数 据库分库分表索引等。
二、DB响应慢:检查慢查询日志,show processlist查看当前DB状态,看哪些请求停留较多;代码中记录SQL执行时间;分析SQL性能,考虑是否优化索引,或者分库分表,增长缓存;检查磁盘IO;查看binlog的写入速率。 三、前端问题:减小HTTP请求;页面设计不佳。
阐述iptables的工做原理,四表五链:
iptables是工做在TCP/IP的二、三、4层,当主机收到一个数据包后,数据包先在内核空间处理,若发现目标地址是自身,则传到用户空间中交给对应的应用程序处理,若发现目标不是自身,则会将包丢弃或进行转发。
4表:raw表:关闭链接追踪;mangle表:报文修改;nat表:地址转换;filter表:过滤;5链:input、output、forward、prerouting、postrouting。
流入本机:PREROUTING –> INPUT–>用户空间进程
流出本机:用户空间进程 –>OUTPUT–> POSTROUTING
转发:PREROUTING –> FORWARD –> POSTROUTING
内网至外网用postrouting sNAT 外网至内网用prerouting DnAT
一、链管理: -N: new 自定义一条新的规则链 -X: delete 删除自定义的空的规则链 -P:policy 设置默认策略:ACCEPT:接受 DROP:丢弃 -E:重命名自定义链
二、查看:-L: list, -n:以数字格式显示地址和端口号 -v:详细信息
三、规则管理:-A : append 追加 -I:insert 插入, -D:delete 删除 -F:flush 清空指定规则链 -R:replace 替换指定链上的规则编号 -Z: zero :置零
mysql部分:四种隔离级别:
A、READ UNCOMMITTED(未提交读),事务中的修改,即便没有提交,对其余事务也都是可见的,事务能够读取未提交的数据,也被称为脏读(Dirty Read),这个级别会致使不少问题
B、READ COMMITTED(提交读),大多数数据库系统的默认隔离级别,一个事务开始时,只能“看见”已经提交的事务所作的修改,一个事务从开始直到提交以前,所作的任何修改对其余事务都是不可见的,也叫不可重复读(nonrepeatable read),有可能出现幻读(Phantom Read),指的是当某个事务在读取某个范围内的记录时,另一个事务又在该范围内插入了新的记录,当以前的事务再次读取该范围的记录时,会产生幻行(Phantom Row)
C、REPEATABLE READ(可重复读),经过InnoDB和XtraDB存储引擎,是MySQL的默认事务隔离级别
D、SERIALIZABLE(可串行化)最高级别,经过强制事务串行执行,避免了幻读问题,会在读取的每一行数据上都加锁,可能致使大量的超时和锁争用的问题。
Linux运维跳槽必备面试题
MySQL事务ACID:
原子性(atomicity):一个事务必须被视为一个不可分割的最小工做单元,整个事务中全部操做要么所有提交成功,要么所有失败回滚,对于一个事务来讲,不可能只执行其中的一部分操做
一致性(consistency):数据库老是从一个一致性的状态转换到另一个一致性的状态
隔离性(isolation):一个事务所作的修改在最终提交之前,对其余事务是不可见的
持久性(durability):一旦事务提交,则其所作的修改就会永久保存到数据库中
MySQL索引的优势:
三个优势:一、索引大大减小了服务器须要扫描的数据量 ;二、索引能够帮助服务器避免排序和临时表;三、索引能够将随机I/O变为顺序I/O
什么状况下应不建或少建索引
一、表记录太少;二、常常插入、删除、修改的表;三、数据重复且分布平均的表字段,假如一个表有10万行记录,有一个字段A只有T和F两种值,且每一个值的分布几率大约为50%,那么对这种表A字段建索引通常不会提升数据库的查询速度。四、常常和主字段一块查询但主字段索引值比较多的表字段
行级锁定的优缺点
优势:一、当在许多线程中访问不一样的行时只存在少许锁定冲突;二、回滚时只有少许的更改 三、能够长时间锁定单一的行
缺点:一、比页级或表级锁定占用更多的内存;二、当在表的大部分中使用时,比页级或表级锁定速度慢,由于你必须获取更多的锁;三、若是你在大部分数据上常常进行GROUP BY操做或者必须常常扫描整个表,比其它锁定明显慢不少;四、用高级别锁定,经过支持不一样的类型锁定,你也能够很容易地调节应用程序,由于其锁成本小于行级锁定
key和index的区别
一、key是数据库的物理结构,它包含两层意义和做用,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。包括primary key,unique key,foregin key等
二、index是数据库的物理结构,它只是辅助查询的,它建立时会在另外的表空间(mysql中的innodb表空间)以一个相似目录的结构存储。索引要分类的话,分为前缀索引、全文本索引等
Mysql主从配置:一、master开启二进制日志;二、master和slave配置不一样的server_id;三、slave配置中继日志;四、master作帐户受权;五、slave开启同步。
MySQL主从同步过程
1:Slave端的IO线程链接上Master,并向Master请求指定日志文件的指定位置(新部署的Master和Slave从最开始的日志)以后的日志。2:Master接收到来自Slave的IO线程请求,负责IO复制的IO线程根据Slave的请求信息读取相应的日志内容,而后将本地读取的bin-log的文件名、位置及指定位置以后的内容一块儿返回给Slave的IO线程处理。 3:Slave的IO线程将接收到的信息依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的bin-log的文件名和位置记录到Master-info文件中,以便在下一次读取的时候可以清楚的告诉Master“我须要从哪一个bin-log的哪一个位置开始日后的日志内容请发给我”。
4:Slave的sql线程检查到relay-log中新增了内容后,会立刻将relay-log中的内容解析为在Master端真实执行时候的可执行命令,并顺序执行,从而保证对Slave的MySQL进行响应的增长或删除等操做,最终实现和Master数据保持一致。
MySQL主从复制原理以及流程:
1、l 主节点 binary log dump 线程
当从节点链接主节点时,主节点会建立一个log dump 线程,用于发送bin-log的内容。在读取bin-log中的操做时,此线程会对主节点上的bin-log加锁,当读取完成,甚至在发动给从节点以前,锁会被释放。
2、l 从节点I/O线程
当从节点上执行start slave命令以后,从节点会建立一个I/O线程用来链接主节点,请求主库中更新的bin-log。I/O线程接收到主节点binlog dump 进程发来的更新以后,保存在本地relay-log中。
3、l 从节点SQL线程
SQL线程负责读取relay log中的内容,解析成具体的操做并执行,最终保证主从数据的一致性。
MySQL数据库自身提供的主从复制功能能够方便的实现数据的多处自动备份,实现数据库的拓展。多个数据备份不只能够增强数据的安全性,经过实现读写分离还能进一步提高数据库的负载性能。
下图就描述了一个多个数据库间主从复制与读写分离的模型
Linux运维跳槽必备面试题
在一主多从的数据库体系中,多个从服务器采用异步的方式更新主数据库的变化,业务服务器在执行写或者相关修改数据库的操做是在主服务器上进行的,读操做则是在各从服务器上进行。若是配置了多个从服务器或者多个主服务器又涉及到相应的负载均衡问题,关于负载均衡具体的技术细节尚未研究过,今天就先简单的实现一主一从的主从复制功能。
Linux运维跳槽必备面试题
MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其做为master,它的数据库中全部操做都会以“事件”的方式记录在二进制日志中,其余数据库做为slave经过一个I/O线程与主服务器保持通讯,并监控master的二进制日志文件的变化,若是发现master二进制日志文件发生变化,则会把变化复制到本身的中继日志中,而后slave的一个SQL线程会把相关的“事件”执行到本身的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。
Mysql中的myisam与innodb的区别
一、InooDB支持事务,而MyISAM不支持事务;二、InnoDB支持行级锁,而MyISAM支持表级锁;三、InnoDB支持MVCC,而MyISAM不支持;四、InnoDB支持外键,而MyISAM不支持;五、InnoDB不支持全文索引,而MyISAM支持
B树和B+树的区别
一、B树,每一个节点都存储key和data,全部的节点组成这可树,而且叶子节点指针为null,叶子节点不包含任何关键字信息
Linux运维跳槽必备面试题
二、B+树,全部的叶子节点中包含所有关键字的信息,及指向含有这些关键字记录的指针,且叶子节点自己依关键字的大小自小到大的顺序连接,全部的非终端节点能够当作是索引部分,节点中仅含有其子树根节点中最大(或最小)关键字
Linux运维跳槽必备面试题
写一个脚本将数据库备份并打包至远程服务器192.168.1.1 /backup目录下:
mount 192.168.1.1:/backup /mnt
cd /mnt
/usr/local/mysql/bin/mysqldump -hlocalhost -uroot
test >test.sql
tar czf test.sql.tar.gz test.sql
rm -f test.sql
HTTP和Nginx的状态码解析:
1XX 它表示请求已经被接受,正在继续处理,这种响应是临时响应,不会返回响应体。
2XX 成功处理并返回,它表示在服务器内已经被接收,被知晓,并处理完成。
200: 成功,请求数据经过响应报文的entity-body部分发送;OK
3XX 重定向功能,告知客户端须要继续执行操做才能够完成请求。
301: 请求的URL指向的资源已经被删除;但在响应报文中经过首部Location指明源如今所处的新位置;302: 响应报文Location指明资源临时新位置;304: 客户端发出了条件式请求,但服务器上的资源不曾发生改变,则经过响应此状态码通知客户端;
4XX 出现问题,和客户端有关系,好比401表示权限问题,404表示访问了一个不存在的URL。
401: 须要输入帐号和密码认证方能访问资源;403禁止访问:一、将nginx.config的user改成和启动用户一致;二、配置文件中index index.html index.htm这行指定的文件。三、修改web目录的读写权限,或者是把nginx的启动用户改为目录的所属用户,四、关闭/etc/selinux/config;404: 服务器没法找到客户端请求的资源;缘由:有可能location路径写错 了,要在nginx.conf/index.html 文件中添加缺失文件。
5XX 出现问题,和服务端有关,好比500表示内部错误,缘由是:ASP语法出错、ACCESS数据库链接语句出错、文件引用与包含路径出错(如未启用父路径)、使用了服务器不支持的组件,如FSO等。502 Bad Gateway错误是FastCGI有问题, 1.FastCGI进程是否已经启动 ;2.FastCGI worker进程数是否不够; 三、增长缓冲区容量大小;503: 服务不可用,临时服务器维护或过载,服务器没法处理请求;排查方法:一、管理员可能关闭应用程序池以执行维护。二、当请求到达时应用程序池队列已满。三、应用程序池的性能选项卡的请求队列限制所填的数值过小,默认为1000。
504 网关超时;1. 优化业务代码:一个接口调用超过一分钟,必定有能够优化的地方,看看数据库或者接口的调用是否合理,是否能够合并请求。2. 修改Nginx的服务器配置:若是实在是优化不了了,能够把Nginx的超时时间上调。
HTTP1.1与1.0的区别、HTTP与HTTPS的区别?
一、引入持久链接,即 在同一个TCP的链接中可传送多个HTTP请求 & 响应二、多个请求 & 响应可同时进行、可重叠;三、引入更加多的请求头 & 响应头
Linux运维跳槽必备面试题
在linux系统中,通常都会有swap内存,你以为使用swap内存有什么好处,在什么状况下swap内存才会被使用?你以为在生产环境中要不要用swap内存?
答:好处:在内存不够用的时候,将部份内存上的数据交换到swap空间上,以便让系统不会由于内存不够用而致使紧急状况出现。
什么状况下会用swap:当系统的物理内存不够用的时候,就须要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操做的程序,这些被释放的空间被临时保存到swap空间中,等到那些程序要运行时,再从swap中恢复保存的数据到内存中。这样,系统老是在物理内存不够时,才进行swap交换。
简述进程的启动、终止的方式以及如何进行进程的查看:
答:在Linux中启动一个进程有手工启动和调度启动两种方式:
(1)手工启动:用户在输入端发出命令,直接启动一个进程的启动方式。能够分为:①前台启动:直接在SHELL中输入命令进行启动。②后台启动:启动一个目前并不紧急的进程,如打印进程。
(2)调度启动:系统管理员根据系统资源和进程占用资源的状况,事先进行调度安排,指定任务运行的时间和场合,到时候系统会自动完成该任务。 常用的进程调度命令为:at、batch、crontab。
什么是静态路由,其特色是什么?什么是动态路由,其特色是什么?
答:静态路由是由系统管理员设计与构建的路由表规定的路由。适用于网关数量有限的场合,且网络拓朴结构不常常变化的网络。其缺点是不能动态地适用网络情况的变化,当网络情况变化后必须由网络管理员修改路由表。
动态路由是由路由选择协议而动态构建的,路由协议之间经过交换各自所拥有的路由信息实时更新路由表的内容。动态路由能够自动学习网络的拓朴结构,并更新路由表。其缺点是路由广播更新信息将占据大量的网络带宽。
简述网络文件系统NFS,并说明其做用:
答:网络文件系统是应用层的一种应用服务,它主要应用于Linux和Linux系统、Linux和Unix系统之间的文件或目录的共享。对于用户而言能够经过 NFS方便的访问远地的文件系统,使之成为本地文件系统的一部分。采用NFS以后省去了登陆的过程,方便了用户访问系统资源。
有状态和无状态的服务区别:
答:无状态的HTTP协议:http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的链接方式,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。协议是指计算机通讯网络中两台计算机之间进行通讯所必须共同遵照的规定或规则,超文本传输协议(HTTP)是一种通讯协议,它容许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。一旦数据交换完毕,客户端与服务器端的链接就会关闭,再次交换数据须要创建新的链接。这就意味着服务器没法从链接上跟踪会话。
有状态就是屡次访问之间有关联关系,须要记录屡次之间的访问关系。
Redis怎么保证数据高可用和业务的并发能力?
Redis:是开源的、基于内存的非关系型键值数据库;易扩展、高性能、具有数据持久化等功能;在高并发、低延迟的环境中应用普遍。
Redis 高可用:若是是作主从架构部署,那么加上哨兵就能够了,就能够实现任何一个实例宕机,能够进行主备切换:master node 在故障时,自动检测,而且将某个 slave node 自动切换成 master node 的过程。Redis 实现高并发主要依靠主从架构,一主多从,若是想要在实现高并发的同时,容纳大量的数据,那么就须要 redis 集群,使用 redis 集群以后,能够提供每秒几十万的读写并发。
Redis哨兵的功能及redis主备复制流程?
哨兵的功能:集群监控:负责监控 redis master 和 slave 进程是否正常工做。消息通知:若是某个 redis 实例有故障,那么哨兵负责发送消息做为报警通知给管理员。故障转移:若是 master node 挂掉了,会自动转移到 slave node 上。配置中心:若是故障转移发生了,通知 client 客户端新的 master 地址。
Linux运维跳槽必备面试题
Redis集群的原理,redis分片是怎么实现的,公司redis用在了哪些环境?
答:redis3.0版本以前是不支持集群的,官方推荐最大的节点数量为1000,至少须要3(Master)+3(Slave)才能创建集群,是无中心的分布式存储架构,能够在多个节点之间进行数据共享,解决了Redis高可用、可扩展等问题。集群能够将数据自动切分(split)到多个节点,当集群中的某一个节点故障时,redis还能够继续处理客户端的请求。
redis分片:分片(partitioning)就是将你的数据拆分到多个 Redis 实例的过程,这样每一个实例将只包含全部键的子集。当数据量大的时候,把数据分散存入多个数据库中,减小单节点的链接压力,实现海量数据存储。分片部署方式通常分为如下三种:
(1)在客户端作分片;这种方式在客户端肯定要链接的redis实例,而后直接访问相应的redis实例;
(2)在代理中作分片;这种方式中,客户端并不直接访问redis实例,它也不知道本身要访问的具体是哪一个redis实例,而是由代理转发请求和结果;其工做过程为:客户端先将请求发送给代理,代理经过分片算法肯定要访问的是哪一个redis实例,而后将请求发送给相应的redis实例,redis实例将结果返回给代理,代理最后将结果返回给客户端。
(3)在redis服务器端作分片;这种方式被称为“查询路由”,在这种方式中客户端随机选择一个redis实例发送请求,若是所请求的内容再也不当前redis实例中它会负责将请求转交给正确的redis实例,也有的实现中,redis实例不会转发请求,而是将正确redis的信息发给客户端,由客户端再去向正确的redis实例发送请求。
redis用在:java、php环境用到redis,主要缓存有登陆用户信息数据、设备详情数据、会员签到数据等。
Redis的特性及应用场景?
支持数据的持久化:能够将内存中的数据保持在磁盘中,重启 redis 服务或者服务器以后能够从备份文件中恢复数据到内存继续使用。
支持的数据类型:支持 string(字符串)、hash(哈希数据)、list(列表)、set(集合)、zet(有序集合)
支持数据的备份:master-slave 模式的数据备份,快照+AOF。
支持集群横向扩展:基于 redis cluster 的横向扩展,能够实现分布式集群,大幅提高性能和数据安全性。
应用场景:一、Session 共享:常见于 web 集群中的 Tomcat 或者 PHP 中多 web 服务器 session 共享;二、消息队列:ELK 的日志缓存、部分业务的订阅发布系统;三、计数器:访问排行榜、商品浏览数等和次数相关的数值统计场景;四、缓存:数据查询、电商网站商品信息、新闻内容;五、微博/微信社交场合:共同好友、点赞评论等
Redis持久化是如何实现(一种是RDC、一种是AOF、),说一下两者区别:
RDB:就是在不一样的时间点,将redis存储的数据生成快照并存储到磁盘等介质上;redis在进行数据持久化的过程当中,会先将数据写入到一个临时文件中,待持久化过程都结束了,才会用这个临时文件替换上次持久化好的文件。正是这种特性,让咱们能够随时来进行备份,由于快照文件老是完整可用的。redis会单首创建(fork)一个子进程来进行持久化,而主进程是不会进行任何IO操做的,这样就确保了redis极高的性能。若是须要进行大规模数据的恢复,且对于数据恢复的完整性不是很是敏感,那RDB方式要比AOF方式更加的高效。缺点:RDB须要定时持久化,风险是可能会丢两次持久之间的数据,量可能很大。
AOF:将执行过的写指令记录下来,在数据恢复时按照从前到后的顺序再将指令都执行一遍。经过配置redis.conf中的appendonly yes就能够打开AOF功能。若是有写操做(如SET等),redis就会被追加到AOF文件的末尾。默认的AOF持久化策略是每秒钟fsync一次(fsync是指把缓存中的写指令记录到磁盘中),即便redis故障,也只会丢失最近1秒钟的数据。若是在追加日志时,刚好遇到磁盘空间满、inode满或断电等状况致使日志写入不完整,也没有关系,redis提供了redis-check-aof工具,能够用来进行日志修复。缺点:AOF每秒fsync一次指令硬盘,若是硬盘IO慢,会阻塞父进程;风险是会丢失1秒多的数据;在Rewrite过程当中,主进程把指令存到mem-buffer中,最后写盘时会阻塞主进程。
使用Redis作缓存时,出现过什么问题?
一、参数;在RDB快照失败时,必需要容许写入数据,二、redis集群中的服务器更换问题;备份数据,拷贝RDB/AOF文件,三、监控的颗粒度要作的足够精细;info、check信息。
MySQL和Redis的区别:
mysql是关系型数据库,是持久化存储的,查询检索的话,会涉及到磁盘IO操做,为了提升性能,能够使用缓存技术,而memcached就是内存数据库,数据存储在内存中(固然也能够进行持久化存储),能够用做缓存数据库。用户首先去memcached查询数据,若是未查询到(即缓存未命中),才去MySQL中查询数据,查询到的数据会更新到缓存数据库中,提供给下次可能进行的查询。提升了数据查询方面的性能。
Redis是内存数据库,数据保存在内存中,访问速度快。MySQL是关系型数据库,功能强大,存储在磁盘中,数据访问速度慢。像memcached,MongoDB,Redis等,都属于No sql系列。
你会使用哪些虚拟化技术?
答:vmware vsphere及kvm,我用得比较多的是vmware vsphere虚拟化,基本上生产环境都用的vmware vsphere,kvm我是用在测试环境中使用。vmware 是属于原生架构虚拟化技术,也就是可直接在硬件上运行。kvm属于寄居架构的虚拟化技术,它是依托在系统之上运行。vmware vcenter管理上比较方便,图形管理界面功能很强大,稳定性强,通常比较适合企业使用。KVM管理界面稍差点,须要管理人员花费点时间学习它的维护管理技术。
nginx中rewrite有哪几个flag标志位(last、break、redirect、permanent),说一下都什么意思?经常使用的Nginx模块,用来作什么的?在proxy模块中你配置过哪些参数?
答:last : 至关于Apache的[L]标记,表示完成当前的rewrite规则
break : 中止执行当前虚拟主机的后续rewrite指令集
redirect : 返回302临时重定向,地址栏会显示跳转后的地址
permanent : 返回301永久重定向,地址栏会显示跳转后的地址、
301和302不能简单的只返回状态码,还必须有重定向的URL,这就是return指令没法返回301,302的缘由了。这里 last 和 break 区别有点难以理解:
last通常写在server和if中,而break通常使用在location中
last不终止重写后的url匹配,即新的url会再从server走一遍匹配流程,而break终止重写后匹配
break和last都能组织继续执行后面的rewrite指令
一、rewrite模块,实现重写功能 二、access模块:来源控制 三、ssl模块:安全加密 四、ngx_http_gzip_module:网络传输压缩模块 五、ngx_http_proxy_module 模块实现代理 六、ngx_http_upstream_module模块实现定义后端服务器列表 七、ngx_cache_purge实现缓存清除功能
proxy模块中配置过:proxy_set_header、proxy_connect_timeout、proxy_send_timeout、proxybuffer
如何优化Nginx?
1.nginx配置的优化:从进程数、连接设置、缓存设置方面进行优化;二、从集群架构优化;3. 让worker进程使用普通用户运行,使用非root运行nginx master;4. 配置nginx worker进程个数,worker进程为用户提供服务通常设置为cpu核数×2,修改nginx.conf配置文件第一行 : worker_processes 4;
什么是运维:
运维是指大型组织已经创建好的网络软硬件的维护,就是要保证业务的上线与运做的正常,在他运转的过程当中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技术;运维又包括不少种,有DBA运维、网站运维、虚拟化运维、监控运维、游戏运维等等。
如今给你三百台服务器,你怎么对他们进行管理?
管理3百台服务器的方式:
1)设定跳板机,使用统一帐号登陆,便于安全与登陆的考量。
2)使用salt、ansiable、puppet进行系统的统一调度与配置的统一管理。
3)创建简单的服务器的系统、配置、应用的cmdb信息管理。便于查阅每台服务器上的各类信息记录。
简述raid0 raid1 raid5 三种工做模式的工做原理及特色:
RAID,能够把硬盘整合成一个大磁盘,还能够在大磁盘上再分区,放数据,还有一个大功能,多块盘放在一块儿能够有冗余(备份)
RAID整合方式有不少,经常使用的:0 1 5 10
RAID 0,能够是一块盘和N个盘组合
优势:读写快,是RAID中最好的 缺点:没有冗余,一块坏了数据就全没有了
RAID 1,只能2块盘,盘的大小能够不同,以小的为准;10G+10G只有10G,另外一个作备份。它有100%的冗余,缺点:浪费资源,成本高
RAID 5,3块盘,容量计算10
(n-1),容许损失一块盘特色,读写性能通常,读还好一点,写很差
冗余从好到坏:RAID1 RAID10 RAID 5 RAID0
性能从好到坏:RAID0 RAID10 RAID5 RAID1
成本从低到高:RAID0 RAID5 RAID1 RAID10

单台服务器:很重要盘很少,系统盘,RAID1
数据库服务器:主库:RAID10 从库 RAID5RAID0(为了维护成本,RAID10)
WEB服务器,若是没有太多的数据的话,RAID5,RAID0(单盘)
有多台,监控、应用服务器,RAID0 RAID5
LVS、Nginx、HAproxy有什么区别?工做中你怎么选择?
答:LVS: 是基于四层的转发;HAproxy:是基于四层和七层的转发,是专业的代理服务器;Nginx:是WEB服务器,缓存服务器,又是反向代理服务器,能够作七层的转发
区别: LVS因为是基于四层的转发因此只能作端口的转发;而基于URL的、基于目录的这种转发LVS就不行
工做选择:HAproxy和Nginx因为能够作七层的转发,因此URL和目录的转发均可以作;在很大并发量的时候咱们就要选择LVS,像中小型公司的话并发量没那么大;选择HAproxy或者Nginx足已,因为HAproxy由是专业的代理服务器;配置简单,因此中小型企业推荐使用HAproxy。
什么是中间件?什么是jdk?
中间件:叫做中间件服务器或应用服务器;是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不一样的技术之间共享资源;中间件位于客户机/ 服务器的操做系统之上,管理计算机资源和网络通信;是链接两个独立应用程序或独立系统的软件。相链接的系统即便它们具备不一样的接口;但经过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递;经过中间件,应用程序能够工做于多平台或OS环境。常见中间件有:kafka、rabbitMQ;
jdk:jdk是Java的开发工具包;它是一种用于构建在Java平台上发布的应用程序、applet和组件的开发环境。
Tomcat800五、800九、8080三个端口的含义?如何查看8080端口
8005:关闭时使用;8009:为AJP端口;即容器使用,如Apache能经过AJP协议访问Tomcat的8009端口;8080:默认端口,通常应用使用。netstat -anlp | grep 8080 or lsof -i:8080
Tomcat中使用的链接器是什么?
在Tomcat中,使用了两种类型的链接器:
HTTP链接器:它有许多能够更改的属性,以肯定它的工做方式和访问功能,如重定向和代理转发。
AJP链接器:它以与HTTP链接器相同的方式工做,可是他们使用的是HTTP的AJP协议。AJP链接器一般经过插件技术mod_jk在Tomcat中实现。
什么叫CDN?CDN链接失败的缘由有哪些?
答:即内容分发网络;基本原理是普遍采用各类缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工做正常的缓存服务器上,由缓存服务器直接响应用户请求。其目的是经过在现有的Internet中增长一层新的网络架构,将网站的内容发布到最接近用户的网络边缘;使用户可就近取得所需的内容,提升用户访问网站的速度,解决不一样运营商之间的互联,由于可让联通的网络访问联通让电信的网络访问电信,起到加速用户访问的目的。
一、CDN服务器网络间接性的故障。二、CDN节点出现故障,主要缘由是CDN服务商所提供的节点分布有限或不均衡。三、本地网络处于不正常的状态。四、数据传输过程当中,网络出现网络拥堵或发生故障。5、CDN节点被大量的DDoS或CC。
什么叫网站灰度发布?
答:灰度发布是指在黑与白之间,可以平滑过渡的一种发布方式;挑出部分主机让其上线,待这些主机没有重大问题的时候,再发布至全部服务器。
简述DNS进行域名解析的过程?
答:用户要访问 www.baidu.com, 会先找本机的host文件,再找本地设置的DNS服务器,若是也没有的话,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn,就去找二级域名服务器,二级域服务器只能提供三级域名服务器.baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站www.baidu.com, 而后发给请求的服务器,保存一份以后,再发给客户端。
RabbitMQ是什么东西?
答:RabbitMQ也就是消息队列中间件,消息中间件是在消息的传息过程当中保存消息的容器;消息中间件再将消息从它的源中到它的目标中标时充当中间人的做用;队列的主要目的是提供路由并保证消息的传递;若是发送消息时接收者不可用;消息队列不会保留消息,直到能够成功地传递为止,固然,消息队列保存消息也是有期限地。
Linux运维跳槽必备面试题
优点:(1).RabbitMQ易于使用和部署,适宜于不少场景如路由、负载均衡或消息持久化等,用消息队列只需几行代码便可搞定。(2).对外提供客户端API,支持多种编程语言。(3).基于erlang语言开发具备高可用高并发的优势,适合集群服务器。(4). 健壮、稳定、易用、开源、跨平台、支持多种语言、文档齐全。(5). 有消息确认机制和持久化机制,可靠性高。
劣势:(1).这使得它的可扩展性差,速度较慢,由于中央节点增长了延迟,消息封装后也比较大。
Kafka:具备如下特性:快速持久化,能够在O(1)的系统开销下进行消息持久化;高吞吐,在一台普通的服务器上既能够达到10W/s的吞吐速率;彻底的分布式系统,Broker、Producer、Consumer都原生自动支持分布式,自动实现负载均衡;支持Hadoop数据并行加载,Kafka经过Hadoop的并行加载机制来统一在线和离线的消息处理。
Linux运维跳槽必备面试题
优点:(1).经过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即便数以TB的消息存储也可以保持长时间的稳定性能。(2).高吞吐量:即便是很是普通的硬件kafka也能够支持每秒数十万的消息,适合产生大量数据的互联网服务的数据收集业务。(3).支持经过kafka服务器和消费机集群来分区消息。(4).支持Hadoop并行数据加载。
zookeeper=文件系统+通知机制;是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序能够基于它实现同步服务,配置维护和 命名服务等。Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,因为工程师不能很好地使用锁机制,以及基于消息的协调 机制不适合在某些应用中使用,所以须要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。
Linux运维跳槽必备面试题
Leader主要有三个功能:1 .恢复数据; 2 .维持与Learner的心跳,接收Learner请求并判断Learner的请求消息类型; 3 .Learner的消息类型主要有PING消息、REQUEST消息、ACK消息、REVALIDATE消息,根据不一样的消息类型,进行不一样的处理。
Follower主要有四个功能:1. 向Leader发送请求(PING消息、REQUEST消息、ACK消息、REVALIDATE消息);2 .接收Leader消息并进行处理;3 .接收Client的请求,若是为写请求,发送给Leader进行投票;4 .返回Client结果。
Keepalived的工做原理?如何作健康检查
答:在一个虚拟路由器中,只有做为MASTER的VRRP路由器会一直发送VRRP通告信息,BACKUP不会抢占MASTER,除非它的优先级更高。当MASTER不可用时(BACKUP收不到通告信息),多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占是很是快速的(<1s),以保证服务的连续性;因为安全性考虑,VRRP包使用了加密协议进行加密。BACKUP不会发送通告信息,只会接收通告信息。
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。check负责健康检查,包括常见的各类检查方式,vrrp模块是来实现VRRP协议的;
Keepalived健康检查方式配置
HTTP_GET|SSL_GET
HTTP_GET | SSL_GET
{
url {
path /# HTTP/SSL 检查的url能够是多个
digest <STRING> # HTTP/SSL 检查后的摘要信息用工具genhash生成
status_code 200# HTTP/SSL 检查返回的状态码
}
connect_port 80 # 链接端口
bindto<IPADD>
connect_timeout 3 # 链接超时时间
nb_get_retry 3 # 重连次数
delay_before_retry 2 #链接间隔时间
}
讲述一下LVS三种模式的工做过程?
LVS 有三种负载均衡的模式,分别是VS/NAT(nat 模式) VS/DR(路由模式) VS/TUN(隧道模式)
1、NAT模式(VS-NAT):
原理:当包到达 LVS 时,LVS 作目标地址转换(DNAT),将目标 IP 改成 RS 的 IP。RS 接收到包之后,仿佛是客户端直接发给它的同样。RS 处理完,返回响应时,源 IP 是 RS IP,目标 IP 是客户端的 IP。这时 RS 的包经过网关(LVS)中转,LVS 会作源地址转换(SNAT),将包的源地址改成 VIP,这样,这个包对客户端看起来就仿佛是 LVS 直接返回给它的。
Linux运维跳槽必备面试题
优势:集群中的物理服务器能够使用任何支持TCP/IP操做系统,只有负载均衡器须要一个合法的IP地址。
缺点:扩展性有限。当服务器节点(普通PC服务器)增加过多时,负载均衡器将成为整个系统的瓶颈;由于全部的请求包和应答包的流向都通过负载均衡器。当服务器节点过多时;大量的数据包都交汇在负载均衡器那,速度就会变慢!
2、IP隧道模式(VS-TUN)
原理:首先要知道,互联网上的大多Internet服务的请求包很短小,而应答包一般很大;那么隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS;RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不须要再通过负载均衡器。注意,因为RS须要对负载均衡器发过来的数据包进行还原,因此说必须支持 IP TUNNEL协议,因此,在RS的内核中,必须编译支持IPTUNNEL这个选项。
优势:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户;因此,减小了负载均衡器的大量数据流动,负载均衡器再也不是系统的瓶颈,就能处理很巨大的请求量;这种方式,一台负载均衡器可以为不少RS进行分发。并且跑在公网上就能进行不一样地域的分发。
缺点:隧道模式的RS节点须要合法IP,这种方式须要全部的服务器支持 ”IP Tunneling” (IP Encapsulation)协议,服务器可能只局限在部分Linux系统上。
3、直接路由模式(VS-DR)
原理:一个请求过来时,LVS 只须要将网络帧的 MAC 地址修改成某一台 RS 的 MAC,该包就会被转发到相应的 RS 处理,注意此时的源 IP 和目标 IP 都没变,LVS 只是作了一下移花接木。RS 收到 LVS 转发来的包时,链路层发现 MAC 是本身的,到上面的网络层,发现 IP 也是本身的,因而这个包被合法地接受,RS 感知不到前面有 LVS 的存在。而当 RS 返回响应时,只要直接向源 IP(即用户的 IP)返回便可,再也不通过 LVS。
Linux运维跳槽必备面试题
优势:和TUN(隧道模式)同样,负载均衡器也只是分发请求,应答包经过单独的路由方法返回给客户端;与VS-TUN相比,VS-DR这种实现方式不须要隧道结构,所以能够使用大多数操做系统作为物理服务器。
缺点:要求负载均衡器的网卡必须与物理网卡在一个物理段上。
mysql的innodb如何定位锁问题,mysql如何减小主从复制延迟?
mysql的innodb如何定位锁问题:
在使用 show engine innodb status检查引擎状态时,发现了死锁问题;在5.5中,information_schema 库中增长了三个关于锁的表(MEMORY引擎)
innodb_trx ## 当前运行的全部事务 innodb_locks ## 当前出现的锁 innodb_lock_waits ## 锁等待的对应关系
mysql如何减小主从复制延迟:
若是延迟比较大,就先确认如下几个因素:
一、从库硬件比主库差,致使复制延迟;二、主从复制单线程,若是主库写并发太大,来不及传送到从库就会致使延迟。更高版本的mysql能够支持多线程复制;三、慢SQL语句过多;四、网络延迟;五、master负载:主库读写压力大,致使复制延迟,架构的前端要加buffer及缓存层;六、slave负载:通常的作法是,使用多台slave来分摊读请求,再从这些slave中取一台专用的服务器。
MySQL数据库主从同步延迟解决方案
最简单的减小slave同步延时的方案就是在架构上作优化,尽可能让主库的DDL快速执行;还有就是主库是写,对数据安全性较高,好比sync_binlog=1,innodb_flush_log_at_trx_commit= 1 之类的设置,而slave则不须要这么高的数据安全,彻底能够讲sync_binlog设置为0或者关闭binlog。innodb_flushlog也能够设置为0来提升sql的执行效率。另外就是使用比主库更好的硬件设备做为slave。
如何重置mysql root密码?
答:1、在已知MYSQL数据库的ROOT用户密码的状况下,修改密码的方法:
一、在SHELL环境下,使用mysqladmin命令设置: mysqladmin –u root –p password “新密码” 回车后要求输入旧密码
二、在mysql>环境中,使用update命令,直接更新mysql库user表的数据: Update mysql.user set password=password(‘新密码’) where user=’root’; / flush privileges; 注意:mysql语句要以分号”;”结束
三、在mysql>环境中,使用grant命令,修改root用户的受权权限。
grant all on . to root@’localhost’ identified by ‘新密码’;
忘记了mysql数据库的ROOT用户的密码,又如何作呢?方法以下:
一、关闭当前运行的mysqld服务程序:service mysqld stop(要先将mysqld添加为系统服务)
二、使用mysqld_safe脚本以安全模式(不加载受权表)启动mysqld 服务 /usr/local/mysql/bin/mysqld_safe –skip-grant-table &
三、使用空密码的root用户登陆数据库,从新设置ROOT用户的密码 #mysql -u root / Mysql> Update mysql.user set password=password(‘新密码’) where user=’root’;
Mysql> flush privileges;
lvs/nginx/haproxy优缺点
Nginx的优势是
一、跨平台:Nginx 能够在大多数 Unix like OS编译运行;
二、Master/Worker 结构:一个 master 进程,生成一个或多个 worker 进程;
三、配置异常简单:很是容易上手。
四、非阻塞、高并发链接:官方测试可以支撑5万并发链接。
五、内置的健康检查功能:若是 Nginx 代理的后端的某台 Web 服务器宕机了,不会影响前端访问;
六、稳定性高:用于反向代理,宕机的几率微乎其微。
Nginx的缺点/瓶颈是:
一、Nginx仅能支持http、https和Email协议,这样就在适用范围上面小些,这个是它的缺点。
二、对后端服务器的健康检查,只支持经过端口来检测,不支持经过url来检测;不支持Session的直接保持,但能经过ip_hash来解决;
LVS:使用Linux内核集群实现一个高性能、高可用的负载均衡服务器;它具备很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)
LVS的优势是:
一、抗负载能力强、是工做在网络4层之上仅做分发之用,没有流量的产生;这个特色也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低;
二、配置性比较低,这是一个缺点也是一个优势,由于没有可太多配置的东西;因此并不须要太多接触,大大减小了人为出错的概率
三、工做稳定,由于其自己抗负载能力很强,自身有完整的双机热备方案:如LVS+Keepalived,不过咱们在项目实施中用得最多的仍是LVS/DR+Keepalived、
四、无流量,LVS只分发请求,而流量并不从它自己出去,这点保证了均衡器IO的性能不会收到大流量的影响。
五、应用范围较广,由于LVS工做在4层,因此它几乎可对全部应用作负载均衡,包括http、数据库、在线聊天室等
LVS的缺点是:
一、软件自己不支持正则表达式处理,不能作动静分离;而如今许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优点所在;
二、若是是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了;后面有Windows Server的机器的话,若是实施及配置还有维护过程就比较复杂了相对而言,Nginx/HAProxy+Keepalived就简单多了。
HAProxy的特色是:
一、HAProxy也是支持虚拟主机的。
二、HAProxy的优势可以补充Nginx的一些缺点,好比支持Session的保持,Cookie的引导;同时支持经过获取指定的url来检测后端服务器的状态。
三、HAProxy跟LVS相似,自己就只是一款负载均衡软件;单纯从效率上来说HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
四、HAProxy支持TCP协议的负载均衡转发,能够对MySQL读进行负载均衡;对后端的MySQL节点进行检测和负载均衡,你们能够用LVS+Keepalived对MySQL主从作负载均衡。
五、HAProxy负载均衡策略很是多,Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)。
Tomcat/Apache/Nginx区别:
Apache HTTP服务器是一个模块化的服务器,能够运行在几乎全部普遍使用的计算机平台上。其属于web服务器。Apache支持模块多,性能稳定,Apache自己是静态解析,适合静态HTML、图片等,但能够经过扩展脚本、模块等支持动态页面等。
Tomcat是应用(Java)服务器,它是一个Servlet容器,能够认为是Apache的扩展,可是能够独立于Apache运行。
Nginx是一个高性能的HTTP和反向代理服务器。Nginx优势:负载均衡、反向代理、处理静态文件优点。nginx处理静态请求的速度高于apache;
mysql数据备份工具
mysqldump工具
mysqldump是mysql自带的备份工具,目录在bin目录下面:/usr/local/mysql/bin/mysqldump;支持基于innodb的热备份,可是因为是逻辑备份,因此速度不是很快,适合备份数据比较小的场景,Mysqldump彻底备份+二进制日志能够实现基于时间点的恢复。
基于LVM快照备份
在物理备份中,有基于文件系统的物理备份(LVM的快照),也能够直接用tar之类的命令对整个数据库目录进行打包备份,可是这些只能进行泠备份,不一样的存储引擎备份的也不同,myisam自动备份到表级别;而innodb不开启独立表空间的话只能备份整个数据库。
tar包备份
percona提供的xtrabackup工具:支持innodb的物理热备份,支持彻底备份,增量备份,并且速度很是快,支持innodb存储引发的数据在不一样数据库之间迁移,支持复制模式下的从机备份恢复备份恢复,为了让xtrabackup支持更多的功能扩展;能够设立独立表空间,打开 innodb_file_per_table功能,启用以后能够支持单独的表备份。
说说TCP/IP的七层模型
应用层 (Application):网络服务与最终用户的一个接口。
协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
表示层(Presentation Layer):数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
格式有,JPEG、ASCll、DECOIC、加密格式等。
会话层(Session Layer):创建、管理、终止会话。(在五层模型里面已经合并到了应用层);对应主机进程,指本地主机与远程主机正在进行的会话。
传输层 (Transport):定义传输数据的协议端口号,以及流控和差错校验。协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层。
网络层 (Network):进行逻辑地址寻址,实现不一样网络之间的路径选择。
协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
数据链路层 (Link):创建逻辑链接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议);将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
物理层(Physical Layer):是计算机网络OSI模型中最低的一层;物理层规定:为传输数据所须要的物理链路建立、维持、拆除而提供具备机械的,电子的,功能的和规范的特性;简单的说,物理层确保原始的数据可在各类物理媒体上传输。局域网与广域网皆属第一、2层;物理层是OSI的第一层,它虽然处于最底层,倒是整个开放系统的基础;物理层为设备之间的数据通讯提供传输媒体及互连设备,为数据传输提供可靠的环境;若是您想要用尽可能少的词来记住这个第一层,那就是“信号和介质”。
Linux运维跳槽必备面试题
正向代理:是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),而后代理向原始服务器转交请求并将得到的内容返回给客户端。客户端必需要进行一些特别的设置才能使用正向代理。
正向代理的用途:一、访问原来没法访问的资源,如google;二、能够作缓存,加速访问资源;三、对客户端访问受权、上网进行认证;四、代理能够记录用户访问记录(上网行为管理),对外隐藏用户信息。
反向代理:实际运行方式是指以代理服务器来接受internet上的链接请求,而后将请求转发给内部网络上的服务器,并将从服务器上获得的结果返回给internet上请求链接的客户端,此时代理服务器对外就表现为一个服务器。
反向代理的用途:一、保证内网的安全,能够使用反向代理提供WAF功能,阻止web;二、大型网站,一般将反向代理做为公网访问地址,Web服务器是内网。
Linux运维跳槽必备面试题
所谓四层负载均衡,也就是主要经过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
所谓七层负载均衡,也称为“内容交换”,也就是主要经过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
Linux运维跳槽必备面试题
三次握手and四次挥手
第一次握手:创建链接时,客户端发送同步序列号syn=1,随机产生seq数据包,发送seq=x到服务器,并进入syn_sent状态,等待服务器确认。
第二次握手:服务器收到报文请求,由syn=1知道客户端要创建链接请求,向客户端发送ack(ack=x+1),syn=1,同时本身也会发送一个syn(seq=y),即syn+ack包,此时服务器进入syn_sent状态。
第三次握手:客户端收到服务器syn+ack数据包,向服务器发送确认包ack(ack=y+1),同时发送序号:seq=x+1。此包发送完毕客户端与服务器进入创建链接状态。
第一次断开:客户方发给服务器一个FIN为1的请求,FIN为1表示是一个断开链接的请求,即表示数据传输完毕请求断开,并发送seq序列号和Ack确认号。
第二次断开:服务器收到客户端请求并返回ACK标志位为1,Ack为Seq+1等于201,并将对方的Ack做为本身的Seq序列号的确认数据包,biao 接收到请求赞成断开。
第三次断开:服务器发送ACK=1,FIN=1,Seq等于客户端第一次请求断开的Ack确认号+1,即Seq等于501的断开请求给客户端。
第四次断开:客户端发送ACK=1,Ack在上一步Seq上+1等于502,并使用在第二次断开中服务器发送的Ack确号201做为本次的序列号发给服务器表示赞成断开,服务器收到后验证序列号是第二次的,验证Ack是第三次+1的,确认没有问题后赞成断开,而后将端口置为TIME_WAIT状态,等待2 MSL时间后置为关闭状态,被动方收到主动方的报文确认Ack确认号没有问题后将端口置为CLOSED,至此端口关闭。
Linux运维跳槽必备面试题
docker打镜像的过程;docker的优点
一、启动一个临时容器;二、顺序执行dockerfile命令;三、build -t 保存并改名为指定的名称作本地保存;四、把临时容器删除;
Docker 的优点: 快速部署:高效虚拟化:节省开支:简化配置:快速迁移和扩展: 缺点:隔离性:各应用之间的隔离不如虚拟机。
Nginx中配置CPU亲和性,workerprocesses和workerCPU_affinity有什么好处?
下降了系统对CPU和内存的开销,主要是nginx的工做进程内存开销和回收。
Nginx默认几种调度算法:3种
经常使用的有3种调度算法(轮询、ip hash、权重)。
轮询:upstream按照轮询(默认)方式进行负载,每一个请求按时间顺序逐一分配到不一样的后端服务器,若是后端服务器down掉,能自动剔除。ip hash:每一个请求按访问ip的hash结果分配,这样每一个访客固定访问一个后端服务器,能够解决session的问题。权重:指定轮询概率,权重(weight)和访问比率成正比,用于后端服务器性能不均的状况。
Apache默认几种工做模式:3种
一、Prefork MPM: 预派生模式,有一个主控制进程,而后生成多个子进程,使用select模型,最大并发1024,每一个子进程有一个独立的线程响应用户请求,相对比较占用内存,可是比较稳定,能够设置最大和最小进程数,是最古老的一种模式,也是最稳定的模式,适用于访问量不是很大的场景。优势:稳定;缺点:慢,占用资源,不适用于高并发场景 二、woker MPM:是一种多进程和多线程混合的模型,有一个控制进程,启动多个子进程,每一个子进程里面包含固定的线程,使用线程来处理请求,当线程不够使用的时候会再启动一个新的子进程,而后在进程里面再启动线程处理请求,因为其使用了线程处理请求,所以能够承受更高的并发。优势:相比prefork 占用的内存较少,能够同时处理更多的请求;缺点:使用keep-alive的长链接方式,某个线程会一直被占据,即便没有传输数据,也须要一直等待到超时才会被释放。若是过多的线程,被这样占据,也会致使在高并发场景下的无服务线程可用。比prefork 占用的内存较少,能够同时处理更多的请求; 三、event MPM:Apache中最新的模式,属于事件驱动模型(epoll),每一个进程响应多个请求,在如今版本里的已是稳定可用的模式。它和worker模式很像,最大的区别在于,它解决了keep-alive场景下,长期被占用的线程的资源浪费问题(某些线程由于被keep-alive,空挂在哪里等待,中间几乎没有请求过来,甚至等到超时)。event MPM中,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又容许它释放。这样加强了高并发场景下的请求处理能力。 优势:单线程响应多请求,占据更少的内存,高并发下表现更优秀,会有一个专门的线程来管理keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又容许它释放 缺点:没有线程安全控制。
说一下大家公司的代码是怎么发布的?
发布:jenkins配置好代码路径(SVN或GIT),而后拉代码,打tag。须要编译就编译,编译以后推送到发布服务器(jenkins里面能够调脚本),而后从分发服务器往下分发到业务服务器上。
elk中的logstash是怎么收集日志的,在客户端的logstash配置文件主要有哪些内容?
input、output两大块配置;input中指定日志(type、path)等,output指定日志输出的目标(host、port)等。
ansiblesrc是文件的来源目标;dest是文件的目的方向;幂等性:一个任务执行一次和执行n次效果同样,不因重复执行带来意外状况;
ansible命令执行过程: 1. 加载本身的配置文件默认/etc/ansible/ansible.cfg;2. 加载本身对应的模块文件,如command;3. 经过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件;4. 给文件+x执行;5. 执行并返回结果;6. 删除临时py文件,退出
执行状态:绿色:执行成功而且不须要作改变的操做;×××:执行成功而且对目标主机作变动;红色:执行失败
command与shell的功能:command是默认模块,只能对远程主机进行显示和文件的修改;command模块不支持重定向以及管道;shell模块支持重定向以及管道;
ansible web -m copy -a ‘src=/data/config dest=/data2/selinux/’ 将文件复制到web服务器下,如目标文件目录不存在,则会所有建立,不管几级。
copy模块可以传输和建立文件及指定权限:ansible 172.18.27.27 -m copy -a ‘content=”woai\nni” dest=/data/woaini.txt(存在会建立,不存在则不会建立,存在会覆盖以前内容
能够将playbook文件进行加/解密:ansible-vault en/decrypt hello.yml 加/解密
ansible你用过它的哪些模块,ansbile同时分发多台服务器的过程很慢(它是逐台分发的),你想过怎么解决吗?
用过ansible的(copy file yum ping command shell)等模块;ansible默认只会建立5个进程,因此一次任务只能同时控制5台机器执行.若是有大量的机器须要控制,或者但愿减小进程数,能够采起异步执行.ansible的模块能够把task放进后台,而后轮询它.这使得在必定进程数下能让大量须要的机器同时运做起来。
如今有一批机器的root用户和密码,怎么实现ansible主机和这批机器之间免秘钥认证呢?
一、ssh-keyscan 主机名 >> /root/.ssh/known_hosts;二、配置hosts文件,带密码参数ansible_ssh_pass;三、配置yml文件;四、运行ansible-playbook -i hosts ssh-addkey.yml
编写剧本:当主机为7,安装nginx、当主机为6,安装httpd;
[root@centos7 ~]#cat nginx_httpd_role.ymlphp

  • hosts: web:app
    roles:
    -{ role: nginx, when: ansible_distribution_major_version == “7”, tags: [“web”,”nginx”] }
    -{ role: httpd, when: ansible_distribution_major_version == “6”, tags: [“web”,”httpd”] }
    编写剧本测试是哪一个版本:
    vim when.yml
    -hosts: web
    tasks:
    -name: when6
    file: path=/data/f6.txt state=touch
    when: ansible_distribution_major_version == “6”
    -name: when7
    file: path=/data/f7.txt state=touch
    when: ansible_distribution_major_version == “7” ansible-playbook when.yml
    编写nginx.yml剧本:
    [root@centos7 ~]#cat nginx.yml

  • hosts: app
    tasks:html

    • name: install
      yum: name=nginx
    • name: config
      template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
      notify: restart
    • name: data
      copy: src=/data/index.html dest=/usr/share/nginx/html/
    • name: service
      service: name=nginx state=started enabled=yes

    handlers:前端

    • name: restart
      service: name=nginx state=restarted
      编写mysql.yml的playbook剧本:
      vim mysql.yml
      -hosts:app
      tasks:
      -name:group
      group:me=mysql system=yes
      -name: user
      user: name=mysql system=yes home=/data/mysql shell=/sbin/nologin group=mysql
      -name: unarchive
      unarchive: src=/data/mariadb-10.2.22-linux-x86_64.tar.gz dest=/usr/local
      -name: mysqldir dir owner group
      file: path=/usr/local/mariadb-10.2.22-linux-x86_64 state=directory owner=root group=root
      recurse=yes
      -name: mysqldir link
      file: src=/usr/local/mariadb-10.2.22-linux-x86_64 path=/usr/local/mysql state=link
      -name: data file
      shell: chdir=/usr/local/mysql/ ./scripts/mysql_install_db –user=mysql –datadir=/data/mysql
      -name: config
      copy: src=/data/my.cnf dest=/etc/ backup=yes
      -name: script
      copy: src=/data/myqld dest=/etc/init.d/ mode=755
      -name: service
      shell: /etc/init.d/mysqld start
      zabbix 监控了多少客户端 客户端是怎么进行批量安装的
      根据实际公司台数回答。一、使用命令生成密钥。二、将公钥发送到全部安装zabbix客户端的主机。三、安装 ansible 软件,(修改配置文件,将zabbix 客户机添加进组)。四、建立一个安装zabbix客户端的剧本。五、执行该剧本。六、验证。
      zabbix 怎么开启自定义监控:一、写一个脚本用于获取待监控服务的一些状态信息。二、在zabbix客户端的配置文件zabbix_agentd.conf中添加上自定义的“UserParameter”,目的是方便zabbix调用咱们上面写的那个脚本去获取待监控服务的信息。三、在zabbix服务端使用zabbix_get测试是否可以经过第二步定义的参数去获取zabbix客户端收集的数据。四、在zabbix服务端的web界面中新建模板,同时第一步的脚本可以获取什么信息就添加上什么监控项,“键值”设置成前面配置的“UserParameter”的值。五、数据显示图表,直接新建图形并选择上一步的监控项来生成动态图表便可。
      zabbix 自定义发现是怎么作的?
      一、首先须要在模板当中建立一个自动发现的规则,这个地方只须要一个名称和一个键值。二、过滤器中间要添加你须要的用到的值宏。三、而后要建立一个监控项原型,也是一个名称和一个键值。四、而后须要去写一个这样的键值的收集。
      自动发现实际上就是须要首先去得到须要监控的值,而后将这个值做为一个新的参数传递到另一个收集数据的item里面去。
      zabbix 是怎么实施监控的:
      一个监控系统运行的大概的流程是这样的:agent须要安装到被监控的主机上,它负责按期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展示和绘图。
      【主动监测】通讯过程以下:
      zabbix首先向ServerActive配置的IP请求获取active items,获取并提交active tiems数据值server或者proxy。
      获取ACTIVE ITEMS列表
      Agent打开TCP链接(主动检测变成Agent打开)
      Agent请求items检测列表
      Server返回items列表
      Agent 处理响应
      关闭TCP链接
      Agent开始收集数据
      主动检测提交数据过程以下:
      Agent创建TCP链接
      Agent提交items列表收集的数据
      Server处理数据,并返回响应状态
      关闭TCP链接
      【被动监测】通讯过程以下:
      Server打开一个TCP链接
      Server发送请求agent.ping\n
      Agent接收到请求而且响应
      Server处理接收到的数据
      关闭TCP链接
      zabbix主被动模式有啥区别:zabbix有啥特色:
      被动模式:此模式为zabbix默认的工做模式,由zabbix server向zabbix agent发出指令获取数据,zabbix agent被动地去获取数据并返回给zabbix server,zabbix server会周期性地向agent索取数据。此模式的最大问题就是会增长zabbix server的工做量,在大量的服务器环境下,zabbix server不能及时获取到最新的数据。
      主动模式:即由zabbix agent主动采集数据并返回给zabbix server,不须要zabbix server的另行干预,所以使用主动模式能在必定程序上减轻zabbix server的压力。zabbix可横向扩展、自定义监控项、支持多种监控方式、可监控网络与服务等。

原文链接:http://www.javashuo.com/article/p-tpaihfya-m.html

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享