LVS + Keepalived高可用群集
目录
一:keepalived双击热备基础知识
1.keepalived概述及安装
1.1keepalived的热备方式
1.2keepalived的安装与服务控制
(1)安装keepalived
(2)控制keepalived服务
2.使用keepalived实现双击热备.
2.1主服务器的配置
2.2备用服务器的设置
2.3测试双击热备功能
(1)连通性测试
(2)web访问测试
(3)查看日志记录
二:使用keepalived实现双击热备
1.基础环境配置
2.配置主调度器
(1)全局配置,热备配置
(2)web服务器池配置
(3)重新启动keepalived访问
3.配置从调度器
4.配置web节点服务器
5.测试LVS+Keepalived高可用群集
一:keepalived双击热备基础知识
Keepalived 起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(Health Checking)功能一一判断LVS负载调度器、节点服务器的可用性,当 master主机出现故障及时切换到backup节点保证业务正常,当master故障主机恢复后将其重新加入群集并且业务重新切换回master节点。
1.keepalived概述及安装
Keepalived的官方网站位于http://www.keepalived.org/,本章将以YUM方式讲解Keepalived的安装、配置和使用过程。在非LVS群集不境中使用时,Keepalived也可以作为热备软件使用。
1.1keepalived的热备方式
Keepalived 采用 VRRP (Virtual Router Redundancy Protoco1,虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案一一由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有有一台主路由器提供服务,其他路由器处于冗余状态。若当前在线的路由器失效放,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务
1.2keepalived的安装与服务控制
(1)安装keepalived
在 OpenEuler24系统中,使用 DNF方式安装keepalived. x86_642.2.8-1.oe2403spl,会自动安装Keepalived所需的软件包。除此之外,在LVS群集环境中应用时,也需要用到 ipvsadm管理工具。[root@localhost ~]# yum install -y keepalived ipvsadmnginx
(2)控制keepalived服务
DNF安装keepalived后,执行以下命令将 keepalived服务务设置为开机启动。
[root@localhost~]# systemctl enable keepalived
2.使用keepalived实现双击热备.
基于VRRP的热备方式,Keepalived可以用作服务器的故障切换,每个热备组可以有多台服务器一一当然,最常用的就是双机热备了。在这种双机热备方案中,故障切换主要针对虚拟IP地址的漂移来实现,因此能够适用于各种应用服务器(不管是Web、FTP、Mail,还是SSH、DNS........)
2.1主服务器的配置
Keepalived 服务的配置目录位于/etc/keepalived/。其中,keepalived.conf 是主配置文件。另外包括一个子目录 samples/,提供了许多配置样例作为参考。在Keepalived的配置文件中,使用"global_defs{···}"区县投指定全局参数,使用"vrrpinstance实例名称{···}"区段指定 VRRP热备参数,注释文字以"!"符号开头。[root@localhost~]# systemctl stop firewalld//关闭防火墙
[root@localhost ^]# setenforce 0
[root@localhost ^]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived. conf. sample keepalived. conf
[root@localhost keepalived]# vi keepalived.conf
global_defs {
router_id HA_TEST_R1 //本路由器(服务器)的名称
}
vrrp_instance VI_1 { //定义 VRRP热备实例
state MASTER //热备状态,MASTER表示主服务器
interface ens33 //承载VIP地址的物理接口
virtual_router_id l //虚拟路由器的ID号,每个热备组保持一致
priority 100 //优先级,数值越大优先级越高
advert_int 1 //通告间隔秒数(心跳频率)
authentication { //认证信息,每个热备组保持一致
auth_type PASS //认证类型
auth_pass 123456 //密码字串
}
virtual_ipaddress //指定漂移地址(VIP),可以有多个
192.168.10.100
}
}确认上述配置无误,然后启动Keepalived服务。实际状态为MASTER的主
服务器将为ens33接口自动添加VIP地址,通过ip命令可!以查看。注意
ifconfig命令看不到。[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip addr show dev ens33
可以查看到VIP
2.2备用服务器的设置
在同一个Keepalived热备组内,所有服务器的Keepalived配置文件基本相同,包括虚拟路由器的ID号、认证信息、漂移地址、心路挑频率等。不同之主要在于路由器名称、热备状态、优先级。
> 路由器名称(router_id):建议为每个参与热备的服务器指定不同的名称
> 热备状态(state):至少应有一台主服务器,将状态设为ASTER;可以有多台备用的服务器,将状态设为BACKUP。> 优先级(priority):数值越大则取得VIP控制权的优先级越高,因此主服务器的优先级应设为最高:其他备用服务器的优先级可依次递减,但不要相同,以免在争夺VIP控制权时发生冲突。
配置备用服务器(可以有多台)时,可以参考主服务器的keepalived. conf配置文件内容,只需修改路由器名称、热备状态、优先级。[root@localhost ^]# systemctl stop firewalld//关闭防火增福
[root@localhost ^]# setenforce 0
[root@localhost >]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived. conf. sample keepalived. conf
[root@localhost keepalived]# vi keepalived.confglobal_defs {
router_id HA_TEST_R2 //本路由器(服务器)的名称
}
vrrp_instance VI_1 {
state BACKUP //热备状态,BACKUP表示备用服务器
priority 99 //优先级,数值应低于主服务器
}
剩余的跟主服务器配置一样确认配置无误,一样需要启动Keepalived服务。此时主服务器仍然在线,VIP地址实际上仍然由主服务器控制,其他服务器处于备用状态。因此,在备用服务器中将不会为ens33接口添加VIP地址。[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip addr show dev ens33
可以查看到VIP
2.3测试双击热备功能
(1)连通性测试
在客户机中执行"ping-t192.168.10.100"命令,能够正常、持续ping通,根据以下操作继续观察测试结果。
> 停止启用主服务器的Keepalived服务,发现ping测试只中断了1或2个包即恢复正常,说明已有其他服务器接替VIP地址,并及及时响应客户机请求
> 重新启用主服务器的Keepalived服务,发现ping测试再次中断1或2个包即恢复正常,说明主服务器已恢复正常,并夺回VIP地址的控制权。
(2)web访问测试
在keepalived运行的主机上启动nginx服务并写入不通的测试页面内容
Keepalived01
[root@localhost~]# systemctl start nginx
[root@localhost~]# echo "web01" >/usr/share/nginx/html/index.htmlKeepalived02
[root@localhost~]# systemctl start nginx
[root@localhost~]# echo "web02" >/usr/share/nginx/html/index.html在客户机中访问http://192.168.10.100/,将看到由主服务器192.168.10.101提供的网页文档。
1停止启用主服务器的Keepalived服务,再次访问上述Web服务,将看到由备用服务器192.168.10.102提供的网页文档,说明VIP地址已切换至备用服务器。
2重新启用主服务器的Keepalived服务,再次访问上述Web服务,将看到重新由主服务器192.168.10.101提供的网页文档,说明主服务器已重新夺取VIP地址
(3)查看日志记录
在执行主、备服务器故障切换的过程中,分别观察各自白的/var/1og/messages 日志文件,可以看到MASTER、SLAVE状态的迁移记录。
1主服务器中,Keepalived服务状态先变为"stop",移除VIP地址,恢复后重新变为MASTER。
[root@localhost ~]# less /var/log/messages2备用服务器中,状态先切换为MASTER,待主服务器恢复后再交回控制权。
[root@localhost ~]# less /var/log/messages通过上述测试过程,可以发现双机热备已经正常。客户机只要通过VIP地址就可以访问服务器所提供的Web等应用。其中,任何一台服务器失效,另一台服务器将会立即接替服务,从而实现高可用性。实际应用时,注意主、备服务器所提供的Web服务内容要保持一致。
二:使用keepalived实现双击热备
Keepalived的设计目标是构建高可用的 LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅用作双机热备。使用Keepalived构建LVS群集更加简便易用,主要优势体现在:对LVS负载调度器实现热备切换,提高可用性;对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。
1.基础环境配置
操作系统 | 配置 | 主机名 | IP | 服务 |
OpenEuler24 | 2C4G | lb01 | 192.168.10.101 | Keepalived/ipvsadm |
OpenEuler24 | 2C4G | lb02 | 192.168.10.102 | Keepalived/ipvsadm |
OpenEuler24 | 2C4G | web02 | 192.168.10.103 | Nginx |
OpenEuler24 | 2C4G | web02 | 192.168.10.104 | Nginx |
OpenEuler24 | 2C4G | nfs-server | 192.168.10.105 | nfs-utils/rpcbind |
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld关闭内核安全机制
setenforce 0
sed -i SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config 修改主机名
hostnamectl set-hostname lb01
hostnamectl set-hostname lb02
hostnamectl set-hostname web01
hostnamectl set-hostname web02安装Keepalived以及ipvsadm
Keepalived环境操作加载ip_vs模块
modprobe ip_vs查看ip vs版本信息
cat/proc/net/ip_vs安装服务并备份模板配置文件
yum install ipvsadm keepalived -y
cp/etc/keepalived/keepalived.conf{..bak}
2.配置主调度器
(1)全局配置,热备配置
首先为主、从调度器实现热备功能,漂移地址使用LVS群集的VIP地址。
[root@localhost~]# vi /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_HA_R1 //主调度器的名称
vrrp_instance VI_1
state MASTER //主调度器的热备状态
interface ens33
virtual_router_id 1
priority 100 //主调度器的优先级
advert_int 1
authentication { //主、从热备认证信息
auth_type PASS
auth_pass 123456
}
virtual_ipaddress{ //指定群集VIP地址
192.168.10.10.100
}
}
(2)web服务器池配置
在 Keepalieved的热备配置基础上添加"virtual_serveer VIP端口{...}"区段来 配置虚拟服务器,主要包括对负载调度算法、群集工作模式、健康检查间隔、真实服务器地址等参数的设置。[root@localhost ^]# vi /etc/keepalived/keepalived.conf
......
virtual server 192.168.10.100 80 #虚拟服务器地址(VIP)、端口
delay_loop 15 #健康检查的间隔时间(秒)
lb_algo rr #轮询(rr)调度算法
lb kind DR #直接路由(DR)群集工作模式
! persistence 60 #连接保持时间(秒),若启用请去掉!号
protocol TCP #应用服务采用的是TCP协议
real server 192.168.10.103 80 { #第一个Web节点的地址、端口
weight 1 #节点的权重
TCP_CHECK { #健康检查方式
connect_port 80 #检查的目标端口
connect_timeout 3 #连接超时(秒)
nb_get_retry 3 #重试次数
delay_before_retry 4 //重试间隔(秒)
}
}
real_server 192.168.10.104 80 { #第二个Web节点的地址、端口
#省略部分信息
}
}完整配置如下(该配置文件为1b01节点的配置,可复制到1b02节点但需要修改state以及priority,router id建议为每个机器配置不同的名称cat/etc/keepalived/keepalived.conf)! Configuration File for keepalived
global_defs {router_id LVS_DEVEL
}vrrp_instance VI_1 {state MASTER #两个DS,一个为MASTER一个为BACKUPinterface ens33 #当前IP对应的网络接口,通过 ifconfig查询virtual_router_id 62 #虚拟路由ID(0-255),在一个VRRP实例中主备服务器ID必须一样priority 100 #优先级值设定:MASTER要比BACKUP的值大advert_int 1 #通告时间间隔:单位秒,主备要一致authentication { #认证机制,主从节点保持一致即可auth_type PASSauth_pass 1111
}virtual_ipaddress {192.168.10.100 #VIP,可配置多个}
}#web配置
virtual server 192.168.10.100 80 {delay_loop 3 #设置健康状态检查时间lb_algo rr #调度算法,这里用了 rr轮询算法lb_kind DR #这里测试用了DirectRoute模式persistence_timeout 50 #持久连接超时时间,注意添加此项配置客户端连续请求时,请求到同一节点protocol TCPreal server 192.168.10.103 80weight 1TCP_CHECK {connect_timeout 10retry 3 #旧版本为nb_get_retrydelay_before_retry 3 #重试间隔3秒connect_port 80}
}real server 192.168.10.104 80 {weight 1TCP_CHECK {connect_timeout 10retry 3delay_before_retry 3connect_port 80}}
}
(3)重新启动keepalived访问
重新启动Keepalived服务的命令如下:
[root@localhost~]# systemctl restart keepalived
3.配置从调度器
从调度器的配置与主调度器基本相同,也包括全局配置、热备配置、服务器池配置,只需要调整routerid、state、priority参数艮可,其余内容完全相同。配置完成以后重启Keepalived服务。[root@localhost ^]# vi /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_HA_R2
//从调度器的名称
}
vrrp_instance VI_1 {
state BACKUP //从调度器的热备状态
priority 90 //从调度器的优先级
.........
}
virtual server 192.168.10.100 80 {
.........
}
[root@localhost~]systemctl restart keepalived
4.配置web节点服务器
根据所选择的群集工作模式不同(DR或NAT),节点服务器的配置也有些差异。以DR模式为例,除了需要调整/proc系统的ARP响应参数以外,还需要为虚拟接口 1o:0配置VIP地址,并添加一条到VIP的本地路由,具体方法请参考LVS-DR文章。
5.测试LVS+Keepalived高可用群集
在客户机的浏览器中,能够通过 LVS+Keepalived群集的VIP地址(192.168.10.100)正常访问Web页面内容。当主、从调度器任可一个失效时,Web站点仍然可以访问(可能需要刷新或者重新打开浏览器);只要服务器池有两台及以上的真实服务器可用,就可以实现访问量的负载均衡。通过主、从调度器的/var/1og/messages 日志文件,可以跟踪故障切换过程;若要查看负载分配情况,可以执行"ipvsadm-ln" "ipvsadm-lnc"等操作命令。最终可以验证LVS+Keepalived高可用负载均衡群集的健壮性。
相关文章:
LVS + Keepalived高可用群集
目录 一:keepalived双击热备基础知识 1.keepalived概述及安装 1.1keepalived的热备方式 1.2keepalived的安装与服务控制 (1)安装keepalived (2)控制keepalived服务 2.使用keepalived实现双击热备. 2.1主服务器的…...

MySQL之约束和表的增删查改
MySQL之约束和表的增删查改 一.数据库约束1.1数据库约束的概念1.2NOT NULL 非空约束1.3DEFAULT 默认约束1.4唯一约束1.5主键约束和自增约束1.6自增约束1.7外键约束1.8CHECK约束 二.表的增删查改2.1Create创建2.2Retrieve读取2.3Update更新2.4Delete删除和Truncate截断 一.数据库…...
Greenplum:PB级数据分析的分布式引擎,揭开MPP架构的终极武器
一、Greenplum是谁?—— 定位与诞生背景 核心定位:基于PostgreSQL的开源分布式分析型数据库(OLAP),专为海量数据分析设计,支撑PB级数据仓库、商业智能(BI)和实时决策系统。 诞生背…...

Oracle数据库性能优化的最佳实践
原创:厦门微思网络 以下是 Oracle 数据库性能优化的最佳实践,涵盖设计、SQL 优化、索引管理、系统配置等关键维度,帮助提升数据库响应速度和稳定性: 一、SQL 语句优化 1. 避免全表扫描(Full Table Scan)…...
云原生时代 Kafka 深度实践:02快速上手与环境搭建
2.1 本地开发环境搭建 单机模式安装 下载与解压:前往Apache Kafka 官网,下载最新稳定版本的 Kafka 二进制包(如kafka_2.13-3.6.0.tgz,其中2.13为 Scala 版本)。解压到本地目录,例如/opt/kafka:…...
Redis7 新增数据结构深度解析:ListPack 的革新与优化
Redis 作为高性能的键值存储系统,其核心优势之一在于丰富的数据结构。随着版本迭代,Redis 不断优化现有结构并引入新特性。在 Redis 7.0 中,ListPack 作为新一代序列化格式正式登场,替代了传统的 ZipList(压缩列表&…...
分布式爬虫架构设计
随着互联网数据的爆炸式增长,单机爬虫已经难以满足大规模数据采集的需求。分布式爬虫应运而生,它通过多节点协作,实现了数据采集的高效性和容错性。本文将深入探讨分布式爬虫的架构设计,包括常见的架构模式、关键技术组件、完整项…...

汽配快车道:助力汽车零部件行业的产业重构与数字化出海
汽配快车道:助力汽车零部件行业的数字化升级与出海解决方案。 在当今快速发展的汽车零部件市场中,随着消费者对汽车性能、安全和舒适性的要求不断提高,汽车刹车助力系统作为汽车安全的关键部件之一,其市场需求也在持续增长。汽车…...

Windows 11 家庭版 安装Docker教程
Windows 家庭版需要通过脚本手动安装 Hyper-V 一、前置检查 1、查看系统 快捷键【winR】,输入“control” 【控制面板】—>【系统和安全】—>【系统】 2、确认虚拟化 【任务管理器】—【性能】 二、安装Hyper-V 1、创建并运行安装脚本 在桌面新建一个 .…...

PyQt6基础_QtCharts绘制横向柱状图
前置: pip install PyQt6-Charts 结果: 代码: import sysfrom PyQt6.QtCharts import (QBarCategoryAxis, QBarSet, QChart,QChartView, QValueAxis,QHorizontalBarSeries) from PyQt6.QtCore import Qt,QSize from PyQt6.QtGui import QP…...

《TCP/IP 详解 卷1:协议》第2章:Internet 地址结构
基本的IP地址结构 分类寻址 早期Internet采用分类地址(Classful Addressing),将IPv4地址划分为五类: A类和B类网络号通常浪费太多主机号,而C类网络号不能为很多站点提供足够的主机号。 子网寻址 子网(Su…...
Python学习(5) ----- Python的JSON处理
下面是关于 Python 中如何全面处理 JSON 的详细说明,包括模块介绍、数据类型映射、常用函数、文件操作、异常处理、进阶技巧等。 🧩 一、什么是 JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式&a…...

如何通过一次需求评审,让项目效率提升50%?
想象一下,你的团队启动了一个新项目,但需求模糊不清,开发到一半才发现方向错了,返工、加班、客户投诉接踵而至……听起来像噩梦?一次完美的需求评审就能避免这一切!它就像项目的“导航仪”,确保…...

再见Notepad++,你好Notepad--
Notepad-- 是一款国产开源的轻量级、跨平台文本编辑器,支持 Window、Linux、macOS 以及国产 UOS、麒麟等操作系统。 除了具有常用编辑器的功能之外,Notepad-- 还内置了专业级的代码对比功能,支持文件、文件夹、二进制文件的比对,支…...

element-plus bug整理
1.el-table嵌入el-image标签预览时,显示错乱 解决:添加preview-teleported属性 <el-table-column label"等级图标" align"center" prop"icon" min-width"80"><template #default"scope"&g…...

技术-工程-管用养修保-智能硬件-智能软件五维黄金序位模型
融智学工程技术体系:五维协同架构 基于邹晓辉教授的框架,工程技术体系重构为:技术-工程-管用养修保-智能硬件-智能软件五维黄金序位模型: math \mathbb{E}_{\text{技}} \underbrace{\prod_{\text{Dis}} \text{TechnoCore}}_{\…...

LangChain-自定义Tool和Agent结合DeepSeek应用实例
除了调用LangChain内置工具外,也可以自定义工具 实例1: 自定义多个工具 from langchain.agents import initialize_agent, AgentType from langchain_community.agent_toolkits.load_tools import load_tools from langchain_core.tools import tool, …...

用 3D 可视化颠覆你的 JSON 数据体验
大家好,这里是架构资源栈!点击上方关注,添加“星标”,一起学习大厂前沿架构! 复杂的 JSON 数据结构常常让人头疼:层层嵌套的对象、错综复杂的数组关系,用传统的树状视图或表格一览千头万绪&…...
联想小新笔记本电脑静电问题导致无法开机/充电的解决方案
一、问题背景 近期部分用户反馈联想小新系列笔记本电脑在特定环境下(如秋冬干燥季节)出现无法开机或充电的问题。经分析,此类现象多由静电积累触发主板保护机制导致,少数情况可能与电源适配器、电池老化或环境因素相关。本文将从技…...

MVCC(多版本并发控制)机制
1. MVCC(多版本并发控制)机制 MVCC 的核心就是 Undo Log Read View,“MV”就是通过 Undo Log 来保存数据的历史版本,实现多版本的管理,“CC”是通过 Read View 来实现管理,通过 Read View 原则来决定数据是…...

Mac M1 安装 ffmpeg
1.前言 官网那货没有准备m系列的静态包,然后我呢,不知道怎么想的就从maven项目中的 javacv-platform,且版本为1.5.11依赖里面将这个静态包把了出来,亲测能用,感觉比那些网上说的用什么wget编译安装、brew安装快多了。…...

Spring框架学习day3--Spring数据访问层管理(IOC)
开发步骤 Spring 是个一站式框架:Spring 自身也提供了web层的 SpringWeb 和 持 久层的 SpringJdbcTemplate。 开发步骤 1.导入jar包 pom.xml <!-- spring-jdbc--> <dependency><groupId>org.springframework</groupId><artifactId>…...
什么是集群(Cluster)?如何保证集群的高可用性?
一、什么是Elasticsearch集群(Cluster)? 集群是指由一个或多个节点(Node)组成的集合,这些节点共同存储数据、处理请求,并协调工作以提供统一的搜索服务。一个集群有唯一的集群名称(默认名为elasticsearch),节点通过名称加入对应的集群。集群的核心目标是: 扩展存储…...
React从基础入门到高级实战:React 核心技术 - 动画与过渡效果:提升 UI 交互体验
React 动画与过渡效果:提升 UI 交互体验 在现代 Web 开发中,动画和过渡效果不仅仅是视觉上的点缀,它们在提升用户体验、引导用户注意力以及增强交互性方面扮演着重要角色。作为一款广受欢迎的前端框架,React 提供了多种实现动画的…...

重读《人件》Peopleware -(13)Ⅱ 办公环境 Ⅵ 电话
当你开始收集有关工作时间质量的数据时,你的注意力自然会集中在主要的干扰源之一——打进来的电话。一天内接15个电话并不罕见。虽然这看似平常,但由于重新沉浸所需的时间,它可能会耗尽你几乎一整天的时间。当一天结束时,你会纳闷…...
Free2AI:企业智能化转型的加速器
随着数字化与智能化的深度交融,企业的竞争舞台已悄然转变为数据处理能力和智能服务水平的竞技场。Free2AI以其三大核心功能——智能数据采集、多格式文档解析、智能FAQ构建,为企业铺设了一条从数据洞察到智能服务的全链路升级之路,成为推动企…...

Python训练营打卡Day40
DAY 40 训练和测试的规范写法 知识点回顾: 1.彩色和灰度图片测试和训练的规范写法:封装在函数中 2.展平操作:除第一个维度batchsize外全部展平 3.dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭dropout 作…...

制作一款打飞机游戏63:自动保存
1.编辑器的自动保存实现 目标:将自动保存功能扩展到所有编辑器,包括脑编辑器、模式编辑器、敌人编辑器和动画/精灵编辑器。实现方式: 代码复制:将关卡编辑器中的自动保存代码复制到其他编辑器中。标记数据变更&a…...
使用animation.css库快速实现CSS3旋转动画效果
CSS3旋转动画效果实现(使用Animate.css) 下面我将展示如何使用Animate.css库快速实现各种CSS3旋转动画效果,同时提供一个直观的演示界面。 思路分析 引入Animate.css库创建不同旋转动画的展示区域添加控制面板自定义动画效果实现实时预览功…...
基于NetWork的类FNAF游戏DEMO框架
脑洞大开 想做个fnaf1并加入自己的设计.. 开干!!!! #include <stdio.h> #include <iostream> #include <random> #include <ctime>bool leftdoor true, rightdoor true, camddoor true; float power 900,fanusepower 0;typedef struct movement…...