运维技术
涉及Linux系统、监控、容器技术内容整理
Q飞了
起步于网络通信、干过运维交付,对软件工程、项目管理有多年经验和心得。现在负责Saas产品和技术架构,长期致力于为各行业提供企业数字化转型解决方案。
展开
-
云上DNS负载均衡实践
云上DNS负载均衡的两种架构如下图架构1和架构2区别架构1负载不均衡问题不能解决,即SLB1上、SLB2上流入的流量不均衡,可能导致一个流量高,一个流量偏低,最终会导致后面的ECS计算资源并不能得到有效利用。架构2 ECS分别挂载到了不同的SLB上,即使前端两个SLB流量不同,但最终请求流量都是转发到ECS艰辛处理。所以采用DNS引起的负载不均衡问题就被解决了。但是却要用两个SLB,增加维护成本,所以不适合中小架构。主要适合大规模应用。当后端有上百台服务器时候,而一台SLB的性能..原创 2021-05-16 00:33:03 · 502 阅读 · 1 评论 -
域名解析DNS原理思维导图
原创 2021-05-15 21:24:57 · 803 阅读 · 1 评论 -
Tcpdump与nc探测udp端口是否可用
一.场景说明1.假设有两台机器A和B2.需求是A主动去和B连接,B机器运行着某个UDP协议的应用;3.如果A和B都能证明自己的程序运行没问题,就可以借助与tcpdump和nc工具排查是不是网络和防火墙等问题;二.工具的安装机器A可以安装Ncat,通过yum install nc;机器B可以安装tcpdump,通过yum install tcpdump;三.启用工具A机器可以通过以下命令发起连接:nc -vu {ip地址} {port端口}如:nc -vu 192.16原创 2021-03-29 20:20:39 · 528 阅读 · 0 评论 -
sshpass用法
一 sshpass用处当将ssh、scp等命令做成自动化脚本时,可能需要非交互式的登录过程,此时可以用sshpass。sshpass 免输密码执行命令,安装yum install sshpass选项有-p:跟明文密码;-f 跟明文密码文件;-e 通过设置密码变量SSHPASS二 忽略RSA Key检查信息第一次认证时,一般会有RSA key检查的提示:可以使用 -o StrictHostKeychecking=no选项来忽略key检查信息。sshpass -e ssh root@19转载 2020-09-25 23:06:48 · 7960 阅读 · 1 评论 -
SHELL脚本中command -v 用法
在Linux中,command -v 可以判断一个命令是否支持,如果一个脚本需要,或者还要家if判断,则示例如下:if command -v python >/dev/null 2>&1;then echo "yes"else echo "no"fi脚本运行后,如果系统支撑python,则运行结果为yesif command -v docker >/dev/null 2>&1;then echo "yes"else ech原创 2020-09-20 23:36:24 · 5020 阅读 · 0 评论 -
企业如何建立规范的IT运维流程和制度?实践这“四步”就够了
前言虽然信息技术在企业中的应用得到了前所未有的重视,但是企业中普遍存在“重建设,轻运维”,“重技术,轻流程”等问题,导致对IT运维工作投入不足,缺乏规范化的运维管理流程。运维的价值与意义其实从信息系统整个生命周期来看,实施建设只占生命周期的20%,而其余80%的时间都是对其运行维护,所以运维阶段是IT生命周期的关键阶段,如果IT运维管理做得不好,那么这些花费大笔投资建立起来的系统将无法带来预期的收益。缺乏规范的管理运维体系,导致企业普遍存在以下问题:运维人员像救火队员,不能预防问题的发生缺乏统原创 2020-08-19 08:50:30 · 2031 阅读 · 0 评论 -
云平台监控指标的设定
为了确保存储和服务器能应付不断增长的业务需求,对磁盘资源、内存和CPU资源、宿主操作系统进行监控是必要的。1.磁盘资源服务器硬盘是磁盘资源中最慢的组件,在企业数据中心,仔细设计存储子系统,不要让它成为主要的性能瓶颈。建议:使用SAN,即使预算不允许,也要确保磁盘资源争用不会导致虚拟机瘫痪;应将宿主机操作系统安装到专用硬盘上(不是专用卷),确保宿主操作系统不会与虚拟机抢夺磁盘资源。RAID阵列是满足虚拟服务器性能必须的,RAID 1或RAID 10(提供更好的容错)。优先考虑磁盘转速10K R原创 2020-08-18 23:42:57 · 1953 阅读 · 0 评论 -
虚拟化环境存在的几种典型性能问题
性能问题当主机对于存储访问的需求超过存储设备所能提供的性能时,就会出现性能瓶颈,这直接影响到主机上的应用性能。当将传统存储设备用于高度虚拟化环境、多个虚拟机的多个应用并行运行时,存储设备将难以提供充足的性能来满足实际运行要求。例如:一台服务器上可以部署10个虚拟机,但由于后端存储性能的限制,在实际业务过程中只能满足8个虚拟机的并行运行。混合负载的优化问题虚拟化常常在混合负载环境下运行:有可能某一个虚拟机在传输大文件时,另一个虚拟机却在访问流媒体,而其他虚拟机则在运行某个业务数据库。这种情况下,存储阵原创 2020-08-17 23:20:19 · 607 阅读 · 0 评论 -
Python对文件的复制操作
前言python 中对文件的读取或写入操作完后,需要借助命令close()方法关闭引用状态,释放对文件的操作的资源空间。而with …… as …… 自己本身有这种能力,不需要再借助colse()方法。下面是test.txt 复制为test1.txt的代码示例:with open(r'test.txt','r') as stream: res=stream.read() #读取文件内容 with open(r'test1.txt','w') as wstream:原创 2020-08-08 22:53:45 · 1046 阅读 · 0 评论 -
云原生概念介绍(一)
云原生的概念起始于2015年,概念的准确性也不断随着时间演化,起初云原生的提出者Pivotal对云原生的定义如下:云原生架构的几个主要特征:符合12因素应用面向微服务架构自服务敏捷架构基于API的协作抗脆弱性2015年谷歌主导下CNCF成立后,起初对云原生的定义包含以下三个方面:应用容器化面向微服务的架构应用支持容器的编排调度2018年重定义: 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微原创 2020-08-05 09:54:18 · 2494 阅读 · 0 评论 -
Ceph 对象存储配置笔记
Ceph对象存储1.系统资源—准备三台server2.安装前配置1.配置hosts---vi /etc/hosts2.安装openvm工具---yum install -y open-vm-tools (工作环境是VMware虚拟环境时)3.配置防火墙 确保在ceph存储管理节点和客户端节点中开放了以下的端口:2003/4505-4506 启用防火墙systemctl enable firewalld 运行命令开放端口 firewall-cmd --zone=public --add-po原创 2020-08-03 19:17:09 · 485 阅读 · 0 评论 -
如何选择阿里云ECS服务器?
考虑因素如下:1. 我的服务器要放置在什么区域?参考目标客户位置,华北,华东,东京,上海……不同区域价格略有不同看服务客户是哪个区域的,一般越近越好;或者看市场是全国的还是面向国内国外的2. 我的服务器需要什么样的配置CPU,内存等配置3.什么样的操作系统?最常见的就是windows系列和Linux 系列4. 我的服务器IO性能满足需要么?选择支持I/O优化的实例对于不支持I/O优化的实例,挂载SSD云盘时,通常最高可获得1000左右的IOPS性能高性能需要有充足的预原创 2020-08-03 09:38:26 · 124 阅读 · 0 评论 -
Python装饰器应用
islogin=False#定义登录函数def login(): print("开始登录,输入用户名和密码") return True#定义一个装饰器def login_required(func): def wrapper(*args,**kwargs): global islogin if islogin: func(*args,**kwargs) else: islogi.原创 2020-08-02 22:13:10 · 96 阅读 · 0 评论 -
Python闭包的概念和用法
概念闭包在函数提出的概念一个函数嵌套一个函数def func1(): a = 50 def func2(): b = 60 print(b) return func2x = func1()x()内部函数用return方式进行反馈然后外部加括号调用执行结果总结条件:1.外部函数中定义了内部函数2.外部函数是有返回值3.返回的值是:内部函数名4.内部函数引用了外部函数的变量名#闭包举例def func1(a,b):原创 2020-07-29 00:25:00 · 160 阅读 · 0 评论 -
Python的enumerate函数
def func(): n=5 ls1=[15,22,33] #声明内部函数 def in_func(): #对ls1里面的元素进行加5操作 for k,v in enumerate(ls1): ls1[k] = v + n ls1.sort() in_func() print(ls1)func()#enumerate函数使用ls2=['a','b','c']print(list原创 2020-07-26 18:30:05 · 62 阅读 · 0 评论 -
Python中random函数5种用法
import randomdef gen_code(n): s='er0dfsdf7dfdfd7f989fd' code='' for i in range(n): r = random.randint(0,len(s)-1) code+=s[r] return codedef login(): username=input("输入用户名:") passwd=input("输入密码:") code=gen_code原创 2020-07-25 23:55:25 · 5614 阅读 · 0 评论 -
Redis主从复制
安装版本和常见问题错误1:make[3]: cc: Command not foundyum install gcc -y错误2:zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory #include <jemalloc/jemalloc.h>make MALLOC=libc错误3:经验整理:本人系统是centos7.7,安装redis6.0.6时遇到如下问题,其它贴子说要升原创 2020-07-25 17:15:51 · 105 阅读 · 0 评论 -
python基础练习(一)
9*9乘法表for i in range(1,10): for j in range(i,10): r='{}*{} = {}'.format(i,j,i*j) print("{0:10}".format(r),end=' ') print('\r')原创 2020-07-23 16:48:55 · 113 阅读 · 0 评论 -
用Python实现双色球随机选号
import randomdef ball(n): balls=set() #定义一个空集合,存n个双色球 while len(balls)!=n: #当判断条件假false时,循环结束 red_list=sorted(random.sample(range(1,34),6))#从1到33随机取6个数字(int) 返回值是list 升序 red_ball=[str(i).zfill(2) for i in red_list] #int列表类型转字符串列表即(转载 2020-07-23 15:35:55 · 5419 阅读 · 0 评论 -
Python调用钉钉机器人发消息
import jsonimport requestsimport randomdef func(): name = input("输入你的大名:") age = input("输入你的年龄:") rdm = random.randint(18, 50) if int(age) > rdm: r='你好,{}。我比你小,我{}岁了。'.format(name,rdm) elif int(age) < rdm: r='你原创 2020-07-22 15:56:41 · 437 阅读 · 0 评论 -
SuperVisor配置实践
1.平台版本和python环境#系统版本7.3[root@server]$ cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) #supervisor依赖于python[root@server]$ python -VPython 2.7.5#安装pip,这一步主要是为通过pip来安装supervisor而用。yum install python-pip2.安装supervisor(两种方式)在扩展epel源安装好的原创 2020-07-21 18:52:25 · 354 阅读 · 0 评论 -
PYTHON格式化输出
区分%s、%d和%f的用法1 先看%s用例name = 'hanfeizi'addr = '陕西西安未央区'num = 21floor = '55栋'#格式化化输出print("他的名字是%s,家庭住址%s,街道%s,小区%s楼" % (name,addr,num,floor))#用+连接字符串和变量print("他的名字是"+name+"家庭住址"+addr)结果:他的名字是hanfeizi,家庭住址陕西西安未央区,街道21,小区55栋楼他的名字是hanfeizi家庭住址陕西西安原创 2020-07-20 00:14:19 · 357 阅读 · 0 评论 -
PYTHON正则表达式(三)
正则表达式re.sub()Python正则表达式函数除了match、search、findall,下面举例说明下sub,这是对找到的内容具备替换作用的函数。直接替换:#直接用100替换匹配到的数字res1 = re.sub(r'\d+','100','java:77,python:81')print(res1)用函数对匹配到的数值计算和替换:import re#定义函数给获取到的数值+10def func(temp): num = temp.group() num1原创 2020-07-19 12:12:48 · 128 阅读 · 0 评论 -
PYTHON正则表达式(二)
需求1:判断固话格式,并分别提取区号和座机号:如010-8992323,提取保存010和8992323。import remsg = '010-8992323'#每个城市区号有3位或者4位,座机号有7位或者8位res = re.match(r'(\d{3,4)-(\d{7,8)$',msg)#以上的正则格式是()-(),分别把区号和固话放到括号中,用group(num)方法获取print(res.group())print(res.group(1))print(res.group(2))原创 2020-07-19 11:37:25 · 153 阅读 · 0 评论 -
Python正则表达式实现过滤邮箱
需求:1.判断用户输入的邮箱格式合法;(用户名5-15位,必须还有@符号)2.邮箱必须是qq.com或者163.com或者126.com之一;#导入正则模块import re#先定义几个邮箱,用来测试下正则email = '431345@qq.com'#定义匹配规则result = re.match('\w{5,15}@(qq|126|163)\.(com|cn)',email)print(result.group())结果如下–匹配成功:用163邮箱地址测试正则–匹配成功:原创 2020-07-19 09:00:06 · 2071 阅读 · 0 评论 -
Python自动阅卷统计分数
需求:1.判断用户输入的答案是否与正确答案一致;2.一致就递增记分;2.同时记录正确数量的试题;试题文档exam.txt内容:下列哪个语句在python中是非法的?A、x=y=z=1B、x=(y=z=1)C、x,y=1,2D、x+=yPython语言语句块的标记是:A 分号B 逗号C 缩进D /Python脚本如下:# -*- coding: UTF-8 -*-f = open("D:/xiaoyun/exam.txt","r",encoding='utf-8')ans原创 2020-07-17 22:37:28 · 968 阅读 · 1 评论 -
一种Nginx日志按日期切割的“笨“方法
Nginx软件目前还没有类似Apache的通过cronolog或对日志进行分割处理的功能,但是,运维人员可以利用脚本开发、Nginx的信号控制功能或reload重新加载,来实现日志的自动切割、轮询。1 配置日志切割脚本,命令如下:vi cut_nginx_log.shcd /var/log/nginx/logs && \/bin/mv access.log access_$(date +%F -d -1day).log #将日志改成前一天的名称/usr/local/nginx/.原创 2020-07-16 22:28:31 · 167 阅读 · 0 评论 -
Python脚本监控Redis运行状态
#!/usr/bin/pythonimport redisimport sysSTATUS_OK = 0STATUS_WARNING = 1STATUS_CRITICAL = 2HOST = sys.argv[1]PORT = int(sys.argv[2])WARNING = float(sys.argv[3])CRITICAL = float(sys.argv[4])def connect_redis(host,port): r = redis.Redis(host,port原创 2020-07-16 00:02:26 · 995 阅读 · 0 评论 -
Shell脚本检测MySQL主从复制是否同步
MySQL主从架构,从机主要起备份数据库和冷备份的作用,虽然从机宕机了问题不大,但也会影响到数据的备份工作;如果要备份的系统数量较多,逐个手动检查,每天要花费不少时间,所以推荐使用脚本监控。脚本设计思路:脚本能够适用于不同的IP环境脚本顺便监控MySQL是否正常运行Slave机器的IO和SQL状态必须为yes,缺一不可。脚本里用到了多重条件判断-a;脚本内容如下:#!/bin/bash#check MySQL_Slave status#crontab time 01:00MYSQL.原创 2020-07-15 23:45:11 · 665 阅读 · 0 评论 -
明白这些,软件维护人员才好“怼”开发和老板
软件的可维护性软件具有可维护性由三个因素决定可理解性可测试性可修改性软件维护的分类纠错型维护虽然经过严格的测试,不能保证软件彻底没有错误,随着运行时间的延续,数据量的积累,应用环境的变化,软件错误仍会顽固暴漏出来,此时就要进行纠错型维护。适应型维护伴随计算机硬件的新产品,操作系统的新版本不断推出,正在运行的软件必须进行适应性维护。完善型维护用户逐渐熟悉软件以后,会提出一些改进需求,为了满足这些需求,必须进行完善性维护,这样的维护工作量占到一半以上。比如打印格式调整,统计口径增加,业原创 2020-07-14 21:12:11 · 298 阅读 · 0 评论 -
jenkins关于历史jobs保留设置
问题:Jenkins在使用一段时间后,jobs目录会越来越大,将硬盘空间撑爆,个人场景给jenkins目录分配100G,不到一个月空间用去了83G,自己排查原因,jenkins-data目录下保存着每一次的构建包,直接删除这些构建历史包可能会对项目有不可预期的故障。方法:以下两种办法可以有效遏制持续增加的job目录方法1:调整历史构建记录保存数以上保存即可。方法2:用脚本批量删除历史构建记录以下为Jenkins console中执行的脚本,针对自己的项目和要删除的编号修改执行//定义项目名称原创 2020-07-15 23:21:09 · 3710 阅读 · 0 评论 -
Shell构造视图窗口工具dialog和zenity
在脚本程序中使用视图窗口,不仅能增加脚本程序阅读的直观性,同时也可以提高脚本程序的亲和力。而将一些提示性的信息或操作结果显示于视图窗口,也为用户操作提供了非常好的视觉效果。1.视图构造工具dialogdialog 是一款shell脚本中建立对话框的工具,有很多参数和选项。常用的对话框有Yes/no选项框、基本输入框以及菜单选项框等。1.1 dialog安装yum install dialog...省略...Package dialog-1.2-5.20130523.el7.x86_64 al原创 2020-07-11 23:43:48 · 1023 阅读 · 0 评论 -
Linux开机启动流程,不可不知的几个概念
1.开机流程分析一台计算机由硬件和软件组成,软件又分操作系统、驱动程序和应用软件……。那么一台计算机是如何启动的?它的顺序是什么?启动管理程序是什么?其实不管什么类型的操作系统,启动顺序基本类似。关键概念BIOS:固化到计算机主板上的程序,保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 为计算机提供最底层的、最直接的硬件设置和控制。MBR:主引导记录,硬盘的开始扇区读取引导记录,找到引导记录会把电脑的控制权转给引导记录,由引导记录原创 2020-07-11 00:44:50 · 105 阅读 · 0 评论 -
DenyHosts 3.1版本工具防止SSH暴力破解
Denyhosts是用python写的一个程序,会分析/var/log/secure等日志文件,当发现同一IP在进行多次SSH密码尝试时就会将该IP记录到/etc/hosts.deny文件上,从而达到自动屏蔽该IP的目的。Denyhosts安装步骤如下:1.检查安装条件1)首先判断系统安装的sshd是否支持TCP_Wrappers(默认都是支持的):[root@node1 ~]$ ldd /usr/sbin/sshd | grep libwrap.so.0 libwrap.so..原创 2020-07-09 23:35:33 · 1113 阅读 · 0 评论 -
如何用shell脚本获取所有网卡名称和IP地址
为了成对统计电脑的网卡和IP,本人实现的一种方法:#!/bin/bash#先过滤网卡名称,存到数组a中a=(`ifconfig | grep ^[a-z] | awk -F: '{print $1}'`)#在拿到IP地址,存到数组b中b=(`ifconfig | grep 'inet' | sed 's/^.*inet //g' | sed 's/ *netmask.*$//g'`)for ((i=0;i<6;i++)) do echo ${a[$i]} ${b[$i]}原创 2020-07-06 22:45:25 · 7089 阅读 · 0 评论 -
Centos7中的定时任务总结
1 Linux 中定时任务分类有两种:一种是一次性的,如at ,不过必须有atd后台服务。一种是循环的的,如crontab,对应的后台服务为crond。确认服务状态:[root@test3 ~]$ systemctl status atd● atd.service - Job spooling tools Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled) Ac原创 2020-07-05 19:29:12 · 469 阅读 · 0 评论 -
理解Openstack的那些“东西”
OpenStack组件介绍Openstack架构图如下所示:控制台(Horizon)计算(Nova)网络(Neutron)对象存储(Swift)块存储(Cinder)认证服务(Keystone)镜像服务(Glance)编排服务(Heat)计量/监控服务(ceilometer)Openstack架构图如下所示:控制台(Horizon)用户通过该服务与OpenStack的各服务进行交互,如启动虚拟机实例、分配IP地址、设置访问控制等。计算(Nova)按需分派并管理虚拟机网络(Neutron)通常原创 2020-06-27 09:13:00 · 281 阅读 · 0 评论 -
Linux系统性能分析核心概念(1)
1.运行队列在Linux中,进程的状态有2种:可运行的:如果进程是可运行的,那就意味着它要和其它也是可运行的进程竞争CPU时间。阻塞的:正在等待一个事件的完成,阻塞进程可能在等待的是从I/O设备来的数据,或者是系统调用的结果。一个可运行的进程不一定会使用CPU,但是当Linux调度器决定下一个要运行的进程时,它会从可运行的进程队列种挑选。如果进程是可运行的,同时又在等待使用处理器,这些进程就构成了运行队列。运行的队列越长,处于等待状态的进程就越多。性能工具通常会给出可运行的进程个数和等待I原创 2020-06-26 14:37:57 · 143 阅读 · 0 评论 -
Linux系统运行分析工具-Sar命令使用总结
sar介绍sar用途sar是系统活动情况报告(System ActivityReporter)的简写,目前Linux上最为全面的系统性能分析工具。可以从以下方面对系统的活动进行报告,包括文件读写情况 系统调用使用情况 磁盘I/O cpu效率 内存使用状况 进程活动及IPC有关内容sar安装和启动yum install sysstat#安装完后默认路径find / -name sysstat /etc/sysconfig/sysstat /etc/cron.d/s原创 2020-06-26 10:59:38 · 1702 阅读 · 0 评论