- 博客(42)
- 资源 (3)
- 收藏
- 关注
原创 gunicorn实现flask并发
目录一、什么是gunicorn1、简介2、优势3、源码分析入口二、gunicorn安装部署三、gunicorn简单应用四、gunicornworker Model1、同步worker模式sync2、异步worker模式3、Tornado Workers4、AsyncIO Workers(gthread, gaiohttp)5、各模式对比6、如何选择工作模式五、gunicorn启动多少个workers子进程六、如何动态修改worker数量七、多.
2021-02-23 19:07:28
12564
2
原创 Python基于flask实现restful
一、python Web框架选择1、DjangoDjango如此知名,很大程度上是因为提供了非常齐备的官方文档,它提供了一站式的解决方案,包含缓存、ORM、管理后台、验证、表单处理等,使得开发复杂的数据库驱动的网站变得很简单。但正因为它坚持自己对于Web框架的理解,系统耦合度太高,替换掉内置的功能往往需要花费一些功夫,所以学习曲线也相当陡峭。2、FlaskFlask是一个轻量级Web应用框架,它基于Werkzeug实现的WSGI和Jinja2模板引擎。它的设计哲学和Django不同:只保留核
2021-02-23 15:24:38
4612
原创 vGPU设备文件系统分析
一、/sys文件系统下的目录结构1、/sys/devices目录,包含所有设备的真实对象,是内核对系统中所有设备的分层次表达模型,也是/sys文件系统管理设备的最重要的目录结构;2、/sys/bus目录,是内核设备按总线类型分层放置的目录结构,devices中的所有设备都是连接于某种总线之下,在这里的每一种具体总线之下,可以找到每一个具体设备的符号链接,是构成Linux统一设备模型的一部分;3、/sys/class目录,是按照设备功能分类的设备模型,例如vGPU相关设备都在/sys/...
2021-02-18 15:56:59
1495
原创 NVIDIA vGPU应用
目录一、vGPU产品类型1、NVIDIA vGPU产品简介2、如何选择合适的vGPU二、基于KVM创建vGPU设备1、物理机安装vGPU驱动2、切换到物理GPU对应的mdev_supported_types目录3、mdev_supported_types子目录遍历待创建的vGPU类型4、确认可在物理GPU上创建vGPU类型实例的个数5、生成随机uuid写入create文件6、确认vGPU设备已创建三、查看节点生成的 mdev 设备列表1、create文件.
2021-02-08 20:20:48
12422
1
原创 nova实现vGPU功能
一、创建vGPU虚机流程简述同-普通虚机创建流程,如下1、[nova-api进程] nova/api/openstack/compute/servers.py create(),2、[nova-api进程] nova/compute/api.py create() 调用同文件中 _create_instance()3、[nova-api进程] nova/conductor/api.py build_instances() --> nova\conductor\rpcapi.py build
2021-02-08 10:24:57
1485
1
原创 基于libvirt创建vGPU实例
一、什么是vGPU?vGPU(virutal GPU)是实现在虚机中使用GPU资源的一种方式。虚机使用GPU的另外一种方式是passthrough,即GPU直通到vm虚机中。
2021-02-03 21:02:13
5220
2
原创 Ussuri版kolla-ansible脚本分析
基于OpenStack Ussuri版,源码下载地址:# git clone https://github.com/openstack/kolla-ansible -b stable/ussuri相关命令:# kolla-ansible -i ./multinode bootstrap-servers# kolla-ansible -i ./multinode prechecks# kolla-ansible -i ./multinode deploy简介:kolla-ansible是自动
2020-12-14 14:39:31
1332
原创 Python调用Zabbix API实现自定义功能
一、zabbix API1、API描述Zabbix API允许以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。用于以下场景:1)创建新的应用程序以使用Zabbix;2)将Zabbix与第三方软件集成;3)自动执行常规任务。Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着:1)该API包含一组独立的方法;2)客户端和API之间的请求和响应使用JSON格式进行编码。2、API常用方法Z.
2020-09-21 13:29:47
1113
原创 Qemu Guest Agent方式实现libvirt与虚机交互
一、qga简介1、qga工具qemu guest agent,简称qga,是一个运行在虚拟机内部的普通应用程序,可实现宿主机libvirt和虚拟机的通信,宿主机可通过向虚机中的qga发送命令控制虚机。这种通信不依赖网络,而是通过virtio-serial的方式。使用virtio传递消息,对虚拟机和主机的网络设置没有任何要求,且效率更高,类似于VMware Tools。2、宿主机libvirt和VM通信方式选择宿主机若要和VM通信,需要满足以下两个条件:1)vm内部和外部宿主机之.
2020-08-11 16:14:15
10581
1
原创 openstack policy机制
一、什么是policypolicy策略,是OpenStack用来约束不同等级用户的操作权限,用于自定义权限管理的一种机制。二、为什么要用policy1、基于keystone理解policyKeystone中有User(用户)、Project(租户)、role(角色)三个概念,使用基本流程为:1)创建租户 2)创建用户 3)创建角色 4)给用户和租户赋予角色赋予角色之后,角色还只是一个空的概念定义,没有实际意义。真正限制用户角色执行具体action操作的,是policy.json.
2020-08-11 15:22:38
2472
原创 why or why not GPU
一,CPU和GPU1、概念区分CPU,全称central processing unit,即中央处理器,是一台计算机的运算核心和控制核心。CPU主要是负责多任务管理、调度,它是领导者,负责指挥。GPU,全称Graphic Processing Unit,即图像处理单元,是显卡上的核心处理芯片。GPU主要是用于大量的重复计算。一个GPU具有数千个计算核心,可以有效地并行处理工作负载。例如3D应用程序、视频和图像渲染等大规模并行任务。GPU不等于显卡,显卡是由GPU、显存、供电模块.
2020-06-06 19:49:06
347
1
原创 Python定时任务-APScheduler
目录一,简介1,安装APSchedule3.6.02,APScheduler四个组件二,选择调度器、作业存储、执行器和触发器1,schedulers调度器选择2,jobstores作业存储选择3,executors执行器选择4,triggers触发器选择三,调度器scheduler启动关闭和配置1,启动调度器2,关闭调度器3,配置调度器四,j...
2019-03-29 16:32:58
28858
1
原创 Heat模板及简单应用
一,Heat模板结构Heat的模版是Heat的核心。1,模板格式 Heat 目前支持两种格式的模板,一种是基于 JSON 格式的 CFN 模板;另外一种是基于 YAML 格式的 HOT 模板。 CFN 模板主要是为了保持对 AWS 的兼容性。HOT 模板是 Heat 自有的,资源类型更加丰富,更能体现出 Heat 特点的模板。 此处只涉及HOT( Heat...
2018-09-25 20:55:03
6190
原创 OpenStack Heat编排
一,什么是Heat Heat是OpenStack提供的自动编排功能的组件,基于描述性的模板,来编排复合云应用程序。Heat向开发人员和系统管理员提供了一种简便地创建和管理一批相关的OpenStack资源的方法,并通过有序且可预测的方式对其进行资源配置和更新。用户可以使用Heat的示例模板或自己创建模板来描述OpenStack资源以及应用程序运行时所需的任何相关依赖...
2018-07-18 20:18:47
12819
原创 nova通过cloudinit注入公钥失败-问题分析
nova注入密钥有两种方式:1、metadata 2、config dirve ,此处分析基于metadata方式(一)分析思路密钥没有登录成功,查看服务器端,如果网络能通,且ssh配置正确,公钥应该是没有注入到指定目录下。需要根据流程分析,如下:1,首先,确认在实例中能否获取到需要的密钥,就是先判断在实例中能否通过指定的方式(metadata/configdrive)获取到metadata的值,...
2018-06-26 09:44:42
1795
原创 云主机ssh密钥登录
使用云主机时,出于安全性考虑,需要设置ssh登录。ssh主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录,登录不需要输入密码。这里主要分析密钥登录方式(一)基础 1) 公钥:用于加密,存在于服务器 2) 私钥:用于解密,存在于客户机(二)流程 1)客户端向服务器发出连接请求 2)服务器查看客户端公钥(~/.ssh/authorized_keys)该客户机(...
2018-06-25 21:46:43
4450
原创 OpenStack-Pike版Ironic安装指导分析-(下)
基于OpenStack官网指导,结合实际应用,予以总结。整体结构:Bare Metal service overview 裸金属服务概况Install and configure the Bare Metal service 安装配置裸金属服务Install and configure for Red Hat Enterprise Linux and CentOS 红帽/CentOS环境安装/配置...
2018-04-15 17:11:17
3596
原创 OpenStack-Pike版Ironic安装指导分析-(上)
基于OpenStack官网指导,结合实际中的应用,予以总结。整体结构:Bare Metal service overview 裸金属服务概况Install and configure the Bare Metal service 安装配置裸金属服务Install and configure for Red Hat Enterprise Linux and CentOS 红帽7/CentOS7环境下...
2018-04-15 15:15:08
4366
2
原创 OpenStack cloud-init架构和应用
一,cloud-init简介 cloud-init是专为云计算环境中虚拟机实例/裸金属实例的初始化而开发的一个开源工具,它安装在虚拟机镜像/裸金属镜像中,创建实例时,通过nova组件的configdrive把预注入的数据打包成镜像,并挂载在实例的cdrom中,实例启动时,通过读取cdrom中的相关数据,对虚拟机进行初始化配置。1,cloudinit安装 centos和ubuntu se...
2018-03-17 16:01:22
4760
原创 Ironic Key Technologies--IPMI
IPMI简介1、什么是IPMI IPMI是智能型平台管理接口(Intelligent Platform Management Interface)的缩写,管理基于 Intel结构的企业系统中所使用的外围设备采用的一种工业标准。 IPMI信息通过基板管理控制器BMC进行交流。BMC,是底板管理控制器 (Baseboard Management Controller)的缩写,BMC是以嵌入...
2018-01-14 15:23:14
2678
原创 Ironic Key Technologies--PXE网络引导
实际工作中,对计算机、服务器安装操作系统,除了使用光驱、USB接口引导镜像,还可以通过PXE网络引导的方式安装。通过PXE引导的方式,可以批量操作,效率高,也容易维护。 一,什么是PXE PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM
2017-12-10 14:22:47
1342
原创 OpenStack-Ironic裸金属简介
一,Ironic简述 简而言之,OpenStack Ironic就是一个进行裸机部署安装的项目。 所谓裸机,就是指没有配置操作系统的计算机。从裸机到应用还需要进行以下操作: (1)硬盘RAID、分区和格式化; (2)安装操作系统、驱动程序; (3)安装应用程序。 Ironic实现的功能,就是可以很方便的对指定的一台或多台裸机,执行以上一系列的
2017-04-16 22:14:38
22415
原创 Linux分区及LVM
操作环境:vmware虚机一、整体流程在使用fdisk/parted等分区工具对硬盘分区之后,是否使用LVM由用户决定 : 1)可以直接对分区后的硬盘进行格式化操作,之后挂载分区; 2)也可以先用LVM逻辑卷管理工具对分区后的物理卷进行管理,之后再对逻辑卷进行格式化操作,之后挂载分区。( LVM的分区类型为8e) 使用LVM的好处是方
2017-03-19 13:14:17
25886
翻译 Store metadata on a configuration drive
目录Requirements and guidelinesEnable and access the configuration driveConfiguration drive contentsOpenStack metadata formatEC2 metadata formatUser dataConfiguration drive format
2016-07-16 19:10:37
1064
原创 DHCP源码分析-报文解析和封装
接收到报文后,通过相应的报文解析函数,将 DHCP报文统一解析为packet结构体。packet 结构用于记录接收到的报文信息,及处理 DHCP报文时需要的各种辅助变量,其中的 raw 字段用于记录报文的首地址,options字段用于记录解析出来的 option。
2016-05-22 11:21:25
8203
原创 DHCP源码分析-dhcpv6模块
dhcpv6主要流程:{ 调用log_packet_in()记录接收包的信息; 调用build_dhcpv6_reply(&reply, packet)创建回复packet; 发送reply;}
2016-05-22 10:48:35
5355
1
原创 Postgres数据库备份与恢复总结
前段时间负责一个政务云项目的升级,从单机容器环境,升级到kubernetes集群环境。考虑到现场环境以及稳定性等因素,决定采取冷备份的方式。 实际生产环境中,使用的是posgres数据库,数据库运行在一个docker容器中,运行七个数据库,有web,coreapi,以及openstack相关的五个组件:keystone,nova,glance,cinder,neutron。
2016-02-14 11:02:05
1239
原创 云计算架构
一, 云计算简介 云计算,简单来说,就是用户根据自身的需要,购买运营商的服务器存储空间和计算资源,当然,还有售后服务。这样就省得自己去买高价服务器,同时也省下心不用去管理运维,降低成本后,就可以更多的去专注于自身业务。比如铁道部要面临春运抢票,需要很多服务器集群,投资巨大,而之后的这些硬件设施又大多闲置着,很浪费。如果租用云系统,问题就好解决了。
2016-01-03 14:49:09
1094
原创 DHCP源码分析-dhcp模块
一, DHCP函数流程 函数void dhcp (struct packet *packet)是处理DHCP包的入口函数,在进入这个函数的时候,对包的解析已经完成,已经将包的内容转换成内部结构struct packet。dhcp()函数主要做的工作就是对不同的packet -> packet_type对应的包进行处理。二, locate
2016-01-01 18:49:56
11983
2
原创 DHCP源码分析_dhcpd后台进程子模块
dhcpd是dhcp服务器端后台进程文件,dhcpd后台程序总是读取配置文件 /etc/dhcpd.conf。一,守护进程的基本流程 dhcpd基本流程为:main(){ / *设置isc和dns库管理* / / *建立客户分类系统* / / *初始化omapi系统* /
2016-01-01 13:58:05
5503
原创 LDAP-轻量目录访问协议
LDAP总结:仿冒+改良=创新一, LDAP 概念 LDAP(Lightweight Directory Access Protocol),轻量级目录访问协议。它是目录访问协议的一个标准。它是基于X.500 标准的,可以根据需要定制。轻量级目录访问协议以信息目录的形式存在,在该目录中可只定义一次用户和组,而在多台机器和多个应用程序间共享它们。 目录服
2015-12-27 19:46:46
3655
原创 DHCP源码分析_子模块划分
DHCP服务器的主要模块为dhcpd后台进程子模块、ipv4报文处理子模块、ipv6报文处理子模块、报文解析和封装子模块、租约管理子模块。 模块间调用关系如图: dhcpd为服务器守护进程文件,用来初始化系统,解析命令参数等; 处理ipv4报文的模块以dhcp()为入口函数,dhcp()函数主要完成对不同类型的ipv4进行的处理;
2015-12-27 11:22:52
1288
原创 DHCP源码分析-系统概述
先名词解释下: DHCP:动态主机配置协议(Dynamic Host Configuration Protocol),是一个局域网的网络协议,使用UDP协议工作。它的前身是BOOTP(Bootstrap Protocol)初始引导协议。 BOOTP则可以自动地为那些主机设定TCP/IP环境。但BOOTP有一个缺点:您在设定前须事先获得客户端的硬体位址,而且,与IP的
2015-12-27 11:09:16
4131
1
转载 分形理论
一,引言在《Foundations of F#》的第七章中,作者在介绍Math命名空间时举的例子是绘制Mandelbrot集合。这个看起来挺奇怪的东东以前还真没见过,网上一查才知道,原来它是如此的优美动人。由于该集合的定义与分形相关,所以先来了解下分形的概念。二,什么是分形(Fractal)1967年,美国数学家Mandelbrot曾出这样一个著名的问题:英格兰的海岸线到底
2015-07-04 23:41:31
8055
原创 Mandelbrot集
一,先堆一下概念: Mandelbrot集合是在复平面上组成分形的点的集合,它正是以数学家Mandelbrot命名。 Mandelbrot集合可以用复二次多项式。从数学上来讲,Mandelbrot集合是一个复数的集合。一个给定的复数c或者属于Mandelbrot集合M,或者不属于。比如,取c = 1,那么这个序列就是(0, 1, 2, 5, 26, …),显然它的值会
2015-07-04 23:37:36
1889
原创 Linux内核符号表
一,什么是符号(Symbols)? 什么是Symbol? 其实就是kernel中的变量(Variable Name)或函数名称(Function Name), 这样可以方便程序员在写程序时可以直接参照这一份Symbol的索引文件,找到所需要的kernel信息,这一份Symbol的索引文件又称为kernel symbol table。 二,内核符号表(Kernel
2015-07-03 18:18:10
15622
1
原创 加载内核模块-Unknown symbol错误分析
在调试过程中,发现一个问题,编译生成一个KO文件,insmod加载后报错:Unknown symbol var_set_integer (err 0)Unknown symbol parse_arg_eq (err 0)问题分析思路:一、用命令查看内核中是否已有这个内核符号,例如要查看是否有var_set_integer这个内核符号,输入命令:#cat
2015-07-03 11:03:51
45010
2
原创 stdin、stdout和STDIN_FILENO、STDOUT_FILENO
这周末开始看《APUE》,和《linux内核设计与实现》、《深入理解linux内核》同步往前推进。图1-4代码中用到了while ((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0) if (write(STDOUT_FILENO, buf, n) != n) err_
2015-06-28 09:45:25
3391
原创 DMA总结
概念“Direct Memory Access(存储器直接访问)。这是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据。整个数据传输操作在一个称为"DMA控制器"的控制下进行的。CPU除了在数据传输开始和结束时做一点处理外(开始和结束时候要做中断处理),在传输过程中CPU可以进行其他的工作(前提是未设置停止CPU访问)。这样,在大部分时间里,CPU和输入输出都处于并行操作。因此
2015-06-25 12:16:23
39973
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人