高可用集群(HAC)
1、高可用集群+keepalive说明
高可用定义:
- 目的:尽可能的提高服务的可用性
- 99%、99.9%、99.99%、99.999%
- 实现原理:心跳检测
- 服务:
- 有状态:
- MySQL
- 无状态:
- apache
- LVS
- 有状态:
Keepalive原理
- 案例环境专为 LVS和HA计一健康查工具
- 支持故障自动切换(Failover)
- 支持节点健康状态检查(Health Checking)
- 官方网站:http://www.keepalived.org/
Keepalive的热备方式
- VRRP(Virtual Router Redundancy Protocol:虚拟路由冗余协议)
- 一主+多备:共用同一个IP地址,但是优先级不同
同一个网段才会进行IP的争夺;
- 一个组里面各台主机会进行IP地址的漂移
2、LVS-DR+keepalive实验
首先搭建一个LVS-DR模式的均衡负载集群
规划:
- LVS-负载调度器:
- 192.168.75.10–LVS-master
- LVS负载调度器都配置LVS-DR模式
- 关闭广播功能;重定向功能
- 关闭网卡守护进程NetworManager
- 添加一个子网卡:eth0:0
- 192.168.75.100(地址漂移使用的)
- 然后拉起来ifup,ifdown eth0:0
- 添加一个集群
- 然后直接添加子节点
- 安装keepalive
- 安装gcc环境
- 准备keepalive源码包–>源码编译安装
- 安装完成后修改配置文件:并不是所有的都要使用,
- LVS负载调度器都配置LVS-DR模式
- 192.168.75.11–LVS-slave
- 关闭网卡守护进程NetworManager
- 配置好集群IP–eth0:0–>这里也是配置100;
- 问题是:同一个局域网里面两个100的ip是不行的
- 因此注释掉本机的一个文件/etc/sysconfig/networ-scripts/ifup-eth–>大概是注释257行
- 192.168.75.10–LVS-master
- 后端服务器:
- 192.168.75.12/13
- 安装httpd服务–>开启并且永久开启
- 编写一个网站
- 然后自己测试一下;
- 添加一个100的接口–>lo:0
- 子网掩码是4个255
- 然后修改一下内核参数
- sysctl -p
- 添加路由记录
- 客户端:
- 网页访问
- 尝试关闭LVS-master
- 然后关闭httpd第一台
- 网页访问
LVS-master负载调度器配置如下
- 先搭建一个LVS-DR
#关闭网卡守护进程-->关闭NetworkManager
[root@node0 ~]# service NetworkManager stop
[root@node0 ~]# chkconfig NetworkManager off#创建一个eth0:0用来充当集群入口接口
[root@node0 ~]# cd /etc/sysconfig/network-scripts/
[root@node0 network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0#修改配置文件-->添加一个ip-->100
[root@node0 network-scripts]# vim ifcfg-eth0:0
DEVICE=eth0:0 #这里需要修改网卡名
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.75.100 #然后修改IP-->一个虚拟的IP
NETMASK=255.255.255.0#然后关闭网卡的重定向功能
[root@node0 ~]# vim /etc/sysctl.conf #在末行添加如下内容
#关闭网卡重定向功能
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0#然后刷新配置
[root@node0 ~]# sysctl -p#到这里可以拉起eth0:0的网卡
[root@node0 ~]# ifup eth0:0#在验证一眼是否拉起来了
[root@node0 ~]# ifconfig eth0:0#加载一下ip_vs模块
[root@node0 ~]# modprobe ip_vs#安装一下lvsadm
[root@node0 ~]# yum -y install ipvsadm#添加一下集群-->12/13是后端服务器
-->-A是添加一个集群
-->-t是指定一个虚拟ip以及端口
-->-s:指定轮询模式为rr
[root@node0 ~]# ipvsadm -A -t 192.168.75.100:80 -s rr#添加集群子节点-->添加的机器是12/13
-->-a:添加子节点
-->-r:指定子节点的真实ip以及端口
-->-g:指定了是DR模式
[root@node0 ~]# ipvsadm -a -t 192.168.75.100:80 -r 192.168.75.12:80 -g
[root@node0 ~]# ipvsadm -a -t 192.168.75.100:80 -r 192.168.75.13:80 -g#最后查看一下集群信息
[root@node0 ~]# ipvsadm -Ln
[root@node0 ~]# ipvsadm -Ln --stats#把这个集群写入配置文件
[root@node0 ~]# service ipvsadm save
配置两台后端服务器
- 安装httpd
- 以及编写各自的发布页面
- 修改内核参数
- 关闭ARP功能
- 给与一个虚拟IP;
- 并且指定一下路由
#两台后端的服务器都是一样的配置,唯一不一样的就是发布的页面不同#关闭一下NetworkManager
[root@node2 ~]# service NetworkManager stop
[root@node2 ~]# chkconfig NetworkManager off#准备一个回环口-->lo:0
[root@node2 ~]# cd /etc/sysconfig/network-scripts/
[root@node2 network-scripts]# cp -a ifcfg-lo ifcfg-lo:0#然后配置一个虚拟ip
[root@node2 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.75.100
NETMASK=255.255.255.255
........
#调整内核参数-->关闭ARP功能
[root@node2 ~]# vim /etc/sysctl.conf
.........
#关闭ARP功能
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2_
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 3
#重新拉取一下配置
[root@node2 ~]# sysctl -p#到这里为止-->可以拉起来lo:0的网卡了
[root@node2 ~]# ifup lo:0#添加一个路由-->#如果有人来访问这个ip就把它丢给lo:0网卡
[root@node2 ~]# route add -host 192.168.75.100 dev lo:0#然后配置开机自启
[root@node2 ~]# echo "route add -host 192.168.75.100 dev lo:0" >> /etc/rc.local #安装apache
[root@node2 ~]# yum -y install httpd#修改发布页面
[root@node2 ~]# vim /var/www/html/index.html
aaaaaaaaaaaaaaaaaaaaaaaa#启动服务-->并且设置开机自启
[root@node2 ~]# service httpd start
[root@node2 ~]# chkconfig httpd on#自己测试一下
[root@node2 ~]# curl localhost
aaaaaaaaaaaaaaaaaaaaaaaa
然后简单地从浏览器上面验证一下LVS-DR
http://192.168.75.100/
- 看到了aaaa和bbb轮询就代表LVS-DR搭建完成
接下来回到LVS-master服务器上面操作
- 就是node0–>ip:10的服务器上面操作
- 安装keepalive
- 并且配置
#首先安装一下必要的依赖
[root@node0 ~]# yum -y install kernel-devel openssl-devel gcc*#准备好keepalive的源码包
[root@node0 ~]# ls keepalived-1.2.13.tar.gz
keepalived-1.2.13.tar.gz#解压源码包
[root@node0 ~]# tar -xf keepalived-1.2.13.tar.gz
[root@node0 ~]# ls#预编译、编译、安装
[root@node0 ~]# cd keepalived-1.2.13
[root@node0 keepalived-1.2.13]# ./configure --prefix=/usr/local/keepalive/ --with-kernel-dir=/usr/src/kernels/2.6.32-358.el6.x86_64/ && make && make install#修改配置文件-->调整好参数#操作前切勿忘记备份
[root@node0 ~]# cp -a /usr/local/keepalive/etc/keepalived/keepalived.conf{,.bak}
[root@node0 ~]# vim /usr/local/keepalive/etc/keepalived/keepalived.conf#配置文件里面有些是不需要的,需要删除;有些是需要添加的,以下是配置文件的解析;#全局配置只留下一个主机名
global_defs {router_id server1 #命名主机名
}#定义一个示例-->这里可以选择默认
vrrp_instance VI_1 {state MASTER #设置服务类型主/从(MASTER/SLAVE)interface eth0 #指定那块网卡用来监听virtual_router_id 51 #设组号, 如果是一组就是相同的ID 号,一个主里面只能有一个主服务器和多个从服务器priority 100 #服务器优先级, 主服务器优先级高advert_int 1 #心跳时间, 检测对方存活authentication { #存活验证密码auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.75.100 #定义一个集群的地址}
virtual_server 192.168.75.100 80 { #设置集群地址 以及端口号delay_loop 6 #健康检查间隔lb_algo rr #使用轮询调度算法lb_kind DR #DR模式的群集protocol TCP #使用的协议real_server 192.168.75.12 80 { #管理的网站节点以及使用端口weight 1 #权重,优先级 在原文件基础上删除修改TCP_CHECK { #状态检查方式connet_port 80 #检查的目标端口connet_timeout 3 #连接超时《秒)nb_get_retry 3 #重试次数delay_before_retry 4 #重试间隔《秒)}}real_server 192.168.75.13 80 { #管理的第二个网站节点以及使用端口weight 1 #权重, 优先级 在原文件基础上删除修改TCP_CHECK { #状态检查方式connet_port 80 #检查的目标端口connet_timeout 3 #连接超时《秒)nb_get_retry 3 #重试次数delay_before_retry 4 #重试间隔《秒)}}
}
#然后把多余的配置文件内容都删除-->然后保存退出#然后启动keepalive
[root@node0 ~]# /usr/local/keepalive/sbin/keepalived
[root@node0 ~]# ps -ef | grep keep
.........#看到了keepalive就证明启动成功了;
接下来就配置LVS-slave服务器
-
IP:192.168.75.11
-
安装keepalive服务–>并且配置好
-
一样要配置ipvsadm
#关闭NetworkManager
[root@node1 ~]# service NetworkManager stop
[root@node1 ~]# chkconfig NetworkManager off#安装一下keepalive的依赖
[root@node1 ~]# yum -y install kernel-devel openssl-devel popt-devel gcc*
.........#准备好源码包
[root@node1 ~]# ls keepalived-1.2.13.tar.gz
keepalived-1.2.13.tar.gz#预编译、编译、安装keepalive
[root@node1 ~]# tar -xf keepalived-1.2.13.tar.gz
[root@node1 ~]# cd keepalived-1.2.13
[root@node1 keepalived-1.2.13]# ./configure --prefix=/usr/local/keepalive/ --with-kernel-dir=/usr/src/kernels/2.6.32-358.el6.x86_64/ && make && make install#准备好配置文件-->之前master做的配置可以给到slave使用#做好备份-->养成良好习惯
[root@node1 ~]# cp -a /usr/local/keepalive/etc/keepalived/keepalived.conf{,.bak}#这一条命令在LVS-master上面执行-->简单理解就是传个已经修改过的文件给到slave
[root@node0 ~]# scp /usr/local/keepalive/etc/keepalived/keepalived.conf root@192.168.75.11:/usr/local/keepalive/etc/keepalived/#修改配置文件
[root@node1 ~]# vim /usr/local/keepalive/etc/keepalived/keepalived.conf#因为之前在master上面已经修改过-->因此只需要修改几个地方就ok
..........8 state SLAVE #改为从服务器11 priority 50 #优先级改为50-->就可以保存退出了#配置虚拟网卡
[root@node1 network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0[root@node1 network-scripts]# vim ifcfg-eth0:0
DEVICE=eth0:0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.75.100
NETMASK=255.255.255.0#这里注意不要急着启动网卡-->因为相同网段会产生IP冲突#因此要注释掉配置文件的内容-->大概在243行左右-->把这个注释掉就不会报错
[root@node1 network-scripts]# vim ifup-eth
.......
243 # if ! /sbin/arping -q -c 2 -w 3 -D -I ${REALDEVICE} ${ipaddr[$idx]} ; then
244 # net_log $"Error, some other host already uses address ${ipaddr[$idx]}."
245 # exit 1
246 # fi#然后修改一下内核参数# 修改内核参数。 防止相同网络地址广播冲突,如果有多快网卡需要设置多行
[root@node1 ~]# vim /etc/sysctl.conf #在末行添加一下几行
#关闭网卡重定向功能
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0#刷新内核参数
root@node1 ~]# sysctl -p#到这里就可以启动网卡eth0:0网卡了
[root@node1 ~]# ifup eth0:0
[root@node1 ~]# ifconfig eth0:0#然后配置ipvsadm
[root@node1 ~]# yum -y install ipvsadm#查看一下是否加载IP_VS
[root@node1 ~]# modprobe ip_vs#查看一下版本
[root@node1 ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn#添加集群以及集群节点
[root@node1 ~]# ipvsadm -A -t 192.168.75.100:80 -s rr
[root@node1 ~]# ipvsadm -a -t 192.168.75.100:80 -r 192.168.75.12 -g
[root@node1 ~]# ipvsadm -a -t 192.168.75.100:80 -r 192.168.75.13 -g#启动ipvs并且顺势启动keepalive
[root@node1 ~]# service ipvsadm start
[root@node1 ~]# /usr/local/keepalive/sbin/keepalived
浏览器继续验证
- 现在是LVS的主从都已经启动了;
- 浏览器访问:http://192.168.75.100/—>正常
然后现在关闭LVS-master–>直接让他断网
- 验证一下LVS-slave是否能够接盘
- 浏览器访问:http://192.168.75.100/—>正常
#去到LVS-slave查看流量
[root@node1 ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes-> RemoteAddress:Port
TCP 192.168.75.100:80 37 185 0 25524 0-> 192.168.75.12:80 18 90 0 12391 0-> 192.168.75.13:80 19 95 0 13133 0
然后再关闭一台后端服务器
- 浏览器访问:http://192.168.75.100/—>发现少了aaaa的那台主机
相关文章:
高可用集群(HAC)
1、高可用集群keepalive说明 高可用定义: 目的:尽可能的提高服务的可用性 99%、99.9%、99.99%、99.999% 实现原理:心跳检测服务: 有状态: MySQL 无状态: apacheLVS Keepalive原理 案例环境专为 LVS和…...
python基于django微信小程序的适老化老人健康预警小程序
随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代, 适老化老人健康预警微信小程序就是信息时代变革中的产物之一。 任何系统都要遵…...
基于微信小程序图书馆管理系统
开发工具:IDEA、微信小程序服务器:Tomcat9.0, jdk1.8项目构建:maven数据库:mysql5.7前端技术:vue、uniapp服务端技术:springbootmybatis-plus本系统分微信小程序和管理后台两部分,项…...
将镭神C32激光雷达的PointXYZ数据转化为PointXYZIR格式 - 附代码
之前遇到过“镭神32线激光雷达ROS下运行fromRosMsg()报错 Failed to find match for field “intensity“ 问题”, 当时确定了是镭神C32雷达缺少相应字段,并记录博客【学习记录】镭神32线激光雷达ROS下运行fromRosMsg()报错 Failed to find match for fi…...
高级前端一面面试题集锦
详细说明 Event loop 众所周知 JS 是门非阻塞单线程语言,因为在最初 JS 就是为了和浏览器交互而诞生的。如果 JS 是门多线程的语言话,我们在多个线程中处理 DOM 就可能会发生问题(一个线程中新加节点,另一个线程中删除节点&#…...
Java基础 -- List集合
Java基础 -- List集合1. Introduction1.1 好处1.2 常用泛型2. 交集,差集等2.1 自身的方法2.2 1.8jdk stream 新特性2.3 Apache的CollectionUtils工具类(推荐)3. 限定泛型范围4. Awakening1. Introduction 1.1 好处 代码复用,多种…...
【Linux】网络编程 - Socket套接字/基于UDP的网络通信
目录 一.套接字 1.什么是套接字/Socket套接字 2.套接字的分类 3.Socket套接字的常见API 二.网络字节序 1.什么是网络字节序 2.网络字节序和主机字节序的转换接口 三.IP地址形式上的转换 四.客户端的套接字不由程序员bind 1.为什么客户端套接字不能由程序员bind 2.OS…...
流程引擎之Camunda简介
背景Camunda 是支持 BPMN(工作流和流程自动化)、CMMN(案例管理) 和 DMN(业务决策管理) java 框架。Camunda 基于Activiti5 保留了 PVM,其开发团队也是从 activiti 中分裂出来的。Camunda 来自拉…...
Mybatis笔记整理
1. 相关文档地址 中文文档 https://mybatis.org/mybatis-3/zh/index.htmlMybatis可以配置成适应多种环境,不过每个SqlSessionFactory实例只能选择一种环境。Mybatis默认事务管理器是JDBC,连接池:POOLEDMaven仓库:下载地址<dependency>…...
【react全家桶】面向组件编程
文章目录02 【面向组件编程】1.组件的使用1.1 函数式组件1.2 类式组件1.3 组合组件1.4 提取组件组件实例的三大属性 state props refs2.state2.1 基本使用2.2 setState()2.3 简化版本2.4 State 的更新可能是异步的2.5 异步更新解决方案2.6 数据是向下流动的3.props3.1 基本使用…...
Django框架之模型视图-使用 PostMan 对请求进行测试
使用 PostMan 对请求进行测试 PostMan 是一款功能强大的网页调试与发送网页 HTTP 请求的 Chrome 插件,可以直接去对我们写出来的路由和视图函数进行调试,作为后端程序员是必须要知道的一个工具。 安装方式1:去 Chrome 商店直接搜索 PostMan…...
(考研湖科大教书匠计算机网络)第五章传输层-第四节:TCP流量控制
获取pdf:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:流量控制概述二:流量控制举例三:拓展阅读(可不看)(1)TCP流量控制完整例子&a…...
使用Docker-Compose搭建Redis集群
1. 集群配置3主3从由于仅用于测试,故我这里只用1台服务器进行模拟redis列表2.编写redis.conf在server上创建一个目录用于存放redis集群部署文件。这里我放的路径为/root/redis-cluster 在/opt/docker/redis-cluster目录下创建redis-1,redis-2,redis-3,redis-4,redis…...
华为OD机试 -计算网络信号(Js)
计算网络信号 题目 网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值。 注意:网络信号可以绕过阻隔物 array[m][n] 的二维数组代表网格地图,array[i][j] = 0代表 i 行 j 列是空旷位置;array[i][j] = x(x 为正整数)代表 i 行 …...
【数据结构】————栈
文章目录前言栈是什么,栈的特点实现栈的基本操作栈的相关操作声明1.创建栈2.对栈进行初始化3.销毁栈4.判断栈是否为空5.压栈操作6.删除栈顶元素7.取出栈顶元素8.计算栈内存放多少个数据总结前言 本文主要讲述特殊的线性表——栈: 栈是什么,栈…...
从零编写linux0.11 - 第十一章 可执行文件
从零编写linux0.11 - 第十一章 可执行文件 编程环境:Ubuntu 20.04、gcc-9.4.0 代码仓库:https://gitee.com/AprilSloan/linux0.11-project linux0.11源码下载(不能直接编译,需进行修改) 本章目标 本章会加载并运行…...
Win10上通过nginx代理配置远程非445端口SMB
引言 家里架了一个SMB文件服务器,想要远程访问,开了445端口,但仅限某些特殊网络可以远程访问,其他网络全部拒绝445端口,因此网上找了很多将Win10的SMB指向别的端口的教程,但所有教程均使用环回网卡解决&am…...
Allegro如何快速清除多余的规则设置操作指导
Allegro如何快速清除多余的规则设置操作指导 在用Allegro做PCB设计的时候,会给PCB设置一些规则,在PCB设计完成之后,可能会有一些没有使用到的规则,如下图 Physical规则中的45OHM的规则是多余的 单独某个规则可以直接在规则管理器中删除,如果比较多可以用下面方法批量删除…...
ROS2 入门应用 引用自定义消息(Python)
ROS2 入门应用 引用自定义消息(Python)1. 查看自定义消息2. 修改话题发布3. 修改话题订阅4. 修改依赖关系5. 编译和运行1. 查看自定义消息 引用在《ROS2 入门应用 创建自定义接口》中自定义的消息Sphere.msg ros2 interface show tutorial_interfaces/…...
SmS-Activate一款好用的短信验证码接收工具
前言 有些国外应用在使用应用上的功能时需要注册账号,由于某种不可抗因素,我们的手机号一般不支持注册,接收不到信息验证码,于是我们可以使用SmS-Activate提供的服务,使用$实现我们的需求(大概一次验证1-5…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
