~Keepalived高可用集群~

news2024/9/22 8:27:43

一、Keepalived简介

是一个用于实现高可用性的解决方案,它主要应用于云主机的主备切换,以达到高可用性(HA)的目的。当主服务器发生故障无法对外提供服务时,动态将虚拟IP切换到备服务器,继续对外提供服务,从而增强系统的容灾性能。Keepalived通过监控主服务器的状态,实现主备服务器的自动切换,确保服务的持续可用性。

集群类型

LB:Load Balance 负载均衡

LVS/HAProxy/nginx(http/upstream, stream/upstream)

HA:High Availability 高可用集群

数据库、Redis

SPoF: Single Point of Failure,解决单点故障

HPC:High Performance Computing 高性能集群

系统可用性

SLA:Service-Level Agreement 服务等级协议(提供服务的企业与客户之间就服务的品质、水准、性能 等方面所达成的双方共同认可的协议或契约)

A = MTBF / (MTBF+MTTR)

开始实验

准备工作
KA1:172.25.254.20
KA2:172.25.254.30
realserver1:172.25.254.110
realserver2:172.25.254.120

realserver1

[root@realserver1 ~]# yum install httpd  -y
[root@realserver1 ~]# systemctl stop firewalld
[root@realserver1 ~]# echo realserver1 - 172.25.254.110 > /var/www/html/index.html
[root@realserver1 ~]# systemctl start httpd

realserver2

[root@realserver2 ~]# yum install httpd  -y
[root@realserver2 ~]# systemctl stop firewalld
[root@realserver2 ~]# echo realserver2 - 172.25.254.120 > /var/www/html/index.html
[root@realserver2 ~]# systemctl start httpd

 安装keepalived

[root@KA1 ~]# dnf install keepalived -y
[root@KA1 ~]# systemctl start keepalived
[root@KA2 ~]# dnf install keepalived -y
[root@KA2 ~]# systemctl start keepalived

测试一下 

[root@kA1 ~]# curl 172.25.254.110
realserver1 - 172.25.254.110
[root@kA1 ~]# curl 172.25.254.120
realserver2 - 172.25.254.120

 二、配置keepalived文件(配置虚拟路由)

! Configuration File for keepalived
global_defs {
notification_email {
3595566522@qq.com 
timiniglee-zln@163.com
}
notification_email_from keepalived@KA1.timinglee.org 
smtp_server 127.0.0.1 
smtp_connect_timeout 30 
router_id KA1.timinglee.org 
vrrp_skip_check_adv_addr 
vrrp_garp_interval 0
vrrp_gna_interval 0 
vrrp_mcast_group4 224.0.0.18 
}

进行测试

[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.254.20 > 224.0.0.18: VRRPv2, Advertisement, vrid 20, 
prio 100, authtype none, intvl 1s, length 20
22:48:24.084793 IP 172.25.254.30 > 224.0.0.18: VRRPv2, Advertisement, vrid 30, 
prio 80, authtype none, intvl 1s, length 20
22:48:24.295075 IP 172.25.254.20 > 224.0.0.18: VRRPv2, Advertisement, vrid 20

 进行抓包

[root@KA1 ~]# yum install tcpdump
[root@KA1 ~]# tcpdump -i ens33 -nn host 224.0.0.18
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
20:58:45.323341 IP 172.25.254.20 > 224.0.0.18: VRRPv2, Advertisement, vrid 100, prio 100, authtype simple, intvl 1s, length 20

三、启用keepalived日志功能

[root@ka1 ~]#systemctl restart keepalived.service rsyslog.service 
[root@ka1 ~]#tail -f /var/log/keepalived.log 
Apr 14 09:25:51 ka1 Keepalived_vrrp[1263]: Sending gratuitous ARP on eth0 for
10.0.0.10
Apr 14 09:25:51 ka1 Keepalived_vrrp[1263]: Sending gratuitous ARP on eth0 for
10.0.0.10
Apr 14 09:25:51 ka1 Keepalived_vrrp[1263]: Sending gratuitous ARP on eth0 for
10.0.0.10

四、抢占模式和非抢占模式

非抢占模式 nopreempt

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

ka1主机配置
vrrp_instance VI_1 {
   state BACKUP
   interface eth0
   virtual_router_id 20
   priority 100 #优先级高
   nopreempt #非抢占模式
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       172.25.254.110/24 dev eth0 label eth0:0
   }
}
ka2主机配置
vrrp_instance VI_1 {
   state BACKUP
   interface eth0
   virtual_router_id 20
   priority 80 #优先级低
   advert_int 1
   nopreempt #非抢占模式
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
     172.25.254.120/24 dev eth0 label eth0:0
   }
}

抢占延迟模式 preempt_delay

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

#ka1主机配置
vrrp_instance VI_1 {
   state BACKUP
   interface eth0
   virtual_router_id 20
   priority 100 #优先级高
   preempt_delay 10s #抢占延迟10s
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       172.25.254.110/24 dev eth0 label eth0:0
   }
}
   
#KA2主机配置
vrrp_instance VI_1 {
   state BACKUP
   interface eth0
   virtual_router_id 20
   priority 80 #优先级低
   advert_int 1
   preempt_delay 10s #抢占延迟10S
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
     172.25.254.120/24 dev eth0 label eth0:0
   }
}

五、VIP单播配置

默认keepalived主机之间利用多播相互通告消息,会造成网络拥塞,可以替换成单播,减少网络流

配置文件且启用 vrrp_strict 

[root@KA1 ~]# vim /etc/keepalived/keepalived.conf
[root@KA1 ~]# systemctl restart keepalived
[root@KA1 ~]# tcpdump -i eth0 -nn src host 172.25.254.20 and dst 172.25.254.30
[root@KA2 ~]#  vim /etc/keepalived/keepalived.conf
[root@KA2 ~]# systemctl restart keepalived
[root@KA2 ~]# tcpdump -i eth0 -nn src host 172.25.254.30 and dst 172.25.254.20
KA1主机配置
[root@KA1 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
  3595566522@qq.com
   }
   notification_email_from keepalived@KA1.timinglee.org
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id KA1.timinglee.org
   vrrp_skip_check_adv_addr
   #vrrp_strict #注释此参数,与vip单播模式冲突
   vrrp_garp_interval 0
   vrrp_gna_interval 0
   vrrp_ipsets keepalived
}
vrrp_instance VI_1 {
   state MASTER
   interface eth0
   virtual_router_id 20
   priority 100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
   172.25.254.110/24 dev eth0 label eth0:0
   }
   unicast_src_ip 172.25.254.20 #本机IP
   unicast_peer {
       172.25.254.30 #指向对方主机IP
       #如果有多个keepalived,再加其它节点的IP
   }
}
KA2配置
[root@KA2 ~]# vim /etc/keepalived/keepalived.conf
 ! Configuration File for keepalived抓包查看单播效果
global_defs {
   notification_email {
   3595566522@qq.com
   }
   notification_email_from keepalived@KA1.timinglee.org
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id KA1.timinglee.org
   vrrp_skip_check_adv_addr
   #vrrp_strict #注释此参数,与vip单播模式冲突
   vrrp_garp_interval 0
   vrrp_gna_interval 0
   vrrp_ipsets keepalived
}
vrrp_instance VI_1 {
   state BACKUP
   interface eth0
   virtual_router_id 20
   priority 80
   advert_int 1
   preempt_delay 60
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
     172.25.254.120/24 dev eth0 label eth0:0
   }
   unicast_src_ip 172.25.254.30 #本机ip
   unicast_peer {
     172.25.254.20 #对端主机IP
   }
}

抓包查看单播效果

[root@KA1 ~]# tcpdump -i ens33 -nn src host 172.25.254.20 and dst 172.25.254.30

 六、邮件通知

配置文件

[root@KA1 ~]# vim /etc/mail.rc
[root@KA1 ~]# cat /etc/mail.rc
set from=3595566522@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=3595566522@qq.com
set smtp-auth-password=fdvoyibvazmecfbd
set smtp-auth=login
set ssl-verify=ignore

进行测试

[root@KA1 ~]# echo test message |mail -s test 3595566522@qq.com  

 实现 master/master 的 Keepalived 双主架构

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

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

示例
#ha1主机配置
[root@rhel7-ka1 ~]# vim /etc/keepalived/keepalived.conf
@@@@ 内容省略 @@@@
vrrp_instance VI_1 {
   state MASTER #主
   interface ens33
   virtual_router_id 50
   priority 100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       172.25.254.50 dev ens33 label ens33:0
   }
}
vrrp_instance VI_60 {
   state BACKUP #备
   interface ens33
   virtual_router_id 60
   priority 80
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       172.25.254.60 dev ens33 label ens33:1
   }
}

七、实现IPVS的高可用性

IPVS相关配置

[root@KA1 ~]# yum install ipvsadm -y
[root@KA1 ~]# vim /etc/keepalived/keepalived.conf
[root@KA1 ~]# systemctl restart keepalived.service
[root@KA1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.100:80 wrr
  -> 172.25.254.110:80            Route   1      0          0
  -> 172.25.254.120:80            Route   1      0          0
[root@KA2 ~]# systemctl stop firewalld
[root@KA2 ~]# systemctl restart keepalived
[root@KA2 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.100:80 wrr
  -> 172.25.254.110:80            Route   1      0          0
  -> 172.25.254.120:80            Route   1      0          0

示例

#准备两台后端RS主机
[root@rs1 ~]# yum install httpd -y
[root@rs1 ~]# echo RS1 - 172.25.254.101 > /var/www/html/index.html
[root@rs1 ~]# ip addr add 172.25.254.100/32 dev lo
[root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[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@rs1 ~]# echo RS1 - 172.25.254.101 > /var/www/html/index.html
[root@rs2 ~]# ip addr add 172.25.254.100/32 dev lo
[root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@rs2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@node30 ~]# yum install httpd -y配置keepalived
[root@node30 ~]# echo RS1 - 172.25.254.101 > /var/www/html/index.html
[root@node30 ~]# ip addr add 172.25.254.100/32 dev lo
[root@node30 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@node30 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@node30
~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

配置keepalived

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

 测试结果

八、keepalived+lvs

[root@KA1 ~]# touch /etc/keepalived/test.sh
[root@KA1 ~]# vim  /etc/keepalived/test.sh
[root@KA1 ~]# cat  /etc/keepalived/test.sh
[root@KA1 ~]# vim /etc/keepalived/keepalived.conf
[root@KA1 ~]# systemctl restart keepalived.service
[root@KA1 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.25.254.10  netmask 255.255.0.0  broadcast 172.25.255.255
        inet6 fe80::20c:29ff:fe0c:6c2d  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0c:6c:2d  txqueuelen 1000  (Ethernet)
        RX packets 75496  bytes 6118881 (5.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 128025  bytes 13978589 (13.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.25.254.100  netmask 255.255.255.0  broadcast 0.0.0.0
        ether 00:0c:29:0c:6c:2d  txqueuelen 1000  (Ethernet)

 

九、keepalived+haproxy

KA1和KA2都需要安装haproxy

需要在两个ka1和ka2两个节点启用内核参数,目的是为了即使另一台主机没有100的VIP,也能进行远程解析,在原100的VIP下线的时候,保证服务能正常进行

[root@KA1~] yum install haproxy -y

[root@KA2~] yum install haproxy -y
 设置参数
[root@KA1 ~]# vim /etc/sysctl.conf 
[root@KA1 ~]# sysctl -p
net.ipv4.ip_nonlocal_bind = 1

[root@KA2 ~]# vim /etc/sysctl.conf 
[root@KA2 ~]# sysctl -p
net.ipv4.ip_nonlocal_bind = 1
进行配置文件 
[root@KA1 ~]# vim /etc/haproxy/haproxy.cfg
[root@KA1 ~]# systemctl enable haproxy.service
Created symlink from /etc/systemd/system/multi-user.target.wants/haproxy.service to /usr/lib/systemd/system/haproxy.service.
[root@KA1 ~]# systemctl restart haproxy.service

 删除两台服务器的环回

[root@realserver1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo
[root@realserver1 ~]# systemctl restart network
[root@realserver1 ~]# ifconfig

[root@realserver2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo
[root@realserver2 ~]# systemctl restart network
[root@realserver2 ~]# ifconfig
 进行测试 

 

 

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

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

相关文章

DOM破坏

XSS Game 1、第一关 Ma Spaghet! <!-- Challenge --> <h2 id"spaghet"></h2> <script>spaghet.innerHTML (new URL(location).searchParams.get(somebody) || "Somebody") " Toucha Ma Spaghet!" </script> S…

【ubuntu24.04】wget配置代理加速下载

参考之前的wget代理配置 wget速度非常慢 配置控制台代理不行 配置wget代理 本机部署了代理程序:all_proxy 不识别:root@PerfSvr:~# cat set65proxy.sh #!/bin/sh export

[STM32F429_硬件知识01]

知识点1 &#xff1a;J-Link的使用步骤&#xff1a; step1 : 安装J-Link驱动程序 step2 : keil的魔术棒中 -> Debug -> Use中选择J_Link ->点击 Settings ->

AI 时代风暴:程序员的核心竞争力大揭秘

引言&#xff1a; 在当今科技浪潮以排山倒海之势汹涌澎湃之际&#xff0c;人工智能宛如璀璨星辰般不断涌现&#xff0c;AIGC&#xff08;如 chatgpt、midjourney、claude 等&#xff09;大语言模型如雨后春笋般破土而出&#xff0c;AI 辅助编程工具更是以风驰电掣之速迅速席卷编…

智能电销机器人提升工作效率

随着科技的不断发展&#xff0c;电销行业也在不断探索创新&#xff0c;其中电销机器人作为一种高效的工具&#xff0c;正逐渐成为企业提升工作效率的利器。让我们一起看看电销机器人如何助力企业提高效率&#xff1a; 1. 自动化拨打电话 电销机器人每天可以自动拨打大量电话&a…

element-plus表格组件el-table 的使用

表格是在前端页面中是经常被用到的&#xff0c;尤其是管理系统&#xff0c;几乎每个页面都会存在表格&#xff0c;所以掌握表格组件是非常有必要的。element-plus提供el-table&#xff0c;el-table-column来渲染表格&#xff0c; 1. el-table 组件主要属性 属性名作用值类型…

【C语言小项目】五子棋游戏

目录 前言 一、游戏规则 1.功能分析 2.玩法分析 3.胜负判定条件 二、游戏实现思路 三、代码实现与函数封装 1.项目文件创建 2.头文件说明 3.函数封装 1&#xff09;菜单实现 2&#xff09;进度条实现 3&#xff09;main函数实现 4&#xff09;Game函数 5&#xff0…

Java语言程序设计——篇十三(4)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…

下载中心: 使用异步方法生成文件任务+键集分页查询

文章目录 引言I 下载中心功能进度表设计异步处理文件生成案例II 键集分页查询提高查询效率解决分页查询出现数据重复或丢失案例III 工具线程池基于EasyExcel 生成 excel文件存储系统see also引言 需求: 根据查询条件导出数据,比如交易流水、设备安装资料。 流程设计:点击导…

牛客面经学习笔记(二)

锂离子电池的充电过程可以分为四个阶段&#xff1a;涓流充电&#xff08;低压预充&#xff09;、恒流充电、恒压充电以及充电终止。 阶段1&#xff1a;涓流充电——涓流充电用来先对完全放电的电池单元进行预充(恢复性充电)。在电池电压低于3V左右时采用涓流充电&#xff0c;涓…

Vue 生命周期详解含demo、面试常问问题案例

Vue 生命周期详解、面试常问问题案例 含 demo 文章目录 Vue 生命周期详解、面试常问问题案例 含 demo一、Vue 生命周期是什么二、Vue 中如何使用生命周期钩子1. **beforeCreate**2. **created**3. **beforeMount**4. **mounted**5. **beforeUpdate**6. **updated**7. **beforeD…

8.15笔记

一、mycat读写分离实现 1. 添加一个新的虚拟主机&#xff0c;设置ip为10.1.1.60,主机名为mycat.yuanyu.zhangmin.关闭防火墙 SELinux NetworkManager 2. 上传jdk和mycat安装包 3. 解压并且添加到指定的位置 [rootmycat ~]# ls anaconda-ks.cfg frp initserver.sh jdk1.8…

018集——递归函数和for循环对比(从1加到100实例) ——C#学习笔记

本例分别用递归函数和for循环&#xff0c;求出1到100的和&#xff1a; using System;namespace Mytest {class Mytest{static void Main(string[] args){Calculate Myc new Calculate();int YourNumber 100;int Mysum Myc.Xto1(YourNumber);Console.WriteLine("从1加到…

Element-03.组件-Pagination分页

一.常见组件-分页-属性 参数&#xff1a;background 说明&#xff1a;是否为分页按钮添加背景色 类型&#xff1a;boolean 有background即添加&#xff0c;没有则不添加 参数&#xff1a;layout 说明&#xff1a;组件布局&#xff0c;子组件名用逗号分隔 类型&#x…

86.小米相机修改拍照(尺寸,画幅,比例)的方法

目录 1.打开相机&#xff0c;拍照模式&#xff0c;上面有个箭头或三个点&#xff0c;点击 2.点击画幅 3.点击你想要的画幅即可。 想要修改手机照片的&#xff08;尺寸&#xff0c;画幅&#xff0c;比例&#xff09;时&#xff0c;总会去找分辨率&#xff0c;其实并不是&…

用后端实现一个简单的登录模块2 前端页面

该模块能做到的功能&#xff1a; 1阶&#xff1a;输入账号和密码&#xff0c;输入正确即可返回登录成功的信息&#xff0c;反之则登录失败 2阶&#xff1a;有简单的前端页面&#xff0c;有登录成功和失败的弹窗&#xff0c;还有登录成功的主页面 3阶&#xff1a;前端页面的注…

探索Python的中文转换魔法:zhconv库的神秘力量

文章目录 探索Python的中文转换魔法&#xff1a;zhconv库的神秘力量第一部分&#xff1a;背景介绍第二部分&#xff1a;库的概述第三部分&#xff1a;安装指南第四部分&#xff1a;函数使用示例第五部分&#xff1a;实际应用场景第六部分&#xff1a;常见问题与解决方案第七部分…

【Vue3】路由Query传参

【Vue3】路由Query传参 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子…

24/8/17算法笔记 策略梯度reinforce算法

import gym from matplotlib import pyplot as plt %matplotlib inline#创建环境 env gym.make(CartPole-v0) env.reset()#打印游戏 def show():plt.imshow(env.render(mode rgb_array))plt.show() show()定义网络模型 import torch #定义模型 model torch.nn.Sequential(t…

8月17日星期六今日早报简报微语报早读

8月17日星期六&#xff0c;农历七月十四&#xff0c;早报微语早读。 1、海关总署&#xff1a;接触过猴痘病例的人员入境时应主动申报&#xff1b; 2、284名运动员出征&#xff01;巴黎残奥会中国体育代表团成立&#xff1b; 3、四部门&#xff1a;继续执行对彩票一次中奖不超…