keepalived+LVS配置详解_keepalived lvs配置-程序员宅基地

技术标签: keepalived  网络  负载均衡  lvs  服务与集群  高可用  

keepalived简介

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。

Keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP全名Virtual Route RedundancyProtocol(虚拟路由冗余协议),VRRP出现的目的就是为了解决静态路由单点故障问题,它能够保证当个别节点宕机时,整个网络可以不间断地运行,所以,keepalived 一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能。

keepalived的应用场景

  • 管理LVS软件
  • 基于VRRP实现高可用
  • 健康检查,故障切换
    keepalived官网地址
    通过官网介绍,我们可以得知keepalived提供的两个重要的功能:loadbalancing和high-availability。最初是专门为了LVS负载均衡软件设计的,可以用来管理并监控LVS集群系统中各个服务节点的状态,后来的版本中又加入了可以实现高可用的VRRP功能。

keepalived主要有两种应用场景,一个是通过配置keepalived结合ipvs做到负载均衡(LVS+Keepalived);另一个是通过自身健康检查、资源接管等功能做高可用(双机热备),实现故障转移,功能近似于Heartbeat。

keepalived工作原理

VRRP协议

keepalived是以VRRP协议为实现基础的,VRRP全称Vritual Router Redundancy Protocol,即虚拟路由冗余协议,可以认为是实现路由器高可用的协议。

  • VRRP是用来实现路由器冗余的协议。
  • VRRP协议是为了消除在静态缺省路由环境下路由器单点故障引起的网络失效而设计的主备模式的协议,使得发生故障而进行设计设备功能切换时可以不影响内外数据通信,不需要再修改内部网络的网络参数。
  • VRRP协议需要具备有IP备份,优先路由选择,减少不必要的路由器通信等功能。
  • VRRP协议将两台或多台路由器虚拟成一个设备,对外提供虚拟路由器IP(一个或多个)。然而,在路由器组内部,如果实际拥有这个对外IP的路由器如果工作正常的话,就是master,或者是通过算法选举产生的,master实现针对虚拟路由器IP的各种网络功能,如ARP请求,ICMP,以及数据的转发等,其他设备不具有该IP,状态时backup。除了接收master的VRRP状态通告信息外,不执行对外的网络功能,当主机失效时,backup将接管原先master的网络功能。
  • VRRP协议配置时,需要配置每个路由器的虚拟路由ID(VRID)和优先权值,使用VRID将路由器进行分组,具有相同VRID值的路由器为同一个组,VRID是一个0-255的整整数;同一个组中的路由器通过使用优先权值来选举MASTER。优先权大者为MASTER,优先权也是一个0-255的正整数。
    在高可用场景,就是把路由器换成服务器或者服务器上的应用:

通常情况下是将两台linux服务器组成一个热备组(master-backup),同一时间热备组内只有一台主服务器(master)提供服务,同时master会虚拟出一个共用IP地址(VIP),这个VIP只存在master上并对外提供服务。

如果keepalived检测到master宕机或服务故障,备服务器(backup)会自动接管VIP成为master,keepalived并将master从热备组移除,当master恢复后,会自动加入到热备组,默认再抢占成为master,起到故障转移功能。

核心组件

keepalived是模块化设计,不同模块负责不同的功能,主要有三个模块,分别是core、check和VRRP。

  • core模块:为keepalived的核心组件,负责住进程启动、维护以及全局配置文件的加载和解析;
  • check模块:负责健康检查,包括常见的各种检查方式,这里的配置决定了工作在哪个层;
  • VRRP模块:是实现VRRP协议的。

此外还有:

  • system call:系统调用
  • watch dog:监控check和vrrp进程的看管者
  • libipfwc:iptables(ipchains)库,配置LVS会用到
  • libipvs*:配置LVS时会用到

分层工作

keepalived做负载均衡时工作在TCP/IP协议的3/4/5层,做高可用时工作在OSI七层模型的3/4/7层,基本上一样的。

分层 功能 相关协议
应用层 网络服务和最终用户的一个接口 TFTP,HTTP,SNMP,DNS,FTP,SMTP,TELNET
表示层 数据的表示、安全、压缩 无协议
会话层 会话的建立、管理、中止 无协议
传输层 定义传输数据的协议端口号,以及流程和差错校验 TCP,UDP
网络层 进行逻辑地址寻址,实现不同网络之间的路径选择 IP,ICMP,RIP,OSPF,BGP,IGMP
数据链路层 建立逻辑连接、硬件地址寻址、差错校验等功能 SLIP,CSLIP,PPP,ARP,RARP,MTU
物理层 建立、连接、断开物理连接 ISO2110,IEEE802,IEEE802.2

具体工作层数,区别于使用的哪一个网络协议来进行的健康检查:

Layer3:工作在三层时,keepalived会定期向热备组中的服务器发送一个ICMP数据包,来判断某台服务器是否故障,如果没有响应则将这台服务器从热备组移除。

Layer4:工作在四层时,keepalived以TCP端口的状态判断服务器是否故障,比如MySQL的3306端口,如果无法访问则将这台服务器从热备组移除。

Layer7:工作在七层时,keepalived根据用户设定的策略判断服务器上的程序是否正常运行,比如HTTP请求的方式,如果返回错误状态码则将这台服务器从热备组移除。

在Keepalived服务器群之间,只有作为主的服务器不断发送VRRP广播包,告诉备它还活着,此时备不会抢占主,只有当主不可用,既备接受不到主的VRRP广播包,这时候备就会启动相关的服务接管主的任务向外提供服务,以保证服务的正常使用。

工作状态

keepalived正常启动的时候,共启动3个进程:
一个父进程,负责监控其子进程;一个时VRRP子进程,另外一个是checkers子进程;两个子进程都被系统watchlog看管,Healthcheck子进程检查各自服务器的健康状况。如果healthchecks进程检查到master上服务不可用了,就会通知本机上的VRRP子进程,让他删除通告,并且去掉虚拟IP,转换为BACKUP状态。

LVS简介

LVS官网
LVS中文站点
LVS 是 Linux Virtual Server 的简写,即Linux虚拟服务器,是一个虚拟的服务器集群系统,是根据iptables的实现来开发的,所以使用时会和iptables相似。

LVS三种模式

NAT模式(网络地址映射)

NAT模式工作原理是:客户端访问LVS时,LVS通过重写请求报文的目标地址,且根据预设的调度算法,将请求分派给后端真实服务器,真实服务器接收到请求处理后,发出响应报文也需要通过LVS返回,返回时需要修改报文的源地址,然后返回给客户,完成整个负载调度过程

  1. DNAT:目标地址转换,改变的是目标地址
  2. SNAT:源地址转换,改变的是源地址

NAT 模式就是使用 SNAT 和 DNAT 技术完成报的转发,NAT 方式可支持任何的操作系统,以及私有网络,并且只需一个 Internet IP 地址,非常节省成本,但是整个系统的性能受到限制。因为执行 NAT 每次需要重写数据包,有一定的延迟,另外,大部分应用有 80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对LVS形成很大压力,容易成为瓶颈

IPTUN模式(IP隧道)

IP TUN当LVS分配请求到不同的 real server,real server 处理请求后直接回应给用户,这样 LVS 仅处理客户机与服务器的一半连接。IP TUN 技术极大地提高了 LVS 的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过 100 个节点。real server 可以在任何 LAN 或 WAN 上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。但此模式要求所有服务器必须支持 IP 隧道协议,因此只能在 linux 下使用,在 windows 无法使用。

DR模式(直接路由)

DR与 IP TUN 类似,负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性,DR 与 IP TUN 相比,没有 IP 封装的开销,但由于采用物理层(修改 MAC地址)技术,所有服务器都必须在同一个局域网

DR和IP TUN区别
DR和IP TUN相比,没有IP封装的开销,但由于采用数据链路层(修改MAV地址)技术,所有服务器都必须在一个物理网段

三种模式对比

NAT模式 IP TUN模式 DR模式
对服务器要求 任何操做系统都支持 必须支持IP隧道协议,目前只有Linux支持
网络要求 局域网 局域网或广域网
支持的节点数 10-20个,据Diretor处理能力而定 可以支持100个节点
安全性 较高,可以隐藏real server 较差,real server容易暴露
IP要求 仅需要一个合法IP地址作为VIP 除VIP外,每个服务器需要拥有合法IP地址可以直接路由至客户端
拓展性
特点 地址转换 封装IP地址

keepalived+LVS配置

环境说明:

系统版本 软件版本 节点名称 节点IP地址
centos7.9 keepalived-2.2.7、LVS-1.27 master 192.168.182.130
centos7.9 keepalived-2.2.7、LVS-1.27 backup 192.168.182.131
centos7.9 httpd不同发行版本,httpd版本也不同 web01 192.168.182.132
centos7.9 httpd不同发行版本,httpd版本也不同 web02 192.168.182.133

1.master配置

// 安装前的准备工作

[root@master ~]# systemctl disable --now firewalld  //关闭防火墙
[root@master ~]# setenforce 0  //关闭selinux
[root@master ~]# head -7 /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled  //改为disabled


[root@master opt]# wget https://www.keepalived.org/software/keepalived-2.2.7.tar.gz  //下载keepalived

[root@master opt]# tar -zxf keepalived-2.2.7.tar.gz -C /usr/local/  //这里我解压到/usr/local 目录下,各位根据自己需求进行解压

[root@master keepalived-2.2.7]# pwd
/usr/local/keepalived-2.2.7
[root@master keepalived-2.2.7]# yum -y install gcc openssl-devel libnl3-devel //解决依赖问题
[root@master ~]# modprobe ip_vs  //加载ip_vs模块
[root@master ~]# modprobe ip_vs 
[root@master ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

[root@master ~]# vim /etc/sysctl.conf  //调整proc响应参数,并关闭linux内核重定向参数,添加下面内容
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
net.ipv4.ip_forward = 1
[root@master ~]# sysctl -p  //加载,使其生效

// 编译安装keepalived

[root@master keepalived-2.2.7]# ./configure --prefix=/usr/local/keepalived
[root@master keepalived-2.2.7]# make && make install

// 启动keepalived

[root@master keepalived]# pwd
/usr/local/keepalived/etc/keepalived
[root@master keepalived]# cp keepalived.conf.sample keepalived.conf  //因为没有keepalived配置文件,并且没有配置文件keepalived是启动不了的,所以需要我们自己copy一个配置文件
[root@master keepalived]# cp keepalived.conf keepalived.conf-bak  //做一个备份,这一步可做可不做
// 完成上面的步骤依旧启动不了,还需要做以下步骤
[root@master keepalived]# mkdir /etc/keepalived/
[root@master keepalived]# ln -s /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
[root@master keepalived]# vim keepalived.conf
interface ens33  //找到21行,将eth0改为ens33,这里的网卡名根据自己的网卡名来修改
[root@master keepalived]# systemctl enable --now keepalived  //这样就可以启动keepalived了。

// 安装LVS

[root@master keepalived]# yum -y install ipvsadm 

// 在第一次启动LVS时可能会出现报错,解决措施如下

[root@master keepalived]# systemctl cat ipvsadm.service 
# /usr/lib/systemd/system/ipvsadm.service
[Unit]
Description=Initialise the Linux Virtual Server
After=syslog.target network.target

[Service]
Type=oneshot
ExecStart=/bin/bash -c "exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm"  //我们可以看到LVS启动依赖etc下的ipvsadm这个文件,但是这个文件恰恰没有。
ExecStop=/bin/bash -c "exec /sbin/ipvsadm-save -n > /etc/sysconfig/ipvsadm"
ExecStop=/sbin/ipvsadm -C
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
[root@master keepalived]# touch /etc/sysconfig/ipvsadm //创建完成之后百年可重新启动了。
[root@master keepalived]# systemctl enable --now ipvsadm

2. keepalived配置文件

配置文件分为: 全局配置、VRRP配置、LVS配置
配置文件又包括以下模块

  • LOBAL CONFIGURATION
  • BFO CONFIGURATION
  • VRRP CONFIGURATION
  • LVS CONFIGURATION
! Configuration File for keepalived

global_defs {   //全局定义部分
   notification_email {  //设置报警邮件地址,可设置多个
     [email protected]  //接收通知邮件的地址
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]  //设置发送邮件通知地址
   smtp_server 192.168.200.1  //设置 smtp server 地址,可以ip或域名,可选端口号(默认是25)
   smtp_connect_timeout 30  //设置连接 smtp server超时时间
   router_id LVS_DEVEL  //主机标识,用于邮件通知
   vrrp_skip_check_adv_addr
   vrrp_strict  //严格执行VRRP协议规范,此模式不支持节点单播
   vrrp_garp_interval 0
   vrrp_gna_interval 0
   script_user keepalived_script   //指定运行脚本的用户名和组。默认使用用户的默认组。如未指定,默认为keepalived_script 用户,如无此用户,则使用root。
   enable_script_security  //如果路径为非root可写,不要配置脚本为root用户执行。
}

vrrp_instance VI_1 {  //VRRP实例部分定义,VI_1自定义的名称
    state MASTER  // 指定keepalived的角色,必须大写,可选值为MASTER|BACKUP
    interface eth0  //网卡设置,lvs需要绑定在网卡上,realserver绑定在回环口。区别:lvs对访问为外,realserver为内不易暴露本机信息
    virtual_router_id 51  // 虚拟路由标识,是一个数字,同一个vrrp 实例使用唯一的标识,MASTER和BACKUP 的 同一个 vrrp_instance 下 这个标识必须保持一致
    priority 100  // 定义优先级,数字越大,优先级越高
    advert_int 1  // 设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔,单位为秒,两个节点设置必须一样
    authentication {  //设置验证类型和密码,两个节点必须一致
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {  //设置虚拟IP地址,可以设置多个
        192.168.200.16
        192.168.200.17
        192.168.200.18
    track_script {    // 脚本监控状态
        chk_nginx_service // 可加权重,但会覆盖声明的脚本权重值chk_nginx_service weight -20
    }
     notify_master “写脚本的绝对路径”      //当前节点成为master时,通知脚本执行此脚本
     notify_backup “写脚本的绝对路径”  //当前节点成为master时,通知脚本执行此脚本
     notify_fault “写脚本绝对路径” //当前节点出现故障时,执行此脚本
    }
}

virtual_server 192.168.200.100 443 {  // 定义RealServer对应的VIP及服务端口,IP和端口之间用空格隔开
    delay_loop 6  // 每隔6秒查询realserver状态
    lb_algo rr  // 后端调试算法(load balancing algorithm)
    lb_kind NAT  //LVS调度类型NAT/DR/TUN
    persistence_timeout 50  // 同一IP的连接60秒内被分配到同一台realserver
    protocol TCP  // 用TCP协议检查realserver状态

    real_server 192.168.201.100 443 {
        weight 1  //权重值越大优先级越高,优先级越大lvs就越优先访问
        SSL_GET {  // keepalived的健康检查方式HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC
            url {
              path /
              digest ff20ad2481f97b1754ef3e12ecd3a9cc
            }
            url {
              path /mrtg/
              digest 9b3a0c85a887a256d6939da88aabd8cd
            }
            connect_timeout 3  3秒无响应为超时
            retry 3   //重连次数
            delay_before_retry 3  //重连间隔时间
            connect_port 80  //健康检查realserver的端口
        }
    }
}

3 修改keepalived配置文件

[root@master ~]# vim /etc/keepalived/keepalived.conf
router_id LVS_01  //修改此行,指定服务器名称,主备服务器名称须不同这里我修改为LVS_01
!vrrp_strict  //注释掉此行内容
state MASTER  //指定热备状态,主就改为MASTER,备就为BACKUP
interface ens33  //网卡名也要和自己的网卡名匹配
virtual_router_id 51 
nopreempt  //设置为非抢占模式,就是MASTER挂了之后BACKUP就不会去替代,如果想设置可以加上此行,这里我们不加
    virtual_ipaddress {  //指定集群的VIP
        192.168.182.100
virtual_server 192.168.182.100 80 { //指定虚拟服务器地址(VIP)、端口号,定义虚拟服务器和web服务器
delay_loop 6  //健康检查时间间隔,就是每隔6秒,检查MASTER是否存活
lb_algo rr  //指定调度算法,轮询(rr)
protocol TCP  //应用服务使用的是tcp协议
persistence_timeout 0  //连接保持时间默认是秒
real_server 192.168.182.132 80 {  //第一个web服务器的ip加端口号
        weight 1  节点权重
        TCP_CHECK { 
            connect_port 80  //检查目标端口
            connect_timeout 3  //添加连接超时
            nb_get_retry 3  //添加重试次数
            !retry 3 
            delay_before_retry 3  //添加重试间隔
              }
    }
 
 real_server 192.168.182.133 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

[root@master ~]# systemctl restart keepalived.service  //修改完之后重启keepalived

3.1配置VIP

[root@master ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33  //添加下面两行内容结即可
IPADDR1=192.168.182.100  //VIP地址 
NETMASK1=255.255.255.255  //VIP的子网掩码
[root@master ~]# systemctl restart network  //重启网卡服务

[root@master ~]# ip a
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:95:56:2e brd ff:ff:ff:ff:ff:ff
    inet 192.168.182.130/24 brd 192.168.182.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.182.100/32 scope global ens33  //这里就是我们刚才添加的VIP

3.2 配置负载均衡策略

[root@master ~]# ipvsadm-save > /etc/sysconfig/ipvsadm  //这条命令是用来保存负载分配策略的
[root@master ~]# ipvsadm -C  //此命令是用来清空分配策略的
[root@master ~]# ipvsadm -A -t 192.168.182.100:80 -s rr  //A表示的是添加虚拟服务器,t是指定VIP和端口号,s是指定算法,rr表示的是轮询算法
[root@master ~]# ipvsadm -a -t 192.168.182.100:80 -r 192.168.182.132:80 -g //a是添加真实服务器地址,r指定RIP以及端口号,RIP也就是后端服务器ip地址,g表示的是DR模式
[root@master ~]# ipvsadm -a -t 192.168.182.100:80 -r 192.168.182.133:80 -g  //132和133分别是web01和02

[root@master ~]# ipvsadm -ln  //查看节点状态
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.182.100:80 rr
TCP  10.10.10.2:1358 rr persistent 50
  -> 192.168.200.200:1358         Masq    1      0          0

backup也就是192.168.182.131的配置和上面的步骤一样,除以下地方不同之外,其他都一样

[root@backup ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

keepalived配置文件中根据你BACKUP进行修改
router_id LVS_02
state BACKUP
priority 90  //优先级要比主上面小

4 配置web01节点(192.168.182.132)

// 关闭防火墙和selinux
[root@web01 ~]# systemctl disable --now firewalld
[root@web01 ~]# setenforce 0
[root@web01 ~]# head -7 /etc/sysconfig/selinux 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled

4.1 安装httpd服务

[root@web01 ~]# yum -y install httpd
[root@web01 ~]# systemctl enable --now httpd  //设置开机自启
[root@web01 ~]# touch /var/www/html/index.html
[root@web01 ~]# vim /var/www/html/index.html 
<marquee><font color=blue><h1>this is web01<marquee>
[root@web01 ~]# systemctl restart httpd

[root@web01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo
DEVICE=lo:1
IPADDR1=192.168.182.100
NETMASK1=255.255.255.255
[root@web01 ~]# systemctl restart network
[root@web01 ~]# ifup lo:1  //开启网卡
没有ifconfig命令,解决措施
[root@web01 ~]# yum -y install net-tools
[root@web01 ~]# ifconfig lo:1  //查看lo:1,网卡
lo:1: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.182.100  netmask 255.255.255.255
        loop  txqueuelen 1000  (Local Loopback)

4.2 调整proc响应参数

[root@web01 ~]# vim /etc/sysctl.conf
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@web01 ~]# sysctl -p 

4.3 设置路由

[root@web01 ~]# route add -host 192.168.182.100 dev lo:1
[root@web01 ~]# route -n

web02的操作和上面web01一样

测试

关闭master上的keepalived
[root@master keepalived]# systemctl stop keepalived.service

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_60387497/article/details/129109280

智能推荐

matlab模拟gpd,GPD WIN1流畅玩游戏之DOS游戏,阿猫阿狗大作战 大宇16个DOS游戏全合集...-程序员宅基地

文章浏览阅读1.3k次。提取码: 2i5t++++++++++++++++++++收集了大宇的16个DOS游戏,WIN10可以直接玩,具体的都忘记了,有轩辕剑什么的但是阿猫阿狗大作战这个游戏画风可是真喜欢!!非常喜欢,这里就放出来给大家共享了。+++++++++++++++++++++++++++++++++++++++++《阿猫阿狗大作战Online》是由大宇集团旗下的上海软星于2005年研发的新一代3D休闲类网络对战..._win10 64位 怎么运行阿猫阿狗1

AutoHotkey博客转Markdown-程序员宅基地

文章浏览阅读211次,点赞10次,收藏2次。本文使用AutoHotkey定义快捷键打开对话框,用户粘贴博客地址,通过命令行调用clean-mark将网页博客转为Markdown文件。

一文读懂Python复杂网络分析库networkx | CSDN博文精选-程序员宅基地

文章浏览阅读2.5k次,点赞5次,收藏42次。作者 |yyl424525来源 | 程序员宅基地文章目录1. 简介安装支持四种图绘制网络图基本流程2. Graph-无向图节点边属性有向图和无向图互转3. DiGrap..._多层复杂网络 绘制

【STM32Cube笔记】3-STM32CubeIDE汉化_stm32cubemx可以翻译成中文-程序员宅基地

文章浏览阅读8k次,点赞12次,收藏58次。STM32CubeIDE汉化流程_stm32cubemx可以翻译成中文

c#/asp.net编程电子称连接电脑_.net连接电子秤-程序员宅基地

文章浏览阅读625次。请参考如下文章: 1 http://dev.firnow.com/course/3_program/cshapo/csharpjs/20100714/441346.html 2 http://topic.csdn.net/u/20080826/19/b4658057-12d6-470b-af5c-3e90b628ff04.html?1891073846_.net连接电子秤

TLS协议详解,一文带你了解TLS协议-程序员宅基地

文章浏览阅读7.9k次,点赞6次,收藏38次。本文介绍了TLS的概论、工作原理、发展历史、算法和参考资料。TLS是一种加密协议,用于保护网络通信的安全性和隐私性。它使用公钥加密和对称密钥加密两种加密方式来保护通信的安全性,可以防止黑客窃取用户的敏感信息。TLS的发展历史可以追溯到SSL 1.0,但由于存在安全漏洞而被废弃。TLS 1.0、TLS 1.1和TLS 1.2分别于1999年、2006年和2008年发布,进一步增强了安全性和性能。常用的加密算法包括AES、RSA、MD5等。_tls协议

随便推点

Proxmox VE 6.0管理指南——3.主机系统管理_未启用proxmox ve存储库-程序员宅基地

文章浏览阅读1w次。3.主机系统管理Proxmox VE基于著名的DebianLinux发行版。这意味着您可以访问Debian软件包的整个领域,并且基本系统的文档记录非常详尽。在Debian的管理员手册可在网上,并提供了一个全面介绍了Debian的操作系统(请参阅[Hertzog13])。标准的Proxmox VE安装使用De​​bian的默认存储库,因此您可以通过该渠道获得错误修复和安全更新。此..._未启用proxmox ve存储库

JAVA的数据类型_java数据类型-程序员宅基地

文章浏览阅读426次。Java的数据类型包括基本数据类型和引用数据类型。基本数据类型有byte、short、int、long、float、double、char和boolean,用于处理简单类型的数据。引用数据类型有class、interface和array,用于处理复杂类型的数据。在程序开发中,应根据具体情况选择合适的数据类型,以实现数据存储和计算的需要。_java数据类型

latex中如何正确输入 双引号_latex 双引号-程序员宅基地

文章浏览阅读9.6w次,点赞50次,收藏30次。latex中输入双引号时,如果都直接用键盘上的双引号键,打出的是一顺撇的。左面引号的正确输入法是:按两次“Tab上面,数字1左面那个键”。至于后边的引号,与老方法是一样的,即按两次单引号键(或一次SHIFT+单引号键---也就是一次双引号键啦怎么输入左单引号、左双引号、右单引号、有双引号?左单引号:`(键盘上1旁边的那个);左双引号:``;右单引号:'(键盘分号的右边那个);右双引号:''或"。在_latex 双引号

Mysql 删除重复数据保留一条有效数据_mysql去重复 保留一条-程序员宅基地

文章浏览阅读9.8k次,点赞5次,收藏21次。Copyright 蕃薯耀 2023-01-31。Copyright 蕃薯耀 2023-01-31。Mysql 删除重复数据,保留一条有效数据。_mysql去重复 保留一条

阳图PS版常见故障及排除方法_阳图底版-程序员宅基地

文章浏览阅读1.2k次。阳图PS版在使用过程中常见的故障很多,分析其原因除PS版本身的质量问题外,在制版过程及印刷过程中使用不当也是造成各种故障的重要原因。现根据制版及印刷的实际工作状况,对阳图PS版常的故障进行具体分析,并提出排除方法,以利印刷厂更好地用好PS版。  一、印刷空白部分上脏:   1、曝光不足: PS版的制版原理是在曝光过程中,光通过阳图底版的透光部分(空白部分)使感光剂发生解,放出气氮气,感_阳图底版

Chinaren校友录-程序员宅基地

文章浏览阅读5k次。Chinaren校友录链接:http://alumni.chinaren.com/class/class_index.jsp?classuuid=2917034545012452392 ..._chinaren校友录官网

推荐文章

热门文章

相关标签