找回密码
 注册
查看: 1744|回复: 1

neutron相关文件介绍

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-10-8 17:15:33 | 显示全部楼层 |阅读模式
配置neutron.conf / q" \* a4 ^7 j) p4 n7 b, v
复制代码* P3 V  @$ Y) t5 K
# 在全部控制节点操作,以controller01节点为例;
1 q& b7 N+ I4 q5 U# T# 注意”bind_host”参数,根据节点修改;& _$ L, d0 e) o' r
# 注意neutron.conf文件的权限:root:neutron
8 l% F* p; f" E0 o  |; }+ r  p[root@controller01 ~]# cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak/ P* G' e/ q* U6 P$ T
[root@controller01 ~]# egrep -v "^$|^#" /etc/neutron/neutron.conf
4 h9 X) n) ?% {[DEFAULT]# l( _6 u5 H+ Z% U! A
bind_host = 172.30.200.31
; V: L3 \: g  B; ]7 pauth_strategy = keystone
+ Y7 [; \; w$ x* ^& Score_plugin = ml2: I# O6 P6 {) u: I3 M! J6 {' N8 F
service_plugins = router
: X  b% z/ @! s1 X1 yallow_overlapping_ips = True& q$ f+ u9 f/ N
notify_nova_on_port_status_changes = true
7 W! S" @" K& C7 p' h; k7 B7 [; y: Dnotify_nova_on_port_data_changes = true; Y! m# ]# o( ?3 ]
# l3高可用,可以采用vrrp模式或者dvr模式;3 u% g" Y" p  [- \. Z+ O1 t
# vrrp模式下,在各网络节点(此处网络节点与控制节点混合部署)以vrrp的模式设置主备virtual router;mater故障时,virtual router不会迁移,而是将router对外服务的vip漂移到standby router上;
3 o$ z/ ~# G! b2 _2 \0 X9 e# dvr模式下,三层的转发(L3 Forwarding)与nat功能都会被分布到计算节点上,即计算节点也有了网络节点的功能;但是,dvr依然不能消除集中式的virtual router,为了节省IPV4公网地址,仍将snat放在网络节点上提供;
, _# ]/ h+ P- e2 C9 H! V# vrrp模式与dvr模式不可同时使用( I( x( c* I4 e+ e% U3 O( E5 O- K
# Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP): http://www.cnblogs.com/sammyliu/p/4692081.html
# ^* U& F1 Y1 J* F# Neutron 分布式虚拟路由(Neutron Distributed Virtual Routing): http://www.cnblogs.com/sammyliu/p/4713562.html4 b$ t' E* R* b- a
# “l3_ha = true“参数即启用l3 ha功能( i2 b$ m" K4 C+ R- M
l3_ha = true2 ^4 ?2 n( I2 I) M3 V' P. ~
# 最多在几个l3 agent上创建ha router
+ w, p3 h! |- B' L6 Cmax_l3_agents_per_router = 3' e( z2 q" ~$ }6 H
# 可创建ha router的最少正常运行的l3 agnet数量
" S, K# P1 u/ \; |0 Zmin_l3_agents_per_router = 2$ i2 S, s2 Y! _& p
# vrrp广播网络
- u, h$ G. I/ C1 C. l$ v! Tl3_ha_net_cidr = 169.254.192.0/18+ J9 n. ^4 T7 ?- E! [; p
# ”router_distributed “参数本身的含义是普通用户创建路由器时,是否默认创建dvr;此参数默认值为“false”,这里采用vrrp模式,可注释此参数
* r6 t7 \% O- X$ p, D# 虽然此参数在mitaka(含)版本后,可与l3_ha参数同时打开,但设置dvr模式还同时需要设置网络节点与计算节点的l3_agent.ini与ml2_conf.ini文件# r* W  g) T9 Y( m5 m8 S( |# O, q8 w
# router_distributed = true8 i  t* ^/ r! g4 J5 e0 X3 G
# dhcp高可用,在3个网络节点各生成1个dhcp服务器: l6 E7 y9 @  R) _
dhcp_agents_per_network = 3
8 C# w/ a6 e, d# 前端采用haproxy时,服务连接rabbitmq会出现连接超时重连的情况,可通过各服务与rabbitmq的日志查看;
3 e. r: V$ ?  U8 }# I9 c4 B# transport_url = rabbit://openstack:rabbitmq_pass@controller:5673& ?& v, y6 y; |- B9 O
# rabbitmq本身具备集群机制,官方文档建议直接连接rabbitmq集群;但采用此方式时服务启动有时会报错,原因不明;如果没有此现象,强烈建议连接rabbitmq直接对接集群而非通过前端haproxy
4 r4 V9 C: V# L9 i; l) d; }transport_url=rabbit://openstack:rabbitmq_pass@controller01:5672,controller02:5672,controller03:56721 _) k8 d$ r/ v7 J  a% L' g4 ^, I% x
[agent]
. j1 o2 Y% ], a1 c$ s6 X' y[cors]4 o+ w( Y" R! ~9 a& X7 Y
[database]5 P- n- O" z- w$ s, ^( u( P# C$ L
connection = mysql+pymysql://neutron:neutron_dbpass@controller/neutron
/ I: l$ t+ A9 _- ][keystone_authtoken]" L- S6 ]- n) M3 q( F: x% M4 V
auth_uri = http://controller:5000! P* M0 N7 i- i3 H
auth_url = http://controller:35357
/ G# Y- O5 g: Z, L1 D5 r! R8 Qmemcached_servers = controller01:11211,controller:11211,controller:11211
' q) D- ?  T& B% B  L' x; Q# Q2 Nauth_type = password' @6 n: W. R9 \: G
project_domain_name = default. n1 f5 _+ y. z6 @  o( P0 {0 x3 z
user_domain_name = default1 Z0 w8 J' T% o) I2 h4 z$ w
project_name = service
$ k# h- x- q4 ]& {, o8 rusername = neutron
7 {" `5 [; Q9 lpassword = neutron_pass. I6 f2 v9 T3 ^4 n8 G. v
[matchmaker_redis]
# v* ~. l& Y7 ^5 q+ f* g, w[nova]9 |; H" c9 r( b* M  Y' A
auth_url = http://controller:35357
+ E" i/ e4 X5 Q* Z7 F* R. J* }4 k4 uauth_type = password8 G5 Z7 y) }) O$ d* y$ t: C
project_domain_name = default; g- o% x3 h* I' o2 W( B
user_domain_name = default/ f7 N  E3 Y4 q9 }3 t
region_name = RegionTest6 o1 @- B& f1 J, j1 ^. @
project_name = service
8 X' `' ~9 M0 n% L7 o1 d/ Busername = nova
; Z4 w" Q4 s3 P1 x! vpassword = nova_pass( N8 \3 W  b: Y$ A
[oslo_concurrency]' b/ I' |1 i8 y- t+ q1 {1 ]- E3 ]
lock_path = /var/lib/neutron/tmp. B5 G3 N( x! c' J" Y, Y) _
[oslo_messaging_amqp]5 J1 R$ a( `9 `6 t* N& s
[oslo_messaging_kafka]! _' d- c+ }* h6 x: E# ^& I+ ]5 v
[oslo_messaging_notifications]1 u1 z+ N9 ?* u# P
[oslo_messaging_rabbit]- @6 i) L) O; @& P& X
[oslo_messaging_zmq]) L0 ~( M5 T& T+ f6 r& x
[oslo_middleware]
: z# }: {' w0 m* j% k[oslo_policy]
+ ?' t5 ~' s+ v9 q$ l- f. }[quotas]  y, M3 K/ p/ H/ Q5 T
[ssl]
5 E& h# [5 k* O3 D: `8 x复制代码
% X& x  ^$ l; J  z+ }5. 配置ml2_conf.ini
6 q  A% i- f% n  d2 k6 |/ |- _复制代码
: A5 [+ l% |. H& A0 k' S0 G5 M5 w8 M# 在全部控制节点操作,以controller01节点为例;3 Q1 r7 U) F9 {1 o
# ml2_conf.ini文件的权限:root:neutron( X4 i" o$ o: P6 s. J
[root@controller01 ~]# cp /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugins/ml2/ml2_conf.ini.bak
% ~. v& L7 N0 `( d/ R1 g[root@controller01 ~]# egrep -v "^$|^#" /etc/neutron/plugins/ml2/ml2_conf.ini
1 B% r( l/ g' S1 }% J1 @) z: x[DEFAULT]
% {) }5 E0 Z/ z1 i) e[l2pop]
" \' o, S( e9 c; d& M) G1 R[ml2]
7 f3 _* T/ \+ dtype_drivers = flat,vlan,vxlan
  _! Z) e7 }' g4 b. K& M- S# ml2 mechanism_driver 列表,l2population对gre/vxlan租户网络有效
& x' ?, U+ k6 P8 d+ }& T+ Omechanism_drivers = linuxbridge,l2population, S4 i5 p' [/ f
# 可同时设置多种租户网络类型,第一个值是常规租户创建网络时的默认值,同时也默认是master router心跳信号的传递网络类型. _+ T) {% {. D8 \3 e
tenant_network_types = vlan,vxlan,flat5 \5 O; c5 @% t8 T) l9 C- s
extension_drivers = port_security' j6 n8 \0 k! U/ t( L
[ml2_type_flat]
$ ~- R5 X- H$ x# 指定flat网络类型名称为”external”,”*”表示任意网络,空值表示禁用flat网络
/ J; s* L' `0 Y/ Y; x& m9 P- qflat_networks = external
3 `0 M  g3 |; \9 \' ^: `  A$ d3 o- t) C[ml2_type_geneve]
4 d' _/ U1 N1 s, z3 i[ml2_type_gre]3 b# i3 @9 j: X! V" M
[ml2_type_vlan]5 b* ]. ^* a- b( L' _
# 指定vlan网络类型的网络名称为”vlan”;如果不设置vlan id则表示不受限2 V  N% @9 k- ]$ l- h
network_vlan_ranges = vlan:3001:3500: A8 w6 J" P3 d! O2 ^* X
[ml2_type_vxlan]' Z5 t0 w( T' n
vni_ranges = 10001:20000
, A9 g2 |4 R9 S: n# ?' @[securitygroup]
0 S( |/ R% m" g$ W% G5 oenable_ipset = true
! K2 H1 ]" O# q  k  s* H9 @# 服务初始化调用ml2_conf.ini中的配置,但指向/etc/neutron/olugin.ini文件
+ \$ p; K) S# M3 T2 y6 M; h[root@controller01 ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
  j, {- [1 w# b  \1 _+ N' z+ R4 e6 f复制代码
! \$ L. [4 @# T8 [  z6. 配置linuxbridge_agent.ini
; c1 E4 {% p" p7 C2 J$ e) Q8 G9 {1)配置linuxbridge_agent.ini
4 ^& D# m/ i. S6 M: q4 I5 B1 o复制代码( o- A- q- [$ u( R/ @
# 在全部控制节点操作,以controller01节点为例;# C8 T5 K" `/ {2 I3 S$ l
# linuxbridge_agent.ini文件的权限:root:neutron- y5 F& Z8 o( S8 L, U
[root@controller01 ~]# cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak! q7 i5 q) u: h+ |
[root@controller01 ~]# egrep -v "^$|^#" /etc/neutron/plugins/ml2/linuxbridge_agent.ini
3 P* i+ O1 |4 x  @[DEFAULT]
& _" t' B" b7 s[agent]
' J! C8 ]! {4 M/ D: b1 d6 T[linux_bridge]
& K! g5 U) s9 U4 M" Q, [# 网络类型名称与物理网卡对应,这里flat external网络对应规划的eth1,vlan租户网络对应规划的eth3,在创建相应网络时采用的是网络名称而非网卡名称;
8 Q% Y, b1 w: L( H  g: c2 S9 D# 需要明确的是物理网卡是本地有效,根据主机实际使用的网卡名确定;9 K& D0 d6 W/ f! Z( x' ?
# 另有” bridge_mappings”参数对应网桥& m+ @& n7 q0 L% S' h5 {
physical_interface_mappings = external:eth1,vlan:eth3& _0 _0 ]' X3 t! ^& J$ a0 P/ Q7 I/ r
[network_log]) v2 R# [' z% C7 i
[securitygroup]
- a  X) L7 ]* yfirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver5 y/ S" ^* P0 O
enable_security_group = true
+ L! }* D' M- x6 r% w[vxlan]1 M$ o% Z. w2 }+ h( D
enable_vxlan = true
! }' |* B* R, s8 }2 p# tunnel租户网络(vxlan)vtep端点,这里对应规划的eth2(的地址),根据节点做相应修改/ }+ R) p- Q/ ^/ G. L6 I
local_ip = 10.0.0.31
4 F5 U7 y2 g1 `l2_population = true
* e, O, {! a- ?( }- ^: e$ i复制代码0 _! N/ s( b1 d: _; u/ R; L- P3 H
2)配置内核参数  M2 x# J" k1 v4 u
复制代码& ]* h* C% x+ K
# bridge:是否允许桥接;" Q# O, o  x/ Q& h* U
# 如果“sysctl -p”加载不成功,报” No such file or directory”错误,需要加载内核模块“br_netfilter”;% u6 r' I. z2 S* [) {
# 命令“modinfo br_netfilter”查看内核模块信息;* h& a" }+ B' _6 y8 p
# 命令“modprobe br_netfilter”加载内核模块
4 x0 j7 o) X, v" I5 X# t[root@controller01 ~]# echo "# bridge" >> /etc/sysctl.conf
* s3 T2 j$ M6 m) D[root@controller01 ~]# echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf& k. ^4 O. m, Z: t4 x( z  p$ q7 }
[root@controller01 ~]# echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf6 R% Q; m" v/ C  Z
[root@controller01 ~]# sysctl -p$ N/ Y# U1 L  J+ d1 }: A
复制代码
2 l1 r! T5 K/ A+ g4 v* q7. 配置l3_agent.ini(self-networking)% ^: U' I9 t) r, o- V1 d
复制代码; |3 x# Z8 Y- z
# 在全部控制节点操作,以controller01节点为例;: X* L1 y4 A/ C4 g% }
# l3_agent.ini文件的权限:root:neutron
; Z4 ]4 w2 n! Z* i[root@controller01 ~]# cp /etc/neutron/l3_agent.ini /etc/neutron/l3_agent.ini.bak' U3 s% h) N& l1 ^
[root@controller01 ~]# egrep -v "^$|^#"  /etc/neutron/l3_agent.ini5 a- H6 N' K. m- D2 j; C2 W
[DEFAULT]
+ r' z" K: S4 r0 W0 m9 s4 Einterface_driver = linuxbridge' y3 X& R/ Q5 ~0 G6 |* _; }
[agent]. m' e4 W" s8 p+ h- F3 D/ i, T
[ovs]# w7 C8 S  [7 |& j
复制代码
9 m) R# l7 ], u0 s8. 配置dhcp_agent.ini
+ ]- {' f1 w: |复制代码$ ^' W. I5 t2 @
# 在全部控制节点操作,以controller01节点为例;
' s1 ~$ o7 L! u% `+ s+ R+ f# 使用dnsmasp提供dhcp服务;5 ^6 D" \4 @$ v: s, G: J8 k% L
# dhcp_agent.ini文件的权限:root:neutron
$ J4 U. l) ?1 Q1 Z8 ?" d3 g/ q[root@controller01 ~]# cp /etc/neutron/dhcp_agent.ini /etc/neutron/dhcp_agent.ini.bak
+ B) h/ n6 X8 i- G+ C[root@controller01 ~]# egrep -v "^$|^#" /etc/neutron/dhcp_agent.ini/ N/ L5 E2 [; w& P
[DEFAULT]+ f9 w/ d' U4 ?  n7 c3 W! g& _
interface_driver = linuxbridge
7 ~, j0 s) v' H# ?% m, h7 J- M/ zdhcp_driver = neutron.agent.linux.dhcp.Dnsmasq. J0 N% X+ m: h! }
enable_isolated_metadata = true
3 c8 K# z! b% Q( y, m# P) h[agent]
/ z! g0 h) _7 S! d4 Y0 b[ovs], a$ B. C4 }+ v9 ^; {
复制代码' A1 I- X9 P7 o7 }4 v  ^0 r7 a6 U
9. 配置metadata_agent.ini
  G- X8 I7 t' ?9 p. L6 _复制代码
' z# E, ?( f' G2 I; s1 A5 ?+ ^# 在全部控制节点操作,以controller01节点为例;5 p1 C: s+ W  ?4 Q
# metadata_proxy_shared_secret:与/etc/nova/nova.conf文件中参数一致;
; _% x6 ]% ^! J# W3 O( s# metadata_agent.ini文件的权限:root:neutron. Q0 F* J9 a6 y; u5 }/ l. w1 j
[root@controller01 ~]# cp /etc/neutron/metadata_agent.ini  /etc/neutron/metadata_agent.ini.bak7 R7 _2 X. s, O/ y. T
[root@controller01 ~]# egrep -v "^$|^#"  /etc/neutron/metadata_agent.ini+ L  y7 n: n& x7 w
[DEFAULT]0 d4 Q- ~# e; F" |& v* \' x$ Q
nova_metadata_host = controller
% N8 U! ?/ T" _6 qmetadata_proxy_shared_secret = neutron_metadata_secret
+ v3 H4 i$ I7 Y& o[agent]1 w0 m  A& }: F- ?) o8 |
[cache]1 F8 A6 u- I+ l9 k) E8 d: z2 Q
复制代码
: s# k9 b" T! z- b10. 配置nova.conf
2 L6 ]- I3 o1 m  h7 ?$ d$ ]+ ~, z复制代码# p  ?" ?9 ?, B$ p
# 在全部控制节点操作,以controller01节点为例;
: V2 h/ U* G8 Z$ c8 ?' F# 配置只涉及nova.conf的”[neutron]”字段;
2 o; X5 h+ S; `, K# metadata_proxy_shared_secret:与/etc/neutron/metadata_agent.ini文件中参数一致
* }5 s6 J2 [7 f! x[root@controller01 ~]# vim /etc/nova/nova.conf
) o, |: z5 h4 T, w[neutron]. N! q* C! @7 P% j& |
url = http://controller:9696
* L- `0 _+ B6 C- y4 u/ \9 hauth_url = http://controller:35357
$ @0 ~9 |: \) \4 f5 g* }auth_type = password
: k( y; E3 @7 |' w7 Y  ^8 Tproject_domain_name = default
9 S( x! ^! p+ ^. m, Yuser_domain_name = default; Z2 ~% c5 _5 Y8 b5 L; }. P
region_name = RegionTest
4 D& `% u+ A) p+ ~project_name = service& o+ |$ n7 Y5 C
username = neutron
) s  a7 Z6 m: q. i$ hpassword = neutron_pass
& W- ]4 p" ^3 G0 V* _2 K! y9 Qservice_metadata_proxy = true6 q' Y8 Z6 L4 o
metadata_proxy_shared_secret = neutron_metadata_secret
/ S/ n0 @$ q. |! i- S" O! Z: I2 \复制代码# ^! N1 Z' P8 Y7 p$ w3 s2 s  N
11. 同步neutron数据库) V/ A1 b/ t) L$ {3 A; ^4 N0 z! h
# 任意控制节点操作;
, L7 A! b) e  j7 f  p7 F* S[root@controller01 ~]# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron0 R$ l; g, E9 q6 T8 r0 X. c3 _
# 验证
- ]/ P  N' E1 n# g[root@controller01 ~]# mysql -h controller01 -u neutron -pneutron_dbpass -e "use neutron;show tables;"
( J, f8 q  [9 f% H12. 启动服务
8 \+ }7 h2 M- `, O- Y复制代码( [; }, q7 K8 [
# 全部控制节点操作;8 ^$ G& ?0 q  m( B
# 变更nova配置文件,首先需要重启nova服务' c7 ~' p1 {/ x5 J
[root@controller01 ~]# systemctl restart openstack-nova-api.service
) V6 W+ b+ P: a
0 v; R& J1 ]$ ~2 n# 开机启动
. {( e2 h7 ^0 b; m- F4 @  a[root@controller01 ~]# systemctl enable neutron-server.service \
1 Z2 G# \9 \6 ~5 g! [ neutron-linuxbridge-agent.service \+ |" B2 Y+ G! ]/ \; S9 M
neutron-l3-agent.service \" u, {7 _+ T2 ]  d. k/ j8 ~) {
neutron-dhcp-agent.service \1 y1 Y+ I# f4 W* L! d
neutron-metadata-agent.service* O9 S6 S& k7 q0 u
# 启动
6 f. V& m+ i6 M  d: G" a  G# ~( E[root@controller01 ~]# systemctl restart neutron-server.service
4 o% x7 I, _" v0 l3 C* P/ d[root@controller01 ~]# systemctl restart neutron-linuxbridge-agent.service
. \+ |3 ?" `' @) h1 i  c; j. l" Z[root@controller01 ~]# systemctl restart neutron-l3-agent.service
3 |% J) C% r0 n8 h' w% v9 x2 m: R[root@controller01 ~]# systemctl restart neutron-dhcp-agent.service
- o8 U; F, X; ~4 M: D" U[root@controller01 ~]# systemctl restart neutron-metadata-agent.service
$ ?5 D/ ]; |/ B. q4 N复制代码
8 \" m. F' d; w9 q3 ^; u13. 验证
6 U  O" S% w2 Y. G9 V  Q8 a复制代码. c0 E4 r/ Q9 P* ?  A+ |( d
[root@controller01 ~]# . admin-openrc & b) @2 i" n9 A
# 查看加载的扩展服务
- K; y+ n+ l- \5 r[root@controller01 ~]# openstack extension list --network& H9 u4 ^9 k3 R" y0 z( K; Z( |
# 查看agent服务
! T8 w6 x: f, b2 e8 @7 F[root@controller01 ~]# openstack network agent list
# C. a. R% d8 Y: T8 O复制代码: n! t7 v3 `" ]' z$ }4 _+ W
" s" `) f: b5 z7 n
14. 设置pcs资源
1 a  F, i, W( V% Q5 k* a# E复制代码6 b% ?. }8 ^( t" v& j
# 在任意控制节点操作;
& w  Z) x3 @, s8 `# 添加资源neutron-server,neutron-linuxbridge-agent,neutron-l3-agent,neutron-dhcp-agent与neutron-metadata-agent# g  X3 t2 {; Q( s( S3 @
[root@controller01 ~]# pcs resource create neutron-server systemd:neutron-server --clone interleave=true
/ J3 ]$ M5 ~! L6 A1 |; P) E[root@controller01 ~]# pcs resource create neutron-linuxbridge-agent systemd:neutron-linuxbridge-agent --clone interleave=true& N7 f% e3 c1 V# m
[root@controller01 ~]# pcs resource create neutron-l3-agent systemd:neutron-l3-agent --clone interleave=true
' l9 ^9 W; |# p( d  I5 j[root@controller01 ~]# pcs resource create neutron-dhcp-agent systemd:neutron-dhcp-agent --clone interleave=true# l1 g  l# q& }
[root@controller01 ~]# pcs resource create neutron-metadata-agent systemd:neutron-metadata-agent --clone interleave=true8 \: A4 D/ v. r+ n9 @/ _: N# G
# 查看pcs资源$ o# A1 i/ s" T% B
[root@controller01 ~]# pcs resource1 P; R% l) N( E* c  X

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-10-8 17:17:29 | 显示全部楼层
# 在全部控制节点安装neutron相关服务,以controller01节点为例4 j" ]) n* n2 I" ?, H2 s6 S! H
[root@controller01 ~]# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge python-neutronclient ebtables ipset -y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 01:04 , Processed in 0.023346 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表