将设为首页浏览此站
开启辅助访问 天气与日历 收藏本站联系我们切换到窄版

易陆发现论坛

 找回密码
 开始注册
查看: 208|回复: 1
收起左侧

neutron相关文件介绍

[复制链接]
发表于 2021-10-8 17:15:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?开始注册

x
配置neutron.conf
" {1 l. W  a/ f/ D8 G  P复制代码
$ x* q, F) Y6 |6 Y. H8 m) `- J# 在全部控制节点操作,以controller01节点为例;
* q9 {1 z. C/ f' w# 注意”bind_host”参数,根据节点修改;5 a* g+ _; [. N4 m( r6 y
# 注意neutron.conf文件的权限:root:neutron3 M% b' K/ q1 M. o' I! i( J$ D
[root@controller01 ~]# cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak# K( }  j& A+ u' R' k; D1 k
[root@controller01 ~]# egrep -v "^$|^#" /etc/neutron/neutron.conf
$ o+ V: l  ?( e8 q3 {* v- o4 R[DEFAULT]
0 _6 S* O1 F/ [* a: F' Obind_host = 172.30.200.319 |) h: N- F3 i/ D5 }
auth_strategy = keystone- r, a! p5 l/ I6 i3 m6 F) D9 N
core_plugin = ml28 ]1 i7 l+ V5 ?" s' z6 T3 `5 x% ]
service_plugins = router
0 S  j: t6 F: j2 M  E0 v3 callow_overlapping_ips = True0 d9 y2 d$ c' ~6 `6 W1 v) P6 j
notify_nova_on_port_status_changes = true
) J1 R, e% R9 s( t- ~notify_nova_on_port_data_changes = true- @6 a+ \) z+ l6 F) b5 Q9 x
# l3高可用,可以采用vrrp模式或者dvr模式;  }/ |0 M, d9 D- k. ?0 b
# vrrp模式下,在各网络节点(此处网络节点与控制节点混合部署)以vrrp的模式设置主备virtual router;mater故障时,virtual router不会迁移,而是将router对外服务的vip漂移到standby router上; , E) G, W" }9 y- D
# dvr模式下,三层的转发(L3 Forwarding)与nat功能都会被分布到计算节点上,即计算节点也有了网络节点的功能;但是,dvr依然不能消除集中式的virtual router,为了节省IPV4公网地址,仍将snat放在网络节点上提供;- K4 O8 d% G/ }, X3 c  J3 f
# vrrp模式与dvr模式不可同时使用
/ {% ?5 T8 n# e! o+ `+ a# j! ~# Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP): http://www.cnblogs.com/sammyliu/p/4692081.html
7 `# [$ t8 f- N# Neutron 分布式虚拟路由(Neutron Distributed Virtual Routing): http://www.cnblogs.com/sammyliu/p/4713562.html' c7 B6 Y" @- l& M3 U9 E
# “l3_ha = true“参数即启用l3 ha功能
- U' I$ ^& m/ e' }& zl3_ha = true
' [* F* A2 L0 ~/ t5 Y3 ?; J# 最多在几个l3 agent上创建ha router; v8 I6 P& C" z
max_l3_agents_per_router = 31 P, w: y1 E/ {8 t" V7 q# ^5 j
# 可创建ha router的最少正常运行的l3 agnet数量2 B5 d3 C8 l0 z
min_l3_agents_per_router = 26 }% z+ f: n1 b9 _
# vrrp广播网络9 P& _9 i0 z& G( a
l3_ha_net_cidr = 169.254.192.0/18
& ^/ r2 j$ ^, t3 V% X* u  Y* t# ”router_distributed “参数本身的含义是普通用户创建路由器时,是否默认创建dvr;此参数默认值为“false”,这里采用vrrp模式,可注释此参数+ g+ L  x/ I! C6 e% [
# 虽然此参数在mitaka(含)版本后,可与l3_ha参数同时打开,但设置dvr模式还同时需要设置网络节点与计算节点的l3_agent.ini与ml2_conf.ini文件
5 y% b# F: J: {, O; r# router_distributed = true
' N# ?' m% I& f' A, Q( g# dhcp高可用,在3个网络节点各生成1个dhcp服务器
' S/ T* e$ |  R" g1 T2 sdhcp_agents_per_network = 3
8 R- _) d& k" J! O3 e# 前端采用haproxy时,服务连接rabbitmq会出现连接超时重连的情况,可通过各服务与rabbitmq的日志查看;
+ \# T4 Q! f, ?0 i: U* ?# transport_url = rabbit://openstack:rabbitmq_pass@controller:56737 A  c. J$ {# ^
# rabbitmq本身具备集群机制,官方文档建议直接连接rabbitmq集群;但采用此方式时服务启动有时会报错,原因不明;如果没有此现象,强烈建议连接rabbitmq直接对接集群而非通过前端haproxy/ k- E) o  l. F, p7 ~1 O
transport_url=rabbit://openstack:rabbitmq_pass@controller01:5672,controller02:5672,controller03:5672( ~2 H+ j: Z" h7 O
[agent]
. j2 U2 o7 q$ g% ~4 R  [[cors]
% m8 w  l5 u5 @[database]
$ n7 d9 j- y: U& e: \connection = mysql+pymysql://neutron:neutron_dbpass@controller/neutron& g% X" }4 k' u  o& C  U
[keystone_authtoken]5 h/ t$ Q* w; e: `5 E9 B' q" }
auth_uri = http://controller:5000
0 w- Q  x* R6 e1 Pauth_url = http://controller:35357$ q8 z2 O4 k: K  i
memcached_servers = controller01:11211,controller:11211,controller:11211; U8 ]( D8 Q+ R0 H9 Z" k: I5 S
auth_type = password$ W9 S$ M# U/ m* P5 D2 n5 t) m$ P
project_domain_name = default
" V" |9 z% s( J: |; f4 Q8 e4 puser_domain_name = default
) D% B! ^& R! Hproject_name = service
" w' W- L* d: [) h% d  vusername = neutron
( m9 [2 i1 q# \& O9 h  qpassword = neutron_pass0 i$ a# L9 }3 {! c
[matchmaker_redis]3 U% G9 D* |% i" v8 x
[nova]
  A; k& S# p: j  b4 Xauth_url = http://controller:35357
0 E  Q7 O5 y+ b2 G% r7 Pauth_type = password
' O( N% C/ v7 V1 l1 ]/ T" Z3 iproject_domain_name = default
. m; a2 \8 m6 S" t  Wuser_domain_name = default
" a2 Q1 h. g4 u& U3 xregion_name = RegionTest
& m1 {: r, ?4 d  K9 ]project_name = service
& ?, v: e# V2 h- z* L' G, O- Qusername = nova
9 S$ Q6 \( e6 x$ Z& W7 _- dpassword = nova_pass6 M4 M, U4 ^- N. W9 ]
[oslo_concurrency]
5 q: I6 Y0 J, Q/ {5 Clock_path = /var/lib/neutron/tmp
; N: u3 _; l. Z" J7 q[oslo_messaging_amqp]  P9 w. G3 R4 r# L
[oslo_messaging_kafka]
; ~" X4 m4 w- N) ^/ I[oslo_messaging_notifications]
3 M' `8 H% R' U1 f5 L" x[oslo_messaging_rabbit]4 G8 M# r7 q- q' n
[oslo_messaging_zmq]; ~1 |: [" v& F8 Y
[oslo_middleware]1 Q* X" i, n, V6 \" n4 o- p3 m
[oslo_policy]
  ~/ b& v+ _7 _7 i" R[quotas]8 l( f7 Y0 g% v9 T; X( z' R
[ssl]
( H6 I  P# [6 b' X复制代码3 q" u' x. R: w( k8 I* D
5. 配置ml2_conf.ini
, d( U5 J! A3 a4 u复制代码1 Z0 M: `5 _- W0 n
# 在全部控制节点操作,以controller01节点为例;1 I, K1 Y5 a0 u, ]
# ml2_conf.ini文件的权限:root:neutron1 }: `+ x$ d* X. c
[root@controller01 ~]# cp /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugins/ml2/ml2_conf.ini.bak( U0 D" I$ k; q  S. N: C
[root@controller01 ~]# egrep -v "^$|^#" /etc/neutron/plugins/ml2/ml2_conf.ini# @6 Q" V" n( c. V3 H( a" M
[DEFAULT]
4 |) |/ L; a& r[l2pop]& M& r+ b- f+ f( v) w) U
[ml2]) O4 s0 X2 n  T) }  v+ N& O
type_drivers = flat,vlan,vxlan
1 M* @  E7 g  w( X# ml2 mechanism_driver 列表,l2population对gre/vxlan租户网络有效
9 n2 \( z" k( {5 T' s& \mechanism_drivers = linuxbridge,l2population$ G: h  ?$ F4 Y1 o4 X8 h
# 可同时设置多种租户网络类型,第一个值是常规租户创建网络时的默认值,同时也默认是master router心跳信号的传递网络类型7 O; A- H1 I- r
tenant_network_types = vlan,vxlan,flat
# _/ d7 K3 Q' Q; o% Wextension_drivers = port_security/ j5 n& i. X0 m* }; i2 o% ?  X
[ml2_type_flat], P* ^- i) H$ x, h+ i" b
# 指定flat网络类型名称为”external”,”*”表示任意网络,空值表示禁用flat网络
6 z& q* {* @; _( ~1 Rflat_networks = external( a+ ?2 E$ K5 p; S! U7 u8 j
[ml2_type_geneve]( p, u5 n8 l5 B7 J" L1 V& j* G
[ml2_type_gre]9 w4 {* I  S( ^
[ml2_type_vlan]
$ P. h' h! e0 R9 y8 y3 |# 指定vlan网络类型的网络名称为”vlan”;如果不设置vlan id则表示不受限
1 Y, B' U7 W& o& Fnetwork_vlan_ranges = vlan:3001:3500
% d9 s. D- W, r2 w3 ][ml2_type_vxlan]! Q, m  I# b5 g% R: H
vni_ranges = 10001:20000; k- J& \/ u8 V* G4 N
[securitygroup]
* B- L3 q4 _' F% w. Yenable_ipset = true
% C. T( l2 M8 ]" x/ L5 U# 服务初始化调用ml2_conf.ini中的配置,但指向/etc/neutron/olugin.ini文件0 l" I+ I( }7 A7 R/ O
[root@controller01 ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
* H5 M/ h9 s" a4 g7 G8 C, j复制代码# j1 {! b+ b- ?6 p  Y
6. 配置linuxbridge_agent.ini
% O6 ]% b. {6 t+ E, K: T) u  h% U1)配置linuxbridge_agent.ini
4 P" o' B5 P$ ~* h# f  [" c复制代码
! m, p9 _) ]: c! j* n3 H3 F# 在全部控制节点操作,以controller01节点为例;
0 O' s9 ^) B4 g- m) q( W" b# linuxbridge_agent.ini文件的权限:root:neutron
7 g* [% V) y* l2 N[root@controller01 ~]# cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak! ~3 L6 ?* T7 k% {. [9 i
[root@controller01 ~]# egrep -v "^$|^#" /etc/neutron/plugins/ml2/linuxbridge_agent.ini6 {8 Z( e) n* p6 O
[DEFAULT], L  m3 M9 z. V, c& d, O/ [7 q
[agent]
# Q" h/ M; T% R* @[linux_bridge]3 O7 v+ f$ ~( I
# 网络类型名称与物理网卡对应,这里flat external网络对应规划的eth1,vlan租户网络对应规划的eth3,在创建相应网络时采用的是网络名称而非网卡名称;
: J: N( Q! l% ~# 需要明确的是物理网卡是本地有效,根据主机实际使用的网卡名确定;  u7 l  H0 ^! m3 F: u& Z5 {
# 另有” bridge_mappings”参数对应网桥
3 A1 @5 B1 F. H) e  A& I2 Z5 Cphysical_interface_mappings = external:eth1,vlan:eth3
  ~. o/ D% Z4 }( P' n+ r8 y[network_log]& Y+ f+ t' H* A8 C$ G8 N4 `
[securitygroup]
8 X" a5 x1 \  Y/ U5 efirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver9 K) D' U- d# y# f" u. R5 a
enable_security_group = true0 f' [2 V% F* f3 J  \0 H% d
[vxlan]0 I# Z' W) F$ {
enable_vxlan = true
5 ]" u4 q, O9 n( q: c/ O0 X8 |# tunnel租户网络(vxlan)vtep端点,这里对应规划的eth2(的地址),根据节点做相应修改! @8 C5 `! _" W- e
local_ip = 10.0.0.315 R( y6 p' O; ?0 q' i1 N
l2_population = true4 N( R1 l) q  T2 V5 n0 G; ]! S
复制代码2 l  _3 @# P" g3 g1 b/ F1 Q: a2 g3 x
2)配置内核参数& s* U3 w* ^2 S4 R) E4 B
复制代码
8 k' C7 {# h  H( Y- Y# bridge:是否允许桥接;% E$ G/ k7 ~; m- u2 H' I7 H8 T* J
# 如果“sysctl -p”加载不成功,报” No such file or directory”错误,需要加载内核模块“br_netfilter”;8 m# G: B% v, _9 T
# 命令“modinfo br_netfilter”查看内核模块信息;
4 q6 K1 d# }, r; {: `7 v) [9 w- Z# 命令“modprobe br_netfilter”加载内核模块) K9 z5 B+ d  Q8 D& X, D
[root@controller01 ~]# echo "# bridge" >> /etc/sysctl.conf
7 u* X  s! K4 D[root@controller01 ~]# echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf) p! s8 L+ p  s( R: g
[root@controller01 ~]# echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
# h' e( M! f3 e. V' C[root@controller01 ~]# sysctl -p4 ?5 l  L! B8 r0 k' `$ m
复制代码9 D8 u! O7 Y3 W) S" x
7. 配置l3_agent.ini(self-networking)
4 ^! s5 n$ a4 \5 l3 p9 e5 d复制代码0 m* c7 ?' P4 F3 X3 s* }
# 在全部控制节点操作,以controller01节点为例;
5 G9 d5 x0 ^7 v: V3 x# l3_agent.ini文件的权限:root:neutron: g4 E! a5 k. v1 ?
[root@controller01 ~]# cp /etc/neutron/l3_agent.ini /etc/neutron/l3_agent.ini.bak$ Y/ S7 z* M* i7 B+ L; ?) E6 P
[root@controller01 ~]# egrep -v "^$|^#"  /etc/neutron/l3_agent.ini* D- u$ q7 b; |# Y
[DEFAULT]7 l+ z6 F+ q% U+ _$ e
interface_driver = linuxbridge
: F& Z& h. L( y" i1 r0 s0 }[agent]
, c: }% c6 q% x, P1 X2 Z0 B/ x[ovs]
( u6 P6 y; ~' X5 b复制代码+ L6 a( X3 V1 V. P$ ^: M, s' `
8. 配置dhcp_agent.ini( p  K: y; g9 Q  o
复制代码
' r% T, S( a3 u- S* M# 在全部控制节点操作,以controller01节点为例;8 a+ r  X% F. E+ e
# 使用dnsmasp提供dhcp服务;$ S3 g/ z! V8 }; A
# dhcp_agent.ini文件的权限:root:neutron
9 }7 C+ W5 A* q1 A7 |[root@controller01 ~]# cp /etc/neutron/dhcp_agent.ini /etc/neutron/dhcp_agent.ini.bak
- Z9 [: l- v$ k. Q[root@controller01 ~]# egrep -v "^$|^#" /etc/neutron/dhcp_agent.ini+ d5 L9 R$ q' v% Y8 C6 X
[DEFAULT]3 u' Y( x  j, N! E- J
interface_driver = linuxbridge$ q4 {' a5 O. R& I
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
# j- T* P# i4 v8 Kenable_isolated_metadata = true% E9 ]8 c! k. z0 ]- o" c( W# W
[agent]: v$ Q7 E4 X8 e" e" n" Z$ O6 @! f
[ovs]
6 T0 C/ _9 {! w7 D- p" u1 k复制代码
# |: x: J: u4 H% e$ c) A  r* |4 M9. 配置metadata_agent.ini0 ]; i  @* l7 N
复制代码7 u# h7 m" M8 o/ x6 }, W4 d% q
# 在全部控制节点操作,以controller01节点为例;% ^* t- Z9 b+ f, z
# metadata_proxy_shared_secret:与/etc/nova/nova.conf文件中参数一致;
& E; g: M9 p2 i+ ?% Z! `  M/ m# metadata_agent.ini文件的权限:root:neutron
  v' q( h4 k* _9 j1 H8 X0 Q3 y[root@controller01 ~]# cp /etc/neutron/metadata_agent.ini  /etc/neutron/metadata_agent.ini.bak$ b2 R( k6 P$ S9 W* A
[root@controller01 ~]# egrep -v "^$|^#"  /etc/neutron/metadata_agent.ini
& K; b* ~. ~1 Y& N3 l/ }* d[DEFAULT]9 S8 G" p7 I, h
nova_metadata_host = controller$ ?+ T3 S9 N2 M' j3 @! M
metadata_proxy_shared_secret = neutron_metadata_secret3 x1 e5 G! R! Z/ Z; A2 X- x
[agent]
1 o6 W) y2 B8 L7 v0 d) N/ x[cache]4 o7 p+ g: }7 P9 O
复制代码
: E4 p6 Q) X7 A: y) j2 A2 U10. 配置nova.conf4 l8 E9 L5 H. ~" l) {( g
复制代码* X9 J2 F2 ^/ W0 C/ C7 W3 z5 C
# 在全部控制节点操作,以controller01节点为例;: l  |: ?0 ^0 r
# 配置只涉及nova.conf的”[neutron]”字段;
6 c; S- F3 ~# p. d# metadata_proxy_shared_secret:与/etc/neutron/metadata_agent.ini文件中参数一致
, N& b9 |( [( o[root@controller01 ~]# vim /etc/nova/nova.conf0 m" k. i1 O  v3 V
[neutron], P2 G- K6 e! T1 `- X$ i% j3 t( V
url = http://controller:96966 u$ {$ ]9 q* I
auth_url = http://controller:35357: |3 w6 Y! l2 K9 R' J
auth_type = password
# y, ?+ o- H% |project_domain_name = default$ _( E  c! H5 y, Z
user_domain_name = default
' L! j" W9 j+ Qregion_name = RegionTest; i2 E$ T+ h* y' t, g6 b: Q
project_name = service" M! U0 W$ L4 L0 @) p/ M
username = neutron
  ~: [' X0 K$ ^; T0 Mpassword = neutron_pass% o5 n* S, i( R5 K
service_metadata_proxy = true- e8 k- L% a% @& j3 x' q+ E
metadata_proxy_shared_secret = neutron_metadata_secret
- U, D" X. U: D! f( A* H4 P复制代码
. Y* n$ D0 B9 ]+ ?* t8 a. [8 K7 z! |11. 同步neutron数据库' U) ~. [% l' T* \6 h) X
# 任意控制节点操作;- v$ b( J  i( {" r' q
[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" neutron
4 E& F7 m$ \2 f5 ^# 验证% t& c2 j; Z+ l. V" ~5 {" Q2 r
[root@controller01 ~]# mysql -h controller01 -u neutron -pneutron_dbpass -e "use neutron;show tables;"# S7 T7 Z5 T: q/ a
12. 启动服务8 r( |0 ^1 w- m$ X7 n  o
复制代码
* H4 {: u; R* O  h  X, f. T" ~) @# 全部控制节点操作;
# Z' E- d, M# T$ `: E3 \4 t# 变更nova配置文件,首先需要重启nova服务, N+ |+ r& y9 s: V: @
[root@controller01 ~]# systemctl restart openstack-nova-api.service
+ n) e% d! X5 Z! v, `! o3 @) F4 W- M! h
5 \/ D) y+ B+ k- M: V% h/ `8 i# 开机启动
# c3 q2 U) S8 n: j  T! f% U! B[root@controller01 ~]# systemctl enable neutron-server.service \
. M: H1 |& N, v, N9 G: o/ F neutron-linuxbridge-agent.service \1 c% O% H3 b; s, m
neutron-l3-agent.service \* U) i5 J8 j  d
neutron-dhcp-agent.service \6 N; T1 c' [2 M. X0 m/ R6 s0 v
neutron-metadata-agent.service
' ^0 ~9 Q4 \/ B+ N9 S# 启动
  @7 l, X6 T, i1 K: s# g7 G6 G[root@controller01 ~]# systemctl restart neutron-server.service& h- J/ a8 F. T" n) K- l3 M0 ^1 {
[root@controller01 ~]# systemctl restart neutron-linuxbridge-agent.service' |% t! A" i- N; B
[root@controller01 ~]# systemctl restart neutron-l3-agent.service& q# c% X" a. I% m" r) u
[root@controller01 ~]# systemctl restart neutron-dhcp-agent.service( H+ Z5 N% z  M5 V5 q. o' j' g
[root@controller01 ~]# systemctl restart neutron-metadata-agent.service
) g# }+ y7 j: V' Y复制代码7 n2 F: C+ w; c% f
13. 验证
% a' c9 F: g- P) v/ }复制代码; F# x+ s  \8 m; Q! ^- d' ]
[root@controller01 ~]# . admin-openrc
9 x5 j4 a" C9 f4 E1 R2 g# 查看加载的扩展服务
# k" V$ f) M1 t2 o6 j[root@controller01 ~]# openstack extension list --network: H7 }, g4 f8 W8 P% L
# 查看agent服务
- \  }2 p9 W  K/ F' ]4 l6 ?[root@controller01 ~]# openstack network agent list- g# ?, Y) h4 y% a
复制代码* ~8 J( o1 ]# V& U2 ?* J
/ p% `; z0 `# \/ |
14. 设置pcs资源
) C4 X7 f: A  W; P% `复制代码
$ v8 E7 u4 c$ `" ^# 在任意控制节点操作;
* L5 k. m5 G! G( j* O0 P. V, F# 添加资源neutron-server,neutron-linuxbridge-agent,neutron-l3-agent,neutron-dhcp-agent与neutron-metadata-agent
1 _" L0 d8 w. W* ^' h2 G- I( O- q# v[root@controller01 ~]# pcs resource create neutron-server systemd:neutron-server --clone interleave=true; u: T2 W3 @% A& Q2 s! D
[root@controller01 ~]# pcs resource create neutron-linuxbridge-agent systemd:neutron-linuxbridge-agent --clone interleave=true
( I( X$ D3 I% j9 l[root@controller01 ~]# pcs resource create neutron-l3-agent systemd:neutron-l3-agent --clone interleave=true7 z3 N1 v$ j, q# V
[root@controller01 ~]# pcs resource create neutron-dhcp-agent systemd:neutron-dhcp-agent --clone interleave=true$ d9 w- v  H$ p8 y) ~8 x
[root@controller01 ~]# pcs resource create neutron-metadata-agent systemd:neutron-metadata-agent --clone interleave=true, A3 R* Z! j7 Q9 Q
# 查看pcs资源
- ?! _6 p' u+ g+ V+ {! E" [& g" b[root@controller01 ~]# pcs resource
, H" y/ \; G" E3 ^" \5 R2 X' k
 楼主| 发表于 2021-10-8 17:17:29 | 显示全部楼层
# 在全部控制节点安装neutron相关服务,以controller01节点为例5 H: d' V* F; y- t- c+ ?
[root@controller01 ~]# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge python-neutronclient ebtables ipset -y
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

如有购买积分卡请联系497906712

QQ|返回首页|Archiver|手机版|小黑屋|易陆发现 点击这里给我发消息

GMT+8, 2021-12-2 07:58 , Processed in 0.047390 second(s), 22 queries .

Powered by LR.LINUX.cloud bbs168x X3.2 Licensed

© 2012-2022 Comsenz Inc.

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