自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

原创 微服务-API网关-负载均衡

外部负载均衡外部指的是API网关所管辖的微服务,这些微服务如果部署的是单实例,那么如果发生故障了,服务就不可用了。那么如何解决这个问题呢?做高可用有两种方式:HA:主服务和备用服务,只有在主服务挂了的时候备用服务才能顶上。LoadBalancer: 负载均衡,多个服务实例按照某种策略被轮着访问。我们在这里采用负载均衡的方式,说到负载均衡,你可能想到了Nginx、Apache、Haproxy,没错,这些都可以作为负载均衡器,但是我给各位的建议是尽量避免惯性思维。为什么这么说呢?就负载均衡本身

2020-08-26 18:06:27 4997

原创 微服务-API网关-协议转换(泛化调用)

RPC和REST的区别REST和RPC是两种通讯方式,并不是协议,这一点大家要注意。REST是基于HTTP协议的,而RPC可以基于HTTP协议来实现,也可以通过TCP协议来实现。业界普遍采用的做法是,内部系统之间调用用 RPC,对外用 REST,因为内部系统之间可能调用很频繁,需要 RPC 的高性能支撑。对外用 REST 更易理解,更通用些。API网关内部和外部通讯方式在进行协议转换前我们要先思考一个问题,从什么协议转成什么协议呢?我们说的协议转换是把客户端的请求协议转为微服务内部的接口协议,处

2020-08-26 18:03:45 7035 1

原创 微服务-API网关-熔断降级

介绍在微服务架构中,各个服务之间往往是级联在一起的,一个服务发生故障时可能会造成以下灾难:服务依赖方调用超时,导致任务队列打满,引起链式反应,最终导致整个集群雪崩。服务依赖方调用返回失败,引起链式反应,最终导致整个集群不可用。所以需要在微服务不可用时切断故障服务与其他服务的通讯。熔断是对服务提供者说的,由于某些原因(比如网络不通、服务挂了、请求处理不过来)造成服务提供者不能提供服务时,服务提供者就需要切断和服务调用者的连接,不然就造成资源浪费或者队列打满,从而导致链式反应。降级是对服务调用者

2020-08-26 18:00:36 5098

原创 微服务-API网关-限流

限流介绍我们在API网关中已经介绍了,限流是保护网关的手段之一,和身份认证以及鉴权一起组成安全防御大闸。其目的是对并发请求进行限速或限制一个时间窗口内请求的数量, 一旦达到阈值就排队等待或降级甚至拒绝服务。为啥要做限流在API网关接受的请求量超过了最大处理能力后,网关就会出现问题,不能在正常提供服务,所以要限流。为了防止其他人通过DDOS恶意攻击网关。某些API处理时很消耗系统资源,频繁的调用会造成系统瘫痪,所以要控制这些API接口的调用频率。在API网关是面对公司外部使用的情况下,通过限制A

2020-08-26 17:57:16 1485

原创 微服务-API网关-权限控制

API网关-权限控制权限控制介绍权限控制是一个古老的话题,你可能会想有没有什么权限设计方案可以满足所有的应用场景呢?答案是没有,就像几乎所有问题一样,没有一种系统可以解决所有情况的,我们需要根据不同的场景和需求来设计不同的系统。权限控制主要设计用户、角色、组、对象、操作、权限等对象。下面我先对这些对象做些解释,让大家先有个概念。然后我们再说说业界有哪些比较优秀的权限控制设计方案。名词解释用户发起操作的主体。角色对于用户的抽象概念,类似于用户的属性,比如管理员就是一个角色。组可以是用户组

2020-08-18 19:32:19 6267

原创 微服务-API网关-身份验证

API网关-身份验证身份验证介绍身份验证通常是进入系统的第一道大闸,要求用户出具登录此系统的身份证明。其实在实际情况下,很多人开发的系统都没有身份验证功能或者就只有普通用户名和密码验证功能,这样的系统其实都是不完善的,也是不符合安全标准的,所以作为这么大众化的系统,我们有必要做详细的学习和了解。##身份验证分类对于身份验证,我们分两种情况来看待,界面登录验证和接口调用验证,这两种方式所使用的身份验证方法很多时候是不一样的。界面登录验证指用户通过前端(包含浏览器端和移动端)来进入系统,用户一旦登

2020-08-18 19:25:49 4350 5

原创 微服务-API网关-整体架构思考

API网关API网关介绍API网关这个东西的提出其实已经有些年头了,以前主要是运用在开放平台这样的对外提供接口服务的部门,随着微服务概念越来越深入人心,API网关也越发的流行了。现在各个部门都可以把自己的服务通过API网关暴露给其他部门或者公司外部使用,和Service Mesh一起作为微服务管理的标准解决方案。API网关就是进入各个服务的统一入口,API网关里面管理着一堆微服务,外面的客户端想要访问里面的微服务就需要先通过API网关,然后API网关对请求处理之后再发送到各个微服务中去,微服务处理完

2020-08-18 18:59:13 841

原创 重磅!2019上海落户政策大全!

4月8日,国家发展改革委官网发布了《2019年新型城镇化建设重点任务》的通知。通知指出,要继续加大户籍制度改革力度,在此前城区常住人口100万以下的中小城市和小城镇已陆续取消落户限制的基础上,城区常住人口100万-300万的Ⅱ型大城市要全面取消落户限制;城区常住人口300万—500万的Ⅰ型大城市要全面放开放宽落户条件,并全面取消重点群体落户限制。对于超大特大城市,通知指出要调整完善积分落户...

2019-04-09 14:30:43 57268 2

原创 网盘搜索引擎原理大揭秘

引言:网盘搜索引擎是近年来非常流行的工具,最近在知乎上看到不上关于网盘引擎的帖子,笔者今天决定对网盘搜索引擎原理,技术做个大揭秘,一方面是对不熟悉搜索引擎原理的朋友做个答疑,二是指出各种引擎的优缺点以让朋友们今后在选择你钟爱的引擎时能够心中有数。目前国内外网盘搜索引擎实现原理大体就两种——爬虫程序爬取数据供搜索,调用google,bing三方接口搜索。前者的典型代表如比较流行的去转盘网,盘搜搜...

2019-02-16 18:24:14 12748

原创 ceph块存储在容器云中的管理办法

概述在之前的文章中我们学习了如何搭建ceph集群,在集群中创建块存储,如何与openshift集群对接,本文你将学习如何在实践中管理ceph块存储。正文动态存储管理办法在openshift或kubernetes中使用ceph块存储可以有两种方式,一种是静态方式,一种是动态方式。静态方式是指在块存储中划分中固定大小的区域供容器使用(写入日志等),动态方式是指在块存储中创建一个大小不固定的s...

2019-01-22 09:45:37 440 1

原创 ceph创建pool

概述一个ceph集群可以有多个pool,每个pool是逻辑上的隔离单位,不同的pool可以有完全不一样的数据处理方式,比如Replica Size(副本数)、Placement Groups、CRUSH Rules、快照、所属者等。正文查看现有pool列表,删除默认的poolceph osd lspools删除默认pool rbdrados rmpool rbd rbd --yes-...

2019-01-22 09:43:47 9519

原创 Centos7.3上搭建Ceph高可用集群

概述ceph是今年越来越火的一个分布式存储开源软件,包含了块存储,对象存储和文件存储,相比于glusterfs更加全面,hdfs适合处理大文件,ceph也适合于小文件处理。集群包含一个admin节点,三个monitor节点,其他都是node节点。架构图:正文关闭防火墙systemctl stop firewalld关闭selinuxsystemctl stop selinux...

2019-01-22 09:39:04 2290

原创 Openshift API调用方法

概述请思考以下场景:你们已经有了一套发布平台,用于生产环境或者开发,测试,预发布和生产都已经在使用了,然后你也想推广容器平台,但是容器平台的界面和现有的发布平台是割裂的,而且现有的数据也没法用到容器平台,要怎么做才能实现两个平台的整合呢?解决思路:由于没有大规模使用过容器来跑业务应用,你希望把容器平台作为测试环境,那么你可以这样做,把生成Dockerfile和Template的界面移到发布...

2019-01-21 17:45:50 3097

原创 Openshift API Token生成方法

概述openshift API的调用机制遵循OAuth 2.0机制,在调用API进行操作前需要先获取access token,然后拿着这个token再去调用相应的API。open shift中提供了两种形式的token,一个是session token ,一个是service account token.前者有效期24小时,后者长期有效,但是后者是属于某一 namespace,而且能调用的AP...

2019-01-21 17:37:07 3077 1

原创 Openshift origin-web-console二次开发流程

概述Openshift的主要代码库是origin,它包含除了前端以外的所有东西,origin-web-console是前端的代码库,origin-web-catalog和origin-web-common是前端代码库的依赖库,origin-web-console-server是前端和origin交互的的代码库。上一篇文章介绍了origin的二次开发流程,本文介绍在本地如何对origin-web...

2019-01-21 17:31:15 1945

原创 Openshift Origin二次开发流程

概述本文说openshift origin3.9的二次开发流程,其他版本没有亲测,操作上可能会有一些区别。以登陆页面的修改为例说明,登陆页面并不是单独的html页面,而是被嵌入在go代码中。在进行操作前要确保本地已经有openshift开发环境了,具体请查看系列其他文章。正文编辑相关代码打开go代码:origin/pkg/oauthserver/server/login/templates...

2019-01-21 17:26:07 1839

原创 openshift对接ceph RBD存储

概述接入ceph rbd存储前确保ceph存储已经搭建好,rbd块设备已经创建好,假设在rbd设备上创建了kube这个pool,在kube上创建了image,名称是openshift , 大小是500G ,用ext4文件格式格式化。openshift集群的每个节点都要安装ceph客户端,因为只有装了客户端才能使用存储,container才能使用存储资源。正文在每台openshift机器上安...

2019-01-21 17:21:48 1529

原创 openshift集群扩容

概述在openshift集群搭建好后,随着业务逐渐迁移到容器云上,资源就不够用了,这时就需要扩容了。正文把新增加的节点信息加入到openshift集群的所有机器的/etc/hosts里比如:10.131.32.111 openshift-13.test在新增节点上启动NetworkManagersystemctl enable NetworkManagersystemctl st...

2019-01-21 17:12:48 1038 1

原创 在Mac上搭建Openshift3.9开发环境

概述本文介绍如何在本地搭建openshift3.9开发环境,开发环境里面容器的进程均是以容器的方式运行,编译源代码可以生成二进制、rpm包和镜像。我们以Mac为本地环境。正文安装gitbrew install git安装docker具体安装方法请参照Google,安装好后需要到右上角docker图标里的Preferences,把docker里面的内存参数调整为4G或以上(默认是2G)...

2019-01-21 17:06:24 691

原创 Kubernetes修改clusternetwork网段

概述很多搭建过kubernetes集群的人都知道在搭建集群前需要做好充足的准备工作,其中就包括对pod网段和service网段的划分,还包括对每台node上的子网段大小的设置,但如果集群搭建完发现之前划分的网段有问题咋办?能改吗?问题展示我在实际使用中就遇到一个问题,我首次搭建集群时划分的网段是这样的:pod网段:10.129.96.0/20service网段:10.130.96.0/2...

2019-01-21 16:57:01 6734

原创 调用Kubernetes SDK实现二次开发

概述Kubernetes对外暴露了很多REST API,有些公司会使用这些API来二次开发或者结合自身的系统进行一些二次开发,毕竟从CI/CD的角度讲,k8s只是提供了CD这一块的功能,CI是缺失的。但如果你调用过k8s的REST API,你会发现对接上比较费劲,一是每个API都需要在header里面带上Access Token,二是很多API返回的内容多到无法直视,导致你不知道怎么从返回结果...

2019-01-21 16:53:27 9596 1

原创 迁移服务到Openshift完整实例

概述openshift提供了3种方式构建镜像:Docker, S2I, Pipeline。Docker方式是典型的一种方式。S2I(source to image) 适用于java, golang等需要编译的应用,因为它提供依赖包保存的功能以保证后续的镜像构建可以复用第一次下载的依赖包,减少了构建镜像的时间。Pipeline是采用jenkins的方式来构建镜像,jenkins插...

2019-01-12 14:37:16 1451

原创 部署openshift origin3.9.0遇到的问题汇总

概述在上一篇部署openshift origin的过程中相信你碰到了很多问题,本文就可能会碰到的问题做一汇总,希望能帮助你。问题描述:在openshift节点上安装ceph-common包时,可能会出现依赖包错误无法安装的情况解决办法:确认节点上有/etc/repos.d/epel.repo,并且文件里面不是enable=0问题描述:打开registry-console(镜像库)的界...

2019-01-12 14:25:12 1881

原创 Openshift中运行Mysql数据库

概述在容器中跑有状态的应用会碰到很多头疼问题,今天我们就来说说mysql作为有状态的服务。容器中挂载存储需要考虑两种场景,一种是创建一个干净的pvc,然后挂载到容器中,容器开始往存储写入数据;一种是存储中已经存在数据了,容器需要使用这个数据并继续写入。第一种场景可以采用动态存储storageclass,也可以采用静态存储pv。第二种场景只能采用静态存储pv,因为需要在ceph po...

2019-01-12 14:10:51 1350

原创 Centos7上部署Openshift Origin3.9

概述openshift origin是红帽研发的一套开源容器平台,是基于kubernetes又封装了一些对象,不同于kubernetes,openshift origin有完整的CI/CD流程,更适合公司或商业使用。后面我会陆续推出一系列关于openshift origin的文章,版本是3.9。本文说的是用ansible playbook安装高可用openshift origin集群。准备至...

2019-01-05 13:38:31 2824 1

原创 Kubernetes中Label的多维度用法

Kubernetes中Label的多维度用法@TOC欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你...

2019-01-05 13:05:27 1601

原创 shell登录时的文件执行顺序

序想必大家都在linux系统中设置过环境变量,有没有感觉不知道应该在哪个文件里面设置呢?比如~/.profile, ~/.bash_profile, ~/.bashrc , /etc/profile , 等等。其实这些文件会在不同的场景下被运行。shell分为login shell , non-login shell , interactive shell , non-int...

2017-03-28 19:08:14 208

原创 字典法暴力破解Linux用户密码

背景介绍Linux系列的很多操作系统是采用MD5加密用户密码的,加密的过程是单向的,所以要破解只能采用暴力破解法。实战下面分享个程序来破解root用户密码。程序会遍历字典文件中的每个密码,加密后和/etc/shadow中的密码匹配,如果相同则返回成功。以下是代码:#!/usr/bin/env pythonimport cryptimport sysimport...

2016-12-15 15:56:18 3032

原创 python处理大文件的内存问题

背景介绍同学们时常会遇到要处理大文件的情况,现在是大数据时代,有些文件动辄几十个G,我们在处理这样文件的时候一不小心就把内存撑爆了,或者程序被强制kill掉了。原因分析原因是你一次性把文件的所有内容都读取到内存里面了。python里面有方法可以一段一段的读文件。解决方案没错,就是用iterator,又叫迭代器,实例代码如下。f = open('data', 'r')f...

2016-11-01 16:52:49 1506

原创 python中json和字符编码的转换

背景json是用来转换python object 和json format 的,字符编码有gb2312,gb18030/gbk,utf-8等。在 Python 中出现的 str 都是用字符集编码的 ansi 字符串。Python 本身并不知道 str 的编码,需要由开发者指定正确的字符集 decode。原理分析因为 Python 认为 16 位的 unicode 才是字符的唯一内码...

2016-09-13 14:04:33 1623

原创 Python中select.select()文件句柄的问题

背景python中的select.select()函数调用了系统底层的select(),但是他有一个限制,就是当打开的文件句柄的数字达到1024后,就会出现下面的错误ValueError:filedescriptoroutofrangeinselect()原理分析这个值在select()中对应的是FD_SETSIZE,下面我们写一段脚步来证明#!/usr/bin/...

2016-08-19 20:24:02 744

原创 Python中利用subprocess远程登陆执行命令

import subprocessimport os(rfd, wfd) = os.pipe()arg = "-d%d" % rfdtry: p = subprocess.Popen(["sshpass",arg,"ssh","-l","haohzhang","phxaishdc9dn1447.stratus.phx.ebay.com","ls&quot

2016-08-01 18:27:46 3988

原创 Ansible ad-hoc的command和shell模块的区别

背景Ansible中有一个很重要的功能就是可以执行ad-hoc命令,可能有些人不懂ad-hoc这个词的意思,它表示即时的意思,或者说随意的意思。与之相对的是ansible playbook功能,playbook适用于批量部署环境,一般不用经常改动。而ad-hoc命令适用于业务变更等操作场景,比如批量部署一个配置文件,重启某个服务,安装一些包等。ad-hoc命令中有两个模块:comman...

2016-07-28 19:11:33 677

原创 python使用unittest编写测试代码

背景做开发的朋友在写代码的同时一般都会写测试代码,这对于做运维的同学却很少用。今天我们就来写写测试代码,用unittest模块。实例演示cat test.pyimport unittestdef IsOdd(n): return n % 2 == 1class IsOddTests(unittest.TestCase): def setUp(sel...

2016-07-05 16:53:04 277

原创 Ansible批量执行命令慢的解决思路

背景做运维的同学很多都用过ansible吧,开源批量部署工具排名前三的:puppet, saltstack, ansible。ansible的特点是没有agent,采用ssh协议来通讯,轻量级,采用python编写,既可以写playbook,也可以做一些ad-hoc的批量命令执行操作。最近在两台ansible主机上执行ansible命令时发现对同样的客户机执行同样的命令,所用的时间相差...

2016-06-28 15:49:55 2939

原创 python抓取系统metrics吐给kafka

背景本篇介绍用python写脚本,抓取系统metrics,然后调用kafka client library把metrics吐给kafka的案例分享。对于用kafka的同学实用性很高。在运行本实例前需要先下载两个python库到本地 : six和kafka-python实例讲解cat config_system_metrics.json{ "env": { ...

2016-06-26 12:38:35 507

原创 Python中API调用的几种类型

背景API是对APP的包装,也就是通常所说的接口,APP和APP间的互相调用,包括读取数据,修改数据等,就通过调用API来实现,API的好处显而易见,标准化,service化,外部用户看不到里面的复杂的东西。一个成熟的产品必须要有API来给其他应用提供接口。学习调用API是dev ops的必备技能,大家最熟悉的应该是REST API的调用吧,没错这是现在很通用很流行的一种API调用方式,还...

2016-06-26 12:14:19 473

原创 Ambari Server网口带宽占用率很高问题的分析和解决办法

背景Ambari是Hortonworks出一款开源Hadoop管理系统,是用python写的,目前市场是开源的Hadoop管理系统好像就只有这一个,虽然Ambari问题很多,也不好用,但也没办法了。最近监控系统经常报警说一个url老是不可达,只是一个ambari服务器的url 。于是登录到服务器上一探究竟。原因分析用iftop查看网络状况,发现网络占用率很高,达到了700Mbp...

2016-06-20 19:12:38 487

原创 python 批量执行脚本(服务端和客户端建立TCP连接)

有很多开源的批量部署的工具可以使用,比如puppet, ansible , saltstack , chef 。但这些工具都有自己的一套语法规则,你得按照他的语法来编写程序,然后批量执行。那有没有方法可以直接写bash 或者Python脚本,然后批量执行呢?方法当然是有的,需要自己写程序来传输脚本,拷贝文件,再复杂点,可以自定义脚本式同步还是异步执行,自定义要执行的主机组,等...

2016-05-30 14:06:37 481

原创 python中多线程的使用

背景在实际编程过程中经常需要把任务包装成多进程或者多线程,多进程和多线程的区别在于多线程是内存共享、变量等共享的,多进程的进程间是独立运行的,所以创建多线程还是多进程取决于不同的需求。python中因为有全局锁的机制,所以在python中多线程跑的时候其实只是在用一个CPU,尽管如此,多线程跑还是比单线程跑要快很多。方法讲解以threading.Thread来说,在python中创...

2016-05-25 19:54:52 107

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除