CloudStack【4.13】安装配置

推荐配置及版本说明

操作系统版本:CentOS7.5以上,建议7.7
内核版本:4.9以上,建议5.6
cloudstack版本为:4.13
系统模板版本为:4.13.3
qemu-img版本为:2.0以上建议3.9 【仅限管理服务器】

查看、升级指令

1:centOS版本

# 查看centOS版本:
cat /etc/redhat-release
# 升级命令
yum -y upgrade

2:内核版本

# 查看内核版本:
cat /proc/version或uname -a
# 升级
# 下载地址1:Centos 7: http://elrepo.org/linux/kernel/el7/x86_64/RPMS/
  下载地址2【版本为:5.6.15】:链接:https://pan.baidu.com/s/1K92Pt7f8T5dv4yEp_GdHAw 
  					提取码:trs6
# 或获取链接
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-4.4.185-1.el7.elrepo.x86_64.rpm
# 安装内核
rpm -ivh kernel-lt-4.4.185-1.el7.elrepo.x86_64.rpm

# 检查系统中存在的内核版本
rpm -qa|grep 'kernel'
# 修改grub中默认的内核版本,先查看系统所有内核
awk -F\' '$1=="menuentry" {print $2}' /etc/grub2.cfg
# 查看当前系统所有内核的启动顺序
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
# 查看配置文件却确保CRUB_DEFAULT=savde
cat /etc/default/grub
# 执行grub2-set-default0设置内核配置开机选单为第0项(第一个)
grub2-set-default 0
#执行grub2-editenv list确认设置成功(saved_entry=0)
grub2-editenv list
# 运行grub2-mkconfig命令来重新创建内核配置
grub2-mkconfig -o /boot/grub2/grub.cfg
# 重启系统
reboot
# 查看系统内核
uname -a

在这里插入图片描述

系统中存在的内核版本
image.png
当前系统所有内核的启动顺序
image.png
配置文件却确保CRUB_DEFAULT=savde
image.png
grub2-editenv list确认设置成功(saved_entry=0)
image.png
查看系统内核

  • 运行 awk -F’ ‘$1==“menuentry” {print $2}’ /etc/grub2.cfg 命令报:awk: fatal: cannot open file /etc/grub2.cfg' for reading (No such file or directory) 或者 awk: fatal: cannot open file/boot/grub/grub.conf’ for reading (No such file or directory) 错误。

    在这里插入图片描述

    ** 问题原因:**/boot/grub/grub.conf/boot/grub2/grub.cfg缺失
    **解决办法: **

# /boot/grub/grub.conf 缺失:
yum install -y grub
grub-mkconfig -o /boot/grub/grub.conf
# /boot/grub2/grub.cfg 缺失:
yum install -y grub2
grub2-mkconfig -o /boot/grub2/grub.cfg

image.png

  • 运行rpm -ivh ker** 报warning: kernel-ml-5.6.15-1.el7.elrepo.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID baadae52: NOKEY 错误

image.png

**问题原因:**验证文件缺失
解决办法:

# rpm方式导入验证文件
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org  [在线导入]
rpm --import RPM-GPG-KEY-elrepo.org  [下载后导入]
# 验证文件下载
链接:https://pan.baidu.com/s/11PQiHygfae3qHhv7hJWA7g 
提取码:nitj

image.png

3:qemu升级

管理服务器部署过程

一:更改主机名

1:修改主机名【centos7以上版本】

# centos7 里面修改hostname的方式有所改变
# 修改/etc/hosts和/etc/sysconfig/network两个文件已经不能生效。使用的新命令是
hostnamectl set-hostname [host_name]
# 测试:
uname -a
# 推荐在这步安装net-tools,因为在cloudstack-manager初始化前不安装,之后传给agent端的hostname还是localhost
yum -y install net-tools.x86_64

image.png

2:编辑/etc/hosts文件配置主机名&ip解析

  # 编辑文件 /etc/hosts
  vi /etc/hosts
  # 在hosts文件中添加该行- 本机ip 本机主机名 或者 节点服务器ip 节点服务器主机名
  192.168.10.101 xialong.manager101 
  # 若有内部DNS服务器,则只配置本机主机名即可,若无DNS服务器,需要配置所有节点服务器主机名与ip
  # 配置结果示例如下
  192.168.10.101 xialong.manager101 
  192.168.10.102 xialong.agent102
  192.168.10.103 xialong.agent103
  192.168.10.104 xialong.agent104
  

2:编辑/etc/sysconfig/network 指定主机名

  # 编辑文件
  vi /etc/sysconfig/network  
  # 设置HOSTNAME=主机名
  HOSTNAME=xialong.manager101 

4:重启网络

  # 重启网络命令1
  service network restart
  # 重启网络命令2
  systemctl restart network

二:修改系统时区

注意:应尽可能的保持管理主机与节点主机系统时区一致,此处统一为CST时区

  • 查看系统时区 date命令

image.png

  • 查看并选择已安装的时区文件 tzselect 命令

image.png

  • 更改系统时区为CST时区
 # 修改时区为CST时区
 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

image.png

三:阿里源配置

1:备份现有源

  cd /etc/yum.repos.d 
  sudo mv CentOS-Base.repo CentOS-Base.repo.bak

2:下载阿里源

  # 下载阿里源
  sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
  # 下载epel源
  sudo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  yum clean all  # 清理缓存
  yum makecache  #重新生成新的缓存

3:查看系统版本

  cat /etc/issue  或cat /etc/redhat-release

四:selinux 配置

	vi /etc/selinux/config  # 目录
  SELINUX=permissive  # 设置selinux的值为 permissive,表示关闭selinux
  shutdown -r now # 重启

五:ntp 的安装

	yum -y install ntp  # 下载
	chkconfig ntpd on  # 开机启动
	service ntpd start # 启动服务
	service ntpd stop # 停止服务
	service ntpd restart # 重启动服务
	service ntpd status # 查看服务状态

六: nfs的安装:

1:安装nfs

  # 安装nfs,需要安装nfs-utils和rpcbind
  yum -y install nfs-utils rpcbind 

2:配置挂载点

  # 编辑文件
  vi /etc/exports
  # 添加如下内容表示管理机和主机的挂载点
  /export/secondary *(rw,async,no_root_squash,no_subtree_check)
  /export/primary *(rw,async,no_root_squash,no_subtree_check)

  # 参数说明
  * 号表示开放所有地址段可挂载、可以指定ip地址段
  rw – 允许对共享目录进行读写
  sync – 实时同步共享目录
  no_root_squash – 允许root访问
  no_all_squash - 允许用户授权
  no_subtree_check - 如果卷的一部分被输出,从客户端发出请求文件的一个常规的调用子目录检查验证卷的相应部分。如果是整个卷输出,禁止这个检查可以加速传输。

3:创建挂载目录

  mkdir -p /export/primary
  mkdir /export/secondary

4:刷新配置

  exportfs -a
  showmount -e

5:修改nfs服务器参数

  vi /etc/sysconfig/nfs
  # 添加如下内容
  LOCKD_TCPPORT=32803
  LOCKD_UDPPORT=32769
  RQUOTAD_PORT=875
  MOUNTD_PORT=892
  STATD_PORT=662
  STATD_OUTGOING_PORT=2020
  RPCNFSDARGS="-N 4"

  # rpcnfsdargs="-n 4" 表示禁用nfs4版本的协议
  
  vi /etc/nfsmount.conf
	Nfsvers=3  

6:启动nfs并配置开机启动

 # 添加rpcbind开启启动项 
  chkconfig rpcbind on 
  # 添加nfs开机启动项
  chkconfig nfs on
  # 启动rpcbind
  service rpcbind start
  # 启动nfs
  service nfs start

7:测试挂载

  # 测试挂载 将61.141.235.102:/export/secondary挂载到/mnt下
	mount -t nfs 61.141.235.102:/export/secondary /mnt
  # 查看磁盘挂载信息
  df -h
  # 取消挂载
  umount /mnt
   # 测试挂载 将61.141.235.102:/export/primary挂载到/mnt下
	mount -t nfs 61.141.235.102:/export/primary /mnt
  # 查看磁盘挂载信息
  df -h
  # 取消挂载
  umount /mnt

七:mariadb的安装

1:执行安装命令

  yum -y install maria*

image.png

注意事项
  在确认mariadb数据库软件程序安装完毕成功并启动后先不要立即使用. 
  为了抱枕该数据库的安全性和正常运转, 需要先对数据库程序进行初始化操作. 这个初始化操作设计以下5个步骤 :
  1. 设置root管理员在数据库中的密码值(注意, 该密码并非root管理员在系统中的密码, 这里的密码值默认为空, 可直接回车)
  2. 设置root管理员在数据库中放入专有密码(可以不设置).
  3. 随后删除匿名账户,并使用root管理员从远程登录数据库, 以确保数据库上运行的业务的安全性.
  4. 删除默认的测试数据库, 取消测试数据库的一系列访问权限.
  5. 刷新授权列表, 让初始化的设定立即生效.

2:开启mariadb服务

  service mariadb start

image.png

3:mariadb初始化

mysql_secure_installation

初始化时回车输入y后设置密码一路y设置即可
image.png

4:启动mariadb

  # 添加为系统启动项
  systemctl enable mariadb
  # 启动mariadb
  systemctl start mariadb

image.png

5:授予root用户远程访问权限

 # 进入mariadb数据库
 mysql -uroot -p123456AABB
# 执行如下命令授予root用户远程访问权限 
grant all privileges on *.* to 'root'@'%'identified by '123456AABB' with grant option;

image.png

八:cloudstack管理端的安装

1:配置cloudstack源【在线安装】

# 编辑文件
vi /etc/yum.repos.d/cloudstack.repo

# 输入如下内容
[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/rhel/7/4.13/ # 4.13为版本号
enabled=1
gpgcheck=0

2:使用yum命令安装管理端

# yum在线安装
yum -y install cloudstack-management cloudstack-common
# yum本地安装
yum -y localinstall cloudstack-management-4.13.0.0-1.el7.centos.x86_64.rpm cloudstack-common-4.13.0.0-1.el7.centos.x86_64.rpm

3:数据同步

cloudstack-setup-databases cloud:cloud@localhost --deploy-as=root:123456AABB
# cloud:cloud 为数据库新建账号密码

4:启动管理端

# 初始化管理器
cloudstack-setup-management
# 重启管理器
service cloudstack-management restart

5:上传系统模板

注:尽量在初始化cloudstack之前,4.12、4.13的cloudstack使用4.11.3的模板

# 下载系统模板 地址为:http://cloudstack.apt-get.eu/systemvm/4.11/systemvmtemplate-4.11.2-kvm.qcow2.bz2
# 上传解压系统模板
bunzip2 systemvmtemplate-4.11.3-kvm.qcow2.bz2
# 注册模板至cloudstack管理端
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary -f /cloudstack/systemvmtemplate-4.11.3-kvm.qcow2 -h kvm -F
http://www.szfty.net/centos-7.7.1908-x86_64-minimal-1908.iso
http://61.141.235.102/centos-7.7.1908-x86_64-minimal-1908.iso
http://61.141.235.102/systemvmtemplate-4.11.1-kvm.qcow2
http://61.141.235.102/centos-7.7.1908-x86_64-minimal-1908.iso

八:防火墙命令

firewall-cmd --zone=public --add-port=3306/tcp --permanent  # 开启3306防火墙端口permanent永久生效,没有此参数重启后失效
firewall-cmd --reload  # 重新载入
systemctl start firewalld
systemctl restart firewalld
systemctl status firewalld
systemctl stop firewalld

十:注册ISO模板

注册ISO模板时需要将ISO文件上传到文件服务器,由cloudsatck注册成功后主动下载,下面提供两种(httpd和nginx)简易文件服务器的搭建方式,任选一种安装即可:

1:httpd安装配置

1.1:http的安装
# 查看httd是否安装
rpm -qa|grep httpd
# 安装httpd
yum -y install httpd
# 将httpd设置为开机启动项 
chkconfig httpd on
# 启动httpd
service httpd start
1.2:httpd的配置
vi /etc/httpd/conf/httpd.conf
取消如下行注释并修改如下内容 
ServerName 127.0.0.1:80 
新添加如下内容: 
AddType text/html .iso

2:nginx的安装

2.1:安装nginx
yum -y install nginx
2.1:配置nginx
  • 编辑 /etc/nginx/nginx.conf 文件
# 编辑 /etc/nginx/nginx.conf 配置文件,能够使访问目录
# 修改第一行 user nginx; 为 user root; 设置最高权限,否则无法访问文件
# http大括号内添加如下内容,若已存在,更改即可
autoindex on;    # 显示目录
autoindex_exact_size on; # 显示文件大小
autoindex_localtime on; # 显示文件时间

image.png
图片.png

  • location下配置:root /root/;

image.png

  • 删除/usr/share/nginx/html 目录下的所有文件
#删除/usr/share/nginx/html 下的所有文件
rm -rf /usr/share/nginx/html/*
  • nginx 操作
# 开启nginx
systemctl start nginx
# 关闭nginx
systemctl status nginx
# 重启nginx
systemctl restart nginx
# 加入开启启动项
chkconfig nginx on

3:上传系统镜像至nginx下

上传文件至/root目录下

image.png

4:注册ISO

# iso注册
secstorage.allowed.internal.sites # 部分开放可填写当前网络所在的网段,如 192.168.1.2/24,全部开放则填写:0.0.0.0/0

节点服务器部署过程

一:更改主机名

1:修改主机名【centos7以上版本】

# centos7 里面修改hostname的方式有所改变
# 修改/etc/hosts和/etc/sysconfig/network两个文件已经不能生效。使用的新命令是
hostnamectl set-hostname [host_name]
# 测试:
uname -a
# 推荐在这步安装net-tools,因为在cloudstack-manager初始化前不安装,之后传给agent端的hostname还是localhost
yum -y install net-tools.x86_64

image.png

2:编辑/etc/hosts文件配置主机名&ip解析

  # 编辑文件 /etc/hosts
  vi /etc/hosts
  # 在hosts文件中添加该行- 本机ip 本机主机名 
  192.168.10.102 xialong.agent102 

2:编辑/etc/sysconfig/network 指定主机名

  # 编辑文件
  vi /etc/sysconfig/network  
  # 设置HOSTNAME=主机名
  HOSTNAME=xialong.agent102

4:重启网络

  # 重启网络命令1
  service network restart
  # 重启网络命令2
  systemctl restart network

二:时区修改

注意:应尽可能的保持管理主机与节点主机系统时区一致,此处统一为CST时区

  • 查看系统时区 date命令

image.png

  • 查看并选择已安装的时区文件 tzselect 命令

image.png

  • 更改系统时区为CST时区
 # 修改时区为CST时区
 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

image.png

三:selinux 配置

	vi /etc/selinux/config  # 目录
  SELINUX=permissive  # 设置selinux的值为 permissive,表示关闭selinux
  shutdown -r now # 重启

四:ntp 的安装

	yum -y install ntp  # 下载
	chkconfig ntpd on  # 开机启动
	service ntpd start # 启动服务
	service ntpd stop # 停止服务
	service ntpd restart # 重启动服务
	service ntpd status # 查看服务状态

五:kvm的安装

注意事项
# 要支持 kvm,intel cpu需要 vmx 或者 amd cpu 需要svm 扩展。
# 查看是否支持kvm
egrep 'vmx|svm' /proc/cpuinfo --color=auto

1: 安装kvm

yum -y install libvirt*  qemu*

# 重启
service libvirtd restart
# 查看kvm列表
virsh list
  • 查看qemu的版本
# 查看qemu的版本
 /usr/libexec/qemu-kvm -version

image.png

2:配置qemu

# 编辑文件
vi /etc/libvirt/qemu.conf  	
# 取消如下行的注释	
vnc_listen=0.0.0.0

3:配置kvm

# 编辑文件
vi /etc/libvirt/libvirtd.conf
# 添加如下行
listen_tls = 0
listen_tcp = 1
tcp_port = "16059"
auth_tcp = "none"
mdns_adv = 0
# 编辑文件
vi /etc/sysconfig/libvirtd 
# 取消注释
LIBVIRTD_ARGS="--listen"

4:启动kvm

systemctl restart libvirtd
systemctl enable libvirtd

5:查看是否安装成功

输入以下命令,查看kvm是否正常运行
lsmod | grep kvm

看到以下内容才说明kvm正常运行,如果什么都没有,说明如火你用的真机部署,你的真机服务器没有开启cpu虚拟化,如果用的虚拟机管理软件如virtualbox部署,说明这个软件不支持虚拟机的cpu虚拟化,可更换其他软件如vmware等

kvm_intel              56232  0 
kvm                   348526  1 kvm_intel
————————————————
如果只有kvm没有kvm_intel,参见安装部署相关问题 5

5:测试kvm

virsh -c qemu+tcp://61.141.235.104/system

五:agent安装

1:安装

# yum本地安装
yum  -y localinstall cloudstack-agent-4.13.0.0-1.el7.centos.x86_64.rpm cloudstack-common-4.13.0.0-1.el7.centos.x86_64.rpm

2:配置

# 编辑文件
vi /etc/cloudstack/agent/agent.properties 
# 编辑host为管理节点IP
host=61.141.235.103

3:启动agent

cloudstack-setup-agent  # 一路回车
# 重启agent服务
service cloudstack-agent restart

查看日志

1:clodstackmanagement管理端日志

  /var/log/cloudstack/management/management-server.log

2:agent节点日志

  /var/log/cloudstack/agent/agent.log

3:系统日志

	var/log/message.log

内部DNS服务器搭建

1:安装bind

# 安装bind软件
yum -y install bind*
1.1:查看软件包
  rpm -qa | grep “^bind”
  # bind-9.9.4-37.el7.x86_64.rpm:提供了域名服务的主要程序及相关文件
  # bind-chroot-9.9.4-37.el7.x86_64.rpm:为BIND服务提供一个伪装的根目录(将/var/named/#chroot/文件夹作为BIND的根目录),以提高安全性。		
  # bind-libs-9.9.4-37.el7.x86_64.rpm:提供了bind、bind-utils需要使用的函数
  # bind-utils-9.9.4-37.el7.x86_64.rpm:提供了对DNS服务器的测试工具程序,如nslookup等
1.2:服务控制
  IND软件包安装完毕以后,会自动增加一个名为named的系统服务,
  通过脚本文件/etc/init.d/named或systemctl、service(centos6以前)工具都可以控制DNS域名服务的运行。
  如:systemctl start named,启动named服务。
1.3:其他:
  主要执行程序:
  /usr/sbin/named服务脚本:
  /etc/init.d/named
  默认监听端口:53

2:相关配置

2.1:主配置文件

主配置文件用于设置named服务的全局选项、注册区域及访问控制等各种运行参数
/etc/name.conf
/var/named/chroot/etc/named.conf

2.2:区域数据文件

区域数据文件用于保存 DNS 解析记录的数据文件(正向或反向记录)
vi /etc/named.conf


安装部署相关问题解决

1:ifconfig 命令不可用

yum -y install net-tools.x86_64

2:wget命令不可用

yum -y install wget

api.allowed.source.cidr.list 0.0.0.0/0,::/0

3:修改时区(Linux系统端)

# 查看时区
date
# 修改时区为上海时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

4:卸载clodstack

find / -name cloudstack

rm -rf /etc/cloudstack
rm -rf /var/lib/yum/repos/x86_64/7/cloudstack
rm -rf /var/lib/cloudstack
rm -rf /var/log/cloudstack
rm -rf /var/cache/yum/x86_64/7/cloudstack
rm -rf /var/cache/cloudstack
rm -rf /var/cloudstack

rpm -e cloudstack-common-4.13.0.0-1.el7.centos.x86_64

rpm -e cloudstack-management-4.13.0.0-1.el7.centos.x86_64

rpm -qa|grep cloudstack


netstat -ntlp

5:lsmod |grep kvm没有kvm_intel

0X7TK4~I{IPI(Z63DE7AQUF.png

# 执行如下命令
# modprobe kvm-intel	#	加载kvm模块
# dmesg |grep kvm			#查看bios支持

# 出现如下图提示代表支持虚拟化在BIOS中没有开启
# 需要在BIOS界面开启虚拟化 Inter(R) Virtualization => enbled

A6)R`AHUW}OM%LP}NC7@JHX.png

6:Duplicate column name ‘size’

经过查阅,这是一个BUG,据说CloudStack4.2已经完整修复。
现阶段解决方法:
ZZELGDVT9FE2WDK5B@%`MZR.png

# cloudstack-setup-databases cloud:cloud@localhost --deploy-as=root:123456AABB -e file -m 123456AABB -k 123456AABB
# cloudstack-setup-management

7:mysql修改密码

use mysql;
UPDATE user SET password=password("123456") WHERE user='root';

# 如果是mysql7.5以上版本,没有password字段
update user set authentication_string=passworD("123456") where user='root';

安装及配置过程中遇到的问题解决

1:创建主机异常

1.1:Can’t add host whose hypervisor type is: KVM into cluster: 13 whose hypervisor type is: None

这个是因为cloudstack总是自己新建一个none类型的集群,手动删除

1.2:Timeout, to wait for the host connecting to mgt svr, assuming it is failed

节点服务器与主机服务器连接不上导致超时,检查网络配置


2:sudo: sorry, you must have a tty to run sudo

在一个终端中调用另一个shell,始终是无法执行的,需要vi /etc/sudoers 注释掉Default requiretty


3:删除资源域物理网络是报错The Physical Network is not deletable because there are networks associated to this physical network

  • 解决方案:登录数据库,执行如下语句:
update physical_network set removed=now() where data_center_id=X;
# 其中 data_center_id为你的data_center_id 
# 在cloudstack的数据库中,删除一个资源,是将removed设置为当前时间,则认为该资源已经失效(同时在UI界面即无法看到该资源),如果不设置时间,则该资源是有效的。

图片.png

4:虚拟机控制台无法访问

image.png

  • 解决方法 判断CPVM IP 80端口是否封堵、判断网络是否正常

若要通过cloudstack访问虚拟机控制台,必须开启CPVM虚拟机所在IP的80端口
image.png

使用过程中的出现的相关问题

注意:若要通过cloudstack访问虚拟机控制台,必须开启CPVM虚拟机所在IP的80端口

一:virsh console i-2-3-VM出现如下错误

error: operation failed: Active console session exists for this domain
image.png

1:问题原因

如果你之前连接过,没有退出,但是你与宿主机的ssh断了,就会出现这种问题,也就是你之前的连接控制台的连接还存在;

2:解决办法

杀死之前连接的进程即可

ps  -ef  |grep  virsh
kille -9 pshao

image.png

二: virsh console i-2-3-VM 无法访问

virsh console i-2-3-VM 卡在如下界面
image.png

1:问题原因

2:解决方法

  • 修改 /etc/securetty 到最后添加 ttyS0,若已存在,不需添加
  • 执行如下更新内核命令参数
grubby --update-kernel=ALL --args="console=ttyS0" # 更新内核参数
reboot # 重启生效

cloudstack初始化环境

第一步:CloudStack数据库的重新初始化

  • 停止CloudStack服务。service cloud-management stop.
  • 到mysql里查询baiselect uuid from storage_pool; 删除存储的SR
  • 删除数据库drop database cloud; drop database cloud_usage
  • 重新部署CloudStack数据库 cloud-setup-databases cloud:password@localhost –deploy-as=root:password
  • cloud-setup-management

第二步:初始化主存储和二级存储

  • 删除主存储和二级存储中的所有文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

班婕妤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值