- 博客(51)
- 资源 (4)
- 收藏
- 关注
原创 neutron服务启动源码分析(四)
初始化neutron agent, 创建br-int 交换机,启用tunnel则创建br-tun交换机以及流表, agent侧开启rpc,如果启用dvr则下发dvr流表,初始化firewall (目前是 基于iptables 的 neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver)调用了OVSNeutronAgentOSKenApp的start方法。这里初始了配置,import 了native的module。
2024-01-05 15:36:26
519
原创 经纬度的作用
了解并正确使用经纬度对于我们来说是非常有益的,它不仅可以满足我们对于地理位置的好奇心,还能够帮助我们更好地理解和探索我们生活的这个地球。随着科技的发展,如今我们的手机、平板电脑甚至手表等设备都内置了全球定位系统(GPS)功能,可以随时获取当前位置的经纬度。这为我们的生活带来了很大的便利,无论是出行导航还是外卖送餐,都离不开经纬度的精确定位。通过知道一个地点的经纬度,我们可以在地图上准确地找到该地点的位置。当我们在手机上使用导航软件或者在网上查找地址时,经常会发现一个选项,就是显示当前位置的经纬度。
2024-01-05 10:04:59
661
原创 neutron 安全组代码实现(二)
由前面安全组代码实现一中,我们知道,最终执行了ML2 plugin的create_security_group_rule 方法,由类继承我们知道最终执行了 SecurityGroupServerNotifierRpcMixin.create_security_group_rule, 函数中执行了父类sg_db.SecurityGroupDbMixin 中的create_security_group_rule。最终执行了refresh_firewall , 最终调用firewall driver更新。
2024-01-05 09:58:25
517
原创 neutron 安全组代码实现(一)
安全组创建create请求由controller处理,调用create函数,self._notifier.info 这里先init 了neutron-lib库中的rpc.py中的NOTIFIER,然后调用oslo_message发送了一个info的通知 security_group.create.start, 调用。因为event是events.BEFORE_RESPONSE,所以最终执行了self._notify_loop,最终执行了callback。最终发送cast广播出去了。
2024-01-05 09:57:14
1069
原创 openstack计算节点上iptables安全组分析
由上面可以看出,neutron-openvswi-INPUT链中将来自是 tap323ef4ca-8a和 tapa937d188-d6的流入转给了neutron-openvswi-o323ef4ca-8和 neutron-openvswi-oa937d188-d 两个安全组子链,再看下这俩安全组子链。之前介绍过neutron 安全组基于iptables 和 ct 实现,分析一下计算节点上面的neutron 安全组的iptables,加深一下理解iptables以及安全组的实现。FORWARD 链先跳到。
2023-11-09 16:27:19
518
原创 程序员的护城河有哪些
综上所述,程序员的“护城河”是一种综合能力,包括技术能力、经验、项目和作品集、开源社区贡献、持续学习和适应能力、解决问题的能力、团队合作能力、时间管理和情绪管理等多个方面。通过展示自己的学习能力和对新技术的掌握,程序员可以在竞争中保持优势。通过在开源项目中积极参与并提交代码,程序员可以展示他们的技术能力、合作能力和对技术社区的价值贡献。:程序员可以通过他们参与过的项目和作品集来展示他们的实际能力和成就。:程序员需要具备解决问题的能力,这包括分析问题、提出解决方案、实施解决方案和测试解决方案的能力。
2023-11-09 16:25:25
107
原创 Linux vim 报错 E437
方法2:要下一劳永逸,将上述命令写入 /etc/bashrc或者/etc/profile 文件确保永久生效,切记保存后顺手执行 source /etc/bashrc。方法1:要是偷懒,那直接执行命令 export TERM=linux 或者 export TERM=xterm。或者将export TERM=xterm 添加至/etc/profile文件中即可。这个错误一般是环境变量TERM没有配置或者配置错误所致。执行export TERM=xterm;
2023-11-08 12:59:31
463
原创 通过ssh隧道转发本地ssh,实现内网穿透
但我自己有比如阿里云上的一台服务器B,我想直接SSH A服务器,怎么办?实际场景,有A服务器,位于某内网环境,没有外网IP,外面无法SSH。当然也可以用开源工具 frp。
2023-11-07 22:43:38
253
原创 nova虚机保存自定义镜像代码分析
虚机保存自定义镜像请求api 的_action_create_image ,这里查询instance以及bdms,因为未开enable_snapshot_volume_backed,所以执行了self.compute_api.snapshottry:bdms):context,instance,metadata)else:instance,
2023-11-03 15:42:42
517
原创 markdown 如何更改字体以及颜色等功能
markdown 是IT人士写文档的常用方式,但是markdown默认又不支持颜色字体等特殊功能,所以呢想实现字体颜色高亮等特殊功能,实现的方法呢就是使用HTML,所以将部分文字改成HTML代码就行
2023-11-03 14:55:33
500
原创 Linux在线扩容磁盘
经过测试,发现如果磁盘不分区的话只是mkfs /dev/sdb 整个磁盘的话,不论xfs还是ext 文件系统,都是能够热扩容的。Linux 磁盘文件系统主要用的是xfs和ext2-ext4, 于是做了相关扩容测试。我们df -h 后发现大小没变,只能重新卸载挂载磁盘。
2023-11-03 14:45:47
448
原创 neutron服务启动源码分析(三)
v2_factory里面就是pecan的相关内容了,hooks中定义了filter用于校验body合法性的,入口在 root.V2Controller(), 这里将v2controller 传给了pecan,创建了pecan的application。这里做了很多初始化的事情, 初始化neutronManager, 初始化extensionManager初始化, 以及将pecan中 router mapping中的collection与对应的controller 对应起来。
2023-10-31 16:12:56
161
原创 neutron服务启动源码分析(二)
wsgi.Loader() 构造了loader实例,传入 config_path = conf.api_paste_config 使用该参数,对应到neutron配置文件中是 /usr/share/neutron/api-paste.ini,调用了loader的load_app方法。load_app 最终调用 deploy.loadapp 通过paste deploy 实现对api-paster.ini中配置信息的解析以及具体实现。上面可以看出其中api-paste.ini 中的。
2023-10-31 16:11:55
131
原创 neutron服务启动源码分析(一)
serve_wsgi 传入cls,然后直接调用对于cls的create函数并start启动,这里代指NeutronApiService class的create和start。boot_server函数主要是加载配置文件,配置日志,最终调用server_func() ,也就是 wsgi_eventlet.eventlet_wsgi_server。run_wsgi_app() 函数最终构造了一个wsgi Server实例,名字为Neutron,start函数中传入监听地址和端口号以及worker数量。
2023-10-30 11:45:50
333
原创 Cinder volume服务启动以及创建挂载过程代码走读
cinder-volume的task_flows 中提取volume的spec相关信息,通知volume创建,开始创建volume云盘,因为基于镜像创建系统盘,所以执行_create_from_image函数,调用rbd driver clone_image,同时更新volume_glance_metadata表。筛选根据az,容量,特性等filter筛选合适的backend,并更新volume backend信息,最后调用cinde-volume的rpc_api create_volume。
2023-10-27 12:03:15
678
原创 openstack 开启嵌套虚拟化
嵌套式虚拟nested是一个可通过内核参数来启用的功能。它能够使一台虚拟机具有物理机CPU特性,支持vmx或者svm(AMD)硬件虚拟化。该特性需要内核升级到Linux 3.X版本 ,所以在centos6下是需要先升级内核的,而在centos7下已默认支持该特性,不过默认是不开启的,需要通过修改参数支持。工作中,有时用户想在虚拟机里面运行kvm或者kata等虚拟化功能的应用,所以需要让vm支持vt,所以需要支持嵌套虚拟化功能。cpu模式需要是passthrough模式,透传cpu feature给vm。
2023-10-27 10:41:49
413
原创 vue 2使用Element UI
接下来,可以在当前项目的任何视图中使用Element UI!安装完成后,还需要在main.js中添加配置。改变后的main.js。
2023-07-22 15:15:40
104
原创 golang优化-处理断言失败
类型断言 将会在检测到不正确的类型时,以单一返回值形式返回 panic,处理不好会对线上服务造成严重影响。因此,请始终使用“逗号 ok”的方式。
2023-07-21 06:49:08
79
原创 golang优化-正确姿势使用 goroutine
Goroutines 是轻量级的,但它们不是免费的: 至少,它们会为堆栈和 CPU 的调度消耗内存。虽然这些成本对于 Goroutines 的使用来说很小,但当它们在没有受控生命周期的情况下大量生成时会导致严重的性能问题。具有非托管生命周期的 Goroutines 也可能导致其他问题,例如防止未使用的对象被垃圾回收并保留不再使用的资源。因此,不要在代码中泄漏 goroutine。使用 go.uber.org/goleak 来测试可能产生 goroutine 的包内的 goroutine 泄漏。
2023-07-20 17:52:56
60
原创 go-封装使用redis功能
昨天上文中提过了通过连接池连接redis,日常redis常用的功能包括set,get , del,expire key等基础功能,以及sadd,hset,hget 功能,下面函数都封装好了,直接用即可。
2023-07-05 10:56:40
352
原创 go-使用连接池连接redis
开发过程中,必不可少的就是要使用redis,借助redigo,通过连接池的方式连接redis,可以极大的提高性能。(基于go 1.16 和 github.com/gomodule/redigo v1.8.8)
2023-07-04 15:37:08
547
原创 uniapp-小程序获取微信用户名称和头像
uniapp 开发小程序过程中,如何获取微信用户的昵称和头像信息,这个uniapp已经集成,通过getUserInfo即可获取到。
2023-06-30 21:46:25
4115
6
原创 go-连接使用mongo(一)
使用版本 go.mongodb.org/mongo-driver v1.8.4。工作中开发基于go,需要连接mongo,一直稳定运行,记录一下代码。
2023-06-30 09:49:59
264
原创 go-gorm使用连接池连接mysql数据库
工作中服务端使用go开发的,需要连接mysql ,基于gorm,经过稳定运行,记录一下连接mysql的代码吧。
2023-06-29 14:25:34
806
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人