运维知识入门修炼

牧客Jeson

一、Shell命令合集

操作快捷键

  • ctrl + r 可以快速查找历史命令
  • ctrl + l 可以清空控制台屏幕
  • ctrl + a \ ctrl + e 移动光标到命令行首、尾部
  • ctrl + w \ ctrl + k 删除光标之前、之后的内容

VIM

  • shift + zz 文件保存并退出

进程操作快捷键

  • ctrl + c 强行终止程序的执行
  • ctrl + z 挂起一个进程
  • ctrl + d 终端中输入exit后回车

linux命令中快捷键

  • shift + p 根据cpu使用率排序
  • shift + m 根据内存占有用排序

空间分析

硬盘空间不足,需快速定位日志目录

1
du -x --max-depth=1 /|sort -k1 -nr
  • du命令
    • -x 表示跳过其他文件系统
    • –max-depth=1 可以统计出根目录下第一级目录中所有文件大小
  • sort命令
    • -k 参数致命具体按照哪一列
    • -n 只对数值进行排序
    • -r 表示反向排序
  • 整体指 第一列并按照数据大小做反序排列

系统产生很多碎片文件,导致inode资源不足

1
find -type f|awk -F/-v OFS=/'{$NF="";dir[$0]++}END{or(i in dir)print dir[i]""i}'|sort -k1 -nr|head
  • find -type -f 查找指定类型的文件,然后将结果通过管道传递给awk
  • -F/ 指定处理文件时字符串之间以/进行分割 -v OPS=/表示文件显示结果以/进行分割展示
  • awk命令整体规则而言有个{}END{}格式,前面{}表示行处理操作,后面表示行处理后需要进行整体结果展示

文件操作

批量查找文件作内容替换

1
find ./-type f -name consumer.xml -exec sed -i"s/aaaaaa/bbbbbb/g"{}\;
  • -name指定查找的文件名
  • -exec参数将查找到内容传递给下一个命令去继续执行相关逻辑
  • sed命令主要对文件内容进行替换,这里会将consumer文件中的aaaaaa替换成bbbbbb

批量查找文件作拷贝打包

1
(find .-name "*.txt"|xargs tar -cvf test.tar)&&cp -f test.tar /home/.
  • 括号中 包含两条命令 他们使用管道符进行连接
  • 括号外 通过&& 与第三条命令连接 最终再拷贝

网络连接状态分析

1
netstat -n|awk '/^tcp/{++$[$NE]END{for (a in S)print a,S[a]}'
  • netstat -n负责查看主机上所有TCP UDP连接信息
  • awk 负责对这些 信息进行进一步处理
  • / 括起来的正则表达式

IP信息提取

提取主机上的IP信息

1
ip a|grep "gobal"|awk'{print $2}' |awk -F/'{print $1}'
  • ip a 查看主机上所有网卡信息
  • 通过grep进行条件过滤
  • 再通过awk实现第二列内容输出
  • 最后通过awk指定/作为分隔符来打印第一列信息

二、nginx

基础配置优化

  • gzip

缓存配置优化

  • 浏览器缓存

    • 静态文件设置 expires
  • 代理缓存(动静分离)

    • proxy_cache_path
    • cache levels
    • my_cache:10m max_size
  • https ssl

    • ssl_session_cache shared-SSL:10m;
    • ssl_session_timeout 10m;
  • 后端缓存 redis memcache

  • 打开文件缓存 元数据jpg

    • open_file_cache max=1000 inactive=20s;
    • open_file_cache_valid 30s;
    • open_file_cache_min_uses 2;
    • open_file_cache_errors on;

经验

  • 能放在客户端就放客户端

  • 能缓存越多越好

  • 命中率越高越好

三、nginx负载均衡

1
2
3
4
5
6
7
8
9
10
11
12
http{
upstream app_servers{
server ip1:port1;
server ip2:port2;
server ip3:port3;
}
server{
location /{
proxy_pass http://app_servers;
}
}
}

常见问题

  • 客户端IP地址获取问题:服务端获取不到用户的IP
  • 域名挟带问题 proxy_set_header Host $host
  • 负载均衡导致session丢失问题
    • session保持ip_hash,url_hash
    • session复制
    • session共享
  • 动态负载均衡问题
  • 真实的realserver状态检测 nginx_upstream_check_module 淘宝技术

四、入口网关服务注册发现

openresty 动态upstream

开源组件方案confd nginx-upsync-module

开源AP网关方案

五、curl命令最常见使用方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
查看body
curl http://www.baidu.com
查看头部
curl -I http://www.baidu.com
重定向到文件里
curl -I http://www.baidu.com -o output.txt
查看请求服务端是否已经发送出去
curl -v http://www.baidu.com
文件下载
curl -O -u user:password ftp://...
curl -O http://...sh
断点续传
curl -C http://...sh
GET
curl -v http://
POST
curl -v -X POST http://
PUT
curl -v -X PUT http://
DELETE
curl -v -X DELETE http://

六、系统性能验收

Unixbench基于linux unix基准测试工具。

FIO性能压测是一个开源的主流的LINUX磁盘IO测试工具。

devops(开发测试部署- 持续集成、运维)

自动化

各项流程需要无缝打通

交给统一平台进行可视化管理

七、持续集成

gitlab docker jenins ansible

八、CMDB平台

自动化资产管理:物理资产、虚拟资产、信息资产

IMOOCC.OPS

Python + ansible + django

九、自动化任务平台

八、K8S打造ci/cd核心思路

  • jenkins部署高可用
    • 主从架构、部署到K8S中
  • 通过pipeline创建管理job
  • 通过API接口创建管理job

十、割接

服务内容

  • 同构割接:对同构服务进行升级,主体结构是不变的,只是进行例行性的升级,或内容版本修改。

  • 异构割接:整个主体结构做了改变

分类

  • 局部割接:只操作了其中的一小部份内容,只对一小部分产生影响

  • 全局割接:影响 整体功能,大部份内容需要做检查。

关键思路:停机维护、无缝升级如何设计