Keepalived 双机热备

本章主要内容:

  • Keepalived 双机热备基础知识
  • 学会构建双机热备系统
  • 学会构建LVS+HA 高可用群集

简介

在这个高度信息化的IT时代,企业的生产系统,业务运营,销售和支持,以及日常管理等环节越来越依赖于计算机和服务,对于高可用(HA)技术的应用需求不断提高,以便提供持续的,不间断的计算机系统或网络服务。

本章将学习如何使用 Keepalived 实现双机热备,包括针对IP地址的故障切换,以及在 LVS 高可用群集中的热备应用

1.1 Keepalived 双机热备基础知识

Keepalived 起初是专门针对LVS 设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(Health Checking)功能------判断 LVS 负载调度器,节点服务器的可用性,及时隔离并替换新的服务器,当故障主机恢复后将其重新加入群集

1.1.1Keepalived 概述及安装

Keepalived 的官方网站位于 http://www.keepalived.org/ 本章将以yum 方式讲解 Keepalived 的安装,配置和使用过程,在非 LVS 群集环境中使用时,Keepalived 也可以作为热备软件使用。

1.Keepalived 的热备方式

Keepalived 采用 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)热备份,以软件的方式实现 Linux 服务器的多机热备功能,VRRP 时针对路由器的一种备份解决方案--由多台路由器组成一个热备组,通过共用的虚拟IP 地址对外提供服务:每个热备组内同一时只有一台路由器提供服务,其他路由器处于冗余状态,若当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP,以继续提供服务 如图所示

热备组内的每台路由器都可能成为主路由器,虚拟路由器的IP地址(VIP)可以在热备组的路由器之间进行转移,所以也称为漂移IP地址。使用Keepalived 时,漂移地址的实现不需要手动建立虚接口配置文件(如上一章讲解的ens33:0)而是由Keepalived 根据配置文件自动管理。

2.Keepalived 的安装与服务控制
1)安装Keepalived

在CentOS7 系统中,使用YUM 方式安装 keepalived 会自动安装keepalived 所需的软件包。除此之外,在LVS 群集环境中应用时,也需要用到 ipvsadm 管理工具

复制代码
[root@Keepalived01 ~]# yum -y install keepalived ipvsadm
2)控制 Keepalived 服务

YUM 安装 keepalived 后,执行以下命令将 keepalived 服务设置为开机启动。

复制代码
[root@Keepalived01 ~]# systemctl enable keepalived.service 

1.1.2 使用 Keepalived 实现双机热备

基于 VRRP 的热备方式,Keepalived 可以用作服务器的故障切换,每个热备组可以有多台服务器------当然,最常用的就是双机热备了。在这种双机热备方案中,故障切换主要针对虚拟IP地址的漂移来实现,因此能够适用于各种应用服务器(不管 Web,FTP,Mail,还是SSH,DNS.....)

本小结将通过一个简单的案例来说明 Keepalived 双机热备的配置方法。其中,主,备服务器的IP地址为 192.168.182.100 和 192.168.182.101,基于漂移地址 192.168.182.200 提供Web服务

主,备服务器中都需要安装 Keepalived,具体步骤参考1.1.1节,使用YUM方式安装 httpd 提供web服务

1.主服务器的配置

Keepalived 服务的配置目录位于 /etc/keepalived/ 其中,Keepalived.conf 是主配置文件:另外包括一个子目录 samples/ 提供了许多配置详例作为参考。在Keepalived 的配置文件中,使用 global_defs {....} 区段指定全局参数,使用 vrrp_instance 实例名称 {....} 区段指定VRRP 热备参数,注释文件以 " !"号开头

复制代码
[root@Keepalived01 ~]# systemctl stop firewalld
[root@Keepalived01 ~]# cd /etc/keepalived/
[root@Keepalived01 keepalived]# cp keepalived.conf keepalived.conf.bak
[root@Keepalived01 keepalived]# vim keepalived.conf
global_defs {
        router_id Keepalived01    //本路由器(服务器)的名称
}


vrrp_instance VI_1 {    //定义VRRP 热备实例
    state MASTER        //热备状态,MASTER 表示主服务器
    interface ens33        //承载VIP接口的 ID 号,每个热备组保存一致
    virtual_router_id 1    //虚拟路由器的ID号,每个热备组保持一致
    priority 100        //优先级,数值越大优先级越高
    advert_int 1        //通告间隔秒数(心跳频率)
    authentication {        //认证信息,每个热备组保持一致
        auth_type PASS    //认证类型
        auth_pass 1111    //密码字串
    }
    virtual_ipaddress {
        192.168.182.200        //指定漂移地址(VIP)可以多有个
    }
}

确认上述配置无误,然后启动Keepalived 服务,实际状态为 master 的主服务器将为 ens33 接口自动添加 VIP 地址,通过 ip 命令可以查看(注意:ifconfig 命令看不到)

复制代码
[root@Keepalived01 keepalived]# systemctl start keepalived.service     //启动服务
[root@Keepalived01 keepalived]# ip addr show dev ens33 
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:e8:c0:2b brd ff:ff:ff:ff:ff:ff
    inet 192.168.182.100/24 brd 192.168.182.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.182.200/32 scope global ens33    //自动设置的VIP地址
       valid_lft forever preferred_lft forever
    inet6 fe80::8898:d4ee:8e2f:474b/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@Keepalived01 keepalived]# 
2.备份服务器的配置

在同一个keepalived热备组内所有的服务器的keepalived配置文件基本相同,包括虚拟路由器的id号认证信息、漂移地址、心跳帧率等,不同之处主要在于路由器名称、热备状态、优先级、

  • 路由器名称(router_id)建议为每个参与热备份服务器指定不同的名称
  • 热备状态(state)至少应有一台主服务器,将状态设为 MASTER;可以有多台备用的服务器,将状态设置为 BACKUP
  • 优先级(priority)数值越大取得VIP 控制权的优先级越高,因此主服务器的优先级应该设为最高;其他备用服务器的优先级可以依次减递,但不要相同,以免争夺 VIP 控制权时发生冲突

配置备用服务器(可以有多台)时,可以参考主服务器的 keepalived.conf 配置文件内容,只要修改路由器名称,热备状态,优先级就可以了

复制代码
[root@Keepalived02 ~]# systemctl stop firewalld.service 
[root@Keepalived02 ~]# cd /etc/keepalived/
[root@Keepalived02 keepalived]# cp keepalived.conf keepalived.conf.bak
[root@Keepalived02 keepalived]# vim keepalived.conf
global_defs {
        router_id keepalived02    //本路由器(服务器)名称
}

vrrp_instance VI_1 {
    state BACKUP        //备份状态为BACKUP
    interface ens33
    virtual_router_id 1
    priority 99    //优先级,数值低于主服务器
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.182.200
    }
}

确认配置无误,一样需要启动 Keepalived 服务,此时主服务器任然在线,VIP地址实际上任然由主服务器控制,其他服务器处于备用状态,因此在备用服务器中将不会有 ens33 添加VIP 地址

复制代码
[root@Keepalived02 keepalived]# systemctl start keepalived.service 
[root@Keepalived02 keepalived]# ip addr show dev ens33 
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:10:f2:b6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.182.101/24 brd 192.168.182.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::47b8:3cc0:3783:e45f/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@Keepalived02 keepalived]# 
3.测试双机热备功能

Keepalived 的日志消息保存在 /var/log/messages 文件中,在测试主,备故障自动切换功能时,可以跟踪此日志文件来观察备份状态的变化。以针对连通性和 Web 服务的测试为例,主要操作如下所述。

1)测试连通性

在客户机中执行 ping -t 192.168.182.200 命令,能够正常,持续ping通,根据以下操作继续观察测试结果

(1)停止启用主服务器的Keepalived 服务器,发现ping测试只中断了 1 或 2 个包即恢复正常,说明已有其他服务器接替 VIP地址,并及时响应客户机请求。可以看到主服务器没用ens33这个VIP控制权了

复制代码
[root@Keepalived01 keepalived]# systemctl stop keepalived.service 
[root@Keepalived01 keepalived]# ip addr show dev ens33 
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:e8:c0:2b brd ff:ff:ff:ff:ff:ff
    inet 192.168.182.100/24 brd 192.168.182.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::8898:d4ee:8e2f:474b/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@Keepalived01 keepalived]#

可以看到备用服务器已经夺取VIP控制权

复制代码
[root@Keepalived02 keepalived]# ip addr show dev ens33 
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:10:f2:b6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.182.101/24 brd 192.168.182.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.182.200/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::47b8:3cc0:3783:e45f/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@Keepalived02 keepalived]# 

(2)重新启动主服务器的 Keepalived 服务,发现 ping 测试只中断了 1 或 2 个包即恢复正常,说明主服务器已恢复正常,并夺回 VIP 地址的控制权

再次使用 ip addr show dev ens33 查看主,备服务器可以看到VIP已经重新被主服务器夺回控制权

2)Web 访问测试

在客户机中访问 http://192.168.182.200 ,将看到由主服务器 192.168.182.100 提供的网页文档

(1)停止启用主服务器的 Keepalived 服务,再次访问上述 Web 服务,将看到由备用服务器192.168.182.101 提供的网页文档,说明 VIP 地址以切换至备用服务器

(2)在重启启用主服务器的 Keepalived 服务,再次访问上述 Web 服务,将看到重新由主服务器192.168.182.100 提供的晚饭也文档,说明主服务器已重新夺取VIP 地址

3)查看日志记录

在执行主,备服务器故障切换的过程中,分别观察各自的 /var/log/messages 日志文件,可以看到MASTER,SLAVE 状态迁移记录

(1)主服务器中 Keepalived 服务状态先变为 stop 移除 VIP 地址,恢复后重新变更为 MASTER

复制代码
[root@Keepalived01 keepalived]# less /var/log/messages

通过上述测试过程,可以发现双机热备已经正常,客户机只要通过 VIP 地址就可以访问服务器所提供的 Web 等应用,其中任何一台服务器失效,另一台将会立即接替服务,从而实现调高可用性。实际应用时,注意主,备服务器所提供的 Web 服务内容要保存一致

1.2 LVS+Keepalived 高可用群集

Keepalived 的设计目标时构建高可用的 LVS 负载均衡群集,可以调用 ipvsadm 工具来创建虚拟服务器,管理服务器池,而不仅仅用作双机热备,使用,Keepalived 构建 LVS 群集更加简单易用,主要优势体现在:对 LVS 负载调度器实现热备切换,提高可用性:对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入

在基于LVS+Keepalived 群集结构中,至少包括两台热备的负载均衡调度器,三台以上的节点服务器。本节将以 DR 模式的 LVS 群集为基础,增加一台从负调度器,使用 Keepalived 来实现主,从调度器的热备,从而构建兼有负载均衡,糕可用两种能力的 LVS 网站群集平台,如图

使用 Keepalived 构建 LVS 群集时,也需要用到 ipvsadm 管理工具,但大部分工作会由 Keepalived 自动完成,不需要手动执行 ipvsadm (除了查看和监控群集以为)

1.配置主调度器

1)配置全局。热备配置

首先为主,从调度器实现热备功能,漂移地址使用LVS 群集的 VIP地址

复制代码
[root@Keepalived01 ~]# vim /etc/keepalived/keepalived.conf
[root@Keepalived01 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
	router_id Keepalived01
}


vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 1
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.182.200
    }
}

[root@Keepalived01 ~]# 
2)Web 服务器池配置

在Keepalived 的热备配置基础上添加 virtual_server VIP 端口 {.....} 区段来配置虚拟服务器主要包括对负载调度算法,群集工作模式,健康检查间隔,真实服务器地址等参数的设置

复制代码
[root@Keepalived01 ~]# vim /etc/keepalived/keepalived.conf
virtual_server 192.168.182.200 80 {        //虚拟服务器地址(VIP)端口
    delay_loop 15    //健康检查的时间间隔(秒)
    lb_algo rr    //轮询rr调度算法
    lb_kind DR        //直接路由DR群集工作模式
    persistence_timeout 60    //连接保持时间(秒) 若启用请去掉!号
    protocol TCP    //应用服务器采用的是TCP协议
    
    real_server 192.168.182.102 80 {        //第一个Web节点的地址,端口
        weight 1    //节点的权重
           TCP_CHECK{        //检查健康方式
            connect_port 80    //检查的目标端口
            connect_timeout 3    //连接超时(秒)
            nb_get_retry 3        //重试次数
            delay_before_retry 4    //重试间隔(秒)
        }   
    }       
            
   real_server 192.168.182.103 80 {    //第二个Web节点的地址,端口
        weight 1
           TCP_CHECK{
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 4
        }
    }
}
3)重启Keepalived fuwu
复制代码
[root@Keepalived01 ~]# systemctl restart keepalived.service 

2.配置从调度器

从调度器的配置与主调度器基本相同,也包括全局配置,热备配置,服务器池配置,只需要调整 router_id state priority 参数即可,其余内容完全相同。配置完成以后重启 Keepalived 服务

复制代码
[root@Keepalived02 ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
        router_id keepalived02
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 1
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.182.200
    persistence_timeout 60
    protocol TCP

    real_server 192.168.182.102 80 {
        weight 1
           TCP_CHECK{
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 4
        }
    }

   real_server 192.168.182.103 80 {
        weight 1
           TCP_CHECK{
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 4
        }
    }
}

[root@Keepalived02 ~]# systemctl restart keepalived.service

3.主/从服务器的参数配置

1)主服务器
复制代码
[root@Keepalived01 ~]# vim /etc/sysctl.conf 
[root@Keepalived01 ~]# cat /etc/sysctl.conf | grep net
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

[root@Keepalived01 ~]# sysctl -p
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

[root@Keepalived01 ~]# systemctl restart keepalived.service 
2)从服务器
复制代码
[root@Keepalived02 ~]# cat /etc/sysctl.conf | grep net
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

[root@Keepalived02 ~]# sysctl -p
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

[root@Keepalived02 ~]# systemctl restart keepalived.service

4.Web 服务池参数配置

复制代码
[root@node01 ~]# vim /etc/sysctl.conf 
[root@node01 ~]# cat /etc/sysctl.conf | grep net
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 = 2

[root@node01 ~]# sysctl -p
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 = 2

[root@node01 ~]# cd /etc/sysconfig/network-scripts/
[root@node01 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@node01 network-scripts]# vim ifcfg-lo:0
[root@node01 network-scripts]# vim ifcfg-lo:0
[root@node01 network-scripts]# cat ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.182.200
NETMASK=255.255.255.255
ONBOOT=yes
[root@node01 network-scripts]# ifup ifcfg-lo:0
[root@node01 network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.182.200  netmask 255.255.255.255
        loop  txqueuelen 1000  (Local Loopback)

[root@node01 network-scripts]# 

5.配置NFS共享存储

1)安装 nfs-utils,rpcbind 软件包

提供 RPC 支持的服务为 rpcbind,提供 NFS 共享的服务为 nfs,完成安装以后建议调整这两个服务的自启动状态,以便每次开机后自动启用。手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs。

复制代码
[root@NFS ~]# yum -y install nfs-utils rpcbind
[root@NFS ~]# systemctl enable nfs
[root@NFS ~]# systemctl enable rpcbind
2)设置共享目录

NFS 的配置文件为/etc/exports,文件内容默认为空(无任何共享)。在 exports 文件中设置共享资源时,记录格式为"目录位置客户机地址(权限选项)"。例如,若要将文件夹/opt/wwwroot 共享给 192.168.182.0/24 网段使用,允许读写操作,具体配置如下所示

复制代码
[root@NFS ~]#  mkdir /aaa
[root@NFS ~]# vim /etc/exports
[root@NFS ~]# cat /etc/exports
/aaa 192.168.182.0/24(rw,sync,no_root_squash)
3)启动NFS 服务程序
复制代码
[root@NFS ~]# systemctl start rpcbind
[root@NFS ~]# systemctl start nfs
[root@NFS ~]# netstat -anpt | grep rpc
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      67104/rpcbind       
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      67238/rpc.mountd    
tcp        0      0 0.0.0.0:33982           0.0.0.0:*               LISTEN      67235/rpc.statd     
tcp6       0      0 :::50091                :::*                    LISTEN      67235/rpc.statd     
tcp6       0      0 :::111                  :::*                    LISTEN      67104/rpcbind       
tcp6       0      0 :::20048                :::*                    LISTEN      67238/rpc.mountd    
[root@NFS ~]# 
4)查看本机发布的NFS 共享目录
复制代码
[root@NFS ~]# showmount -e
Export list for NFS:
/aaa 192.168.182.0/24
[root@NFS ~]# 

6.在客户机中访问 NFS 共享存储

NFS 协议的目标是提供一种网络文件系统,因此对 NFS 共享的访问也使用 mount 命令来进行挂载,对应的文件系统类型为 nfs。既可以手动挂载,也可以加入/etc/fstab 配置文件来实现开机自动挂载。考虑到群集系统中的网络稳定性,NFS 服务器与客户机之间最好使用专有网络进行连接。

1)Web池安装 rpcbind 软件包,并启动 rpcbind 服务

若要正常访问 NFS 共享资源,客户机中也需要安装 rpcbind 软件包,并启动 rpcbind 系统服务。另外,为了使用 showmount 查询工具,建议将 nfs-utils 软件包也一并装上

复制代码
[root@node01 ~]# yum -y install rpcbind nfs-utils
[root@node01 ~]# systemctl enable rpcbind
[root@node01 ~]# systemctl start rpcbind

如果已经安装了 nfs-utils 软件包,则客户机也可以使用 showmount 查看 NFS 服务器端共享了哪些目录,查询格式为"showmount -e 服务器地址

复制代码
[root@node01 ~]# showmount -e 192.168.182.105
Export list for 192.168.182.105:
/aaa 192.168.182.0/24
[root@node01 ~]# 

1.3 Web池安装 httpd 创建测试网页

1)Web池安装httpd,创建测试网页的命令如下
复制代码
[root@node01 ~]# yum -y install httpd
[root@node01 ~]# mount 192.168.182.105:/aaa /var/www/html/
[root@node01 ~]# vim /var/www/html/index.html
[root@node01 ~]# cat /var/www/html/index.html 
<h1>Hello Word</h1>
[root@node01 ~]#

[root@node02 ~]# mount 192.168.182.105:/aaa /var/www/html/
2)Web池启动httpd 服务程序
复制代码
[root@node01 ~]# systemctl enable httpd
[root@node01 ~]# systemctl start httpd
3)Web服务器池配置 fstab 自动挂载

修改/etc/fstab 配置文件,加入 NFS 共享目录的挂载设置。注意将文件系统类型设为 nfs,挂载参数建议添加_netdev(设备需要网络)。若添加 soft、intr 参数可以实现软挂载,允许在网络中断时放弃挂载。这样,客户机就可以在每次开机后自动挂载 NFS 共享资源了。

复制代码
[root@node01 ~]# vim /etc/fstab 
[root@node01 ~]# cat /etc/fstab | grep nfs
192.168.182.105:/aaa /var/www/html nfs   defaults,netdev 0 0
[root@node01 ~]# 

1.4 测试 LVS+Keepalived 高可用群集

在客户机的浏览器中,能够通过LVS+Keepalived 群集的 VIP 地址(192.168.182.200)正常访问Web 页面内容。当主,从调度器任何一个失效时,Web站点任然何以访问(可能需要刷新或者重新打开浏览器)只需服务器池有两台及以上的真实服务器可用,就可以实现访问量的负载均衡。

通过主,从调度器的 /var/log/messages 日志文件,可以追踪故障切换过程,若要查看负载分配情况,可以执行 ipvsadm-ln 或 ipvsadm -lnc 等操作。最终可以验证 LVS+Keepalived 高可用负载均衡群集的健壮性

复制代码
[root@Keepalived01 ~]# ipvsadm -lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 00:28  NONE        192.168.182.1:0    192.168.182.200:80 192.168.182.102:80
TCP 00:52  FIN_WAIT    192.168.182.1:59054 192.168.182.200:80 192.168.182.102:80
TCP 01:21  FIN_WAIT    192.168.182.1:59194 192.168.182.200:80 192.168.182.102:80
TCP 00:50  FIN_WAIT    192.168.182.1:59193 192.168.182.200:80 192.168.182.102:80
[root@Keepalived01 ~]#
相关推荐
倔强的石头_1 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab2 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence2 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神2 天前
三、用户与权限管理
数据库·mysql
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz3 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工3 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智3 天前
ARP代理--工作原理
运维·网络·arp·arp代理