Packstack一键部署openstack-R版

三台节点

#controller节点
nat:192.168.0.110		仅主机:10.0.1.110
#ccomputel01节点
nat:192.168.0.120		仅主机:10.0.1.120
#ccomputel02节点
nat:192.168.0.130		仅主机:10.0.1.130

网卡配置

其他节点配置相同,只有IP不同
#nat
[root@controller ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.0.110
PREFIX=24
GATEWAY=192.168.0.254
DNS1=223.5.5.5

#仅主机
[root@controller ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
BOOTPROTO=static
DEVICE=eth1
ONBOOT=yes
IPADDR=10.0.1.110
PREFIX=24
GATEWAY=10.0.1.1
DNS=223.5.5.5

控制节点

ssh分发秘钥

[root@controller ~]# yum install -y bind-utils sshpass
[root@controller ~]# mkdir -p /server/scripts
[root@controller ~]# cat >/server/scripts/fenfa_pub.sh<< EOF
#!/bin/bash
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
for ip in 110 120 130
do
sshpass -p123456 ssh-copy-id -o StrictHostKeyChecking=no 10.0.1.\$ip
done
EOF

sh /server/scripts/fenfa_pub.sh 

hosts解析

[root@controller ~]# cat >>/etc/hosts <<EOF
192.168.0.110 controller 
192.168.0.120 computel01
192.168.0.130 computel02
EOF

for ip in 120 130 ;do scp -rp /etc/hosts root@192.168.0.$ip:/etc/hosts ;done

[root@controller ~]# ping computel01
PING computel01 (10.0.1.120) 56(84) bytes of data.
64 bytes from computel01 (192.168.0.120): icmp_seq=1 ttl=64 time=0.432 ms

[root@controller ~]# ping computel02
PING computel02 (10.0.1.130) 56(84) bytes of data.
64 bytes from computel02 (10.0.1.130): icmp_seq=1 ttl=64 time=0.389 ms

全部节点的基础优化

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
systemctl stop NetworkManager
systemctl disable NetworkManager

上传软件包——openstack-rocky压缩包
链接: https://pan.baidu.com/s/1raa5Wj8LEDQ0DwSe7vDPeQ 提取码: e4pd
全部节点,解压到/opt目录下

如下所示:
[root@controller ~]# ls
openstack_rocky.tar.gz
[root@controller ~]# tar -zxf openstack_rocky.tar.gz -C /opt/
[root@controller ~]# cd /opt/
[root@controller opt]# du -h
2.4M	./openstack_rocky/repodata
306M	./openstack_rocky
306M	.

将光盘镜像挂载

[root@controller opt]# echo  '/dev/sr0    /mnt    iso9660 defaults    0 0' >>/etc/fstab
[root@controller opt]# mount /dev/sr0 /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@controller opt]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        99G  2.4G   97G   3% /
devtmpfs        3.9G     0  3.9G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           3.9G   12M  3.9G   1% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1       297M  110M  188M  37% /boot
tmpfs           797M     0  797M   0% /run/user/0
/dev/sr0        4.3G  4.3G     0 100% /mnt

yum源

[root@controller opt]# cd /etc/yum.repos.d/
[root@controller yum.repos.d]# 
[root@controller yum.repos.d]# mkdir backup	#创建备份目录
[root@controller yum.repos.d]# mv ./C* ./epel.repo backup/	#将当前目录下,所有内容转移到./backup
[root@controller yum.repos.d]# cp backup/CentOS-Base.repo local.repo
[root@controller yum.repos.d]# vim local.repo
[openstack]
name=openstack
baseurl=file:///opt/openstack_rocky
gpgcheck=0
enabled=1

[centos]
name=centos
baseurl=file:///mnt
gpgcheck=0
enabled=1

#开启缓存
[root@controller yum.repos.d]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
[root@controller yum.repos.d]# yum clean all				##检验阿里云源是否正常
[root@controller yum.repos.d]# yum makecache				##检查源是否工作正常
[root@controller ~]# yum repolist all
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                               repo name                               status
centos                                centos                                  enabled: 4,021
openstack                             openstack                               enabled:   787
repolist: 4,808

时间同步

#controller节点
yum install chrony -y
vim /etc/chrony.conf 
  server ntp1.aliyun.com iburst
  allow 192.168.0.10/24

systemctl restart chronyd.service 
systemctl enable chronyd.service 
chronyc sources

#其他节点上配置
yum install chrony -y
vim /etc/chrony.conf 
  server controller iburst

systemctl restart chronyd.service 
systemctl enable chronyd.service 
chronyc sources

一键部署OpenStack

控制节点安装openstack-packstack工具

#安装openstack-packstack工具用于生成openstack应答文件(txt文本格式)

[root@controller ~]# yum install -y openstack-packstack
[root@controller ~]# packstack --gen-answer-file=openstack.txt
[root@controller ~]# ls
openstack_rocky.tar.gz  openstack.txt

修改一键部署配置文件的内容
具体内容建议查询了解其他的配置含义和作用

[root@controller ~]# vim openstack.txt
41行:y-n #SWIFT是OpenStack的对象存储组件,默认是Y,在生产环境中一般是不装,所以改n
50行:y-n #不安装该服务
97行:10.0.1.120,10.0.1.130 #计算节点ip地址
817 :physnet1      		#flat网络这边要设置物理网卡名字
862 :physnet1:br-ex    #这边要设置物理网卡的名字
873:br-ex:eth0			#这边br-ex:eth0是网络节点的nat网卡,到时候安装完毕之后IP地址会漂到这个上
1185:y-n #DEMO是OpenStack联网下载一个测试镜像,这边没联网。说以改成n

还有一些网段需要修改以及密码这里使用sed正则表达式来全局修改

##更改密码(123456)
[root@controller ~]# sed -i -r 's/(.+_PW)=.+/\1=123456/' openstack.txt

##将主机ip修改为仅主机网络
sed -i -r 's/192.168.0.110/10.0.1.110/g' openstack.txt

#进行备份
egrep -v "^#|^$" openstack.txt >openstack.txt.bak1

[root@controller ~]# grep 'HOST=' openstack.txt
CONFIG_CONTROLLER_HOST=10.0.1.110
CONFIG_VCENTER_HOST=
CONFIG_STORAGE_HOST=10.0.1.110
CONFIG_SAHARA_HOST=10.0.1.110
CONFIG_AMQP_HOST=10.0.1.110
CONFIG_MARIADB_HOST=10.0.1.110
CONFIG_TEMPEST_HOST=
CONFIG_REDIS_HOST=10.0.1.110

使用下面的命令进行一键部署安装

#保证控制节点的仅主机网络网关打开
#在各个节点终端(可以多开几个窗口终端使用下面的命令查看日志信息)
[root@controller ~]# tail -f /var/log/messages
[root@computel01 ~]# tail -f /var/log/messages
[root@computel02 ~]# tail -f /var/log/messages

接下来就是耐心等待

[root@controller ~]# packstack --answer-file=openstack.txt
Welcome to the Packstack setup utility

The installation log file is available at: /var/tmp/packstack/20200612-145549-x939Z7/openstack-setup.log

Installing:
Clean Up                                             [ DONE ]
Discovering ip protocol version                      [ DONE ]
Setting up ssh keys                                  [ DONE ]
Preparing servers                                    [ DONE ]
Pre installing Puppet and discovering hosts' details [ DONE ]
Preparing pre-install entries                        [ DONE ]
Setting up CACERT                                    [ DONE ]
Preparing AMQP entries                               [ DONE ]
Preparing MariaDB entries                            [ DONE ]
Fixing Keystone LDAP config parameters to be undef if empty[ DONE ]
Preparing Keystone entries                           [ DONE ]
Preparing Glance entries                             [ DONE ]
Checking if the Cinder server has a cinder-volumes vg[ DONE ]
Preparing Cinder entries                             [ DONE ]
Preparing Nova API entries                           [ DONE ]
Creating ssh keys for Nova migration                 [ DONE ]
Gathering ssh host keys for Nova migration           [ DONE ]
Preparing Nova Compute entries                       [ DONE ]
Preparing Nova Scheduler entries                     [ DONE ]
Preparing Nova VNC Proxy entries                     [ DONE ]
Preparing OpenStack Network-related Nova entries     [ DONE ]
Preparing Nova Common entries                        [ DONE ]
Preparing Neutron LBaaS Agent entries                [ DONE ]
Preparing Neutron API entries                        [ DONE ]
Preparing Neutron L3 entries                         [ DONE ]
Preparing Neutron L2 Agent entries                   [ DONE ]
Preparing Neutron DHCP Agent entries                 [ DONE ]
Preparing Neutron Metering Agent entries             [ DONE ]
Checking if NetworkManager is enabled and running    [ DONE ]
Preparing OpenStack Client entries                   [ DONE ]
Preparing Horizon entries                            [ DONE ]
Preparing Gnocchi entries                            [ DONE ]
Preparing Redis entries                              [ DONE ]
Preparing Ceilometer entries                         [ DONE ]
Preparing Puppet manifests                           [ DONE ]
Copying Puppet modules and manifests                 [ DONE ]
Applying 10.0.1.110_controller.pp
10.0.1.110_controller.pp:                            [ DONE ]       
Applying 10.0.1.110_network.pp
10.0.1.110_network.pp:                               [ DONE ]    
Applying 10.0.1.120_compute.pp
Applying 10.0.1.130_compute.pp
10.0.1.130_compute.pp:                               [ DONE ]    
10.0.1.120_compute.pp:                               [ DONE ]    
Applying Puppet manifests                            [ DONE ]
Finalizing                                           [ DONE ]

 **** Installation completed successfully ******

Additional information:
 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
 * File /root/keystonerc_admin has been created on OpenStack client host 10.0.1.110. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://10.0.1.110/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * The installation log file is available at: /var/tmp/packstack/20200612-145549-x939Z7/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20200612-145549-x939Z7/manifests

[END] 2020/6/12 15:21:05

出现**** Installation completed successfully ******则就表示安装成功了

登陆访问操作(账户密码可从账户环境变量配置查看)

http://10.0.1.110/dashboard
账户 admin
密码 123456


openstack安装完以后,启动顺序、关机顺序

关机:计算–网络–控制
开机:控制–网络–计算

检查节点启动情况

[root@controller ~]# source keystonerc_admin
[root@controller ~(keystone_admin)]# openstack network agent list
+--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
| ID                                   | Agent Type         | Host       | Availability Zone | Alive | State | Binary                    |
+--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
| 1d494d1d-7cc3-437d-9885-d1bca9dfafe2 | Open vSwitch agent | computel02 | None              | :-)   | UP    | neutron-openvswitch-agent |
| 68a6c589-c95e-45f4-99eb-ed59ec816f46 | DHCP agent         | controller | nova              | :-)   | UP    | neutron-dhcp-agent        |
| 7412a954-78fd-4a9f-9205-1ace139d036b | Metadata agent     | controller | None              | :-)   | UP    | neutron-metadata-agent    |
| 97167cf1-3180-47a4-a884-4141f5c89959 | L3 agent           | controller | nova              | :-)   | UP    | neutron-l3-agent          |
| b45a5a85-9ab5-445f-a3e0-ca36bfbc7dad | Open vSwitch agent | computel01 | None              | :-)   | UP    | neutron-openvswitch-agent |
| b976f2b9-4286-40ea-bbc9-cf0e1e819fc6 | Open vSwitch agent | controller | None              | :-)   | UP    | neutron-openvswitch-agent |
| d0bdf0f5-db3f-45d0-b3a7-21628bfa906a | Metering agent     | controller | None              | :-)   | UP    | neutron-metering-agent    |
+--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
声明:因为软件超过50M,所以分成了两部分,请搜索openstack安装包(二) 安装包二里面会有一键安装一键卸载的说明,敬请留意 openstack-rpm包信息: augeas-libs-1.0.0-5.el6_5.1.x86_64.rpm boost-program-options-1.41.0-18.el6.x86_64.rpm btrfs-progs-0.20-0.2.git91d9eec.el6.x86_64.rpm celt051-0.5.1.3-0.el6.x86_64.rpm crudini-0.3-2.el6.noarch.rpm cvs-1.11.23-16.el6.x86_64.rpm cyrus-sasl-2.1.23-13.el6_3.1.x86_64.rpm cyrus-sasl-lib-2.1.23-13.el6_3.1.x86_64.rpm cyrus-sasl-md5-2.1.23-13.el6_3.1.x86_64.rpm cyrus-sasl-plain-2.1.23-13.el6_3.1.x86_64.rpm Django14-1.4.8-1.el6.noarch.rpm dnsmasq-utils-2.48-13.el6.x86_64.rpm ebtables-2.0.9-6.el6.x86_64.rpm febootstrap-supermin-helper-3.21-4.el6.x86_64.rpm gettext-0.17-16.el6.x86_64.rpm glusterfs-api-3.4.0.57rhs-1.el6_5.x86_64.rpm glusterfs-libs-3.4.0.57rhs-1.el6_5.x86_64.rpm gnutls-2.8.5-13.el6_5.x86_64.rpm gnutls-utils-2.8.5-13.el6_5.x86_64.rpm gpxe-roms-qemu-0.9.7-6.10.el6.noarch.rpm hivex-1.3.3-4.2.el6.x86_64.rpm ipmitool-1.8.11-16.el6.x86_64.rpm iscsi-initiator-utils-6.2.0.873-10.el6.x86_64.rpm keyutils-1.4-4.el6.x86_64.rpm krb5-libs-1.10.3-15.el6_5.1.x86_64.rpm libcgroup-0.40.rc1-5.el6_5.1.x86_64.rpm libconfig-1.3.2-1.1.el6.x86_64.rpm libdrm-2.4.45-2.el6.x86_64.rpm libevent-1.4.13-4.el6.x86_64.rpm libgssglue-0.1-11.el6.x86_64.rpm libguestfs-1.20.11-2.el6.x86_64.rpm libguestfs-tools-c-1.20.11-2.el6.x86_64.rpm libjpeg-turbo-1.2.1-3.el6_5.x86_64.rpm libtirpc-0.2.1-6.el6_5.1.x86_64.rpm libvirt-0.10.2-29.el6_5.7.x86_64.rpm libvirt-client-0.10.2-29.el6_5.7.x86_64.rpm libvirt-python-0.10.2-29.el6_5.7.x86_64.rpm lzo-2.03-3.1.el6.x86_64.rpm lzop-1.02-0.9.rc1.el6.x86_64.rpm memcached-1.4.4-3.el6.x86_64.rpm mod_wsgi-3.2-3.el6.x86_64.rpm mysql-5.1.73-3.el6_5.x86_64.rpm mysql-libs-5.1.73-3.el6_5.x86_64.rpm MySQL-python-1.2.3-0.3.c1.1.el6.x86_64.rpm mysql-server-5.1.73-3.el6_5.x86_64.rpm nc-1.84-22.el6.x86_64.rpm netcf-libs-0.1.9-4.el6_5.2.x86_64.rpm netpbm-10.47.05-11.el6.x86_64.rpm netpbm-progs-10.47.05-11.el6.x86_64.rpm nfs-utils-1.2.3-39.el6.x86_64.rpm nfs-utils-lib-1.1.5-6.el6.x86_64.rpm novnc-0.4-8.el6.noarch.rpm ntp-4.2.6p5-1.el6.centos.x86_64.rpm ntpdate-4.2.6p5-1.el6.centos.x86_64.rpm numactl-2.0.7-8.el6.x86_64.rpm numad-0.5-9.20130814git.el6.x86_64.rpm openssl-1.0.1e-16.el6_5.7.x86_64.rpm openstack-dashboard-2013.2.3-1.el6.noarch.rpm openstack-glance-2013.2.3-2.el6.noarch.rpm openstack-keystone-2013.2.3-3.el6.noarch.rpm openstack-nova-2013.2.3-1.el6.noarch.rpm openstack-nova-api-2013.2.3-1.el6.noarch.rpm openstack-nova-cells-2013.2.3-1.el6.noarch.rpm openstack-nova-cert-2013.2.3-1.el6.noarch.rpm openstack-nova-common-2013.2.3-1.el6.noarch.rpm openstack-nova-compute-2013.2.3-1.el6.noarch.rpm openstack-nova-conductor-2013.2.3-1.el6.noarch.rpm openstack-nova-console-2013.2.3-1.el6.noarch.rpm openstack-nova-network-2013.2.3-1.el6.noarch.rpm openstack-nova-novncproxy-2013.2.3-1.el6.noarch.rpm openstack-nova-objectstore-2013.2.3-1.el6.noarch.rpm openstack-nova-scheduler-2013.2.3-1.el6.noarch.rpm openstack-utils-2013.2-2.el6.noarch.rpm p11-kit-0.18.5-2.el6_5.2.x86_64.rpm perl-DBD-MySQL-4.013-3.el6.x86_64.rpm perl-DBI-1.609-4.el6.x86_64.rpm perl-hivex-1.3.3-4.2.el6.x86_64.rpm polkit-0.96-5.el6_4.x86_64.rpm pyOpenSSL-0.13.1-1.el6.x86_64.rpm PyPAM-0.5.0-12.el6.x86_64.rpm pysendfile-2.0.0-3.el6.x86_64.rpm python-amqplib-1.0.2-1.el6.rf.noarch.rpm python-anyjson-0.3.1-2.el6.rf.noarch.rpm python-argparse-1.2.1-2.el6.noarch.rpm python-babel-0.9.4-5.1.el6.noarch.rpm python-backports-1.0-4.el6.x86_64.rpm python-backports-ssl_match_hostname-3.4.0.2-1.el6.noarch.rpm python-boto-2.27.0-1.el6.noarch.rpm python-ceilometerclient-1.0.8-1.el6.noarch.rpm python-chardet-2.0.1-1.el6.rf.noarch.rpm python-cheetah-2.4.1-1.el6.x86_64.rpm python-cinderclient-1.0.7-2.el6.noarch.rpm python-cliff-1.4.4-1.el6.noarch.rpm python-cmd2-0.6.4-7.el6.noarch.rpm python-crypto-2.0.1-22.el6.x86_64.rpm python-dateutil-1.4.1-6.el6.noarch.rpm python-django-appconf-0.5-3.el6.noarch.rpm python-django-compressor-1.3-2.el6.noarch.rpm python-django-horizon-2013.2.3-1.el6.noarch.rpm python-django-openstack-auth-1.1.2-1.el6.noarch.rpm python-dogpile-cache-0.5.0-1.el6.noarch.rpm python-dogpile-core-0.4.1-1.el6.noarch.rpm python-eventlet-0.9.17-2.el6.noarch.rpm python-glance-2013.2.3-2.el6.noarch.rpm python-glanceclient-0.12.0-1.el6.noarch.rpm python-greenlet-0.3.1-12.el6.x86_64.rpm python-heatclient-0.2.6-2.el6.noarch.rpm python-httplib2-0.7.7-1.el6.noarch.rpm python-iso8601-0.1.8-1.el6.noarch.rpm python-jinja2-26-2.6-2.el6.noarch.rpm python-jsonpatch-1.2-2.el6.noarch.rpm python-jsonpointer-1.0-3.el6.noarch.rpm python-jsonschema-2.3.0-1.el6.noarch.rpm python-keyring-0.7-1.el6.noarch.rpm python-keystone-2013.2.3-3.el6.noarch.rpm python-keystoneclient-0.7.1-2.el6.noarch.rpm python-kombu-1.4.1-1.el6.rf.noarch.rpm python-ldap-2.3.10-1.el6.x86_64.rpm python-libguestfs-1.20.11-2.el6.x86_64.rpm python-lockfile-0.8-3.el6.noarch.rpm python-lxml-2.2.3-1.1.el6.x86_64.rpm python-markdown-2.0.1-3.1.el6.noarch.rpm python-memcached-1.53-1.el6.noarch.rpm python-migrate-0.7.2-8.el6.noarch.rpm python-netaddr-0.7.5-4.el6.noarch.rpm python-neutronclient-2.3.4-1.el6.noarch.rpm python-nova-2013.2.3-1.el6.noarch.rpm python-novaclient-2.16.0-2.el6.noarch.rpm python-oauth2-1.5.211-5.el6.noarch.rpm python-ordereddict-1.1-2.el6.noarch.rpm python-oslo-config-1.2.1-1.el6.noarch.rpm python-paramiko-1.7.5-2.1.el6.noarch.rpm python-passlib-1.5.3-1.el6.noarch.rpm python-paste-1.7.4-2.el6.noarch.rpm python-paste-deploy1.5-1.5.0-5.el6.noarch.rpm python-pbr-0.5.21-2.el6.noarch.rpm python-pip-1.3.1-4.el6.noarch.rpm python-prettytable-0.7.2-1.el6.noarch.rpm python-pyasn1-0.0.12a-1.el6.noarch.rpm python-pygments-1.1.1-1.el6.noarch.rpm python-pyparsing-1.5.6-2.el6.rf.noarch.rpm python-qpid-0.18-5.el6_4.noarch.rpm python-requests-1.1.0-4.el6.noarch.rpm python-routes1.12-1.12.3-4.el6.noarch.rpm python-saslwrapper-0.18-1.el6_3.x86_64.rpm python-setuptools-0.6.10-3.el6.noarch.rpm python-simplejson-2.0.9-3.1.el6.x86_64.rpm python-six-1.5.2-1.el6.noarch.rpm python-sqlalchemy0.7-0.7.8-1.el6.x86_64.rpm python-stevedore-0.14-1.el6.noarch.rpm python-swiftclient-2.0.2-1.el6.noarch.rpm python-tempita-0.4-2.el6.noarch.rpm python-troveclient-0.1.4-3.el6.noarch.rpm python-urllib3-1.5-7.el6.noarch.rpm python-versiontools-1.9.1-3.el6.noarch.rpm python-warlock-1.0.1-1.el6.noarch.rpm python-webob-1.2.3-4.el6.noarch.rpm python-websockify-0.5.1-1.el6.noarch.rpm python-yaml-3.09-3.el6.rf.x86_64.rpm pytz-2010h-2.el6.noarch.rpm pyxattr-0.5.0-1.el6.x86_64.rpm qemu-img-0.12.1.2-2.415.el6_5.8.x86_64.rpm qemu-kvm-0.12.1.2-2.415.el6_5.8.x86_64.rpm qpid-cpp-client-0.18-18.el6.x86_64.rpm qpid-cpp-server-0.18-18.el6.x86_64.rpm radvd-1.6-1.el6.x86_64.rpm repodata rpcbind-0.2.0-11.el6.x86_64.rpm saslwrapper-0.18-1.el6_3.x86_64.rpm scrub-2.2-1.el6.x86_64.rpm seabios-0.6.1.2-28.el6.x86_64.rpm sgabios-bin-0-0.3.20110621svn.el6.noarch.rpm spice-server-0.12.4-6.el6_5.1.x86_64.rpm tunctl-1.5-3.el6.x86_64.rpm usbredir-0.5.1-1.el6.x86_64.rpm vgabios-0.6b-3.7.el6.noarch.rpm yajl-1.0.7-3.el6.x86_64.rpm zlib-1.2.3-29.el6.x86_64.rpm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值