In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-01-27 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Database >
Share
Shulou(Shulou.com)06/01 Report--
Zhou Tianpeng of Waldorf Technology
In my last translation, the author mentioned when introducing Leaf Node.
* * although leaf node does not require direct access to shared storage, it is best to connect to shared storage, because it is uncertain when the leaf node will be converted to hub node in the future. **
In fact, this statement is not accurate enough, in 12cR1, it is not possible to run a read-only database instance on leaf node, so not connecting to shared storage does not affect its use at all. 12cR2's leaf node can run read-only database instances, and once there is a database on leaf node, leaf node (exactly leaf node should be called reader node) must connect to shared storage.
This time, I'll show you how to convert the roles of nodes between hub node and leaf node. Since the author already has a leaf node in the experimental environment, we start from leaf node to hub node.
Initial state:
`
[root@rac1 ~] # crsctl get cluster mode status
Cluster is running in "flex" mode
[root@rac1 ~] # srvctl status srvpool-detail
Server pool name: Free
Active servers count: 0
Active server names:
Server pool name: Generic
Active servers count: 0
Active server names:
Server pool name: RF1POOL
Active servers count: 1
Active server names: rac3
NAME=rac3 STATE=ONLINE
Server pool name: ztp_pool
Active servers count: 2
Active server names: rac1,rac2
NAME=rac1 STATE=ONLINE
NAME=rac2 STATE=ONLINE
[root@rac1 ~] # crsctl get node role config-all
Node 'rac1' configured role is' hub'
Node 'rac2' configured role is' hub'
Node 'rac3' configured role is' leaf'
[root@rac1 ~] # crsctl get node role status-all
Node 'rac1' active role is' hub'
Node 'rac2' active role is' hub'
Node 'rac3' active role is' leaf'
`
# leaf to hub
There is a database called orcl running on the cluster. Observe the status of the orcl library before changing roles.
`
Ora.orcl.db
1 ONLINE ONLINE rac3 Open,Readonly,HOME=/
U01/app/oracle/produ
Ct/12.2.0/dbhome_1,S
TABLE
2 ONLINE ONLINE rac2 Open,HOME=/u01/app/o
Racle/product/12.2.0
/ dbhome_1,STABLE
3 ONLINE ONLINE rac1 Open,HOME=/u01/app/o
Racle/product/12.2.0
/ dbhome_1,STABLE
`
Obviously, because rac3 is now leaf node, the database instance on rac3 can only be opened as read-only.
You can change the role of rac3 from leaf node to hub node by doing the following
* * crsctl set node role {hub | leaf} * *
`
[root@rac3 ~] # crsctl set node role hub
CRS-4408: Node 'rac3' configured role successfully changed; restart Oracle High Availability Services for new role to take effect.
`
View the role information of each node
`
[root@rac1 ~] # crsctl get node role config-all
Node 'rac1' configured role is' hub'
Node 'rac2' configured role is' hub'
Node 'rac3' configured role is' hub', but active role is' leaf'.
Restart Oracle High Availability Services for the new role to take effect.
[root@rac1 ~] # crsctl get node role status-all
Node 'rac1' active role is' hub'
Node 'rac2' active role is' hub'
Node 'rac3' active role is' leaf', but configured role is' hub'.
Restart Oracle High Availability Services for the new role to take effect.
`
According to the command output information, the crs of this node needs to be restarted before the configuration takes effect, that is, * * role conversion cannot be carried out online. **
Turn off the crs service for rac3
`
[root@rac3 ~] # crsctl stop crs
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'rac3'
CRS-2673: Attempting to stop 'ora.crsd' on' rac3'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on server 'rac3'
CRS-2673: Attempting to stop 'ora.orcl.db' on' rac3'
CRS-2677: Stop of 'ora.orcl.db' on' rac3' succeeded
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on' rac3'
CRS-2673: Attempting to stop 'ora.LISTENER_LEAF.lsnr' on' rac3'
CRS-2677: Stop of 'ora.LISTENER_LEAF.lsnr' on' rac3' succeeded
CRS-2677: Stop of 'ora.LISTENER.lsnr' on' rac3' succeeded
CRS-2673: Attempting to stop 'ora.rac3.vip' on' rac3'
CRS-2677: Stop of 'ora.rac3.vip' on' rac3' succeeded
CRS-2672: Attempting to start 'ora.rac3.vip' on' rac2'
CRS-2676: Start of 'ora.rac3.vip' on' rac2' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on' rac3'
CRS-2677: Stop of 'ora.net1.network' on' rac3' succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'rac3' has completed
CRS-2677: Stop of 'ora.crsd' on' rac3' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on' rac3'
CRS-2673: Attempting to stop 'ora.crf' on' rac3'
CRS-2673: Attempting to stop 'ora.gpnpd' on' rac3'
CRS-2673: Attempting to stop 'ora.mdnsd' on' rac3'
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on' rac3' succeeded
CRS-2677: Stop of 'ora.gpnpd' on' rac3' succeeded
CRS-2673: Attempting to stop 'ora.ctssd' on' rac3'
CRS-2673: Attempting to stop 'ora.evmd' on' rac3'
CRS-2677: Stop of 'ora.mdnsd' on' rac3' succeeded
CRS-2677: Stop of 'ora.evmd' on' rac3' succeeded
CRS-2677: Stop of 'ora.crf' on' rac3' succeeded
CRS-2677: Stop of 'ora.ctssd' on' rac3' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on' rac3'
CRS-2677: Stop of 'ora.cssd' on' rac3' succeeded
CRS-2673: Attempting to stop 'ora.driver.afd' on' rac3'
CRS-2673: Attempting to stop 'ora.gipcd' on' rac3'
CRS-2677: Stop of 'ora.driver.afd' on' rac3' succeeded
CRS-2677: Stop of 'ora.gipcd' on' rac3' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'rac3' has completed
CRS-4133: Oracle High Availability Services has been stopped.
`
View the role information of each node
`
[root@rac1 ~] # crsctl get node role config-all
Node 'rac1' configured role is' hub'
Node 'rac2' configured role is' hub'
[root@rac1 ~] # crsctl get node role status-all
Node 'rac1' active role is' hub'
Node 'rac2' active role is' hub'
`
Start the crs service for rac3
`
[root@rac3 ~] # crsctl start crs-wait
CRS-4123: Starting Oracle High Availability Services-managed resources
CRS-2672: Attempting to start 'ora.evmd' on' rac3'
CRS-2672: Attempting to start 'ora.mdnsd' on' rac3'
CRS-2676: Start of 'ora.mdnsd' on' rac3' succeeded
CRS-2676: Start of 'ora.evmd' on' rac3' succeeded
CRS-2672: Attempting to start 'ora.gpnpd' on' rac3'
CRS-2676: Start of 'ora.gpnpd' on' rac3' succeeded
CRS-2672: Attempting to start 'ora.gipcd' on' rac3'
CRS-2676: Start of 'ora.gipcd' on' rac3' succeeded
CRS-2672: Attempting to start 'ora.cssdmonitor' on' rac3'
CRS-2676: Start of 'ora.cssdmonitor' on' rac3' succeeded
CRS-2672: Attempting to start 'ora.cssd' on' rac3'
CRS-2672: Attempting to start 'ora.diskmon' on' rac3'
CRS-2676: Start of 'ora.diskmon' on' rac3' succeeded
CRS-2676: Start of 'ora.cssd' on' rac3' succeeded
CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on' rac3'
CRS-2672: Attempting to start 'ora.ctssd' on' rac3'
CRS-2676: Start of 'ora.ctssd' on' rac3' succeeded
CRS-2672: Attempting to start 'ora.crf' on' rac3'
CRS-2676: Start of 'ora.crf' on' rac3' succeeded
CRS-2672: Attempting to start 'ora.crsd' on' rac3'
CRS-2676: Start of 'ora.crsd' on' rac3' succeeded
CRS-2676: Start of 'ora.cluster_interconnect.haip' on' rac3' succeeded
CRS-2672: Attempting to start 'ora.drivers.acfs' on' rac3'
CRS-2676: Start of 'ora.drivers.acfs' on' rac3' succeeded
CRS-2672: Attempting to start 'ora.asm' on' rac3'
CRS-2676: Start of 'ora.asm' on' rac3' succeeded
CRS-6017: Processing resource auto-start for servers: rac3
CRS-2672: Attempting to start 'ora.ASMNET1LSNR_ASM.lsnr' on' rac3'
CRS-2673: Attempting to stop 'ora.rac3.vip' on' rac2'
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN2.lsnr' on' rac2'
CRS-2672: Attempting to start 'ora.ons' on' rac3'
CRS-2677: Stop of 'ora.rac3.vip' on' rac2' succeeded
CRS-2672: Attempting to start 'ora.rac3.vip' on' rac3'
CRS-2677: Stop of 'ora.LISTENER_SCAN2.lsnr' on' rac2' succeeded
CRS-2673: Attempting to stop 'ora.scan2.vip' on' rac2'
CRS-2677: Stop of 'ora.scan2.vip' on' rac2' succeeded
CRS-2672: Attempting to start 'ora.scan2.vip' on' rac3'
CRS-2676: Start of 'ora.ASMNET1LSNR_ASM.lsnr' on' rac3' succeeded
CRS-2676: Start of 'ora.rac3.vip' on' rac3' succeeded
CRS-2672: Attempting to start 'ora.LISTENER.lsnr' on' rac3'
CRS-2676: Start of 'ora.ons' on' rac3' succeeded
CRS-2676: Start of 'ora.scan2.vip' on' rac3' succeeded
CRS-2672: Attempting to start 'ora.LISTENER_SCAN2.lsnr' on' rac3'
CRS-2676: Start of 'ora.LISTENER.lsnr' on' rac3' succeeded
CRS-2679: Attempting to clean 'ora.asm' on' rac3'
CRS-2676: Start of 'ora.LISTENER_SCAN2.lsnr' on' rac3' succeeded
CRS-2681: Clean of 'ora.asm' on' rac3' succeeded
CRS-2672: Attempting to start 'ora.asm' on' rac3'
CRS-2676: Start of 'ora.asm' on' rac3' succeeded
CRS-2672: Attempting to start 'ora.DATA.dg' on' rac3'
CRS-2672: Attempting to start 'ora.FLEXDG.dg' on' rac3'
CRS-2676: Start of 'ora.FLEXDG.dg' on' rac3' succeeded
CRS-2676: Start of 'ora.DATA.dg' on' rac3' succeeded
CRS-2672: Attempting to start 'ora.orcl.db' on' rac3'
CRS-2672: Attempting to start 'ora.prod1.db' on' rac3'
CRS-2676: Start of 'ora.orcl.db' on' rac3' succeeded
CRS-2676: Start of 'ora.prod1.db' on' rac3' succeeded
CRS-6016: Resource auto-start has completed for server rac3
CRS-6024: Completed start of Oracle Cluster Ready Services-managed resources
CRS-4123: Oracle High Availability Services has been started.
`
View the role information of each node after startup is completed
`
[root@rac1 ~] # crsctl get node role config-all
Node 'rac1' configured role is' hub'
Node 'rac2' configured role is' hub'
Node 'rac3' configured role is' hub'
[root@rac1 ~] # crsctl get node role status-all
Node 'rac1' active role is' hub'
Node 'rac2' active role is' hub'
Node 'rac3' active role is' hub'
`
At this point, observe the status of the whole cluster.
`
[root@rac1 ~] # crsctl status res-t
Name Target State Server State details
Local Resources
Ora.ASMNET1LSNR_ASM.lsnr
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ONLINE ONLINE rac3 STABLE
Ora.DATA.dg
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ONLINE ONLINE rac3 STABLE
Ora.FLEXDG.dg
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ONLINE ONLINE rac3 STABLE
Ora.LISTENER.lsnr
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ONLINE ONLINE rac3 STABLE
Ora.OCR.dg
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ONLINE ONLINE rac3 STABLE
Ora.net1.network
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ONLINE ONLINE rac3 STABLE
Ora.ons
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ONLINE ONLINE rac3 STABLE
Ora.proxy_advm
OFFLINE OFFLINE rac1 STABLE
OFFLINE OFFLINE rac2 STABLE
OFFLINE OFFLINE rac3 STABLE
Cluster Resources
Ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac1 STABLE
Ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE rac3 STABLE
Ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE rac2 STABLE
Ora.MGMTLSNR
1 OFFLINE OFFLINE STABLE
Ora.asm
1 ONLINE ONLINE rac1 Started,STABLE
2 ONLINE ONLINE rac2 Started,STABLE
3 ONLINE ONLINE rac3 Started,STABLE
Ora.cvu
1 ONLINE ONLINE rac2 STABLE
Ora.gns
1 ONLINE ONLINE rac1 STABLE
Ora.gns.vip
1 ONLINE ONLINE rac1 STABLE
Ora.orcl.db
1 ONLINE ONLINE rac3 Open,HOME=/u01/app/o
Racle/product/12.2.0
/ dbhome_1,STABLE
2 ONLINE ONLINE rac2 Open,HOME=/u01/app/o
Racle/product/12.2.0
/ dbhome_1,STABLE
3 ONLINE ONLINE rac1 Open,HOME=/u01/app/o
Racle/product/12.2.0
/ dbhome_1,STABLE
Ora.prod1.db
1 ONLINE ONLINE rac1 Open,HOME=/u01/app/o
Racle/product/12.2.0
/ dbhome_1,STABLE
2 ONLINE ONLINE rac2 Open,HOME=/u01/app/o
Racle/product/12.2.0
/ dbhome_1,STABLE
3 ONLINE ONLINE rac3 Open,HOME=/u01/app/o
Racle/product/12.2.0
/ dbhome_1,STABLE
Ora.qosmserver
1 OFFLINE OFFLINE STABLE
Ora.rac1.vip
1 ONLINE ONLINE rac1 STABLE
Ora.rac2.vip
1 ONLINE ONLINE rac2 STABLE
Ora.rac3.vip
1 ONLINE ONLINE rac3 STABLE
Ora.scan1.vip
1 ONLINE ONLINE rac1 STABLE
Ora.scan2.vip
1 ONLINE ONLINE rac3 STABLE
Ora.scan3.vip
1 ONLINE ONLINE rac2 STABLE
`
At this point, the instance of the orcl library on rac3 has become open instead of the previous Open,Readonly
# hub to leaf
* * in 12cR2, if you want to set the role of a node to leaf node, the scan parsing method of the cluster must be GNS. **
Through the status information of the whole cluster above, we can also see that the experimental environment of the author is configured with GNS. If not configured, an error will be reported when executing the crsctl set node role leaf command.
`
[root@rac3 ~] # crsctl set node role leaf
CRS-4408: Node 'rac3' configured role successfully changed; restart Oracle High Availability Services for new role to take effect.
`
As above, rac3 still needs to restart crs for the configuration to take effect.
Process outline
The role information of each node after restart is as follows:
`
[root@rac1 ~] # crsctl get node role status-all
Node 'rac1' active role is' hub'
Node 'rac2' active role is' hub'
Node 'rac3' active role is' leaf'
[root@rac1 ~] # crsctl get node role config-all
Node 'rac1' configured role is' hub'
Node 'rac2' configured role is' hub'
Node 'rac3' configured role is' leaf'
`
At this point, the status of the entire cluster is as follows:
`
[root@rac1 ~] # crsctl status res-t
Name Target State Server State details
Local Resources
Ora.ASMNET1LSNR_ASM.lsnr
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
Ora.DATA.dg
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
Ora.FLEXDG.dg
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
Ora.LISTENER.lsnr
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ONLINE ONLINE rac3 STABLE
Ora.LISTENER_LEAF.lsnr
OFFLINE OFFLINE rac3 STABLE
Ora.OCR.dg
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
Ora.net1.network
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
ONLINE ONLINE rac3 STABLE
Ora.ons
ONLINE ONLINE rac1 STABLE
ONLINE ONLINE rac2 STABLE
Ora.proxy_advm
OFFLINE OFFLINE rac1 STABLE
OFFLINE OFFLINE rac2 STABLE
Cluster Resources
Ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac1 STABLE
Ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE rac1 STABLE
Ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE rac2 STABLE
Ora.MGMTLSNR
1 OFFLINE OFFLINE STABLE
Ora.asm
1 ONLINE ONLINE rac1 Started,STABLE
2 ONLINE ONLINE rac2 Started,STABLE
3 ONLINE OFFLINE Instance Shutdown,ST
ABLE
Ora.cvu
1 ONLINE ONLINE rac2 STABLE
Ora.gns
1 ONLINE ONLINE rac1 STABLE
Ora.gns.vip
1 ONLINE ONLINE rac1 STABLE
Ora.orcl.db
1 ONLINE ONLINE rac3 Open,Readonly,HOME=/
U01/app/oracle/produ
Ct/12.2.0/dbhome_1,S
TABLE
2 ONLINE ONLINE rac2 Open,HOME=/u01/app/o
Racle/product/12.2.0
/ dbhome_1,STABLE
3 ONLINE ONLINE rac1 Open,HOME=/u01/app/o
Racle/product/12.2.0
/ dbhome_1,STABLE
Ora.prod1.db
1 ONLINE ONLINE rac1 Open,HOME=/u01/app/o
Racle/product/12.2.0
/ dbhome_1,STABLE
2 ONLINE ONLINE rac2 Open,HOME=/u01/app/o
Racle/product/12.2.0
/ dbhome_1,STABLE
3 ONLINE OFFLINE Instance Shutdown,ST
ABLE
Ora.qosmserver
1 OFFLINE OFFLINE STABLE
Ora.rac1.vip
1 ONLINE ONLINE rac1 STABLE
Ora.rac2.vip
1 ONLINE ONLINE rac2 STABLE
Ora.rac3.vip
1 ONLINE ONLINE rac3 STABLE
Ora.scan1.vip
1 ONLINE ONLINE rac1 STABLE
Ora.scan2.vip
1 ONLINE ONLINE rac1 STABLE
Ora.scan3.vip
1 ONLINE ONLINE rac2 STABLE
`
You can find that after switching from rac3 to leaf node, the resource ora.LISTENER_LEAF.lsnr has been added.
Moreover, the asm instance on rac3 is not started, and the db instance is opened in readonly mode.
It is important to note that the read-only db instance on leaf node registers the service with LISTENER_LEAF instead of LISTENER.
So the output of lsnrctl status never shows any registered services.
`
[root@rac3 ~] # srvctl start listener-listener LISTENER_LEAF
[grid@rac3 ~] $lsnrctl status
LSNRCTL for Linux: Version 12.2.0.1.0-Production on 27-JUL-2017 16:46:01
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (DESCRIPTION= (ADDRESS= (PROTOCOL=IPC) (KEY=LISTENER)
STATUS of the LISTENER
-
Alias LISTENER
Version TNSLSNR for Linux: Version 12.2.0.1.0-Production
Start Date 27-JUL-2017 16:24:27
Uptime 0 days 0 hr. 21 min. 34 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File / u01/app/12.2.0/grid/network/admin/listener.ora
Listener Log File / u01/app/grid/diag/tnslsnr/rac3/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION= (ADDRESS= (PROTOCOL=ipc) (KEY=LISTENER)
(DESCRIPTION= (ADDRESS= (PROTOCOL=tcp) (HOST=10.10.70.103) (PORT=1521))
(DESCRIPTION= (ADDRESS= (PROTOCOL=tcp) (HOST=10.10.70.186) (PORT=1521))
The listener supports no services
The command completed successfully
[grid@rac3 ~] $lsnrctl status listener_leaf
LSNRCTL for Linux: Version 12.2.0.1.0-Production on 27-JUL-2017 16:46:02
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (DESCRIPTION= (ADDRESS= (PROTOCOL=IPC) (KEY=LISTENER_LEAF)
STATUS of the LISTENER
-
Alias LISTENER_LEAF
Version TNSLSNR for Linux: Version 12.2.0.1.0-Production
Start Date 27-JUL-2017 16:44:31
Uptime 0 days 0 hr. 1 min. 31 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File / u01/app/12.2.0/grid/network/admin/listener.ora
Listener Log File / u01/app/grid/diag/tnslsnr/rac3/listener_leaf/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION= (ADDRESS= (PROTOCOL=ipc) (KEY=LISTENER_LEAF)
(DESCRIPTION= (ADDRESS= (PROTOCOL=tcp) (HOST=10.10.70.103) (PORT=1525))
Services Summary...
Service "5491bed1838610f0e05366460a0a5736" has 1 instance (s).
Instance "orcl_1", status READY, has 1 handler (s) for this service...
Service "5507ca8c0abd4747e05365460a0a8d01" has 1 instance (s).
Instance "orcl_1", status READY, has 1 handler (s) for this service...
Service "orcl" has 1 instance (s).
Instance "orcl_1", status READY, has 1 handler (s) for this service...
Service "orclXDB" has 1 instance (s).
Instance "orcl_1", status READY, has 1 handler (s) for this service...
Service "orclpdb" has 1 instance (s).
Instance "orcl_1", status READY, has 1 handler (s) for this service...
Service "ztp" has 1 instance (s).
Instance "orcl_1", status READY, has 1 handler (s) for this service...
The command completed successfully
`
Finally, it should be noted that the default listening port on leaf node is 1525.
# conclusion
* changing the role of a node requires restarting the crs of the node
* GNS must be configured to convert a node to leaf node in 12cR2
* asm instances on leaf node will not be started, and db instances can only be started as read-only.
* manual updates are no longer needed in 12cR1, and role modification operations are greatly simplified in inventory,12cR2
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.