设为首页 收藏本站
查看: 1219|回复: 0

[经验分享] 【APP & Web架构】企业web高可用集群实战之haproxy篇续(二)

[复制链接]

尚未签到

发表于 2019-1-1 15:00:23 | 显示全部楼层 |阅读模式
第三部分:lnmp集群部署

承接上篇:http://linuxops.blog.运维网.com/2238445/899637
请参考本人的以下文章:
http://linuxops.blog.运维网.com/2238445/712035
http://linuxops.blog.运维网.com/2238445/701590
要说明的两点:
1.这里的web数据在通过后面要介绍的NFS挂载共享!
2.数据库与web是分开在不同服务器上!

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

第四部分:mysql主从部署

mysql主从相对比较简单,不过多讲解!
1.主服务器和从服务器上安装的MySQL最好版本一致,从版本可以高于主.
mysql> select version();
+------------+
| version()  |
+------------+
| 5.5.12-log |
+------------+
1 row in set (0.00 sec)
我这里选择5.5.12!

2.在主服务器上为从服务器设置一个连接账户
mysql> grant replication slave,replication client on *.* to rep@"192.168.8.41" identified by "rep";

3. 执行FLUSH TABLES WITH READ LOCK 进行锁表
mysql> FLUSH TABLES WITH READ LOCK;

4. 让客户程序保持运行,发出FLUSH TABLES语句让读锁定保持有效。(如果退出客户程序,锁被释放)。进入主服务器的数据目录,然后执行命令:
在主上操作:
shell> tar zcf /tmp/mysql.tgz /data/mysql/data
shell> scp /tmp/mysql.tgz 192.168.8.41:/tmp/
在从上操作:
shell> tar zxf /tmp/mysql.tgz /data/mysql/data
注意:对于主服务器没有数据时没必须以是3和4步骤!

读取主服务器上当前的二进制日志名(File)和偏移量值(Position),并记录下来:
mysql> SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000011 |      349 |              |                  |
+---------------+----------+--------------+------------------+
1 row in set (0.03 sec)

取得快照并记录日志名和偏移量后(POS),可以在主服务器上重新启用写活动:
mysql> UNLOCK TABLES;

5. 确保主服务器主机上my.cnf文件的[mysqld]部分包括一个log_bin选项
[mysqld]  
log_bin=mysql-bin
server-id=1

6. 停止用于从服务器的服务器并在其my.cnf文件中添加下面的行:
[mysqld]  
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
server-id=2

7.如果对主服务器的数据进行二进制备份,启动从服务器之前将它复制到从服务器的数据目录中。
确保对这些文件和目录的权限正确。服务器 MySQL运行的用户必须能够读写文件,如同在主服务器上一样。

8. 用--skip-slave-start选项启动从服务器,以便它不立即尝试连接主服务器。(可选操作)

9. 在从服务器上执行下面的语句:
mysql>change master to MASTER_HOST='192.168.8.40', MASTER_USER='rep', MASTER_PASSWORD='rep', MASTER_LOG_FILE='binlog.000011', MASTER_LOG_POS=349;

9. 启动从服务器线程:
mysql> START SLAVE;

10.验证部署是否成功
mysql> SHOW slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.8.40
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000011
          Read_Master_Log_Pos: 349
               Relay_Log_File: relaylog.000002
                Relay_Log_Pos: 250
        Relay_Master_Log_File: binlog.000011
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB: mysql,test,information_schema
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 349
              Relay_Log_Space: 399
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1
1 row in set (0.03 sec)

当Slave_IO_Running和Slave_SQL_Running都显示Yes的时候,表示同步成功。

到此mysql主从同步配置完成!!!!!!!下面开开始相对来说比较复杂的nfs高可用架构!
到时再有必要再添加主从切换部署说明。。。。。。。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

第五部分:NFS高可用web存储部署

一.环境介绍
nfs1 eth0:192.168.8.60  eth1:192.168.125.60   ---作为主服务器
nfs2 eth0:192.168.8.61  eth1:192.168.125.61   ---作为从服务器
虚拟IP 192.168.8.62   ---通过Heartbeat来实现,对外提供服务的IP
两台服务器将 /dev/sda5 作为镜像

1.同步时钟(实践证明这个不同步关系不大,但是做下这步也无防)
[root@nfs1 ~]# ntpdate ntp.api.bz

2.设置hosts相互解析
在 /etc/hosts 文件中加入如下内容:
192.168.8.60nfs1
192.168.8.61nfs2


二.drbd安装配置

1.drbd安装
源码安装:
[root@nfs1 ~]# tar zxf drbd-8.3.5.tar.gz
[root@nfs1 ~]# cd drbd-8.3.5
[root@nfs1 ~]# make
[root@nfs1 ~]# make install

yum 安装:
[root@nfs1 ~]# yum -y install drbd83 kmod-drbd83

2.加载模块
[root@nfs1 ~]# modprobe drbd
[root@nfs1 ~]# lsmod |grep drbd
drbd                  300440  0

3.drbd配置
[root@nfs1 ~]# mv /etc/drbd.conf /etc/drbd.conf.bak
[root@nfs1 ~]# vi /etc/drbd.conf
加入如下内容:


  •   global {
  •   usage-count yes;
  •   }
  •   common {
  •   syncer { rate 100M; }
  •   }
  •   resource r0 {
  •   protocol C;
  •   startup { wfc-timeout 0; degr-wfc-timeout 120; }
  •   disk { on-io-error detach; }
  •   net {
  •   timeout 60;
  •   connect-int 10;
  •   ping-int 10;
  •   max-buffers 2048;
  •   max-epoch-size 2048;
  •   }
  •   syncer { rate 30M; }
  •   on nfs1 {
  •   device    /dev/drbd0;
  •   disk      /dev/sda5;
  •   address   192.168.8.60:7788;
  •   meta-disk internal;
  •   }
  •   on nfs2 {
  •   device    /dev/drbd0;
  •   disk      /dev/sda5;
  •   address   192.168.8.61:7788;
  •   meta-disk internal;
  •   }
  •   }

4.创建资源
同于在我的实验环境中我之前的/dev/sda5在安装系统时创建的文件系统,因此这里要破坏文件系统(如果是新增的硬盘,此步可省略)。
[root@nfs1 ~]# dd if=/dev/zero bs=1M count=1 of=/dev/sda5;sync;sync

1).创建一个名为ro的资源
[root@nfs1 ~]# drbdadm create-md r0

  --==  Thank you for participating in the global usage survey  ==--
The server's response is:

you are the 1724th user to install this version
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
success

2).启动drbd服务
[root@nfs1 ~]# service drbd start
随系统开机系统
[root@nfs1 ~]# chkconfig drbd on

以上操作同时在主备上操作!!!!!!!!!!!!!!!!!!!

启动好各节点drbd服务后,查看各节点的状态:
[root@nfs1 ~]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:5236960

[root@nfs2 ~]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:5236960

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

以下操作在nfs1主上操作

5.指定主节点
[root@nfs1 ~]# drbdsetup /dev/drbd0 primary -o
[root@nfs1 ~]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
    ns:170152 nr:0 dw:0 dr:173696 al:0 bm:9 lo:11 pe:69 ua:39 ap:0 ep:1 wo:b oos:5075552
[>....................] sync'ed:  3.2% (4956/5112)M
finish: 0:03:08 speed: 26,900 (26,900) K/sec

[root@nfs2 ~]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate C r-----
    ns:0 nr:514560 dw:513664 dr:0 al:0 bm:31 lo:8 pe:708 ua:7 ap:0 ep:1 wo:b oos:4723296
[>...................] sync'ed:  9.9% (4612/5112)M
finish: 0:04:41 speed: 16,768 (19,024) want: 30,720 K/sec

可以看到主从之间正在传输数据,稍等片刻就会同步完成!
同步完成之后会是如下形式:
[root@nfs1 ~]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r---n-
    ns:5451880 nr:0 dw:214920 dr:5237008 al:73 bm:320 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

[root@nfs2 ~]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
    ns:0 nr:5451880 dw:5451880 dr:0 al:0 bm:320 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0


在主节点格式化 /dev/drbd0 分区(从节点不用)
[root@nfs1 ~]# mkfs.ext3 /dev/drbd0
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
655360 inodes, 1309240 blocks
65462 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done                           
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

在主节点上挂载分区(从节点不用)
[root@nfs1 ~]# mkdir /data
[root@nfs1 ~]# mount /dev/drbd0 /data
[root@nfs1 ~]# mount |grep drbd
/dev/drbd0 on /data type ext3 (rw)


三.NFS配置(主从节点操作一样)

一般系统默认就安装好NFS服务
如果没有安装可以通过yum进行安装:yum -y install portmap nfs

1.修改 NFS 配置文件
[root@nfs1 ~]# cat /etc/exports
/data *(rw,sync,insecure,no_root_squash,no_wdelay)

2.启动NFS
[root@nfs1 ~]# service portmap start
Starting portmap:                                          [  OK  ]
[root@nfs1 ~]# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]
[root@nfs1 ~]# chkconfig portmap on
[root@nfs1 ~]# chkconfig nfs on

注意:要先启动portmap 再启动nfs!


四.heartbeat安装配置

1.heartbeat安装
源码安装:
tar zxf libnet-1.1.5.tar.gz
cd libnet-1.1.5
./configure
make;make install

tar jxf Heartbeat-2-1-STABLE-2.1.4.tar.bz2
cd Heartbeat-2-1-STABLE-2.1.4
./ConfigureMe configure
make;make install

yum安装:
[root@nfs1 ~]# yum -y install libnet heartbeat-devel heartbeat-ldirectord heartbeat
这里比较奇怪:heartbeat这个包要yum两次!!!第一次貌似没有安装上

2.创建配置文件

[root@nfs1 ~]# cd /etc/ha.d
创建主配置文件,主从之前有一处不同,文件中有说明
[root@nfs1 ha.d]# vi ha.cf
加入如下内容:


  •   logfile /var/log/ha.log
  •   debugfile /var/log/ha-debug
  •   logfacility     local0
  •   keepalive 2
  •   deadtime 10
  •   warntime 10
  •   initdead 10
  •   ucast eth1 192.168.52.61    #这里要指定对方从服务器eth1接口 IP,主从之间相互指定对方IP
  •   auto_failback off
  •   node nfs1
  •   node nfs2

创建hertbeat认证文件authkeys,主从配置相同!
[root@nfs1 ha.d]# vi authkeys
加入如下内容:
auth 1
1 crc

权限给600
[root@nfs1 ha.d]# chmod 600 /etc/ha.d/authkeys

创建集群资源文件 haresources,主从必须相同~!
[root@nfs1 ha.d]# vi haresources
加入如下内容:
nfs1 IPaddr::192.168.8.62/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 killnfsd

注意:这里的IPaddr 指定为虚拟IP的地址

3.创建kilnfsd脚本,主从相同!
这个脚本的功能就是重启nfs服务!这是因为NFS服务切换后,必须重新mount一下nfs共享出来的目录,否则会出现stale NFS file handle的错误!
[root@nfs1 ha.d]# vi /etc/ha.d/resource.d/killnfsd
加入如下内容:
killall -9 nfsd; /etc/init.d/nfs restart; exit 0

[root@nfs1 ha.d]# chmod 755 /etc/ha.d/resource.d/killnfsd

4.主从分别启动 nfs和heartbeat
[root@nfs1 ha.d]# service heartbeat start
Starting High-Availability services:
2012/06/09_10:27:43 INFO:  Resource is stopped
                                                           [  OK  ]
[root@nfs1 ha.d]# chkconfig heartbeat on

先启动主节点,再启动从节点!

整个环境运行OK后,首先来个简单测试(模拟主节点出现故障,导致服务停掉):
在做这个简单测试前看下当前的整个状态!
主节点:
[root@nfs1 ha.d]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:37912 nr:24 dw:37912 dr:219 al:12 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

[root@nfs1 ha.d]# mount |grep drbd0
/dev/drbd0 on /data type ext3 (rw)

[root@nfs1 ha.d]# ls /data/
anaconda-ks.cfg  install.log         lost+found                      nohup.out  sys_init.sh
init.sh          install.log.syslog  mongodb-linux-x86_64-2.0.5.tgz  sedcU4gy2

[root@nfs1 ha.d]# ip a |grep eth0:0
    inet 192.168.8.62/24 brd 192.168.8.255 scope global secondary eth0:0


从节点:
[root@nfs2 ha.d]# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
    ns:24 nr:37928 dw:37988 dr:144 al:1 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

[root@nfs2 ha.d]# service heartbeat status
heartbeat OK [pid 7323 et al] is running on nfs2 [nfs2]...

我们现在把主节点heartbeat服务停掉:
[root@nfs1 ha.d]# service heartbeat stop
Stopping High-Availability services:
                                                           [  OK  ]

我们再到从服务器上查看一下有没有抢到虚拟VIP
[root@nfs2 ha.d]# ip a
1: lo:  mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0:  mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:fc:78:8f brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.61/24 brd 192.168.8.255 scope global eth0
    inet 192.168.8.62/24 brd 192.168.8.255 scope global secondary eth0:0
3: eth1:  mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:fc:78:99 brd ff:ff:ff:ff:ff:ff
    inet 192.168.52.61/24 brd 192.168.52.255 scope global eth1

[root@nfs2 ha.d]# mount |grep drbd0
/dev/drbd0 on /data type ext3 (rw)

[root@nfs2 ha.d]# ll /data/
total 37752
-rw------- 1 root root     1024 Jun 15 10:56 anaconda-ks.cfg
-rwxr-xr-x 1 root root     4535 Jun 15 10:56 init.sh
-rw-r--r-- 1 root root    30393 Jun 15 10:56 install.log
-rw-r--r-- 1 root root     4069 Jun 15 10:56 install.log.syslog
drwx------ 2 root root    16384 Jun 15 09:41 lost+found
-rw-r--r-- 1 root root 38527793 Jun 15 10:56 mongodb-linux-x86_64-2.0.5.tgz
-rw------- 1 root root     2189 Jun 15 10:56 nohup.out
-rw-r--r-- 1 root root      101 Jun 15 10:56 sedcU4gy2
-rw-r--r-- 1 root root     4714 Jun 15 10:56 sys_init.sh

可以看虚拟VIP已经切换过来,同时NFS也自己挂载上,数据也OK!!
发现整个主从节点之间的切换速度还是非常快的,大概在3秒左右!!


如果主节点由于硬件损坏,需要将Secondary提生成Primay主机,处理方法如下:
在primaty主机上,先要卸载掉DRBD设备.
[root@nfs1 /]# umount /dev/drbd0
将主机降级为”备机”
[root@nfs1 /]# drbdadm secondary r0  
[root@nfs1 /]# cat /proc/drbd  
1: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r—
.......略
.......略
现在,两台主机都是”备机”.
在备机nfs2上, 将它升级为”主机”.
[root@nfs2 /]# drbdadm primary r0  
[root@nfs2 /]# cat /proc/drbd  
1: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r—
.......略
.......略

现在nfs2成为主机了.


当主节点状态变成 primary/unknow 从节点此时是 secondary/unknow 时,可以采用以下步骤进行解决:
1.从节点操作: drbdadm -- --discard-my-data connect all
2.主节点操作: drbdadm connnect all
基本以上两步就OK了!


至于drbd出现脑裂可以通过相应脚本,也可以手动恢复,但是推荐手动恢复!一般出现这种问题的机率是比较低的!
手动恢复脑裂问题:
在secondary上:
drbdadm secondary r0  
drbdadm disconnect all  
drbdadmin -- --discard-my-data connect r0

在primary上:
drbdadm disconnect all  
drbdadm connect r0

但是网上说在drbd.conf配置文件中加入以下参数,能解决split brain(脑裂)问题!此时主从之间是双向同步。。。

net {
after-sb-0pri discard-older-primary;
after-sb-lpri call-pri-lost-after-sb;
after-sb-2pri call-pri-lost-after-sb;
}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
欢迎大家来拍砖。。参阅完。。。要记得评论哈!!让大家共同学习交流!





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-658361-1-1.html 上篇帖子: HAProxy的独门武器:ebtree-RememberEverything 下篇帖子: haproxy定义规则
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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