当前位置: 首页 > news >正文

Nginx+Keepalive集群实战

随着Nginx在国内的发展潮流,越来越多的互联网公司都在使用Nginx,Nginx高性能、稳定性成为IT人士青睐的HTTP和反向代理服务器。
Nginx负载均衡一般位于整个网站架构的最前端或者中间层,如果为最前端时单台Nginx会存在单点故障,也就是一台Nginx宕机,会影响用户对整个网站的访问。所以需要加入Nginx备份服务器,Nginx主服务器与备份服务器之间形成高可用,一旦发现Nginx主宕机,能快速将网站恢复至备份主机。Nginx+keepalived网络架构如图23-1所示

3.1. 环境准备:

nginx版本:nginx v1.18.0
keepalive版本:keepalive v1.3.5
Nginx-1:192.168.20.10(master)
Nginx-2:192.168.20.20(backup)

3.2. 安装软件包:

#下载keepalive源码包:
wget https://www.keepalived.org/software/keepalived-1.3.5.tar.gz
#下载nginx源码包:
wget http://nginx.org/download/nginx-1.18.0.tar.gz
#解压:
tar -xf keepalived-1.3.5.tar.gz -C /usr/src/
tar -xf nginx-1.18.0.tar.gz -C /usr/src/
#安装依赖包:
yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel libnl libnl-devel libnfnetlink libnfnetlink-devel
#创建nginx用户:
useradd -s /sbin/nologin nginx -M
#预编译nginx:
cd /usr/src/nginx-1.18.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
#编译&安装nginx
make && make install
#配置nginx环境变量:
vim /etc/profile
#后面添加如下内容:
export PATH=$PATH:/usr/local/nginx/sbin
  source /etc/profile 
#预编译keepalive:
cd /usr/src/keepalived-1.3.5/
./configure --prefix=/usr/local/keepalived/ --with-kernel-dir=/usr/src/kernels/3.10.0-514.el7.x86_64/
#编译&&安装keepalive:
make && install
#安装完成后,keepalived的默认配置文件地址和我们安装的地址不一样,所以复制过去就可以了
cp /usr/src/keepalived-1.3.5/keepalived/etc/init.d/keepalived /etc/init.d/
mkdir -p /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf  /etc/keepalived/
cp /usr/src/keepalived-1.3.5/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
#配置环境变量
vim /etc/profile
#后面添加如下内容:
export PATH=$PATH:/usr/local/keepalived/sbin
  source /etc/profile 

注意:以上的配置master和backup都需要安装

3.3. 配置keepalive:

  • 配置Keepalived,两台服务器keepalived.conf内容都为如下,state均设置为backup,Backup服务器需要修改优先级为90。

vim /etc/keepalived/keepalive.conf
! Configuration File for keepalived
   } 
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}  
vrrp_script chk_nginx {
    script  "/data/sh/check_nginx.sh"
    interval 2 
    weight 2 
 }  
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 5
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }   
    virtual_ipaddress {
        192.168.20.100
    }   
    track_script {
     chk_nginx 
    } 
}

3.4. 创建脚本:

  • 如上配置还需要建立check_nginx脚本,用于检查本地Nginx是否存活,如果不存活,则kill keepalived实现切换。其中check_nginx.sh脚本内容如下

#创建存放脚本路径:
mkdir -p /data/sh/
#创建脚本:
vim /data/sh/check_nginx.sh
#!/bin/bash 
#auto  check  nginx  process 
#2020年9月15日17:16:29
#by  author  XiaoYuEr 
killall  -0   nginx
if  [[ $? -ne 0 ]];then 
service keepalived stop
fi
chmod +x /data/sh/check_nginx.sh
##killall这个命令没有需要安装psmisc-22.20-15.el7.x86_64即可
注意:这个脚本需要两台电脑都需要创建
启动keepalive时可能会遇到以下报错:

systemd: PID file /usr/local/keepalived/var/run/keepalived.pid not readable (yet?) after start.
#这时需要修改keepalived.service文件把pid路径修改一下就可以了
vim /lib/systemd/system/keepalived.service
#修改为以下内容即可:
PIDFile=/var/run/keepalived.pid

3.5. 测试:

  • 在两台Nginx服务器分别新建index.html测试,一台nginx挂掉是否还可以访问:

#在master中配置index.html
[root@localhost ~]# echo "this is 192.168.20.10 page" > /usr/local/nginx/html/index.html
#在backup机器中配置index.html
echo "this is 192.168.20.20 page" > /usr/local/nginx/html/index.html
打开浏览器访问192.168.20.100:

把master主机nginx关掉再次访问看下:

3.6. Keepalived配置文件参数详解:
完整的keepalived的配置文件,其配置文件keepalived.conf可以包含三个文本块:全局定义块、VRRP实例定义块及虚拟服务器定义块。全局定义块和虚拟服务器定义块是必须的,如果在只有一个负载均衡器的场合,就不须VRRP实例定义块。

[全局定义块]
global_defs {
      notification_email {                           --指定keepalived在发生切换时需要发送email到的对象,一行一个;
         wgkgood@gmail.com                          
      }    
     notification_email_from  root@localhost        --指定发件人
     smtp_server  127.0.0.1                           --指定smtp服务器地址
     smtp_connect_timeout 3                          --指定smtp连接超时时间
     router_id LVS_DEVEL                             --运行keepalived机器的标识
}    
[监控Nginx进程]            
vrrp_script    chk_nginx  {    
    script "/data/script/nginx.sh"                  --监控服务脚本,脚本x执行权限;
    interval 2                                        --检测时间间隔(执行脚本间隔)
    weight 2                                        --权重
}                
[VRRP实例定义块]                
vrrp_sync_group VG_1{                                --监控多个网段的实例
        group {                 
  VI_1                                                 --实例名1
  VI_2    
 }    
 notify_master /data/sh/nginx.sh                      --指定当切换到master时,执行的脚本
 notify_backup /data/sh/nginx.sh                      --指定当切换到backup时,执行的脚本
 notify   /data/sh/nginx.sh                            --发生任何切换,均执行的脚本
 smtp_alert                                         --使用global_defs中提供的邮件地址和smtp服务器发送邮件通知;
}        
vrrp_instance VI_1 {        
    state BACKUP                                    --设置主机状态,MASTER|BACKUP
    nopreempt                                       --设置为不抢占
interface eth0                                       --对外提供服务的网络接口
lvs_sync_daemon_inteface eth0                       --负载均衡器之间监控接口; 
    track_interface {                                --设置额外的监控,网卡出现问题都会切换;
     eth0    
     eth1    
    }    
    mcast_src_ip                                    --发送组播包的地址,如果不设置默认使用绑定网卡的primary ip
    garp_master_delay                                  --在切换到master状态后,延迟进行gratuitous ARP请求
    virtual_router_id 50                            --VRID标记 ,路由ID,可通过#tcpdump vrrp查看
    priority 90                                        --优先级,优先级高者竞选为master
    advert_int 5                                    --检查间隔,默认5秒
    preempt_delay                                   --抢占延时,默认5分钟
    debug                                           --debug日志级别
    authentication {                                --设置认证
        auth_type PASS                              --认证方式
        auth_pass 1111                              --认证密码
    }
    track_script {                                  --以脚本为监控chk_nginx;
        chk_nginx        
    }        
    virtual_ipaddress {                             --设置vip地址
        192.168.111.188
    }
}
注意:使用了脚本监控Nginx或者MYSQL,不需要下面虚拟服务器设置块。
[虚拟服务器定义块]
virtual_server 192.168.111.188 3306 {
    delay_loop 6                                      --健康检查时间间隔
    lb_algo rr                                        --调度算法rr|wrr|lc|wlc|lblc|sh|dh
    lb_kind DR                                        --负载均衡转发规则NAT|DR|TUN
    persistence_timeout  5                            --会话保持时间
    protocol TCP                                      --使用的协议
    real_server 192.168.1.12 3306 {    
               weight 1                               --默认为1,0为失效
               notify_up   <string> | <quoted-string> --在检测到server up后执行脚本;
               notify_down <string> | <quoted-string> --在检测到server down后执行脚本;
               TCP_CHECK {
               connect_timeout 3                   --连接超时时间;
               nb_get_retry  1                        --重连次数;
               delay_before_retry 1                 --重连间隔时间;
               connect_port 3306                     --健康检查的端口;
               }
       HTTP_GET {    
       url  {
          path /index.html                         --检测url,可写多个
          digest  24326582a86bee478bac72d5af25089e --检测效验码
          --digest效验码获取方法:genhash -s IP -p 80 -u http://IP/index.html 
          status_code 200                          --检测返回http状态码
      }
}
}

4. 企业级Nginx+Keepalived双主架构实战
Nginx+keepalived主备模式,始终存在一台服务器处于空闲状态,如何更好的把两台服务器利用起来呢,可以借助Nginx+keepalived双主架构来实现,如图23-2所示,将架构改成双主架构,也即同时两台对外两个VIP地址,同时接收用户的请求。

 

4.1. 环境准备:
nginx版本:nginx v1.18.0
keepalive版本:keepalive v1.3.5
Nginx-1:192.168.20.10(master) (backup)
Nginx-2:192.168.20.20(backup) (master)

4.2. 配置如下:

  • 以下内容是接着上面的配置来完成的。

#以下配置是master端配置的,即192.168.20.10:
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_nginx {
    script  "/data/sh/check_nginx.sh"
    interval 2
    weight 2
 }
#VIP1
vrrp_instance VI_1 {
    state MASTER
    interface ens33
     lvs_sync_daemon_inteface ens33
    virtual_router_id 51
    priority 100
    advert_int 5
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.20.100
    }
    track_script {
     chk_nginx
    }
}
#VIP2
vrrp_instance VI_2 {
     state BACKUP
     interface ens33
     lvs_sync_daemon_inteface ens33
     virtual_router_id 52
     priority  90
     advert_int 5
     nopreempt
     authentication {
         auth_type  PASS
         auth_pass  2222
     }
     virtual_ipaddress {
         192.168.20.200
     }
     track_script {
     chk_nginx
    }
 }

#backup端配置即:192.168.20.20
! Configuration File for keepalived
global_defs {
   notification_email {
     acassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30

   notification_email {
     acassen@firewall.loc
   } 
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}  
vrrp_script chk_nginx {
    script  "/data/sh/check_nginx.sh"
    interval 2 
    weight 2 
 }  
#VIP1
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    lvs_sync_daemon_inteface ens33
    virtual_router_id 51
    priority 90
    advert_int 5
    nopreempt
    authentication {
        auth_pass 1111
    }   
    virtual_ipaddress {
        192.168.20.100
    }   
    track_script {
     chk_nginx 
    } 
}   
#VIP2
vrrp_instance VI_2 {
     state MASTER  
     interface ens33
     lvs_sync_daemon_inteface ens33
     virtual_router_id  52 
     priority  100
     advert_int 5 
     nopreempt  
     authentication {
         auth_type  PASS
         auth_pass  2222
     }   
     virtual_ipaddress {
         192.168.20.200 
     }   
     track_script {
     chk_nginx 
    } 
 } 

4.3. 测试:

  • 两个VIP在一台服务器,是由于另外一台服务器down机,VIP都漂移到本机网卡下。

[root@localhost ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:ec:10:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.20.10/24 brd 192.168.20.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.20.100/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.20.200/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::cbc:47d:6f9d:da7/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Nginx+keepalived双主企业架构,在日常维护及管理过程中需要如下几个方面:
Keepalived主配置文件必须设置不同的VRRP名称,同时优先级和VIP设置也各不相同;
Nginx网站总访问量为两台Nginx服务器之和,可以写脚本自动统计访问量;
两台Nginx为Master,存在两个VIP地址,用户从外网访问VIP,需配置域名映射到两个VIP上方可。
通过外网DNS映射不同VIP的方法也称为DNS负载均衡模式; 可以通过Zabbix实时监控VIP访问状态是否正常。

相关文章:

Nginx+Keepalive集群实战

随着Nginx在国内的发展潮流&#xff0c;越来越多的互联网公司都在使用Nginx&#xff0c;Nginx高性能、稳定性成为IT人士青睐的HTTP和反向代理服务器。 Nginx负载均衡一般位于整个网站架构的最前端或者中间层&#xff0c;如果为最前端时单台Nginx会存在单点故障&#xff0c;也就…...

[数据集][目标检测]街道乱放广告牌检测数据集VOC+YOLO格式114张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;114 标注数量(xml文件个数)&#xff1a;114 标注数量(txt文件个数)&#xff1a;114 标注类别…...

腾讯云的免费ssl证书过期后不占用免费额度

我申请了三张免费证书&#xff0c;两张过期了&#xff0c;已使用的数量还是1&#xff0c;说明已过期的不占免费额度&#xff0c;这样的话&#xff0c;只要每三个月重新申请就能一直用免费证书了。 下证很快&#xff0c;第一张一分钟以内&#xff0c;第二张大概5分钟左右。 原来…...

MySQL学习(DDL,DML,DQL)基本语法总结

DDL 使用某个数据库 use world;展示表 show tables;创建表 create table student(id int,name varchar(10),age int,gender varchar(10));删除表 drop table student; 修改表结构 查看表结构 desc student;添加列 alter table student add dept varchar(10);修改列名和类型…...

JAVA学习-练习试用Java实现“单词反转”

问题&#xff1a; 随便输出一个字符串 String str "45abc,defg"; 里面含有 abc&#xff0c;de&#xff0c;fg 三个单词 怎么处理能让单词反转&#xff0c;其他顺序不变呢 输出 “45cba,edgf”; 解答思路&#xff1a; 以下是使用 Java 实现的单词反转程序&#xff1a…...

【MySQL】深圳大学数据库实验一

目录 一、实验目的 二、实验要求 三、实验设备 四、建议的实验步骤 4.1 使用SQL语句创建如上两张关系表 4.2 EXERCISES. 1 SIMPLE COMMANDS 4.3 EXERCISES 2 JOINS 4.4 EXERCISES 3 FUNCTIONS 4.5 EXERCISES 4 DATES 五、实验总结 5.1 数据库定义语言&#xff08;DDL…...

接口测试 —— 如何设计高效的测试用例!

摘要&#xff1a; 随着互联网应用的日益复杂化&#xff0c;接口测试已成为保证软件质量不可或缺的一部分。本文将探讨如何有效地设计接口测试用例&#xff0c;并提供实用的建议和示例。 一、引言 接口测试&#xff08;API测试&#xff09;是确保系统各部分之间交互正确性的关键…...

linux top命令介绍以及使用

文章目录 介绍 top 命令1. top 的基本功能2. 如何启动 top3. top 的输出解释系统概况任务和 CPU 使用情况内存和交换空间进程信息 4. 常用操作 总结查看逻辑CPU的个数查看系统运行时间 介绍 top 命令 top 是一个在类 Unix 系统中广泛使用的命令行工具&#xff0c;用于实时显示…...

必备资源!精选大模型领域100篇必读论文,赶紧加入收藏夹!

本文主要为当前大模型领域热门研究方向&#xff08;如文生图、文生视频、文生音乐等&#xff09;的热门论文。希望能够为大家提供较为全面的大模型最新研究进展。当然&#xff0c;目前还无法涵盖所有热门论文以及研究方向&#xff0c;望请见谅。 以下&#xff0c;为2024年2月份…...

基于STM32设计的防盗书包(华为云IOT)(216)

文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】整体构架【3】上位机开发思路1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要【5】项目背景1.4 开发工具的选择【1】设备端开发…...

2024高教社杯全国大学生数学建模竞赛C题原创python代码

2024高教社杯全国大学生数学建模竞赛C题原创python代码 C题题目&#xff1a;农作物的种植策略 思路可以参考我主页之前的文章 以下均为python代码&#xff0c;推荐用anaconda中的notebook当作编译环境 from gurobipy import Model import pandas as pd import gurobipy as g…...

Java基础 - 14 - Java高级技术

一.单元测试 就是针对最小的功能单元&#xff08;方法&#xff09;&#xff0c;编写测试代码对其进行正确性测试 1.1 Junit单元测试框架 可以用来对方法进行测试&#xff0c;它是第三方公司开源出来的&#xff08;很多开发工具已经集成了Junit框架&#xff0c;如IDEA&#xff…...

glsl着色器学习(六)

准备工作已经做完&#xff0c;下面开始渲染 gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);gl.clearColor(0.5, 0.7, 1.0, 1.0); gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);gl.enable(gl.DEPTH_TEST); gl.enable(gl.CULL_FACE);设置视口 gl.viewport(0,…...

毒枸杞事件启示录:EasyCVR视频AI智能监管方案如何重塑食品卫生安全防线

一、方案背景 近年来&#xff0c;食品安全问题频发&#xff0c;引发了社会各界的广泛关注。其中&#xff0c;毒枸杞事件尤为引人关注。新闻报道&#xff0c;在青海格尔木、甘肃靖远等地&#xff0c;部分商户为了提升枸杞的品相&#xff0c;违规使用焦亚硫酸钠和工业硫磺进行“…...

git进阶·团队开发的时候为何要创建临时分支来修复bug

若在团队开发中&#xff0c;突然遇到一个功能性bug&#xff0c;你会怎么使用git来管理分支呢&#xff1f; 在近些年来&#xff0c;团队工作的经验中&#xff0c;我总结出来的是&#xff0c;最好是先创建一个临时分支来修复bug&#xff0c;修复好后&#xff0c;再合并到主分支或…...

Unity 性能优化工具收集

本文地址&#xff1a;https://blog.csdn.net/t163361/article/details/141809415 Unity原始工具 UPR 官方 UPR UPR桌面端解决方案&#xff0c;减轻测试设备性能压力&#xff0c;使测试过程更加顺畅。提供CLI用于自动化测试系统对接。 PerformanceBenchmarkReporter Unity 性…...

linux下的Socket网络编程教程

套接字概念 Socket本身有“插座”的意思&#xff0c;在Linux环境下&#xff0c;用于表示进程间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。与管道类似的&#xff0c;Linux系统将其封装成文件的目的是为了统一接口&#xff0c;使得读写套接字和读写文件的操作…...

华为人工智能重要服务总结

一&#xff0c;视觉智能服务 一&#xff0c;图像识别服务 1.媒资图像标签服务 媒资素材管理&#xff0c;内容推荐广告营销等 2.图像描述服务 融合计算机视觉&#xff0c;自然语言处理和多模态技术&#xff0c;对输入图像进行画面内容描述 3.主体识别服务 像主体识别能检测出…...

涉嫌欺诈者利用机器人通过播放AI创作的音乐赚取1000万美元版税

北卡罗莱纳州的一名男子因涉嫌上传数十万首由AI生成的歌曲到流媒体服务平台&#xff0c;并使用机器人播放数十亿次而面临诈骗指控。自2017年以来&#xff0c;Michael Smith据称通过这一方式获得了超过1000万美元的版税收入。更多详情 现年52岁的Smith于周三被逮捕。同一天公布…...

k8s helm

k8s Helm 是Kubernetes的包管理工具&#xff0c;类似于Linux系统中常用的apt、yum等包管理工具。Helm通过定义、安装和升级Kubernetes应用程序来简化Kubernetes应用部署的复杂性。以下是对k8s Helm的详细解析&#xff1a; 一、Helm的基本概念 Chart&#xff1a;Chart是Helm的…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...