- 博客(96)
- 收藏
- 关注
原创 Docker学习笔记:docker基础知识
Docker开源项目背景Docker是基于Go语言实现的开源容器项目,Docker自发布以来,因为其强大而灵活的功能,备受所有计算机界人士的关注,直到现在,多个相关开源组件项目的出现,逐渐使docker的生态体系变的完整起来。Docker的构想是要实现“Build,ship and Run Any App, Anywhere”,即通过对应用的封装、分发、部署、运行生命周期进行管理,达到应用组件级...
2019-07-28 20:06:52
414
原创 自学Python:python中的装饰器
装饰器装饰器也叫装饰模式,是python中的一种设计模式,其主要功能是在不改变函数的原有结构下,为该函数增加其他的一些功能,优点是可以实现代码的复用,写好一个装饰器,可以用到多个想使用该装饰器功能的函数上。装饰器的应用一个简单的装饰器def a(func): print(1) def b(*args, **kwargs): print(2) func() print(3)...
2019-07-19 21:32:22
240
原创 自学Python:列表生成式、生成器、迭代器
列表生成式列表生成式是python内置的一个用来创建列表的生成式,非常的强大和灵活!比如说我们要生成一个包含1-10十个数字的列表,我们可以直接使用list(range(11))来生成:但是我们如果要生成[1 * 1, 2 * 2, 3 * 3, 4 * 4, …, 10 * 10]这样一个列表呢,第一种方法时使用循环:但是这样的话还是看起来非常的复杂,不太符合python简单的特性,...
2019-07-16 21:03:06
387
原创 自学Python:python中的魔法方法
魔法方法1、python中的魔法方法总是被双下划线__包围,比如:__init__();2、魔法方法的魔法就体现在他们会在需要的时候被自动调用。构造函数与析构函数构造函数1、用于初始化类的内部状态,python提供的类构造函数__init__()与__new__();2、__init__():__init__()方法是可选的,如果没有定义,则使用默认的__init__()方法;3、_...
2019-07-01 13:52:13
222
原创 GitLab的部署与使用
GitLabGitLab是一个开源的用于仓库管理的项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务,大家应该都知道也使用过github这个网站吧,这两个看起来非常的相似,他们有什么区别呢?GitHub: 基于Git开发出来的一个大型的代码开源社区,免费注册一个账户就可以在上面免费托管自己的开源代码,也有私有仓库,不过为了提倡开源的宗旨,如果想要使用私有仓库就必须的付费。Gi...
2019-06-27 20:28:10
14137
原创 自学Python:python中的赋值、拷贝的概念与用法
赋值赋值只是复制了对象的引用,赋值后两个对象指向同一个内存空间,不会开辟新的内存空间,原对象发生改变的话,赋值后的对象也会随之变化。我们可以使用id()来获取复制前后两个对象的内存地址可以看到两个对象的内存地址是相同的,即指向同一内存空间,其中一个对象的内容发生变化,另外一个也会随之改变拷贝拷贝的概念是在原对象的基础上创建一个新对象,如果你想对列表做出某些修改,但同时还想保持原来的...
2019-06-27 10:52:12
266
原创 Git:学习笔记(四)—分支
分支我们在前面的博客中提到过分支这个概念,比如说master分支,分支在Git中是非常重要的,假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你...
2019-06-25 20:08:11
289
原创 Git:学习笔记(三)—远程仓库
远程仓库Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上,如何分布呢,最早,肯定只有一台机器和一个原始版本库,此后,别的机器可以‘克隆’这个原始版本库,而且每台机器的原始版本库都是一样的,没有主次之分。实际情况往往时这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个‘服务器’仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到这个服务器仓库,也从服务器...
2019-06-24 16:22:56
174
原创 Git:学习笔记(二)—工作区与暂存区
工作区和暂存区git与其他版本控制系统的一个不同之处就是git有暂存区的概念工作区就是我们创建的目录,比如说我们之前创建的gitdemo目录就是一个工作区版本库: 工作区中有一个隐藏目录.git,这个目录不叫工作区,他是版本库,git的版本库中存了很多东西,其中最重要的就是成为stage或者(index)的 暂存区,还有Git为我们创建的第一个分支master,以及指向master的一个指...
2019-06-24 13:57:10
268
原创 Git:学习笔记(一)—基础操作与版本回退
Git简介Git是什么Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。集中式与分布式集中式版本控制系统: CVS、SVN所谓集中式版本控制系统,就是版本库是集中放在一个中央服务器的,干活的时候用的都是自己的电脑,因此要先从中央服务器获取最新版本,然后开始干活,活干完后,再把自己完成的最新版本推送到中央服务器。集中式版本控制系统最大的毛病就是必须联网...
2019-06-24 10:49:55
254
原创 saltsatck中的常用模块
自定义salt模块mkdir /srv/salt/_modulescd /srv/salt/_modulesvim my_disk.py 1 #! /usr/bin/env python 2 3 def df(): 4 return __salt__['cmd.run']('df -h')salt '*' saltutil.sync_modules...
2019-06-19 17:37:08
353
原创 Nginx:架构基础与配置文件详解
Nginx是什么,可以用来做什么?Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。Nginx基础概念connection1、一个nginx进程锁允许的最大连接数的参数为worker_connections 默认...
2019-06-17 16:45:15
315
原创 saltstack配置salt-api
salt-api时saltstack官方提供的一个REST API格式的项目,使salt与第三方系统集成变的尤为简单,下面来介绍一下如何配置salt-api与如何使用salt-api获取想要的信息。安装1、在master上面安装salt-apiyum install salt-api -y2、出与安全考虑,官方建议使用https协议,因为salt eauth 身份验证凭证将通过线路发送,因...
2019-06-01 20:55:56
1188
原创 saltstack:将推送结果存储到mysql中
saltstack的每次推送信息都会在相应的minion中保存24小时,但是为了之后进行命令安全审计,我们需要将这些信息长期的保存起来,我么可以将信息保存到mysql中,这里会出现两个角色,mysql负责存储数据,mysql-python负责收集数据,我们在master中安装mysql与mysql-python,在所有的minion中安装mysql-python,这里介绍两种方法:方法一1、在...
2019-05-29 10:51:23
211
原创 SaltStack一键部署高可用负载均衡集群
在前面的博客中我们通过向一台minion上部署haproxy实现了负载均衡的效果,这篇博客我们来搭建高可用负载均衡集群。环境master:server1minion:server1(部署haproxy)server2(部署apache)server3(部署nginx)server4(部署haproxy)server1与server4部署haproxy组成高可用负载均衡集群serve...
2019-05-28 19:35:46
310
原创 自学Python:python中的OS模块与pickle模块
OS模块OS就是Operating System的缩写,意为操作系统,这可是一个非常高大上的模块,因为在python中,对于文件系统的访问就是通过OS模块来实现的。我们所知道常用的操作系统就有Windows、Mac OS、Linux、UNIX等,这些操作系统底层对于文件系统的访问工作原理是不一样的,因此你可能就要针对不同的系统来考虑使用哪些文件系统模块,这样的做法是非常麻烦的,因为如果程序的运行...
2019-05-23 23:35:50
510
原创 SaltStack中的数据系统grains、pillar
grains与pillar相关概念grains与pillar是saltstack两个重要的数据系统组件,用来取客户端(minion)基本信息数据或者主控端(master)数据,两者的主要区别在于:grains:1、grains是在minion第一次启动时采集的静态数据,在后面的生命周期中是不会发生变化的(minion重启时会重新收集),所以是静态数据,grains中包含运行的内核版本、操作系...
2019-05-20 12:58:57
630
原创 自学Python:python中对文件的操作
python是一类脚本语言,经常被使用在自动化运维工作中,为运维工作提供了很大的便利,在运维工作中,经常需要对文件进行各种操作,因此,python提供了各种各样对文件的操作方法,我们来看一看吧。文件的操作方法方法功能open()打开文件close()关闭文件read(size=-1)从文件中读取size个字符,如果没有指定size,则会读取剩余的所有字符,...
2019-05-16 13:04:49
644
原创 saltstack:源码编译安装nginx,一键部署负载均衡
源码编译安装nginx1、在master端mkdir /srv/salt/nginx/files -p将nginx的源码包放入files目录编写源码编译安装脚本:cd /srv/salt/nginxvim install.slsnginx-install: # 安装源码编译nginx所需要的依赖 pkg.installed: - pkgs: - gcc...
2019-05-15 21:14:26
334
原创 salt安装与简单使用,自动化部署apache服务
简介SaltStack是一个服务器基础架构集中化管理平台,具备配置管理,远程执行、监控等功能,一般可以理解为简化版的puppet和加强版的func。SaltStack基于python语言实现,结合轻量化级消息队列(zeroMQ)与python第三方模块(Pyzmq、Pyjinjia2、python-msgpack和PyYaml等)构建。通过部署saltstack环境,我们可以在成千上万台服务器...
2019-05-14 23:28:01
599
原创 自学Python:lambda表达式用法、两个实用的BIF
lambdapython使用lambda表达式来创建匿名函数,所谓匿名函数就是没有名字的函数,就是在创建函数时,不用提供函数的名称,先来看看lambda的用法和匿名函数与普通函数的区别。我们先来举一个普通函数的例子:def ds(x): return 2 * x - 1ds(5)那如果使用lambda表达式会变成什么样子呢?g = lambda x: 2 * x - 1g(5)...
2019-05-12 01:10:38
470
原创 ELK日志分析平台
ELKELK(ElasticSearch, Logstash, Kibana),三者组合在一起搭建实时的日志分析平台,目前大多数公司都在使用这套体系!Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。Logstash 是一个完全开源的工具,他可以对你的日志进行收集、过滤,并...
2019-03-05 20:31:25
353
原创 zabbix:企业级分布式监控系统
zabbix基本知识及安装见博客:zabbix安装在前面的博客中,我们介绍了zabbix的工作原理及三种架构,并且对第一种架构server-agent架构做了详细介绍及配置,在这篇博客,我们用第二种架构server-proxy-agent架构来简单配置zabbix的企业级分布式监控系统server-proxy-agent架构是zabbix企业级的架构,如名称所示其结构由zabbix-serv...
2019-02-05 18:07:50
752
原创 Zabbix监控机制:添加nginx监控
zabbix默认自带了很多有用的监控模板,通常对主机运行状态使用默认的模板就可以了,有时候我们需要根据实际情况自定义一些监控信息。本文记录一下zabbix监控nginx服务的配置过程。在被监控主机上安装配置nginx1、在server1中下载安装nginx-1.8.0-1.el6.ngx.x86_64.rpmrpm -ivh nginx-1.8.0-1.el6.ngx.x86_64.rpm...
2019-02-03 17:54:53
1045
原创 开源服务器监控工具——zabbix(二)
基本知识及安装操作见:开源服务器监控工具——zabbix(一)使用脚本操作zabbix我们可以利用脚本来对zabbix进行操作,可以使用脚本进行登陆zabbix,发现、删除和创建要监控的主机,我们需要将要执行的操作写入脚本中。登陆mkdir /zabbixcd /zabbixvim zabbix-api.sh写入:curl -s -X POST -H 'Content-Type:a...
2019-02-01 16:30:57
1947
原创 shell文本处理三剑客—awk
awkawk命令可以处理数据流。他支持关联数组、递归函数、条件语句等功能。awk命令也可以从stdin中读取输入。awk脚本的结构如下:awk ‘BEGIN{ print “start” } pattern {commands} END{ print “end” }’ fileawk脚本通常由3部分组成:BEGIN、END和带模式匹配选项的公共语句块,这三个部分都是可选的,可以不用出现在脚...
2019-01-31 16:24:35
595
原创 开源服务器监控工具——zabbix(一)
服务器监控工具服务器监控工具功能相当强大,无论何时何地,我们都可以了解到服务器的功能以及性能。服务器监控工具的使用,可以让我们清楚的知道用户可以打开我们的网站,且确保网速不慢。只有这样做,才能留住宝贵的用户,以免因为系统停运的原因,导致用户丢失。监控工具:cacti、Nagios、Ganglia、zabbixcacti:它是一款数据采集、数据存储,外加web界面展示的工具,它的数据展示功能...
2019-01-29 18:55:07
14801
原创 Redis基本知识与使用
RedisRedis是一个开源的使用ANSI C语言(对c语言进行了标准化)编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的API。Redis是一个key-value存储系统。和Memcached类似,他支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set有序集合)、hash(哈希...
2019-01-24 17:02:22
244
原创 shell文本处理三剑客—sed
sedsed是stream editor(流编辑器)的缩写。它最常见的用法是进行文本替换。sed用来操作纯ASCII码的文本,处理时,把当前处理的行存储在临时缓冲区,称为"模式空间"(pattern space),可以指定仅仅处理哪些行,符合模式条件的处理,不符合条件的不予处理,处理完成后把缓冲区的内容送往屏幕,接着处理下一行,这样不断重复,直到文件末尾。相关选项-n、–quiet、–sil...
2019-01-22 22:36:23
609
原创 shell文本处理三剑客—grep
grepGlobal search regular expression and print out the line全面搜索研究正则表达式并显示出来grep命令是一种强大的文本搜索工具,根据用户指定的“模式”对目标文本进行匹配检查,打印匹配到的行,由正则表达式或者字符及基本文本字符所编写的过滤条件实战演练1、在stdin(标准输入)中搜索匹配特定模式的行echo -e “this i...
2019-01-15 00:17:51
1194
原创 正则表达式
正则表达式是一种基础的模式匹配技术,是一个强大的字符串处理工具。使用合适的正则表达式,可以对文本执行过滤、剥离(strip)、替换、搜索等操作。正则表达式正则表达式的工作原理正则表达式由复杂的状态机解析,尝试在目标文本中找到最佳匹配。文本可以是管道的输出、文件,甚至是在命令行中输入的字符串。正则表达式的实现方法不止一种,其实现引擎通常会选择最长的匹配。位置标记位置标记锚点是标识字符串位置...
2019-01-12 00:12:07
241
原创 shell脚本中使用的几个基本命令
diffdiff命令,针对文件内容,与文件名无关,用来比较两个文件或目录之间的不同生成两个有一点区别的文件,比如我们生成一个比文件1多一行的文件2,然后用diff命令来比较以下两个文件:可以看到,文件2比文件1多一行,然后我们使用diff命令来比较两个文件a表示添加(add)c表示改变(change)d表示删除(delete)字母左边的数字表示第一个文件的行,右边的数字表示第二个...
2019-01-10 23:46:56
379
原创 利用中间件mysql-proxy实现数据库的读写分离
Mysql读写分离简介mysql主从复制,一主多从模型下,为了缓解主服务器的读写压力,经常会让从服务器为用户的读操作,又因为从服务器不能提供写操作。所以:在主服务器上写操作,在从服务器只进行读操作,这种模型就成只为读写分离。mysql读写分离的意义:1:减轻mysql主服务器的访问压力2:提高安全性读写分离架构 Java web app:是客户端请求,会对数据库发起读写操作请...
2018-12-16 21:55:31
1390
原创 MYSQL数据库的组复制
组复制原理组复制是一种可用于实现容错系统的技术。复制组是一个通过消息传递相互交互的服务器组。通信层提供了很多保证,例如原子消息和总消息序号的传递。通过这些强大的特性,我们可以构建更高级的数据库复制解决方案。MySQL组复制构建在这些属性和抽象之上,并实现多主复制协议的更新。实质上,复制组由多个数据库实例组成,并且组中的每个实例都可以独立地执行事务。但是所有读写(RW)事务只有在被组批准后才会提...
2018-12-11 17:35:17
277
原创 mysql5.7—MHA架构下的高可用半同步复制
MHA架构下的Mysql高可用半同步复制MHA架构的详细介绍、工作原理、组成等在我的上一篇转载博客中都有详细介绍,对这方面不太理解的朋友可以去我的上一篇博客看看,博客连接:MHA架构使用原理简要说明MHA(Master High Availability)是现在解决mysql高可用的一个相对成熟的方案,它是由两部分组成,管理端(master manager)和节点端(node manager...
2018-12-10 20:37:39
937
转载 MHA 架构使用原理
本文为转载文章,原文地址:MHA 架构使用原理MHA 架构介绍:MHA(Master High Availability)目前在 MySQL 高可用方面是一个相对成熟的解决方案,它由日本人 youshimaton 开发,是一套优秀的作为 MySQL 高可用性环境下故障切换和主从提升的高可用软件。在 MySQL 故障切换过程中,MHA 能做到 0~30 秒之内自动完成数据库的故障切换操作,并且在...
2018-12-08 16:13:52
1131
原创 mysql5.7—基于GTID的半同步复制
扩展前面我们已经了解并配置过了mysql5.7的主从复制与基于GTID的主从复制,今天我们再来认识一种MYSQL的复制—半同步复制,又是一种复制,MYSQL到底有多少种复制呢?我们先来看看MySQL的复制架构衍生史。 MySQL的复制分为四种:1: 普通的replication,异步同步。 搭建简单,使用非常广泛,从mysql诞生之初,就产生了这种架构,性能非常好,可谓非常成熟。 但是这...
2018-12-07 23:42:18
562
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人