LVS负载均衡群集

本文深入探讨了LVS(Linux Virtual Server)负载均衡群集,介绍了群集的含义、解决互联网应用面临的挑战。详细讲解了LVS的工作原理、功能、组织架构,包括其在负载均衡、高可用性方面的应用。同时,阐述了LVS的不同工作模式,如NAT、DR和TUN,并提供了NAT模式的LVS负载均衡部署步骤。
摘要由CSDN通过智能技术生成

LVS负载均衡群集

关于LVS虚拟服务器

企业群集应用概述

群集的含义

  • Cluster,集群、群集
  • 由多台主机构成,但对外只表现为一个整体

问题

  • 互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器力不从心

解决方法

使用价格昂贵的小型机、大型机

使用普通服务器构建服务群集

LVS集群(Linux Virtual server)

  • 集群概念
  • lvs模型
  • lvs调度算法
  • lvs实现
  • lvs高可用性,负载均衡

image-20211117084745069

image-20211117084830510

群集和分布式

系统性能扩展方式:

  • Scale UP:垂直扩展,向上扩展,增强,性能更强的计算机运行同样的服务
  • Scale Out:水平扩展,向外扩展,增加设备,并行地运行多个服务器调度分配问题,Cluster

垂直扩展不再提及:

随着计算机性能你的增长 ,其价格会成倍增长

单台计算机的性能是有上限的,不可能无限制地垂直扩展,多核CPU意味着即使是单台计算机也可以并行的。那么,为什么不一开始就并行化技术?

集群Cluster

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

根据Cluster所针对的目标差异,可分为三种类型:

  1. LB(负载均衡群集):Load Balancing,负载均衡,多个主机组成,每个主机只承担一部分访问请求
  2. HA(高可用群集):High Availiablity,高可用,避免SPOF(single point of failure)
  3. HPC(高性能群集):High performance computing,高性能

负载均衡群集(Load Balancing cluster)

  • 提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发高负载(LB)的整体性能
  • LB的负载分配依赖于主节点的分流算法
#轮询(Round Robin):将收到的访问请求按照顺序轮流分配给群集中的各节点,均等地对待每台服务器,而不管服务器实际的连接数和系统负载。
#加权轮询(weighted Round Robin):根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务并且分配的请求越多,这样可以保证性能高的节点承担更多请求。
#最少连接(Least connections):根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。如果所有的服务器节点性能相近,采用这种方式可以更好地均衡负载。
#加权最少连接(weighted Least connections):在服务器节点的性能差异较大的情况下,调度器可以根据节点服务器负载自动调整权重,权重较高的节点将承担更大比例的活动连接负载。
#IP_Hash根据请求来源的IP地址进行Hash计算,得到后端服务器,这样来自同一个IP的请求总是会落到同一台服务器上处理,以致于可以将请求上下文信息存储在这个服务器上,
#fair采用的不是内建负载均衡使用的轮换的均衡算法,而是可以根据页面大小、加载时间长短智能的进行负载均衡。也就是根据后端服务器时间来分配用户请求,响应时间短的优先分配
#url_hash 按访问ur1的hash结果来分配请求,使每个ur1定向到同一个后端服务器,后端服务器为缓存时比较有效。具体没研究过

高可用群集(High Availability Cluster)

  • 提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果
  • HA的工作方式包括双工和主从两种模式

高性能运算群集(High Performance Compter Cluster)

  • 提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
  • 高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力

分布式系统

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

分布式计算:hadoop,spark

分布式常见应用

  • 分布式应用——服务按照功能拆分,使用微服务(单一应用程序划分划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值)
  • 分布式静态资源——静态资源放在不同的存储集群上
  • 分布式数据和存储——使用key-value缓存系统
  • 分布式计算——对特殊业务使用分布式计算,比如hadoop集群

集群和分布式

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

分布式:

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

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

对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器完成同一业务。如果有用户进行相应业务访问时,负载均衡更具后端那台服务器的负载情况,决定由那一台去完成响应,并且一台服务器垮了,其他的服务器可以顶上来,分布式的每一个节点,都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败

集群设计原则

可扩展性——集群的横向扩展能力

可用性——无故障时间(SLA service level agreement)

性能——访问响应时间

容量——单位时间内的最大并发吞吐量

集群设计实现

基础设施层面

  • 提升硬件资源性能——从入口防火墙到后端 web server 均使用更高性能的硬件资源
  • 多域名——DNS轮询A记录解析
  • 多入口——将A记录解析到多个公网IP入口
  • 多机房——同城+异地容灾
  • CDN(content delivery network)——基于GSLB(global server balance)实现全局负载均衡,如:DNS

业务层面

  • 分层:安全层、负载层、静态层、动态层、(缓存层、存储层)持久化与非持久化
  • 分割:依据功能分割大业务为小服务
  • 分布式:对于特殊场景的业务,使用分布式计算

LB Cluster 负载均衡集群

按实现方式划分

  • 硬件

    • F5 Big-IP(F5服务器负载均衡模块)
    • Citrix Netscaler
  • 软件

    • lvs:linux virtul server,阿里四层slb(server load balance)使用
    • nginx:支持七层调度,阿里七层slb使用 tengine
    • haproxy:支持七层调度
    • ats:apache traffic server,yahoo捐助给apache
    • perlbal:perl 编写
    • pound

基于工作的协议层划分

  • 传输层(通用):DNAT 和 DPORT

    LVS:

    nginx:stream

    haproxy:mode tcp

  • 应用层(专用):针对特定协议,常称为proxy server

    http:nginx,httpd,haproxy(mode http)…

    fastcgi:nginx,httpd,…

    mysql:mysql-proxy,mycat…

负载均衡的会话保持

1.session sticky:同一用户调度固定服务器

Source lP: LVS sh算法(对某一特定服务而言)

Cookie

2.session replication:每台服务器拥有全部session(复制)

session multicast cluster

3.session server:专门的session服务器(server)

Memcached,Redis

HA高可用集群实现

keepalived:vrrp协议

Ais:应用接口规范

heartbeat

cman+rgmanager(RHCS)

coresync_pacemaker

Linux Virtual Server简介

LVS介绍

LVS:Linux Virtual Server,负载调度器,内核集成,章文嵩(花名正明), 阿里的四层SLB(Server Load Balance)是基于LVS+keepalived实现

LVS 官网:http://www.linuxvirtualserver.org/
阿里SLB和LVS:
https://yq.aliyun.com/articles/1803
https://github.com/alibaba/LVS

LVS工作原理

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

LVS 功能及组织架构

负载均衡的应用场景为高访问量的业务,提高应用程序的可用性和可靠性。

扩展应用程序

可以根据业务发展的需要,随时添加和移除ECS实例来扩展应用系统的服务能力,适用于各种Web服务

器和App服务器。

消除单点故障

可以在负载均衡实例下添加多台ECS实例。当其中一部分ECS实例发生故障后,负载均衡会自动屏蔽故

障的ECS实例,将请求分发给正常运行的ECS实例,保证应用系统仍能正常工作

同城容灾 (多可用区容灾)

为了提供更加稳定可靠的负载均衡服务,阿里云负载均衡已在各地域部署了多可用区以实现同地域容

灾。当主可用区出现机房故障或不可用时,负载均衡仍然有能力在非常短的时间内(如:大约30s中

断)切换到另外一个备可用区恢复服务能力;当主可用区恢复时,负载均衡同样会自动切换到主可用区

提供服务。

使用负载均衡时,您可以将负载均衡实例部署在支持多可用区的地域以实现同城容灾。此外,建议您结

合自身的应用需要,综合考虑后端服务器的部署。如果您的每个可用区均至少添加了一台ECS实例,那

么此种部署模式下的负载均衡服务的效率是最高的。

LVS集群类型中的术语

  • vS: Virtual Server,Director Server(DS), Dispatcher(调度器),Load Balancer (Ivs服务器)
  • RS: Real Server(lvs), upstream server(nginx), backend server(haproxy)(真实服务器)
  • VIP: Client lP(客户机IP)
  • VIP: Virtual serve lP VS外网的IP
  • DIP: Director IP VS内网的IP
  • RIP: Real server IP(真实IP)

image-20211117095538274

LVS工作模式和相关命令

LVS集群的工作模式

  • lvs-nat:修改请求报文的目标IP,多目标lP的DNAT
  • lvs-dr:操纵封装新的MAC地址(直接路由)
  • lvs-tun:隧道模式

LVS的NAT模式

image-20211117095707072

地址转换
  • Network Address Translation,简称NAT模式
  • 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
  • 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式

lvs-nat:本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某处的RS的RIP和PORT实现转发

(1)RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP

(2)请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈

(3)支持端口映射,可修改请求报文的目标PORT

(4) VS必须是Linux系统,RS可以是任意OS系统

IP隧道
  1. RIP和DIP可以不处于同一物理网络中,RS的网关一般不能指向DIP,且RIP可以和公网通信。也就是

    说集群节点可以跨互联网实现。DIP, VIP, RIP可以是公网地址。

  2. RealServer的通道接口上需要配置VIP地址,以便接收DIP转发过来的数据包,以及作为响应的

    报文源IP。

  3. DIP转发给RealServer时需要借助隧道,隧道外层的IP头部的源IP是DIP,目标IP是RIP,而

    RealServer响应给客户端的IP头部是根据隧道内层的IP头分析得到的,源IP是VIP,目标IP是CIP

  4. 请求报文要经由Director,但响应不经由Director,响应由RealServer自己完成

  5. 不支持端口映射

  6. RS的OS须支持隧道功能

一般来说,隧道模式常会用来负载调度缓存服务器组,这些缓存服务器一般放置在不同的网络环境,可以就近
折返给客户端。在请求对象不在Cache服务器本地命中的情况下,Cache服务器要向源服务器发送请求,将结
果取回,最后将结果返回给用户。
直接路由

直接路由(Direct Routing):简称 DR 模式,采用半开放式的网络结构,与 TUN 模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。

负载调度器与各节点服务器通过本地网络连接,不需要建立专用的 IP 隧道直接路由,LVS默认模式,应用最广泛,通过请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变

LVS工作模式总结和比较
NATTUNDR
优点端口转换WAN性能最好
缺点性能瓶颈服务器支持隧道模式不支持跨网段
真实服务器要求anyTunnelingNon-arp device
支持网络private(私网)LAN/WAN(私网/公网)LAN(私网)
真实服务器数量low (10~20)High (100)High (100)
真实服务器网关lvs内网地址Own router(网工定义)Own router(网工定义)

ipvsadm 工具

ipvsadm 工具选项说明

-A: 添加虚拟服务器
-D: 删除整个虚拟服务器
-s: 指定负载调度算法(轮询: rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc)
-a: 添加真实服务器(节点服务器)
-d: 删除某一个节点
-t: 指定VIP地址及TCP端口
-r: 指定RIP地址及TCP端口
-m: 表示使用NAT群集模式
-g: 表示使用DR模式
-i: 表示使用TUN模式
一w: 设置权重(权重为0时表示暂停节点)
-p 60: 表示保持长连接60秒
-l: 列表查看 LVS虚拟服务器(默认为查看所有)
-n: 以数字形式显示地址、端口等信息,常与"-l“选项组合使用。ipvsadm -ln

NAT模式 LVS负载均衡部署

配置环境

负载调度器:配置双网卡 
内网:192.168.254.40(ens33)  
外网卡:12.0.0.1(ens36)

二台WEB服务器集群池:192.168.254.20、192.168.254.30    
一台NFS共享服务器:192.168.254.10
客户端:12.0.0.100

部署共享存储(NFS服务器:192.168.254.10)

NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡 群集来说,使用 NFS 协议来共享数据存储是比较常见的做法,NFS 也是 NAS 存储设备必然支持的一种协议。

NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持
systemctl stop firewalld #关闭防火墙
 
setenforce 0 #关闭selinux

yum install nfs-utils rpcbind -y #安装nfs服务

[root@localhost ~]# systemctl start rpcbind.service
[root@localhost ~]# systemctl start nfs.service
[root@localhost ~]# systemctl enable nfs.service

[root@localhost ~]# systemctl enable rpcbind.service
[root@localhost ~]# mkdir /opt/cao /opt/rui
[root@localhost ~]# chmod 777 /opt/cao /opt/rui

[root@localhost ~]# vim /etc/exports
/opt/cao 192.168.254.0/24(rw,sync)
/opt/rui 192.168.254.0/24(rw,sync)

[root@localhost ~]# exportfs -rv
exporting 192.168.254.0/24:/opt/rui
exporting 192.168.254.0/24:/opt/cao

节点服务器

服务器1

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install httpd -y

[root@localhost ~]# systemctl start httpd.service
[root@localhost ~]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# yum -y install nfs-utils rpcbind

[root@localhost ~]# showmount -e 192.168.254.10
Export list for 192.168.254.10:
/opt/rui 192.168.254.0/24
/opt/cao 192.168.254.0/24

[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl enable rpcbind
Created symlink from /etc/systemd/system/multi-user.target.wants/rpcbind.service to /usr/lib/systemd/system/rpcbind.service.

[root@localhost ~]# mount 192.168.254.10:/opt/cao /var/www/html
[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   50G  3.7G   47G    8% /
devtmpfs                 897M     0  897M    0% /dev
tmpfs                    912M     0  912M    0% /dev/shm
tmpfs                    912M   18M  895M    2% /run
tmpfs                    912M     0  912M    0% /sys/fs/cgroup
/dev/sda1               1014M  179M  836M   18% /boot
/dev/mapper/centos-home   27G   33M   27G    1% /home
tmpfs                    183M  4.0K  183M    1% /run/user/42
tmpfs                    183M   36K  183M    1% /run/user/0
/dev/sr0                 4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
192.168.254.10:/opt/cao   50G  3.6G   47G    8% /var/www/html

[root@localhost ~]# echo ' this is cao web! ' > /var/www/html/index.html
[root@localhost opt]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 

image-20211214170205230

#重启网卡
[root@localhost ~]# systemctl restart network

服务器2

[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# systemctl disable firewalld.service 
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install httpd -y

[root@localhost ~]# systemctl start httpd.service 
[root@localhost ~]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# yum -y install nfs-utils rpcbind

[root@localhost ~]# showmount -e 192.168.254.10
Export list for 192.168.254.10:
/opt/rui 192.168.254.0/24
/opt/cao 192.168.254.0/24
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl enable rpcbind
Created symlink from /etc/systemd/system/multi-user.target.wants/rpcbind.service to /usr/lib/systemd/system/rpcbind.service.
[root@localhost ~]# showmount -e 192.168.254.10
Export list for 192.168.254.10:
/opt/rui 192.168.254.0/24
/opt/cao 192.168.254.0/24

[root@localhost ~]# mount 192.168.254.10:/opt/rui /var/www/html/
[root@localhost ~]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
/dev/mapper/centos-root 38815216 4138352 34676864   11% /
devtmpfs                 1916736       0  1916736    0% /dev
tmpfs                    1932652       0  1932652    0% /dev/shm
tmpfs                    1932652   17488  1915164    1% /run
tmpfs                    1932652       0  1932652    0% /sys/fs/cgroup
/dev/sda1                1038336  182380   855956   18% /boot
/dev/mapper/centos-home 18950144   33052 18917092    1% /home
tmpfs                     386532      52   386480    1% /run/user/0
/dev/sr0                 4414592 4414592        0  100% /run/media/root/CentOS 7 x86_64
192.168.254.10:/opt/rui 52403200 3720704 48682496    8% /var/www/html

[root@localhost ~]# echo ' this is rui web! ' > /var/www/html/index.html
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 

image-20211214133119446

[root@localhost ~]# systemctl restart network

调度服务器

(内:192.168.254.40

(外:12.0.0.1

[root@localhost ~]# systemctl stop firewalld.service 
s[root@localhost ~]# systemctl disable firewalld.service 
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# setenforce 0

[root@localhost ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@localhost ~]# iptables -t nat -F
[root@localhost ~]# iptables -F

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -o ens36 -j SNAT  --to-source 12.0.0.1

[root@localhost ~]# modprobe ip_vs

[root@localhost ~]# 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@localhost ~]# yum -y install ipvsadm

[root@localhost ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@localhost ~]# systemctl start ipvsadm.service 

[root@localhost ~]# ipvsadm -C
[root@localhost ~]# ipvsadm -A -t 12.0.0.1:80 -s rr
[root@localhost ~]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.254.20:80 -m
[root@localhost ~]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.254.30:80 -m

[root@localhost ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:http rr
  -> 192.168.254.20:http          Masq    1      0          0         
  -> 192.168.254.30:http          Masq    1      0          0         
[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr
  -> 192.168.254.20:80            Masq    1      0          0         
  -> 192.168.254.30:80            Masq    1      0          0         
[root@localhost ~]# ipvsadm-save > /etc/sysconfig/ipvsadm


#加装一块网卡
#ifconfig检查一下

image-20211214133351340

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-ens33 

image-20211214171015762

[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens36
#外网网卡设置,删除uuid并更改

image-20211214171035498

#做好之后重启网卡
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifconfig 

image-20211214133903904

[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# sysctl -p
net.ipv4.ip_forward = 1

[root@localhost network-scripts]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

[root@localhost network-scripts]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  localhost.localdomain:http rr
  -> 192.168.254.20:http          Masq    1      0          0         
  -> 192.168.254.30:http          Masq    1      0          0         

[root@localhost network-scripts]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  192.168.254.0/24     anywhere             to:12.0.0.1

客户端

更改IPv4之后在浏览器里输入http://12.0.0.1

image-20211214171309847

image-20211214165621516

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值