小阿轩yx-KVM+GFS 分布式存储系统构建 KVM 高可用
小阿轩yx-KVM+GFS 分布式存储系统构建 KVM 高可用
案例分析
案例概述
- 使用 KVM 及 GlusterFS 技术,结合起来实现 KVM 高可用
- 利用 GlusterFS 分布式复制卷对 KVM 虚拟机文件进行分布存储和冗余
分布式复制卷
- 主要用于需要冗余的情况下把一个文件存放在两个或两个以上的节点,当其中一个节点数据丢失或损坏后,KVM 仍然能够通过卷组找到另一个节点上存储的虚拟机文件,保证虚拟机正常运行
- 节点修复后,GlusterFS 会自动同步同一组卷组里有数据的节点数据
案例前置知识点
GlusterFS 分布式文件系统简介
- 由 Gluster 公司创始人兼首席执行官 Anand BabuPeriasamy 编写
- 于 2011 年 10 月 7 日被 Red Hat 收购
特性
- 可扩展的分布式文件系统
- 可运行与廉价的普通硬件上
- 提供容错功能
- 也可以给大量用户提供总体性能较高的服务
- 可以根据存储需求快速调配存储,内含丰富的自动故障转移功能
- 且摒弃集中元数据服务器的思想
- 适用于数据密集型任务的可扩展网络文件系统
- 免费开源
优势
- 可用于大型的、分布式的、对大量数据进行访问的应用
特点
- GlusterFS 体系结构,将计算、存储和 |0 资源聚合到全局名称空间中,每台服务器都被视为节点,通过添加附加节点或向每个节点添加额外存储来扩展容量。通过在更多节点之间部署存储来提高性能。
- GlusterFS 支持基于文件的镜像和复制、分条、负载平衡、故障转移、调度、磁盘缓存、存储配额、卷快照等功能。
- GlusterFS 各客户端之间无连接,本身依赖于弹性哈希算法,而不是使用集中式或分布式元数据模型。
- GlusterFS 通过各种复制选项提供数据可靠性和可用性,例如复制卷、分布卷。
案例环境
主机 | 操作系统 | 主机名/IP地址 | 主要软件及版本 |
服务器 | CentOS7.9 | node1/192.168.10.101 | GlusterFS 3.10.2 |
服务器 | CentOS7.9 | node2/192.168.10.102 | GlusterFS 3.10.2 |
服务器 | CentoS7.9 | node3/192.168.10.103 | GlusterFS 3.10.2 |
服务器 | CentoS7.9 | node4/192.168.10.104 | GlusterFS 3.10.2 |
服务器 | CentoS7.9 | kvm/192.168.10.201 | KVMGluster-client |
服务器 | CentoS7.9 | kvm/192.168.10.202 | KVMGluster-client |
案例需求
- 部署 GlusterFS 文件系统
- 实现 KVM 虚拟主机不会因宿主机宕机而宕机
案例实现思路
- 安装 KVM
- 所有节点部署 GlusterFS
- 客户端挂载 GlusterFS
- KVM 使用挂载的 GlusterFS 目录创建虚拟机
案例实施
部署 GFS 高可用分布式存储环境
安装部署 KVM 虚拟化平台
部署 GlusterFS
先开启四台机器,并会话同步
- 192.168.10.101
- 192.168.10.102
- 192.168.10.103
- 192.168.10.104
关闭防火墙、内核机制
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
修改 hosts 文件
[root@localhost ~]# vim /etc/hosts
//添加节点
192.168.10.101 node1
192.168.10.102 node2
192.168.10.103 node3
192.168.10.104 node4
192.168.10.201 kvm01
192.168.10.202 kvm02
设置好阿里巴巴仓库
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
[root@localhost ~]# yum clean all
安装 GlusterFS 包
[root@localhost ~]# yum -y install centos-release-gluster
进入目录查看文件
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
Cent0s-Base.repo ent0S-Gluster-9.mepo Cent0S-Storage-common.repo epel.repo
查看当前查看状态
[root@localhost ~]# yum repolist
这一步的状态都是0,下面解决方法
修改 GlusterFS 文件
[root@localhost yum.repos.d]# vim CentOS-Gluster-9.repo
//修改前
mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=$releasever&repostorage-qluster-9
#baseurl=http://mirror.centos,org/$contentdir/$releasever/storage/$basearch/gluste~-9/
//修改后
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=$releasever&repostorage-qluster-9
baseurl=http://mirrors.aliyun.com/$contentdir/$releasever/storage/$basearch/gluste~-9/
再次查看
[root@localhost ~]# yum repolist
源标识 源名称 状态
base/7/x86 64 Cent0S-7- Base - mirrors.aliyun.com 10,072
centos-gluster9/7/x86_64 Cent0s-7 - Gluster 9 181
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86 64 13,791
extras/7/x86_64 Cent0S-7- Updates - mirrors.aliyun.com 526
updates/7/x86 64 Cent0S-7-Extras - mirrors.aliyun.com 6,173
repolist: 30,743
安装软件包
[root@localhost ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
启动服务并设置开机自启
[root@localhost ~]# systemctl start glusterd
[root@localhost ~]# systemctl enable glusterd
这里取消会话同步
在101上加入其它节点
[root@localhost ~]# gluster peer probe node2
peer probe: success
[root@localhost ~]# gluster peer probe node3
peer probe: success
[root@localhost ~]# gluster peer probe node4
peer probe: success
查看状态
[root@localhost ~]# gluster peer status
Hostname: node2
Uuid:b5f43fc7-2f68-4bf9-8721-eb6d1bbdd98b
State: Peer in Cluster (connected)Hostname: node3
Uuid:bblcdlad-f396-403e-bf68-c96147466043
State: Peer in Cluster (Connected)Hostname: node4
Uuid: ea66c509-4fcf-4b17-9bf-1d7b00608a7e
State: Peer in Cluster (Connected)
开启会话同步
创建目录
[root@localhost ~]# mkdir /data
取消会话同步
在101上创建分布式复制卷
[root@localhost ~]# gluster volume create models replica 2 node1:/data node2:/data node3:/data node4:/data force
volume create: models: success: please start the volume to access data
启动
[root@localhost ~]# gluster volume start models
查看信息
[root@localhost ~]# gluster volume info models
201和202恢复kvm01快照,XShell 连接客户端
- 192.168.10.201
- 192.168.10.202
开启会话同步
打开 hosts 文件添加节点
[root@localhost ~]# vim /etc/hosts
//添加节点
192.168.10.101 node1
192.168.10.102 node2
192.168.10.103 node3
192.168.10.104 node4
安装 glusterfs 客户端软件
[root@kvm01 ~]# yum -y install glusterfs glusterfs-fuse
创建挂载目录
[root@kvm01 ~]# mkdir /kvmdata
挂载 models 卷
[root@kvm01 ~]# mount -t glusterfs node1:models /kvmdata/
修改 fstab 文件
[root@localhost ~]# vi /etc/fstab
//添加配置
node1:models /kvmdata glusterfs defaults,_netdev 0 0
查看挂载卷
[root@kvm01 ~]# df
取消会话同步
进入目录
[root@kvm01 ~]# cd /opt
在201上打开 Xftp把用到的系统镜像上传到/opt目录中。这里直接使用CentOS官方提供的qcow2格式的系统镜像(CentOS-7-x86_64-GenericCloud-2009.qcow2),这个镜像可以直接部署到kvm或openstack的平台中
拷贝镜像到新目录下
[root@kvm01 opt]# cp CentOS-7-x86_64-GenericCloud-2009.qcow2 /kvmdata/test01.qcow2
为系统镜像设置密码
[root@kvm01 ~]# virt-customize -a /kvmdata/test01.qcow2 --root-password password:123
[ 0.0] Examining the guest ...
[ 17.3] Setting a random seed
[ 17.4] Setting passwords
[ 19.3] Finishing off
用新的镜像文件生成虚拟机
[root@kvm01 opt]# virt-install --name=test01 -r 1024 --vcpus=1 --disk device=disk,bus=virtio,path='/kvmdata/test01.qcow2',size=10 -w bridge:br0 --virt-type=kvm --boot hd
登录测试
[root@kvm01 opt]# virt-manager
测试实时迁移环境
配置kvm01的无密码登录环境(生成密钥对)
[root@kvm01 ~]# ssh-keygen -t rsa
把公钥拷贝给kvm02
[root@kvm01 ~]# ssh-copy-id kvm02
kvm01留一份
[root@kvm01 ~]# ssh-copy-id kvm01
配置kvm02的无密码登录环境(生成密钥对)
[root@kvm02 ~]# ssh-keygen -t rsa
拷贝给kvm01
[root@kvm02 ~]# ssh-copy-id kvm01
再拷贝给自己
[root@kvm02 ~]# ssh-copy-id kvm02
将 kvm01 迁移到 kvm02 上
[root@kvm01 opt]# virsh migrate --persistent --undefinesource test01 qemu+ssh://kvm02/system
查看状态
[root@kvm01 opt]# virsh list --all
Id 名称 状态
--------------------------------
查看 kvm02 上的状态
[root@kvm01 opt]# virsh list --allId 名称 状态
----------------------------------------------------1 test01 running
把 kvm02 迁回到 kvm01上
[root@kvm01 opt]# virsh migrate --persistent --undefinesource test01 qemu+ssh://kvm01/system
202上查看状态
[root@kvm02 ~]# virsh list --all
Id 名称 状态
---------------------------------
201再查看状态
[root@kvm01 opt]# virsh list --all
Id 名称 状态
---------------------------------
3 test01 running
创建虚拟机资源
退出 /opt 目录,为配置文件创建共享目录
[root@kvm01 ~]# mkdir /kvmdata/config
将 test01 的配置文件拷贝到共享目录
[root@kvm01 ~]# cp /etc/libvirt/qemu/test01.xml /kvmdata/config/
关闭 test01
[root@kvm01 ~]# virsh shutdown test01
域 test01 被关闭
取消定义 test01 虚拟机
[root@kvm01 ~]# virsh undefine test01
域 test01 已经被取消定义
查看状态
[root@kvm01 ~]# virsh list --all
Id 名称 状态
--------------------------------
重新定义 test01 虚拟机
[root@kvm02 ~]# virsh define /kvmdata/config/test01.xml
定义域 test01 (从 /kvmdata/config/test01.xml)
查看状态
[root@kvm01 ~]# virsh list --all
Id 名称 状态
---------------------------------
- test01 关闭
启动 test01
[root@kvm01 ~]# virsh start test01
域 test01 已开始
再查看状态
[root@kvm01 ~]# virsh list --allId 名称 状态
----------------------------------------------------6 test01 running
202 进入目录并查看状态
[root@kvm02 ~]# cd /kvmdata/
[root@kvm02 kvmdata]# ls
test01.qcow2
[root@kvm02 kvmdata]# virsh list --all
Id 名称 状态
--------------------------------------
部署群集
这里201和202会话同步
设置好阿里巴巴仓库
[root@kvm01 ~]# rm -rf /etc/yum.repos.d/*
[root@kvm01 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@kvm01 ~]# curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
[root@kvm01 ~]# yum clean all
安装群集组件(201和202都要安装)
[root@kvm01 ~]# yum -y install pcs pacemaker fence-agents-all
[root@kvm02 ~]# yum -y install pcs pacemaker fence-agents-all
- Pacemaker 是一个集群管理器。它利用OpenAIS 或 heartbeat提供的消息和成员能力,由辅助节点和系统进行故障检测和回收,实现性群集服务(亦称资源)的高可用性。
- Fence agent是集群管理中的一个概念,用于在发生电源故障或其他故障时确保集群的稳定性。
- pcs 是集群管理的一个守护进程,利用pcs提供的工具可以对集群环境进行状态的管理
查看 passwd 检查 hacluster 账号
[root@kvm01 ~]# cat /etc/passwd
hacluster:x:189:189:cluster user:/home/hacluster:/sbin/nologin
设置密码
[root@kvm01 ~]# passwd hacluster
-
两台 kvm 机器密码要一致
启动服务并设置开机自启
[root@kvm01 ~]# systemctl start pcsd
[root@kvm01 ~]# systemctl enable pcsd
Created symlink from /etc/systemd/system/multi-user.target.wants/pcsd.service to
/usr/lib/systemd/system/pcsd.service.
取消会话同步
认证组成群集的节点(只在kvm01上操作)
[root@kvm01 ~]# pcs cluster auth kvm01 kvm02 -u hacluster -p aptech
kvm01: Authorized
kvm02: Authorized
自动生成配置文件(只在kvm01上操作)
[root@kvm01 ~]# pcs cluster setup --name cluster-kvm kvm01 kvm02
启动群集(只在kvm01上操作)
[root@kvm01 ~]# pcs cluster start --all
kvm01: Starting Cluster (corosync)...
kvm02: Starting Cluster (corosync)...
kvm0l: Starting Cluster (pacemaker)...
kvm@2: Starting Cluster (pacemaker)...
设置开机自启
[root@kvm01 ~]# pcs cluster enable --all
kvm01: Cluster Enabled
kvm02: Cluster Enabled
-
enable:将群集设置为开机自启
201和202查看pcs群集状态
[root@kvm01 ~]# pcs status2 nodes configured
0 resource instances configuredOnline: [ kvm01 kvm02 ]No resource
[root@kvm02 ~]# pcs status2 nodes configured
0 resource instances configuredOnline: [ kvm01 kvm02 ]No resource
关闭其中一个节点
[root@kvm01 ~]# pcs cluster stop kvm01
kvm01: Stopping Cluster (pacemaker)...
kvm01: Stopping Cluster (corosync)...
在另一个节点查看状态
[root@kvm02 ~]# pcs statusOnline: [ kvm02 ]
OFFLINE: [ kvm01 ]
启动服务
[root@kvm01 ~]# pcs cluster start kvm01
kvm01: Starting Cluster (pacemaker)...
kvm01: Starting Cluster (corosync)...
查看状态
[root@kvm02 ~]# pcs status2 nodes configured
0 resource instances configuredOnline: [ kvm01 kvm02 ]No resource
开启会话同步
关闭隔离设备的功能(每个设备都执行)
[root@kvm01 ~]# pcs property set stonith-enabled=false
取消会话同步
向群集中添加资源
[root@kvm01 ~]# pcs resource create test01 VirtualDomain hypervisor="qemu:///system" config="/kvmdata/config/test01.xml" migration_transport=ssh meta allow-migrate="true"Assumed agent name 'ocf:heartbeat:VirtualDomain'(deduced from 'VirtualDomain')
-
meta allow-migrate="true" :允许迁移模式
查看群集状态
[root@kvm01 ~]# pcs status
Cluster name: cluster-kvmWARNINGS:
No stonith devices and stonith-enabled is not falseStack: corosync
Current DC: kvm02 (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum
Last updated: Wed Aug 31 19:55:48 2022
Last change: Wed Aug 31 19:55:43 2022 by root via cibadmin on kvm012 nodes configured
1 resource instance configuredOnline: [ kvm01 kvm02 ]Full list of resources:test01 (ocf::heartbeat:VirtualDomain): Started kvm01Daemon Status:corosync: active/enabledpacemaker: active/enabledpcsd: active/enabled
KVM 群集验证
kvm01 的状态
[root@kvm01 ~]# virsh list --allId 名称 状态
----------------------------------------------------6 test01 running
查看资源限制
[root@kvm01 ~]# pcs constraint
//查询限制情况,如下显示结果为无限制
Location Constraints:
Ordering Constraints:
Colocation Constraints:
Ticket Constraints:
清除某个 pcs 资源只能在某个主机上运行的限制
[root@kvm01 ~]# pcs resource clear test01
手动迁移
[root@kvm01 ~]# pcs resource move test01
Warning: Creating location constraint cli-ban-test01-on-kvm@l with a score of -INFINITY for resource test@l on node kvm01.
This will prevent test0l from running on kvm0l until the constraint is removed.his will be the case even if kvm0l is the last node in the cluster.
-
会自动选择其他节点进行迁移
201上查看状态
[root@kvm01 ~]# pcs status
Cluster name: cluster-kvm
Stack: corosync
Current DC: kvm01 (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum
Last updated: Wed Aug 31 21:54:15 2022
Last change: Wed Aug 31 21:52:31 2022 by root via crm_resource on kvm012 nodes configured
1 resource instance configuredOnline: [ kvm01 kvm02 ]Full list of resources:test01 (ocf::heartbeat:VirtualDomain): Started kvm02Daemon Status:corosync: active/enabledpacemaker: active/enabledpcsd: active/enabled
[root@kvm01 ~]# virsh list --allId 名称 状态
----------------------------------------------------- test01 关闭
202上查看状态
[root@kvm02 ~]# virsh list --allId 名称 状态
----------------------------------------------------2 test01 running
-
迁移后,test01运行在kvm02上
查看是否有限制
[root@kvm02 ~]# pcs constraint
Location Constraints:Resource: test0lDisabled on: kvm01(score:-INFINITY)(role: Started)
Ordering Constraints:
Colocation Constraints:
Ticket Constraints:
- Resource: test01:被限制了
202上清除 test01 限制
[root@kvm02 ~]# pcs resource clear test01
202查看限制情况
[root@kvm02 ~]# pcs constraint
//查询限制情况,如下显示结果为无限制
Location Constraints:
Ordering Constraints:
Colocation Constraints:
Ticket Constraints:
201查看限制情况
[root@kvm01 ~]# pcs constraint
//查询限制情况,如下显示结果为无限制
Location Constraints:
Ordering Constraints:
Colocation Constraints:
Ticket Constraints:
202虚拟机挂起模拟故障
201上查看状态
[root@kvm01 ~]# pcs status2 nodes configured
1 resource instance configuredOnline: [ kvm@l ]
OFFLINE: [ kvm02 ]Full list of resources:test01 (ocf::heartbeat:VirtualDomain): Started kvm01
查看状态
[root@kvm01 ~]# virsh list --all
Id 名称 状态
--------------------------------------
5 test01 running
小阿轩yx-KVM+GFS 分布式存储系统构建 KVM 高可用
相关文章:

小阿轩yx-KVM+GFS 分布式存储系统构建 KVM 高可用
小阿轩yx-KVMGFS 分布式存储系统构建 KVM 高可用 案例分析 案例概述 使用 KVM 及 GlusterFS 技术,结合起来实现 KVM 高可用利用 GlusterFS 分布式复制卷对 KVM 虚拟机文件进行分布存储和冗余 分布式复制卷 主要用于需要冗余的情况下把一个文件存放在两个或两个…...
centos安装mysql 5.7版本
因为要继续第二阶段的学习,windows里面的mysql版本,很多设置没有。因此弄了一个虚拟机,安装了centos,在里面安装mysql。 看了《centos安装mysql 5.7版本》里面有设置my.cnf文件,这个在虚拟机里面编辑,手动敲…...
SQL——查询sql执行顺序
在SQL查询中,虽然我们在编写查询时遵循一定的逻辑顺序(SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY),但实际上,数据库在执行这些查询时遵循的是不同的物理执行顺序。这个物理执行顺序是数据库管理系统࿰…...

钉耙编程(3)
1001深度自同构 Problem Description 对于无向图中的点,定义一个点的度为与其相连的边的条数。 对于一棵有根树,定义一个点的深度为该点到根的距离。 对于由若干有根树构成的森林,定义该森林是深度自同构的,当且仅当森林中任意…...
python 线程池处理文件
使用多线程来加速文件复制的过程,可以使用Python的concurrent.futures模块中的ThreadPoolExecutor。代码如下: import glob import os import shutil from concurrent.futures import ThreadPoolExecutordef copy_image(image):imagepath image.replace…...

AI技术和大模型对人才市场的影响
012024 AI技术和大模型 2024年AI技术和大模型呈现出多元化和深入融合的趋势,以下是一些关键的技术方向和特点: 1. 生成式AI 生成式AI(Generative AI)在2024年继续快速发展,它能够创造全新的内容,而不仅仅…...
解释“location”和“position”
Explanation of “Location” and “Position” Location and position are terms often used interchangeably in everyday language, but they can have distinct meanings depending on the context. Below, we explore their definitions, differences, and examples of u…...

Netty 必知必会(三)—— ByteBuf
Netty ByteBuf工作原理,和NIO里ByteBuffer区别? Java NIO 提供了ByteBuffer 作为它 的字节容器,但是这个类使⽤起来过于复杂,⽽且也有些繁琐。 ByteBuf是Netty框架中的一个关键类,专门设计来处理字节数据,…...

芋道以开源之名行下作之事 恬不知耻 标榜自己开源 公开源码+sql 不用再加入知识星球
资源 链接: https://pan.baidu.com/s/1TeuxbAUfLQ5_BqMBF1kniQ?pwdcqud 提 取码: cqud 依次为后端、补充版的sql、前端 此文档内安装部署等一应俱全...
wordpress中,wp_posts 文章的状态 有哪些,分别对应什么数值
在WordPress中,wp_posts 表存储了网站上的所有内容,包括文章(posts)、页面(pages)、自定义文章类型(custom post types)等。这个表有一个名为 post_status 的字段,用于标…...

输入成绩问题(c语言)
1.问题:期中考试开始了,大家想要取得好成绩,争夺前五名,从键盘输入n个学生成绩(不超过40个),输出每组的前五名的成绩 两行,第一行输入一个整数,表示n个学生(…...

基于域名+基于ip+基于端口的虚拟主机+上线商务系统
一、回顾 1.jdk环境 tomcat服务器需要jdk环境 版本对应 tomcat9>jdk1.8 配置系统变量JAVA_HOME sed -i $aexport JAVA_HOME/usr/local/jdk22/ /etc/profile sed -i $aexport PATH$JAVA_HOME/bin:$PATH /etc/profile source /etc/profile java -version java…...
vue每次路由跳转前将页面滚动到顶部
在Vue.js应用中,特别是使用Vue Router进行页面路由管理时,router.beforeEach是一个非常有用的导航守卫(Navigation Guard)。它允许你在路由跳转之前执行一些逻辑,比如权限验证、页面跳转前的数据加载、滚动位置重置等。…...

【Qt】QDateTimeEdit
在Qt中,QDateEdit是用于选择日期的微调框,QTimeEdit是用于选择小时和分钟的微调框 QDateTimeEdit则是基于QDateEdit和QTimeEdit的组合控件,能够同时显示日期和时间,并允许用户以交互方式编辑日期 常用属性 属性说明dateTime时间…...

Redis和Mysql如何保持数据一致性
一般情况下,Redis是用来实现应用和数据库之间读操作得缓存层,主要目的是减少数据库IO,还可以提升数据的IO性能。 当应用程序需要去读取某个数据时,会首先尝试去Redis里面加载,如果命中就直接返回,如果没有…...
Java中Optional相关
Java中Optional相关 orElse 提供默认值以确保不会返回 null。 适用于默认情况下的备选值或简单计算结果。 // 如果 optionalName 为空,返回 "Unknown" Optional<String> optionalName Optional.empty(); String result optionalName.orElse(&q…...
AI在HR候选人关系管理中的革新应用
一、引言 随着人工智能(AI)技术的快速发展,其在人力资源管理(HR)领域的应用也日益广泛。特别是在候选人关系管理方面,AI技术不仅提高了管理效率,还使得候选人体验得到了极大的改善。本文将深入分…...
HTML+CSS+JavaScript制作七夕表白网页(含音乐+自定义文字+烟花特效)
利用HTMLCSSJavaScript制作了一个简单的七夕表白网页: 这是一个简单的表白功能,可以用于小哥哥小姐姐在情人节向心爱的人表白使用点击信封中间的爱心,会出现一封信由信封向外展开,与此同时会有烟花绽放,并且自动播放背…...

【Python机器学习系列】一文教你实现决策树模型可视化(案例+源码)
这是我的第335篇原创文章。 一、引言 决策树是一个有监督分类模型,本质是选择一个最大信息增益的特征值进行输的分割,直到达到结束条件或叶子节点纯度达到阈值。根据分割指标和分割方法,可分为:ID3、C4.5、CART算法。每一种颜色代…...

如何在Python中使用网页抓取API获得Google搜索结果
SERP是搜索引擎结果页的缩写,它是你在百度、谷歌、Bing等搜索引擎中提交查询后所得到的页面。搜索引擎需要给所有页面做排序,把最能解决我们需求的页面展示给我们,企业会非常关注结果页的排序,也就是本企业内容的自然排名情况。手…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...