openstack部署后实战

news2025/1/15 6:23:32

分布式部署规则

1、平常都是两台Node安装OpenStack平台,那如果想分布式部署该怎么做?比如:部署两台Nova服务,一台单独的Neutron服务,一台单独的存储节点等。

整体思想:

  • 如果想要部署两台Nova服务,那就在controller节点安装管理端服务,分别在不同的节点安装Nova服务端。并且运行"su -s /bin/sh -c “nova-manage cell_v2 discover_hosts --verbose” nova"命令去发现新添加的Nova节点。如果想把Controller节点也变成一个计算服务节点,也是安装Nova(compute)节点安装的一样,其中修改配置文件时,有许多部分都是已经修改过的,需要修改两点(这里只是大概,具体的操作看实际情况):[VNC]中需要修改,[libvirt]中virt_type = qemu需要修改。

    最后别忘重启systemctl restart libvirtd.service openstack-nova-compute.service服务,这个是点睛之笔。

  • 普遍的情况下,除了controller节点安装neutron组件,每一个安装了Nova节点上需要安装neutron服务。

    如果想单独一台节点作为neutron服务那就直接按照部署在Nova节点的方式一样就行。

    但是记得如果想要云主机能上网,一台neutron需要三个网卡:一个用于提供provider网络(flat),一个用于Vxlan网络,一个用于集群内部通信网络。

  • 如果想要一台节点单独做存储节点的话(这里指的是LVM类型的存储),如果是分布式存储,比如:Ceph,Swift那就另当别论)直接按照cinder客户端的方式安装就行,my_ip别忘修改。

网络实战

1、前面也已经说过了,只要云主机想访问外网,就需要三块网卡:

  • provider网络(flat),这个网络是provider network(物理网络),必须要由admin用户创建,在配置文件中关于flat网络的配置:provider:ens33,实际上就是做了物理网络和虚拟网络的映射,provider可以随意定义,但是在创建flat网络指定物理网络名称是需要指定自定义的名称。我们创建了flat网络后,虚拟机使用了flat网络后,所发出的数据包实际上就是相当于是由ens33网络发出去的数据包,这样只要ens33网卡能上网那云主机也能上网,所以ens33网卡所在的网络类型需要是NAT模式(这个是在VM Workstation说的,因为实验室基于虚拟机做的),当然这个ens33网卡就需要配置网关,DNS等,而且在创建的flat网络时也需要配置网关和DNS,须和ens33的配置信息保持一致。在OpenStack中创建flat网络选上"external(外部网络)",然后共享网络

    当然vlan类型的网络也是一样的。因为flat和vlan在openstack中是属于同一种网络的,只是底层实现效果不一样,具体的:vlan出去的数据包需要打tag,而flat出去的数据包不需要打tag。

    重要思想:就可以把flat网络实现的效果理解为公有云上的公网IP。只要有了它云主机就能上网。

  • Vxlan网络:它是一个虚拟的网络,也叫做tenant network,所以vxlan网络是由tenant(租户创建的)这样它才有实际意义。为啥说Vxlan是个虚拟的网络?因为它本身不需要依赖于具体的物理网络,它不需要和某个物理网络对应,满足Vxlan的条件,在虚拟机上单独添加一块网卡,比如:ens38,这个ens38的类型是NAT,Host Only,桥接都行,并且ens38网卡配置信息,不需要网关。然后在创建Vxlan网络时,首先/etc/neutron/plugins/ml2/linuxbridge_agent.ini 配置文件中的[vxlan]分组中的local_ip = 192.168.17.10,填写本地你想当做Vxlan那块网卡的IP就行了。

    然后是在Openstack中创建Vxlan,网段随便创建,并不需要和实际的物理网络相对应,因为Vxlan是个基于IP叠加的网络,也就是说只要Vxlan底层有个IP就行,网关不用写,这样就行了。

    重要思想:Vxlan网络的效果就相当于公有云中云服务器中的私网IP,它既不能上外网,也不能和其它不同网段的服务器的通信。

    但是想要使得具有Vxlan的网络的云主机能上外网并且和不同网络的云主机通信该怎么解决?

    这就需要路由器,接口,浮动IP的接入了,稍后实战。

2、创建flat网络:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flat的网络就这样设置,DNS应该不用个ens33的一致,也能上网,但是必须有效。

就这样创建一台云主机并且使用flat网络,云主机就能上网了。

3、密钥对的使用

创建密钥分为两种:

  • 创建密钥对:创建好之后会下载,注意这个密钥只能下载一次,所以妥善保管:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 导入公钥

我们现在服务器上创建个密钥对

#生成密钥对,-t rsa指定rsa算法
[root@controller ~]# ssh-keygen -t rsa 

#copy公钥到openstack中
[root@controller ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGbJMMjvMc/T0mQAWvjXxCbefIeamvWEk2AAAi3jUudLCsmtzswIFkgNTASiXQbx1OtYkfpPC5seulEAO9+RxPfE4v8G4xQAHC8mERrUavj+L3OUc0le9UsFsxmJ6dC/OJD8+zUOEVvwiku03au7mBYMtn4soBzzHwKuRXJZdkW4yY9GaYmvdOdONmQs4mEP+PPc7CTE7u+npnsdr1BusmyqkIXLGbjnGPMOeOXPmOyhU4PKktZFmGfOqChMbrWGZB/4kDCqcuhuSAK77oauYMTEhBBSIut/ubJYWOsh8hB2jiydsnqZOlVpD6Oat/B6cCv2BiXkIy1ZhJkEk0SsKN root@controller

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

密钥对有了,然后创建云主机,看看如何使用密钥去连接云主机:

在Win的DOC窗口测试,xshell过几天研究。

1、这个是使用密钥对的方式连接

#centos.pem是在下载下来密钥文件
C:\Users\郑波>ssh -i centos.pem cirros@192.168.9.183     #可以看到登陆成功!!!
Warning: Identity file centos.pem not accessible: No such file or directory.
cirros@192.168.9.183's password:
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether fa:16:3e:22:f6:a3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.9.183/24 brd 192.168.9.255 scope global eth0
    inet6 fe80::f816:3eff:fe22:f6a3/64 scope link
       valid_lft forever preferred_lft forever

2、使用导入公钥的方式连接:

[root@controller ~]# ssh cirros@192.168.9.173    #在controller,compute等节点连接可以,在Win上一样也可以。
The authenticity of host '192.168.9.173 (192.168.9.173)' can't be established.
RSA key fingerprint is SHA256:wJuOUWxA/6S++RA0p/bfJpOkmW7MvcJtGn33ia5YCr4.
RSA key fingerprint is MD5:2a:6a:5d:01:ed:22:0d:55:71:39:8c:21:c1:d7:c4:b2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.9.173' (RSA) to the list of known hosts.
cirros@192.168.9.173's password: 
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether fa:16:3e:59:7e:13 brd ff:ff:ff:ff:ff:ff
    inet 192.168.9.173/24 brd 192.168.9.255 scope global eth0
    inet6 fe80::f816:3eff:fe59:7e13/64 scope link 
       valid_lft forever preferred_lft forever
$ 

4、创建Vxlan

在项目中创建的网络默认就是Vxlan网络,在管理员中创建也行。在管理员中创建Vxlan网络需要制定个段ID,只要在配置文件中的范围就行。

这里在项目中创建Vxlan网络,就正常创建即可,这里不再演示。

当然如果想要上外网还需要配置DNS:114.114.114.114(这个随意,只要有效即可),IP池还规定一下吧0.100-0.200

1、重点:现在Vxlan网络和外界是完全不互通的,要想胡同需要创建路由器。因此在创建了Vxlan网络之后,接下来就需要创建路由器。

在项目—>路由中创建路由:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2、重点:创建了路由,我们要在路由中创建个接口。

点击路由器名称—>接口会发现有一个接口了,而且IP是:192.168.9.109,

会显示flat网络中的IP地址,问什么?其实是这样的:这是个路由器,是负责实现nat工作的。我现在想使用Vxlan网络去上网,而Vxlan默认是私网IP不可能可外部网络进行通信,但是现在flat能访问外网啊,因此我们在添加个Vxlan网络的接口,将此接口和192.168.9.109接口做映射,其实就是SNAT,DNAT转换,这一样以来Vxlan就能上网了。

创建如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个网关IP通常是172.30.0.1或172.30.0.254

创建好之后,刷新查看,是否是"UP"的状态,如果是"DOWN"的状态,那就是L3-agent代理配置错了。

接下来使用此Vxlan网络创建实例,检测其网络的可通性。

重点结论!!!:

  • 此时在云主机上可以ping通baidu.com,还可以ping controller,compute等节点,也就是说使用Vxlan网络的云主机已经可以访问外网了。
  • 但是!!!在我Win这个物理机上,或者controller,compute等主机上都不能ping通云主机,

这时如果还想实现外面的平通云主机,就需要浮动IP了(Float IP)

(1)在项目中创建浮动IP:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(2)创建好了浮动IP,我们需要将此浮动IP绑定在"vm02-vxlan"云主机上

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这样绑定之后,在Win上或者controller,compute上就能ping通云主机了,只不过ping的是192.168.9.101,

此时我们可以ssh连接vm02-vxlan主机上。

#需要注意的是,绑定的192.168.9.101浮动IP不会在云主机中显示,云主机是无感知的。
[root@controller ~]# ssh cirros@192.168.9.101
The authenticity of host '192.168.9.101 (192.168.9.101)' can't be established.
RSA key fingerprint is SHA256:pJIDlBRxckl5eeFjVwVT1iJOT1UjqDstgHeqpmmO7uE.
RSA key fingerprint is MD5:3a:51:5e:b2:e2:2d:7c:63:53:b0:b0:79:85:4c:52:11.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.9.101' (RSA) to the list of known hosts.
cirros@192.168.9.101's password: 
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast qlen 1000
    link/ether fa:16:3e:7c:16:85 brd ff:ff:ff:ff:ff:ff
    inet 172.30.0.193/24 brd 172.30.0.255 scope global eth0
    inet6 fe80::f816:3eff:fe7c:1685/64 scope link 
       valid_lft forever preferred_lft forever

网络拓扑分析

基于以上实验,形成如下网络拓扑

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5、Vxlan使用的一些场景

场景一:同一网络下各子网默认互通

此测试:在同一个Vxlan网络下,其包含的各个子网是否能互通?

答案:默认能互通(标题既是答案)

实验测试:
在vxlan_172.30网络已经有个172.30.0.0/24的网络了,现在在创建个子网:172.30.1.0/24

创建步骤:

  • 创建vxlan_172.30.1

  • 创建路由

  • 基于上述路由创建接口,做NAT映射转换,具体来说时SNAT,因为外部ping不通内部所以没有DNAT,

  • 创建实例,用于检测。为了创建的云主机实例在172.30.1.0/24这个网络下面,我们可以通过指定端口的方式操作。

    在项目—>网络—>网络名称—>端口操作:
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 创建实例。既然指定了端口,那就直接选端口即可。

场景二:不同网络下的子网不能互通,需要添加静态路由实现

实验步骤:

  • 创建个Vxlan_172.40.0网络(172.40.0.0/24)
  • 基于172.40创建个路由
  • 基于路由创建接口,用于SNAT转换
  • 创建云主机实例

现在172.40.0和172.30.0是不互通的,那如何实现互通?
答案:做静态路由

1、记录下40,30外部网关的IP,在路由器中

40的外部网关IP:192.168.9.145

30的外部网关IP:192.168.9.109

2、添加静态路由,现在40网络上面添加:

项目—>路由—>点击40的路由—>静态路由:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那如上配置之后,在40上就可以ping通30了,但是我们没有在30上配置40的静态路由,因此在30上还不能ping通40

3、添加静态路由,在30上面添加,做法和上面一样,不在演示。

这样不同网络的云主机实例就能互相ping通了。

6、实例的升降配与实例的冷迁移

在定义实例规格时,不建议定义根磁盘大小,如果定义,则将所有规格对磁盘大小定义设置为相同

根磁盘大小可以由镜像上传时定义最小根磁盘大小,也可以在创建实例时指定根磁盘大小。

1、实例升降配时均会重启实例

2、实例升降配时需要手动确认,若需要自动确认,需要在计算节点[DEFAULT]部分增加,如下配置:

  • 计算节点上添加,用于实例升降配自动确认,自动确认时间,0是禁止,1代表1s自动确认:

    resize_confirm_window = 1

3、实例升降配会出现实例迁移(当前所在计算节点资源不够时),所以还需要添加如下参数,同时要配置支持冷迁移或热迁移:

  • allow_resize_to_same_host = true
  • allow_migrate_to_same_host = true

但是通常情况下冷迁移会报错,因为一个计算节点资源不够,会迁移到另一个计算节点上去,但由于计算节点的nova用户不能互相通信,所以我们需要进行配置:

冷迁移配置

1、配置计算节点之间nova用户ssh对等性,即互相访问免密登陆

nova用户在安装nova软件时就已经创建了,只是限制登陆,需要修改为允许登陆,这个可以在/etc/passwd中查看。

如下配置:

#设置nova用户可登录
[root@compute01 ~]# usermod -s /bin/bash nova

#给nova用户设置密码,便于后面scp密钥使用,要是不设置密码,还需要切换至root用户去scp密码
[root@compute01 ~]# echo "nova" |passwd --stdin nova

#登陆nova用户
[root@compute01 ~]# su - nova
Last login: Sat Apr 30 10:46:39 EDT 2022 from controller on pts/3
-bash-4.2$ pwd
/var/lib/nova

#生成密钥对
-bash-4.2$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/nova/.ssh/id_rsa): 
Created directory '/var/lib/nova/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /var/lib/nova/.ssh/id_rsa.
Your public key has been saved in /var/lib/nova/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:DO85l2PxWiTRVjORpAYEUrJVRgUEm2sqJz0OSzHc7Mc nova@compute01
The key's randomart image is:
+---[RSA 2048]----+
|      o.=BOo..*o |
|       = + o o.o |
|      o o . =    |
|   . o + . +     |
|    + o S o .    |
|     = = . *     |
|    = * E = o    |
|   . B o + +     |
|    . .   .      |
+----[SHA256]-----+

#在一个计算节点生成密钥以及authorized_keys文件
-bash-4.2$ ssh-copy-id compute01


#把密钥scp至每一个计算节点上面:
-bash-4.2$ scp -rp .ssh/ compute02:~/
                     
#注意scp的文件要保证文件的属性一致
#登陆测试
测试本身,测试非本身的登陆
比如我们在compute01上测试 
-bash-4.2$ ssh compute02        #02的免密登陆
Last login: Sun May  1 10:57:00 2022
-bash-4.2$ exit
logout
Connection to compute02 closed.
-bash-4.2$ ssh compute01        #01的也免密登陆  
Last login: Sun May  1 10:49:23 2022
同样在compute02上也测试一下

2、修改配置文件/etc/nova/nova.conf

[DEFAULT]
allow_resize_to_same_host= true      #允许在本机进行迁移
allow_migrate_to_same_host= true
resize_confirm_window=1      #这个和冷迁移关系不大

7、主机聚合

主机聚合(Host Aggregate)允许将硬件进行逻辑分组,并在用户创建实例时能指定对应的组,通常将相同规格硬件计算节点归类在一个组,

1、只有计算节点才能使用主机聚合

2、创建主机聚合时,必须要自定义一个域(可用区/可用域)

3、创建主机聚合时,会自动添加一个元数据avaliability_zone,值默认等于主机聚合名称

4、通过一个计算节点只能归属于一个可用域,即不能同属于两个或两个以上可用域

5、删除主机聚合时,必须先移除该主机聚合组下的所有计算节点,否则无法删除该主机聚合。

6、主机聚合可以让实例创建在指定的计算节点上。大部分情况,实例创建时是由调度器决定创建在哪台计算节点上,但在需要错误排查或编排服务资源分配时,希望能够直接在指定计算节点上创建实例,就可以用到主机聚合来实现。

7、主机聚合可以让管理员对终端用户透明的方式定义计算资源,同时根据目的进行逻辑地分组,当主机分组的元数据与实例类型的元数据匹配,并且使用该类型启动实例时,就会调度主机聚合中的计算节点创建实例。

8、可用域(可用区)是对计算资源的逻辑隔离,用户启动实例时可以选择选择对应的可用域,如果没有自定义可用域,默认为nova域。如果有多个可用域,则用户创建多个实例时可以指定不同的可用域,避免某-个可用域故障带来的问题。

8、主机组与虚拟机调度

主机组与主机聚合作用的对象不同。

主机聚合是针对宿主机计算节点,而主机组是针对虚拟机实例

1、按照关联、不关联、软关联、软不关联四种策略对用户创建的虚拟机进行管理。实现约束虚拟机与虚拟机在物理机上的部署关系。

(1)、关联:将实例创建在同-个计算节点上, 当该计算节点资源不够时就会失败。例如, 2个计算节点,批量创建3个实例, 选择"关联”组,则实例全部创建在其中-个计算节点上, 不会在另-个计算节点若资源不够时将会失败,关联组实例不支持迁移。

(2)、不关联:将实创建在不同计算节点上,当计算节点数等于“不关联“组中实例个数时,再创建实例到“不关联"组就失败。

(3)、软关联:将实例尽量创建在同-个计算节点上,当评估该计算节点资源不够时不会失败,会落到另一个计算节点。

(4)、软不关联:将实例尽量创建在不同计算节点上,当计算节点数量不够时,实例会落到同一个计算节点上。

2、Openstack的虚拟机调度策略默认是用FilterScheduler来实现。通过调度算法实现

(1)、先过滤掉不满足虚机flavor要求的计算节点

(2)、对剩余计算节点进行权重计算

(3)、选取权重值最优的计算节点返回

3、在控制节点上nova.conf中的vailable. filters用于配置可用的fiter,默认所有nova内置的ilter都可以用于过滤操作。 enabled, filters用于指定可用的过滤器。

filter. scheduler将按照enabled. filters值的顺序进行过滤。

[iter. scheduler]

available_ filters=nova.scheduler.fiters.all filters
enabled_fltrs=RtrylilteravailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapaliltieFilter,ImagePropertiesFilter,ServerGroupAtiftinityFilterServerGroupAinityFilter

  1. RetryFilter
    过滤掉已经尝试过调度且失败的节点
  2. AvibiltyZoneFilter
    为提高容灾性和隔离性,可以将计算节点划分到不同的可用域中,Openstack默认只有一 个命名为"nova"的可用域, 所有计算节点默认都是放在"nova”可用域中,用户可以通过主机聚合创建自定义域,在创建实例时可以选择自定义域。
  3. RamFilter
    将不能满足flavor内存的计算节点过滤掉,为了提高系统的资源使用率,Openstack允许计算节点超额使用内存,也就是可以超过实际内存大小,可通过ram. alocation. ration=1.5 配置,默认初始超比率initial ram. alcation. ratio=1.5.同样还有CPU和磁盘超额配置。
    [DEFAULT]
    cpu
    allocation
    ratio=1.0
    ram_ allocation ratio=1.0
    initial .cpu_ allocation_ ratio=16.0
    initial_ ram_ allocation_ ratio=1.5
    、 ComputeFilter
    确保只能正常的计算节点才能被nova-scheduler调度, ComputeFilter 是必须的过滤器
  4. ComputeCapabiltiesFilter
    根据计算节点的特性来过滤,比如计算节点有x86和ARM架构,如果想指定实例部署到x86_ 64架构节点上,就要使用ComputeCapailisiter,.同时还需要在flavor中添加metadata.添加Architecture=>86. .64
    6、ImagePropertiesFilter
    根据所选image的属性来过滤计算节点跟favor类似,image也有metadata, 用于指定其属性。
  5. ServerGroupfityFiltr (亲和性)
    将实例尽量创建在同一个计算节点上,结合主机组实现.要创建一个关联"主机组或"软关联“组。
    03:53

ram,cpu配额的参数配置

[root@compute02 ~]# vi /etc/nova/nova.conf
[DEFAULT]
cpu_allocation_ratio=1.0
ram_allocation_ratio=1.0
initial_cpu_allocation_ratio=1.0
initial_ram_allocation_ratio=1.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1197873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

matplotlib从起点出发(11)_Tutorial_11_TightLayout

如何使用紧凑的而已来干净利落地将绘图放入图形中。 tight_layout会自动调整子图参数&#xff0c;使子图适合图区域。这是一项实验性功能&#xff0c;在某些情况下可能不起作用。它仅检查刻度标签、轴标签和标题的范围。 tight_layout的替代方法是constrained_layout。 1 简…

echart宽度100px原因(解决el-tabs里的echarts图表宽度不自适应,只有100px问题)

目录 问题描述产生原因处理方法1.使用echart 的API —— resize()2.使用 v-if 总结 问题描述 项目中在el-tabs下面使用了图表&#xff0c;发现图表的宽度始终只有100px 产生原因 首先echart初始化的组件宽度设置了width: 100%&#xff0c;那么本来这个时候&#xff0c;echar…

Python每日练习:20个常用代码,初学者也可以自己实现!

文章目录 前言20个代码1.重复元素判定2.字符元素组成判定3.内存占用4.字节占用5.打印 N 次字符串6.大写第一个字母7.分块8.压缩9.解包10.链式对比11.逗号连接12.元音统计13.首字母小写14.展开列表15.列表的差16.通过函数取差17.链式函数调用18.检查重复项19.合并两个字典20.将两…

稳定扩散AI 纹理生成器

推荐基于稳定扩散(stable diffusion) AI 模型开发的自动纹理工具&#xff1a; DreamTexture.js自动纹理化开发包 - NSDT 什么是稳定扩散&#xff1f; 从技术上讲&#xff0c;Stable Diffusion 是一种用于机器学习的潜在扩散模型 &#xff08;LDM&#xff09;。这种类型的专用深…

直播间自动发言机器人的运行分享,与开发需要到的技术分析

先来看实操成果&#xff0c;↑↑需要的同学可看我名字↖↖↖↖↖&#xff0c;或评论888无偿分享 一、引言 随着人工智能技术的不断发展&#xff0c;自动发言机器人已经成为了当今社交媒体领域的重要组成部分。它们能够自动化地发布内容、回复用户评论和消息&#xff0c;大大提高…

解析html生成Word文档

内容&#xff1a;读取html文件中的文本内容&#xff0c;然后生成Word文档导出。 事例场景&#xff1a;需求开发完成之后需要写文档&#xff08;代码修改清单&#xff09;&#xff0c;文档内容就是这次需求修改/新增的所有代码&#xff0c;需要列出修改的文件路径以及代码片段&…

JavaWeb Day09 Mybatis-基础操作01-增删改查

目录 环境准备 ①Emp.sql ②Emp.java 一、删除 ①Mapper层 ②测试类 ③预编译SQL&#xff08;查看mybatis日志&#xff09; 1.性能 2.安全 ④总结 二、新增 ①Mapper层 ②测试类 ③结果 ④新增&#xff08;主键返回&#xff09; 1.Mapper层 2.测试类 ⑤总结​…

leetCode 493 翻转对 归并分治 + 图解

493. 翻转对 - 力扣&#xff08;LeetCode&#xff09; 给定一个数组 nums &#xff0c;如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。你需要返回给定数组中的重要翻转对的数量。 求"小和"问题是&#xff0c;当我 j 来到一个位置的时…

【研究】Splunk 字段是否被加工过

1: 背景: 最近用户有个疑问,就是有些字段的输出有点问题,不确定是否被加工过。 2: 查找问题: index=abc sourcetype=def123 发现字段: city_shanghai 的输出可能有点问题。 3: 排查问题: 先去这个splunk search head cluster 的页面: server 的查找如下: 登入so1 s…

“Git实践指南:深入探索开发测试上线、分支管理与标签“

文章目录 引言一、Git的分支的使用1.分支2.标签3.分支与标签的关系4. 分支在实际中的作用5. 四个环境以及各自的功能特点6. 分支策略分支应用场景 二、Git的标签3.1 标签的基本使用3.3 标签的共享与推送 总结 引言 在现代软件开发中&#xff0c;版本控制是一个关键的环节&…

kubernetes prometheus监控

目录 一、部署prometheus 二、 部署nginx监控实例 三、部署prometheus-adapter 一、部署prometheus 清理镜像方便后面一次性上传 docker rmi docker images | grep -v REPOSITORY | awk {print $1":"$2} 删除 docker load -i kube-prometheus-stack-0.58.0.tar…

计蒜客详解合集(3)期

目录 T1236——分苹果 T1113——整理药名 T1153——整数奇偶排列 T1249——漂亮的字符串 T1168——统计素数个数 T1160——甲流病人筛选 T1236——分苹果 分享一道特别简单的题。 蒜头君要把一堆苹果分给 个小朋友&#xff0c;要使每个人都能拿到苹果&#xff0c;而目每…

Python学习笔记--自定义类型的枚举

三、自定义类型的枚举 但有些时候我们需要控制枚举的类型&#xff0c;那么我们可以 Enum 派生出自定义类来满足这种需要。通过修改上面的例子&#xff1a; #!/usr/bin/env python3 # -*- coding: UTF-8 -*- from enum import Enum, uniqueEnum(Month, (Jan, Feb, Mar, Apr, M…

相机内外参实践之点云投影矢量图

目录 概述 涉及到的坐标变换 深度值可视化 3D点云的2D投影实现 实现效果 参考文献 概述 Camer的内外参在多模态融合中主要涉及到坐标系变换&#xff0c;即像素坐标、相机坐标以及其他坐标系。这篇就针对点云到图像的投影与反投影做代码实践&#xff0c;来构建一张具有深度…

【2023CANN训练营第二季】——Ascend C算子开发进阶—Ascend C Tiling计算

了解Tiling基本概念 在这一小节中接触到了一个新的概念&#xff0c;叫Tiling计算&#xff0c;指的是在Ascend C 算子开发过程中&#xff0c;矢量的算子流程分为3个基本任务&#xff1a;CopyIn&#xff0c;Compute&#xff0c;CopyOut。CopyIn任务负责将Global Memory上的输入T…

Python 列表元素里面含有字典或者列表进行排序

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 示例1&#xff1a;列表里面含有列表进行排序 s [[1, 2], [100, 2], [33, 3], [25, 6]] s.sort(keylambda k: k[0]) print(s)结果&#xff1a; [[1, 2], [25, 6], [33, 3…

基于FPGA的PS端的Si5340的控制

1、功能 Si5340/41-D可以输出任意频率&#xff0c;当然有范围&#xff0c;100Hz1GHz。外部输入为24M或者4854M的XTAL&#xff0c;VCO在13500~14256Mhz之间&#xff0c;控制接口采用IIC或者SPI。 芯片架构图 2、IIC控制方式 3、直接上控制代码 使用米联客ZU3EG&#xff0c;将…

Learn runqlat in 5 minutes

内容预告 learn X in 5 系列第一篇. 本篇主要介绍进程时延统计方式和 rawtracepoint. runqlat "高负载场景下应用为何卡顿", "进程 A 为什么得不到调度". 当我们在工作生活中产生这样的疑问, 目标进程的调度时延是一个不错的观测切入点. runqlat 可以帮…

SQL必知会(二)-SQL查询篇(5)-用通配符进行过滤

第6课、用通配符进行过滤 LIKE&#xff1a;匹配文本 LIKE&#xff1a;针对未知值进行过滤。通配符搜索只能用于文本字段。 1&#xff09;百分号%通配符 %表示任何字符出现任意次数。 需求&#xff1a;找出所有以词 Fish 起头的产品 SELECT prod_id, prod_name FROM Product…

Linux-基础知识

1.快捷键 ctrlc 强制停止 ctrld 退出或登出 history 查看历史命令&#xff08;&#xff01;/ctrlr输入内容去匹配历史命令&#xff09; 光标移动快捷键 ctrla,跳到命令开头 ctrle,跳到命令结尾 ctrl键盘左键&#xff0c;向左跳一个单词 ctrl键盘右键&…