LVS—Linux Virtual Server

集群和分布式

系统性能拓展方式:

  • Scale UP:垂直拓展,提高单个服务器的性能,如增加CPU、内存等,单台服务器的性能是有上限的,不可能无限制垂直拓展。
  • Scale Out:水平拓展,增加设备,并行的运行多个服务。即Cluster集群

集群

Cluster:集群,为解决某个特定问题将多台计算机组合起来形成的单个系统

三种类型

LB

Load Balancing,负载均衡,由多个主机组成,每个主机只承担一部分访问请求。

产品分类
软件负载均衡

LVS:四层路由,根据用户请求的IP和端口号,实现将用户的请求分发至不同的主机

HAProxy:支持七层调度,主要针对http协议实现负载均衡

Nginx:支持七层调度,主要针对http、smtp、pop3、imap等协议实现负载均衡,只负责解析有限的七层协议

硬件负载均衡

F5 BIG-IP

Citrix Netscaler

A10

HA

High Availiablity,高可用,以提升服务的始终在线能力为目标,不会因为宕机而导致服务不可用

衡量可用性:在线时间/(在线时间+故障时间)

1年 = 365天 = 8760小时

99% 即一年内有 8760 * 1% = 87.6小时故障

99.9% 即一年内有 8760 * 0.1% = 8.76小时故障

99.99% 即一年内有 8760 * 0.01% = 52.6分钟故障

99.999% 即一年内有 8760 * 0.001% = 5.26分钟故障

99.9999% 即一年内有 8760 * 0.0001% = 31秒故障

产品

Keepalived

HPC

High—performance computing,高性能计算集群,计算海量数据,解决复杂问题。

分布式

分布式存储:Ceph,GlusterFS,FastDFS,MogileFS

分布式计算:hadoop,Spark

分布式常见应用:

  • 分布式应用服务按照功能拆分,使用微服务
  • 分布式静态资源.静态资源放在不同的存储集群上
  • 分布式数据和存储--使用key-value缓存系统
  • 分布式计算--对特殊业务使用分布式计算,比如Hadoop集群

对比

集群:同一个业务系统,部署在多台服务器上。集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的

分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起来,才是完整的业务

分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

LVS

VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS。LVS是集成到内核中的,工作在INPUT链的位置,将发往INPUT的流量进行处理。

相关术语:

VS:Virtual Server,负责调度

RS:Real Server,真正提供服务的服务器

CIP:Client IP

VIP:Virtual Server IP,VS主机的外网IP

DIP:Director IP,VS主机的内网IP

RIP:Real Server IP

工作模式

一、LVS-NAT 地址转换模式

本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某个挑出的RS的RIP和Port实现转发

工作原理

  1. 客户端发送请求到LVS(负载均衡器),请求报文源地址是CIP(客户端IP),目标地址是VIP(LVS外网IP)
  2. LVS收到请求报文后,发现请求的是规则中存在的地址,它将把VIP修改为RIP(真实服务器IP)并依据调度算法将报文发送至RS
  3. RS收到请求报文将响应该请求,会把响应报文返回至LVS
  4. LVS将响应报文的源IP修改为本机的VIP并发送至客户端

注意

  • RIP和DIP应在同一个网络,且应使用私网IP;
  • RIP的网关必须指向lVS的DIP,否则响应报文无法送达客户端。
  • 请求报文和响应报文都必须经过Director转发,Director容易成为系统瓶颈
  • 支持端口映射,可修改请求报文的目标端口
  • VS必须是Linux系统,RS可以是任意系统

二、LVS-DR 直接路由模式

Direct Routing,直接路由,LVS默认模式,应用最广泛。通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在接口的MAC,目标MAC是某个挑选出来的RS的RIP所在接口的MAC地址。源IP/Port、目标IP/Port都保持不变

工作原理

  1. 客户端发送请求到LVS,请求报文源地址是CIP,目标地址是VIP
  2. LVS收到请求报文后,发现请求的是规则中存在的地址,它将把源MAC地址修改为自己DIP的MAC地址,目标MAC地址修改为RIP的MAC地址,并依据调度算法将报文发送至RS
  3. RS收到并处理请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端

注意

  • Direct和各RS都配置有VIP
  • 确保前端路由器将目标IP为VIP的请求报文发送至Direct
    • 在前端网关做静态绑定VIP和Direct的MAC地址
    • 在RS上使用arptables工具
      • arptables -A IN -d $VIP -j DROP
      • arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
    • 在RS上修改内核参数限制arp通告及应答级别
      • /proc/sys/net/ipv4/conf/all/arp_ignore
        • 0 默认值,表示可以用本地任意接口上配置的任意地址进行响应
        • 1 仅在请求的目标IP配置在本地主机中接收到请求报文的接口时才响应
      • /proc/sys/net/ipv4/conf/all/arp_announce
        • 0 默认值,把本机所有接口调度所有信息向每个接口的网络进行通告
        • 1 尽量避免将接口信息向非直连网络进行通告
        • 2 必须避免将接口信息向非本网络进行通过
  • RS的RIP可用私网地址/公网地址;RIP与DIP在同一网络;RIP网关不能指向DIP,以确保响应报文不会经过Direct
  • RS和Direct要在同个物理网络
  • 请求报文要经过Direct,但响应报文不经过Direct,而是直接发往Client
  • 不支持端口映射(端口不能修改)
  • 无需开启ip_forward
  • RS可用大多数系统

三、LVS-TUNIP 隧道模式

不修改请求报文的IP首部(源IP是CIP,目标IP是VIP),而是在原IP报文外再封装一个IP首部(源IP为DIP,目标IP为RIP),将报文发给选出的RS,RS直接响应客户端(源IP是VIP,目标IP是CIP)

工作原理

  1. 客户端发送请求到LVS,请求报文源地址是CIP,目标地址是VIP
  2. LVS收到请求报文后,发现请求的是规则中存在的地址,它将在客户端请求报文的首部再封装一层IP报文,将源IP改为DIP,将目标IP改为RIP,并将包发送给RS
  3. RS收到请求报文后,拆开第一层封装发现里面还有一层IP首部的目标地址是自己lo接口的VIP,会再次处理请求报文,并将响应报文通过lo接口送给eth0网卡直接发送给客户端

注意

  • RIP与DIP可以不处于同一个物理网络,RS的网关一般不能指向DIP,且RIP可以和公网通信。也就是说集群节点可以跨互联网实现。DIP、VIP、RIP可以是公网地址
  • RS的tun接口需配置VIP地址,以便接收direct发过来的数据包,以及作为响应报文的源IP
  • Direct转发给RS时需要借助隧道,隧道外层的IP头部源IP是DIP,目标IP是RIP,而RS响应给客户端的IP头部是根据隧道内层的IP头分析得到的,源IP是VIP,目标IP是CIP
  • 请求报文要经过Direct,但响应不经过Direct,响应由RS自己完成
  • 不支持端口映射
  • RS的系统必须支持隧道功能

四、LVS-FULLNAT

通过同时修改请求报文的源IP和目标IP进行地址转发。

CIP > DIP     VIP > RIP

解决的是LVS和RS跨VLAN的问题,而跨VLAN问题解决后,LVS和RS不再存在VLAN上的从属关系,可做到多个LVS对应多个RS,解决水平扩容问题

 注意:

  • VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此RIP的网关一般不指向DIP
  • RS收到的请求报文源地址是DIP,因此只需响应给DIP;但Direct还需将其发给Client
  • 请求和响应报文都经过Direct
  • 相对NAT模式,可更好实现LVS和RS间跨VLAN通讯
  • 支持端口映射

各个工作模式总结比较

NATTUNDR
RS服务器系统任意支持隧道支持Non-arp
RS服务器网络私有网络局域网/广域网局域网
RS服务器数量10-20100100
RS服务器网关负载均衡器自身的路由自身路由
优点端口转换广域网性能最好
缺点Direct易成为瓶颈支持隧道

不支持跨网段

效率一般最高

调试算法

根据其调度时是否考虑各个RS当前的负载状态分为两种:静态方法和动态方法

静态算法

仅根据算法本身进行调度

  • RR:roundrobin,轮询
  • WRR:Weighted RR,加权轮询
  • SH:Source Hashing,实现session sticky,源IP地址hash;将来自同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定
  • DH:Destination Hashing;目标地址hash,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发给第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如Web缓存

动态算法

主要根据每个RS当前的负载状态以及调度算法进行调度Overhead=value,较小的RS将被调度

  • LC:least connections,适用于长链接应用
    • Overhead=activeconns*256+inactiveconns
  • WLC:Weight LC,默认调度方法
    • Overhead=(activeconns*256+inactiveconns)/weight
  • SED:Shortest Exception Delay,初始连接权重高优先,只检查活动连接,而不考虑非活动连接
    • Overhead=(activeconns+1)*256/weight
  • NQ:Never Queue,第一轮均匀分配,后续SED
  • LBLC:Locality—Based LC,动态DH算法,使用场景:根据负载状态实现正向代理,实现Web Cache等
  • LBLCR:LBLC with Replications,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS,实现Web Cache等

内核版本4.15后新增调度算法

FO (Weighted Fail Over)调度算法,在此FO算法中,遍历虚拟服务所关联的真实服务器链表,找到还
未过载(未设置IP_ _VS_ DEST_ F_ OVERLOAD标志)的且权重最高的真实服务器,进行调度

OVF (Overflow-connection) 调度算法,基于真实服务器的活动连接数量和权重值实现。将新连接调度到权重值最高的真实服务器,直到其活动连接数量超过权重值,之后调度到下一-个权重值最高的真实服务器,在此OVF算法中,遍历虚拟服务相关联的真实服务器链表,找到权重值最高的可用真实服务器。

一个可用的真实服务器需要同时满足以下条件: 

  • 未过载(未设置IP_ VS_ DEST_ F_ OVERLOAD标志)
  • 真实服务器当前的活动连接数量小于其权重值
  • 其权重值不为零

相关软件

程序包:ipvsadm

Unit File: ipvsadm.service

主程序: /usr/sbin/ipvsadm

规则保存工具: /usr/sbin/ipvsadm-save

规则重载工具: /usr/sbin/ipvsadm-restore

配置文件: /etc/sysconfig/ipvsadm-config

ipvs调度规则文件: /etc/sysconfig/ipvsadm

ipvsadm命令

管理集群服务

增加、修改

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]

-A:添加一个集群服务

-E:编辑一个集群服务

-t:TCP协议端口,VIP:TCP_Port

-u:UDP协议端口,VIP:UDP_Port

-f:firewalld Mark,标记,一个数字

-s scheduler:指定集群的调度算法,默认为WLC

-p:设置超时时间,开启后表示在指定时间内,来自同一个IP的请求都会转发到后端同一台真实服务器

删除

ipvsadm -D -t|u|f service-address

管理集群上的RS

增加、修改

ipvsadm -a|e -t|u|f service-address -r service-address [-g|i|m] [-w weight]

-a:添加一个真实服务器

-e:编辑一个真实服务器

-g:gateway,dr类型,默认

-i:ipip,tun类型

-m:masquerade,nat类型

-w:weight,权重

删除

ipvsadm -d -t|u|f service-address -r service-address

清空定义的所有内容

ipvsadm -C

清空计数器

ipvsadm -Z [-t|u|f service-address]

查看

ipvsadm -L|l [options]

options:

--numeric,-n:以数字形式输出地址和端口

--exact:拓展信息

--connection,-c:当前IPVS连接输出

--state:统计信息

--rate:输出速率信息

ipvs规则

/proc/net/ip_vs

ipvs连接

/proc/net/ip_vs_conn

保存:建议保存至/etc/sysconfig/ipvsadm

ipvsadm-save > 路径

ipvsadm -S > 路径

systemctl stop ipvsadm.service  #会自动保存规则到/etc/sysconfig/ipvsadm

重载

ipvsadm-restore < 路径

systemctl start ipvsadm.service  #会自动加载/etc/sysconfig/ipvsadm的规则

#查看内核支持LVS信息
[root@wenzi ~]#grep -i -C 10 ipvs /boot/config-4.18.0-193.el8.x86_64
...
# IPVS transport protocol load balancing support
#支持的协议
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_PROTO_SCTP=y# IPVS scheduler
#调度算法
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_FO=m
CONFIG_IP_VS_OVF=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
# CONFIG_IP_VS_MH is not set
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m# IPVS SH scheduler
CONFIG_IP_VS_SH_TAB_BITS=8# IPVS MH scheduler
CONFIG_IP_VS_MH_TAB_INDEX=12
...

NAT实验

主机名IPGW
Client192.168.10.11/24
LVS

192.168.10.12/24

192.168.20.1/24

RS1192.168.20.21/24192.168.20.1
RS2192.168.20.22/24192.168.20.1

RS1和RS2安装httpd,作为测试LVS效果

 

 LVS安装ipvsadm

#LVS主机安装ipvsadm
yum -y install ipvsadm


#查看是否开启ipv4转发功能,0是没有开启,1是开启
sysctl net.ipv4.ip_forward
#开启ipv4转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
#使配置生效
sysctl -p

#配置LVS负载均衡策略  

# -A指定VIP,-t指定TCP,-s指定调度算法rr

ipvsadm -A -t 192.168.10.12:80 -s rr

# -a指定真实服务器,-t指定TCP,-m指nat模式

ipvsadm -a -t 192.168.10.12:80 -r 192.168.20.21:80 -m

ipvsadm -a -t 192.168.10.12:80 -r 192.168.20.22:80 -m

#查看已配置的策略

ipvsadm -Ln

 

 从Client主机访问LVS

DR实验

主机名IPGW
Client192.168.10.11/24192.168.10.1
Router

192.168.10.1/24

192.168.29.141/24

LVS

lo:VIP:192.168.29.100/32

192.168.29.142/24

192.168.29.141/24
RS1

lo:VIP:192.168.29.100/32

192.168.29.143/24

192.168.29.141/24
RS2

lo:VIP:192.168.29.100/32

192.168.29.149/24

192.168.29.141/24

 路由器Router

#开启ipv4路由转发功能

[root@wenzi ~]#echo "net.ipv4.ip_forward"  >> /etc/sysctl.conf

 RS1

[root@RS1 ~]#yum -y install httpd

[root@RS1 ~]#echo "web1" > /var/www/html/index.html

[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/all/arp_announce
[root@RS1 ~]#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

#在lo口配置VIP
[root@RS1 ~]#ifconfig lo:1 192.168.29.100/32
[root@RS1 ~]#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
    inet 192.168.29.100/0 scope global lo:1
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:05:13:8b brd ff:ff:ff:ff:ff:ff
    inet 192.168.29.143/24 brd 192.168.29.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::5433:5ac9:62bb:cf34/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

RS2

[root@RS1 ~]#yum -y install httpd

[root@RS1 ~]#echo "web2" > /var/www/html/index.html

[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/all/arp_announce
[root@RS1 ~]#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

#在lo口配置VIP
[root@RS1 ~]#ifconfig lo:1 192.168.29.100/32

[root@RS2 ~]#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
    inet 192.168.29.100/0 scope global lo:1
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:2b:af:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.29.149/24 brd 192.168.29.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::10a:4a5a:dfca:7a85/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

LVS

#在lo口配置VIP

[root@LVS ~]#ifconfig lo:1 192.168.29.100/32

[root@LVS ~]#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
    inet 192.168.29.100/0 scope global lo:1
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:ea:07:84 brd ff:ff:ff:ff:ff:ff
    inet 192.168.29.142/24 brd 192.168.29.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::9648:92b:c378:fddf/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

[root@LVS ~]#ipvsadm -A -t 192.168.29.100:80 -s rr
[root@LVS ~]#ipvsadm -a -t 192.168.29.100:80 -r 192.168.29.143 -g
[root@LVS ~]#ipvsadm -a -t 192.168.29.100:80 -r 192.168.29.149 -g

[root@LVS ~]#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.29.100:80 rr
  -> 192.168.29.143:80            Route   1      0          0         
  -> 192.168.29.149:80            Route   1      0          0   

客户端测试

LVS高可用实现

LVS不可用时

Director不可用时,整个系统将不可用;

解决方案:

高可用,Keepalived、heartbeat/corosync

RS不可用时

某个RS不可用时,Director依然会调度请求至此RS

解决方案:

由Director对各个RS健康状态进行检查,失败时禁用,成功时启用。

Keepalived、heartbeat/corosync、Idirectord。

检测方式:icmp(网络层)、端口检测(传输层)、请求某关键资源(应用层)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css的应用详解

一、css的应用 1、在标签上的应用 <img style"height: 500px; width:500px" src"/static/1.jpg" /> <div style"color:red;">祖国</div>将样式直接写在标签上 2、在head标签中应用style标签 <!DOCTYPE html> <ht…

红外雨量计(光学雨量传感器)在小型气象站的应用

红外雨量计&#xff08;光学雨量传感器&#xff09;在小型气象站的应用 红外雨量计是一种常见的气象测量设备&#xff0c;也是小型气象站中一个重要的组成部分。随着现代科技的发展&#xff0c;红外雨量计逐渐取代了传统的测雨器&#xff0c;成为广大气象从业人员的首选设备。…

测试的基本概念(测试系列2)

目录 前言&#xff1a; 1.什么是需求 1.1需求的定义 1.2为什么有软件需求 1.3测试人眼里的需求 2测试用例 2.1什么是测试用例 2.2为什么要有测试用例 3.软件错误&#xff08;BUG&#xff09; 3.1什么是bug 4.软件的生命周期 5.开发模型 5.1瀑布模型 5.2螺旋模型 …

针对Weblogic上的shiro漏洞利用工具

工具介绍 日常项目中&#xff0c;可能会碰见部署在weblogic上的shiro&#xff0c;所以先写了这个生成攻击payload的小Demo&#xff0c;方便后面使用。但目前只支持无回显命令执行&#xff0c;后续回显、内存马功能后面出差后再写。 关注【Hack分享吧】公众号&#xff0c;回复关…

Ubuntu下配置Redis哨兵集群

目录 准备实例和配置 启动哨兵集群 测试配置 搭建一个三节点形成的Sentinel集群&#xff0c;来监管Redis主从集群。 三个sentinel哨兵实例信息如下&#xff1a; 节点IPPORTs1192.168.22.13527001s2192.168.22.13527002s3192.168.22.13527003 准备实例和配置 要在同一台虚…

1766_perl实现readlines功能

全部学习汇总&#xff1a; GreyZhang/perl_basic: some perl basic learning notes. (github.com) 近段时间写一个Perl程序&#xff0c;中间反反复复用到了文件的读写。虽说是用Perl的基本功能实现读写非常简单&#xff0c;但是写的过程中我不止一次在想Python以及MATLAB的功能…

SpringBoot 对象存储 MinIO

SpringBoot 对象存储 MinIO 1.MinIO简介 MinIO 是一个基于 Go 实现的高性能、兼容 S3 协议的对象存储。它采用 GNU AGPL v3 开源协议&#xff0c;项目地址是 https://github.com/minio/minio&#xff0c;官网是 https://min.io。 它适合存储海量的非结构化的数据&#xff0c…

在Windows Server2016上搭建Active Directory域控服务

搭建服务端 使用Windows2016数据中心版完成 1. 配置服务器角色 2. 选择服务器角色 3. 选择当前服务器4. 选择Active Directory和DNS角色5. 确认安装 6. 提升为Domain Controller域控服务器 7. 设置根域 8. 配置保护密码 9. DNS 10. NetBIOS配置 11. 指定数据文件位置 12. 确…

vue进阶-消息的订阅与发布

&#x1f4d6;vue基础学习-组件 介绍了嵌套组件间父子组件通过 props 属性进行传参。子组件传递数据给父组件通过 $emit() 返回自定义事件&#xff0c;父组件调用自定义事件接收子组件返回参数。 &#x1f4d6;vue进阶-vue-route 介绍了路由组件传参&#xff0c;两种方式&…

Springboot发送邮件

博主介绍&#xff1a;✌全网粉丝3W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

InstructGPT:语言模型的人类反馈指令对齐

论文标题&#xff1a;Training language models to follow instructions with human feedback论文链接&#xff1a;https://arxiv.org/abs/2203.02155论文来源&#xff1a;OpenAI 一、概述 大型语言模型&#xff08;Large language models&#xff0c;LLMs&#xff09;可以通过…

2023西南赛区ciscn -- do you like read

Attack 打开后一个商城页面 在login as admin那里有个登录页面&#xff0c;账号admin&#xff0c;密码爆破即可得到admin123 也可以在book.php?bookisbn1进行sql注入得到密码&#xff0c;这里发现是没有注入waf的 登录进来是一个Book List的管理页面&#xff0c;同时在审计源…