keepalived详细讲解

news2024/9/19 18:25:46

keepalived:

Keepalived是一个基于VRRP(‌Virtual Router Redundancy Protocol,‌虚拟路由冗余协议)‌协议实现的LVS(‌Linux Virtual Server)‌服务高可用方案。‌它的主要作用是进行虚拟路由的故障切换,‌确保服务的持续可用性。‌Keepalived通过监控LVS集群系统中各个服务节点的状态,‌实现高可用性。‌它不仅可以管理LVS软件,‌还可以作为其他服务(‌如Nginx、‌Haproxy、‌MySQL等)‌的高可用解决方案软件。‌Keepalived为Linux系统和基于Linux的架构提供了负载均衡和高可用能力,‌其负载均衡功能主要源自集成在Linux内核中的LVS项目模块IPVS(‌IP Virtual Server)‌。‌此外,‌Keepalived还实现了基于多层TCP/IP协议的健康检查机制,‌包括4层TCP/IP协议负载均衡和多层TCP/IP协议的健康检查机制。‌Keepalived的作用是为LVS集群节点提供健康检查和为LVS负载均衡服务器提供故障切换的用户空间进程。‌

Keepalived采用模块化设计,‌主要包含core、‌check和vrrp三个模块,‌分别负责不同的功能。‌它支持两台服务器运行,‌一台作为主机服务器(‌MASTER)‌,‌另一台作为备份服务器(‌BACKUP)‌,‌共同对外表现为一个虚拟IP。‌当主机服务器出现问题时,‌备份服务器能够接管虚拟IP,‌继续提供服务,‌从而保证了高可用性。

1.keepalived的优点

Keepalived的特点包括自动完成不需人工干涉、‌开源、‌参与故障转移群集节点不受限制、‌避免单节点故障、‌可靠性强。‌

  • 自动完成不需人工干涉:‌Keepalived是一个类似于layer3, 4 & 5交换机制的软件,‌能够自动检测服务器的状态并进行相应的操作,‌无需人工干预。‌
  • 开源:‌Keepalived是一个开源软件,‌这意味着它可以被广泛使用和修改,‌以满足不同的需求。‌
  • 参与故障转移群集节点不受限制:‌Keepalived支持在群集节点中进行故障转移,‌且群集节点的数量不受限制。‌
  • 避免单节点故障:‌通过健康状态检查和发现活跃设备故障进行转换到备份设备,‌Keepalived能够避免单节点故障。‌
  • 可靠性强:‌Keepalived的可靠性强,‌因为它通过VRRP协议实现主备模式,‌当主设备故障时,‌备份设备可以迅速接管服务,‌确保服务的持续可用性。‌

此外,‌Keepalived是基于VRRP协议的,‌所有报文通过IP多播方式发送,‌只有主路由器(‌Master角色)‌会发送VRRP数据包,‌而备份路由器(‌BACKUP角色)‌只接收主路由器的报文信息,‌用于监控主路由器的运行状态。‌当主路由器不可用时,‌备份路由器会进行选举,‌优先级最高的备份路由器将成为新的主路由器,‌继续提供对外服务。‌这种选举角色切换非常快,‌保证了服务的持续可用性。

2.高可用集群

1.1 集群类型

LB Load Balance 负载均衡
LVS/HAProxy/nginx http/upstream, stream/upstream
HA High Availability 高可用集群
数据库、 Redis
SPoF: Single Point of Failure ,解决单点故障
HPC High Performance Computing 高性能集群

1.2 系统可用性

SLA Service-Level Agreement 服务等级协议(提供服务的企业与客户之间就服务的品质、水准、性能
等方面所达成的双方共同认可的协议或契约)
A = MTBF / (MTBF+MTTR
指标 : 99.9%, 99.99%, 99.999%,99.9999%

1.3 系统故障

硬件故障:设计缺陷、 wear out (损耗)、非人为不可抗拒因素
软件故障:设计缺陷 bug

1.4 实现高可用

提升系统高用性的解决方案:降低 MTTR- Mean Time To Repair( 平均故障时间 )
解决方案:建立冗余机制
active/passive /
active/active 双主
active --> HEARTBEAT --> passive
active <--> HEARTBEAT <--> active

1.5.VRRPVirtual Router Redundancy Protocol

虚拟路由冗余协议 , 解决静态网关单点风险
物理层 : 路由器、三层交换机
软件层 :keepalived

3.keepalived环境部署

3.1

 Keepalived 相关文件

      软件包名:keepalived

       主程序文件:/usr/sbin/keepalived

          主配置文件:/etc/keepalived/keepalived.conf

            配置文件示例:/usr/share/doc/keepalived/

              Unit File:/lib/systemd/system/keepalived.service

安装keepalived(rhel7.9):yum install keepalived -y

注意:每台服务器均需要关闭防火墙和SELINUX

3.2 配置文件组成部分

配置文件: /etc/keepalived/keepalived.conf
配置文件组成
GLOBAL CONFIGURATION
Global definitions : 定义邮件配置, route_id vrrp 配置,多播地址等
VRRP CONFIGURATION
VRRP instance(s) :定义每个vrrp 虚拟路由器
LVS CONFIGURATION
Virtual server group(s)
Virtual server(s) : LVS集群的 VS RS

3.3全局配置

3.31配置虚拟路由

KA1:

KA2:

测试
[root@KA2 ~]# tcpdump -i eth0 -nn host 224.0.0.18
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
22:48:23.294894 IP 172.25.250.10 > 224.0.0.18: VRRPv2, Advertisement, vrid 20,prio 100, authtype none, intvl 1s, length 20
22:48:24.084793 IP 172.25.250.20 > 224.0.0.18: VRRPv2, Advertisement, vrid 30,prio 80, authtype none, intvl 1s, length 20
22:48:24.295075 IP 172.25.250.10 > 224.0.0.18: VRRPv2, Advertisement, vrid 20,prio 100, authtype none, intvl 1s, length 20
22:48:25.085256 IP 172.25.250.20 > 224.0.0.18: VRRPv2, Advertisement, vrid 30,prio 80, authtype none, intvl 1s, length 20
22:48:25.296296 IP 172.25.250.10 > 224.0.0.18: VRRPv2, Advertisement, vrid 20,prio 100, authtype none, intvl 1s, length 20
22:48:26.085843 IP 172.25.250.20 > 224.0.0.18: VRRPv2, Advertisement, vrid 30,prio 80, authtype none, intvl 1s, length 20
关闭KA1后再看组播信息

3.4Keepalived日志功能

[root@ka1 ~]# cat /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -S 6"
 
[root@ka1 ~]#cat /etc/rsyslog.conf
local6.* /var/log/keepalived.log
 
[root@ka1 ~]#systemctl restart keepalived.service rsyslog.service #重启服务生效\

4.企业应用实例

4.1 实现master/slave Keepalived 单主架构

ka1:

ka2:

抓包观察

tcpdump -i ens160 -nn host 224.0.0.18

4.2 抢占模式和非抢占模式

4.2.1 非抢占模式 nopreempt
默认为抢占模式 preempt ,即当高优先级的主机恢复在线后,会抢占低先级的主机的 master 角色,
这样会使 vip KA 主机中来回漂移,造成网络抖动,
建议设置为非抢占模式 nopreempt ,即高优先级主机恢复后,并不会抢占低优先级主机的 master 角色
非抢占模块下 , 如果原主机 down , VIP 迁移至的新主机 , 后续也发生 down , 仍会将 VIP 迁移回原主机

ka1:

ka2:

4.2.2 抢占延迟模式 preempt_delay

抢占延迟模式,即优先级高的主机恢复后,不会立即抢回 VIP ,而是延迟一段时间(默认 300s )再抢回VIP

注意:需要各 keepalived 服务器 state BACKUP, 并且不要启用 vrrp_strict

4.3 VIP单播配置

默认 keepalived 主机之间利用多播相互通告消息,会造成网络拥塞,可以替换成单播,减少网络流量
注意:启用 vrrp_strict 时,不能启用单播
ka1:
ka2:
抓包查看单播效果

4.4 Keepalived 通知脚本配置

4.4.1 通知脚本类型
当前节点成为主节点时触发的脚本
notify_master <STRING>|<QUOTED-STRING>
当前节点转为备节点时触发的脚本
notify_backup <STRING>|<QUOTED-STRING>
当前节点转为失败状态时触发的脚本
notify_fault <STRING>|<QUOTED-STRING>
通用格式的通知触发机制,一个脚本可完成以上三种状态的转换时的通知
notify <STRING>|<QUOTED-STRING>
当停止VRRP时触发的脚本
notify_stop <STRING>|<QUOTED-STRING>
4.4.2 脚本的调用方法

在 vrrp_instance VI_1 语句块的末尾加下面行

创建通知脚本

QQ邮箱配置

在etc下的mail.rc文件里最低加入

安装邮件发送工具:yum install mailx -y

测试:echo test message |mail -s test 1301654293@qq.com

4.4.3 实战案例:实现 Keepalived 状态切换的通知脚本

chmod +x /etc/keepalived/mail.sh

#模拟master故障

  1. [root@ka1 ~]#killall keepalived

4.5 实现 master/master 的 Keepalived 双主架构


master/slave的单主架构,同一时间只有一个Keepalived对外提供服务,此主机繁忙,而另一台主机却很空闲,利用率低下,可以使用master/master的双主架构,解决此问题。

master/master 的双主架构:

即将两个或以上VIP分别运行在不同的keepalived服务器,以实现服务器并行提供web访问的目的,提高服务器资源利用率

ka1:

ka2:

4.6. IPVS相关配置


4.6.1. 虚拟服务器配置结构


virtual_server IP port {
        ...
    real_server {
        ...
    }
    real_server {
        ...
    }
    ...
}


4.6.2 virtual server (虚拟服务器)的定义格式


virtual_server IP port #定义虚拟主机IP地址及其端口
virtual_server fwmark int #ipvs的防火墙打标,实现基于防火墙的负载均衡集群
virtual_server group string #使用虚拟服务器组


4.6.3 虚拟服务器配置


virtual_server IP port { #VIP和PORT
    delay_loop <INT> #检查后端服务器的时间间隔
    lb_algo rr|wrr|lc|wlc|lblc|sh|dh #定义调度方法
    lb_kind NAT|DR|TUN #集群的类型,注意要大写
    persistence_timeout <INT> #持久连接时长
    protocol TCP|UDP|SCTP #指定服务协议,一般为TCP
    sorry_server <IPADDR> <PORT> #所有RS故障时,备用服务器地址
    real_server <IPADDR> <PORT> { #RS的IP和PORT
    weight <INT> #RS权重
    notify_up <STRING>|<QUOTED-STRING> #RS上线通知脚本
    notify_down <STRING>|<QUOTED-STRING> #RS下线通知脚本
    HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK { ... } #定义当前主机健康状态检测方法
    }
}
#注意:括号必须分行写,两个括号写在同一行,如: }} 会出错


4.6.4 应用层监测


应用层检测:HTTP_GET|SSL_GET

HTTP_GET|SSL_GET {
    url {
        path <URL_PATH> #定义要监控的URL
        status_code <INT> #判断上述检测机制为健康状态的响应码,一般为 200
    }
    connect_timeout <INTEGER> #客户端请求的超时时长, 相当于haproxy的timeout server
    nb_get_retry <INT> #重试次数
    delay_before_retry <INT> #重试之前的延迟时长
    connect_ip <IP ADDRESS> #向当前RS哪个IP地址发起健康状态检测请求
    connect_port <PORT> #向当前RS的哪个PORT发起健康状态检测请求
    bindto <IP ADDRESS> #向当前RS发出健康状态检测请求时使用的源地址
    bind_port <PORT> #向当前RS发出健康状态检测请求时使用的源端口
}

5. 实战案例

实战案例1:实现单主的 LVS-DR 模式

准备web服务器并使用脚本绑定VIP至web服务器lo网卡

#准备两台后端RS主机
[root@rs1 ~]# yum install httpd -y
[root@rs1 ~]# echo RS1 - 172.25.250.110 > /var/www/html/index.html
 
[root@rs1 ~]# ip addr add 172.25.250.100/32 dev lo
[root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
 
[root@rs2 ~]# yum install httpd -y
[root@rs2 ~]# echo RS2 - 172.25.250.120 > /var/www/html/index.html
 
[root@rs2 ~]# ip addr add 172.25.250.100/32 dev lo
[root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rs2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@rs2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

配置keepalived

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
@@@@ 省略内容 @@@@
virtual_server 172.25.250.100 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    protocol TCP
    sorry_server 172.25.250.10
 
    real_server 172.25.250.110 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 5
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
 
    real_server 172.25.250.120 80 {
        weight 1
        HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
}
 
 
#ka2节点的配置,配置和ka1基本相同,只需修改三行
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf
@@@@ 省略内容 @@@@
virtual_server 172.25.250.100 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    protocol TCP
    sorry_server 172.25.254.30
 
    real_server 172.25.250.110 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 5
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
 
    real_server 172.25.250.120 80 {
        weight 1
        HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 1
            nb_get_retry 3
            delay_before_retry 1
        }
    }
}
访问测试结果

[root@client ~]# for i in {1..6}; do curl 172.25.250.100; done
RS1 - 172.25.250.110
RS2 - 172.25.250.120
RS1 - 172.25.250.110
RS2 - 172.25.250.120
RS1 - 172.25.250.110
RS2 - 172.25.250.120
[root@ka1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=5993)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.25.204.100:80 wrr
-> 172.25.254.110:80 Route 1 0 6
-> 172.25.254.120:80 Route 1 0 6
 

实战案例:实现HAProxy高可用

#在两个ka1和ka2先实现haproxy的配置
[root@ka1 & ka2 ~]# vim /etc/haproxy/haproxy.cfg
listen webserver
    bind 172.25.250.100:80
    server web1 172.25.250.110:80 check
    server web2 172.25.250.120:80 check
 
 
#在两个ka1和ka2两个节点启用内核参数
[root@ka1 & ka2 ~]# vim /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind = 1
[root@ka1 & ka2 ~]# sysctl -p
 
 
#在ka1中编写检测脚本
[root@ka1 ~]# vim /etc/keepalived/scripts/haproxy.sh
#!/bin/bash
/usr/bin/killall -0 haproxy
 
[root@ka1 ~]# chmod +X /etc/keepalived/scripts/haproxy.sh
 
#在ka1中配置keepalived
[root@ka1 ~]#cat /etc/keepalived/keepalived.conf
vrrp_script check_haproxy {
    script "/etc/keepalived/scripts/haproxy.sh"
    interval 1
    weight -30
    fall 2
    rise 2
    timeout 2
}
vrrp_instance web {
    state MASTER
    interface ens160
    virtual_router_id 50
    priority 100
    advert_int 1
  
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.250.100 dev ens160 label ens160:0
    }
    track_script {
        check_haproxy
    }
}
 
#测试
root@ka1 ~]# systemctl stop haproxy.service

 

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

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

相关文章

算法打卡 Day24(二叉树)-二叉搜索树的最近公共祖先 + 二叉搜索树中的插入操作 + 删除二叉搜索树中的节点

文章目录 Leetcode 235-二叉搜索树的最近公共祖先题目描述解题思路 Leetcode 701-二叉搜索树中的插入操作题目描述解题思路 Leetcode 450-删除二叉搜索树中的节点题目描述解题思路 Leetcode 235-二叉搜索树的最近公共祖先 题目描述 https://leetcode.cn/problems/lowest-comm…

江协科技STM32学习笔记(第10章 SPI通信)

第10章 SPI通信 10.1 SPI通信协议 10.1.1 SPI通信 SPI&#xff08;Serial Peripheral Interface&#xff09;是由Motorola公司开发的一种通用数据总线&#xff1b; 串行外设接口&#xff1b; I2C无论是软件还是软件电路&#xff0c;设计的都还是比较复杂的&#xff0c;硬件…

xss靶场详解

目录 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 6.第六题 7.第七题 8.第八题 1.第一题 在源码script标签里边&#xff0c;innerhtml是用于访问或修改 HTML 元素内的 HTML 内容的&#xff0c;这里是访问spaghet这个元素的&#xff0c;并通过括号里面的东西搜索当前…

【问题解决3】【已解决】Cannot determine path to‘tools.jar‘libraryfor17

前几天在IDEA运行JAVA项目时&#xff0c;出现这个报错。 这是因为是这个笔记本上安装的IDEA版本是“IntelliJ IDEA 2020.3.1”&#xff0c;与JDK17版本不兼容&#xff0c;这种情况下要想使得IDEA版本与JDK版本兼容&#xff0c;就需要升级IDEA版本或者使用JDK较低版本&#xff…

专题---自底向上的计算机网络(计算机网络相关概述)

目录 计算机网络相关概述 物理层 数据链路层 网络层 运输层 应用层 网络安全 1.计算机网络相关概述&#xff08;具体细节http://t.csdnimg.cn/NITAW&#xff09; 什么是计算机网络&#xff1f; 计算机网络是将一个分散的&#xff0c;具有独立功能的计算机系统&#x…

FusionSphere虚拟机网络不通

虚拟机侧 1、通过控制台Console或者VNC登录虚拟机。 获取VNC的token链接&#xff0c;因为token有超时失效&#xff0c;该链接获取后长时间不用要重新获取。 # nova get-vnc-console vmid novnc 2、登录VNC控制台之后&#xff0c;检查网卡和IP地址是否up, ARP学习是否正常…

Postman 问题汇总

1 postman Error: SSL Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE 根因 SSL校验失败&#xff0c;可以在postman设置中关闭ssl校验&#xff0c;自测对ssl无要求。 解决方法 在postman设置中关闭ssl校验&#xff1a;

树莓派智能语音助手之聊天机器人-RASA

我的树莓派目前已经会“说”&#xff08;《树莓派智能语音助手之TTS - pyttsx3 espeak》&#xff09;&#xff0c;也能“听”&#xff08;《树莓派智能语音助手之ASR2 – sherpa-ncnn》&#xff09;了。接下来&#xff0c;就要让它能够和我们对话起来&#xff0c;即会“聊天”…

python 获取pdf文件中的超链接

pip install pymupdf pip install fitzimport fitz # PyMuPDFdef get_pdf_links(pdf_path):# 打开PDF文件document fitz.open(pdf_path)links []for page_num in range(len(document)):page document[page_num]# 获取当前页面的链接for link in page.get_links():links.app…

Mac升级系统文件都丢了怎么办?Mac更新后资料找不到了怎么恢复

Mac电脑由于其卓越的性能&#xff0c;受到了众多电脑用户的青睐。为了让用户获得更好的使用体验&#xff0c;Mac系统会定期推出新版本&#xff0c;来弥补前一个版本的不足。然而有用户反馈&#xff0c;Mac升级后&#xff0c;电脑里的部分资料消失了。mac升级会丢失文件吗?mac升…

iOS ColleCtionView 如何让cell 不重复创建并且只在展示的时候才创建

前言 使用 collectionView 一屏只展示一个 cell &#xff0c;一次只加载当前 cell&#xff0c;还要能够缓存已加载过的 cell &#xff0c;使 cell 不重复加载&#xff0c;听着好像就是将 collectionView 的复用机制禁用掉。用collectionView 实现这个需求&#xff0c;就出现了…

【GD32】从零开始学GD32单片机 | PMU电源管理单元+深度睡眠和待机例程(GD32F470ZGT6)

1. 简介 PMU电源管理单元通俗讲就是用来管理MCU的电源域的&#xff0c;它主要有两个功能——电压监测和低功耗管理。在GD32中一共有3个电源域——VDD/VDDA域、1.2V域和备份域。 VDD/VDDA域主要供PMU控制器、ADC、DAC等外设使用&#xff1b;1.2V域就是大部分外设都会使用的电源域…

ai大模型之争-生成音乐-豆包

豆包网页版&#xff1a;豆包 可以生成自定义音乐了 1&#xff0c;打开网页&#xff0c;登录 2&#xff0c;选择音乐生成 3&#xff0c;进行音乐配置 3.1&#xff0c;可以选择&#xff1a; 1&#xff0c;自己写歌词或者ai创造歌词&#xff1b; 2&#xff0c;可以选输入歌词…

xss漏洞复现

目录 第一关 第二关 第三关 第四关 第五关 第一关 要求&#xff1a; Pop an alert(1337) on sandbox.pwnfunction.com. No user interaction. 代码&#xff1a; <!-- Challenge --> <h2 id"spaghet"></h2> <script> spaghet.inn…

【数据结构与算法 | 图篇】Floyd-Warshall算法(多源最短路径算法)

1. 前言 Floyd-Warshall算法是一种在有向图或无向图中寻找所有顶点对之间的最短路径的动态规划算法。该算法可以处理带权重的边&#xff0c;并且能够正确处理负权重的边&#xff08;但不包括负权重循环&#xff09;&#xff0c;不过它不能处理包含负权重循环的情况&#xff0c…

IDEA 设置SVN项目管理忽略文件

忽略已经控制的文件 打开本地已经克隆下来的项目&#xff0c;并找到需要忽略控制的文件或文件夹 操作完成之后需要将当前的操作更新到SVN服务器。 直接在IDEA中提交修改&#xff08;快捷键CTRL K&#xff09;就可以 unverison: 取消版本控制 add to ignore list&#xff1…

C语言之文件操作上卷(二十一)(逆行人生-2024)

&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3; ✏️作者主页&#xff1a;枫霜剑客 &#x1f4cb; 系列专栏&#xff1a;C语言知识学习归纳总结&#xff08;逐梦篇专栏合集&#xff09; &#x1f332;上一篇: C语…

17 Menubutton 组件

17 Menubutton 组件 Tkinter 的 Menubutton 组件是一个特殊的按钮&#xff0c;当点击时会弹出一个菜单。这个菜单可以包含多个菜单项&#xff0c;允许用户从菜单中选择一个选项。Menubutton 通常用于创建带有下拉菜单的界面。以下是对 Menubutton 组件的详细说明和一个使用案例…

力控机器人torque-controlled robots

力控机器人&#xff08;Torque-Controlled Robots&#xff09;&#xff0c;也称为力矩控制机器人&#xff0c;是一种能够感知并实时控制施加在物体上力量的机器人系统。这类机器人通过集成力传感技术&#xff08;Force Sensing Technology&#xff09;和控制算法&#xff08;Co…