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

[经验分享] Heatbeat高可用集群

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-6-10 08:52:31 | 显示全部楼层 |阅读模式
网络规划

主机名
接口
Ip
用途
MASTER
node1.xmfb.com
Eth0
172.16.4.100
提供高可用服务节点
BACKUP
node2.xmfb.com
Eth0
172.16.4.101
备用节点,随时准备接替主节点
NFS
NFS
Eth0
172.16.4.200
提供共享存储
VIP

Eth0:0
172.16.4.1
虚拟ip
配置中所有系统均使用centos6.6 64位

配置HA集群的前提:
(1)节点间时间必须同步:使用ntp协议实现;
1
2
[iyunv@node1 ~]# ntpdate 172.16.0.1       #172.16.0.1是我这里的时间服务器
[iyunv@node2 ~]# ntpdate 172.16.0.1



(2) 节点间需要通过主机名互相通信,必须解析主机至IP地址;
        (a)建议名称解析功能使用hosts文件来实现;
        (b)通信中使用的名字与节点名字必须保持一致:“uname -n”命令,或“hostname”展示出的名字保持一致;
1
2
3
4
5
6
7
8
[iyunv@node1 ~]# sed -i's@\(HOSTNAME=\).*@\1node1.xmfb.com@g' /etc/sysconfig/network
[iyunv@node1 ~]# hostname node1.xmfb.com
[iyunv@node1 ~]# echo "172.16.4.100node1.xmfb.com node1" >> /etc/hosts
[iyunv@node1 ~]# echo "172.16.4.101node2.xmfb.com node2" >> /etc/hosts  
[iyunv@node2 ~]# sed -i's@\(HOSTNAME=\).*@\1node2.xmfb.com@g' /etc/sysconfig/network
[iyunv@node2 ~]# hostname node2.xmfb.com
[iyunv@node2 ~]# echo "172.16.4.100node1.xmfb.com node1" >> /etc/hosts
[iyunv@node2 ~]# echo "172.16.4.101 node2.xmfb.comnode2" >> /etc/hosts



(3)考虑仲裁设备是否会用到;
(4) 建立各节点之间的root用户能够基于密钥认证;
      #ssh-keygen -t rsa -P ''
      #ssh-copy-id -i /root/.ssh/id_rsa.pub root@HOSTNAME
1
2
3
4
5
[iyunv@node1 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa-P ''
[iyunv@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pubnode2
  
[iyunv@node2 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa-P ''
[iyunv@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pubnode1



       注意:定义成为集群服务中的资源,一定不能开机自动启动;因为它们将由crm管理;
安装heartbeat说明:heartbeat在centos6.6上没有被添加到自带的rpm包中,所以需要去网上自行下载rpm包安装。
Heartbeat安装包功能说明:
1
2
3
4
5
6
7
heartbeat-2.1.4-12.el6.x86_64.rpm        核心包
heartbeat-debuginfo-2.1.4-12.el6.x86_64.rpm  调试包
heartbeat-devel-2.1.4-12.el6.x86_64.rpm  开发包
heartbeat-gui-2.1.4-12.el6.x86_64.rpm     提供图形配置页面
heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm   为ipvs提供后端健康状态检查的工具
heartbeat-pils-2.1.4-12.el6.x86_64.rpm      依赖的一些库  
heartbeat-stonith-2.1.4-12.el6.x86_64.rpm  提供stonith完成节点隔离



安装方法:
1
2
3
4
[iyunv@node1~]# yum –y install net-snmp-libs libnet PyXML
[iyunv@node1 ~]# rpm -ivhheartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpmheartbeat-stonith-2.1.4-12.el6.x86_64.rpm
[iyunv@node2 ~]# yum install net-snmp-libs libnetPyXML
[iyunv@node2 ~]# rpm -ivhheartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpmheartbeat-stonith-2.1.4-12.el6.x86_64.rpm



Heartbeat配置文件和参数说明配置文件:
   /etc/ha.d目录下:
     ha.cf:主配置文件,定义各节点上的heartbeat HA集群的基本属性;
     authkeys:集群内节点间彼此传递消息时使用加密算法及密钥;
     haresources:为heartbeat v1提供资源管理器配置接口;v1版本专用的配置接口;
heartbeat没有在/etc/ha.d下面提供配置文件,但是在/usr/share/doc/heartbeat-2.1.4/下面提供了样例配置文件,可以直接拿来使用。

复制配置文件到/etc/ha.d目录下
1
2
3
4
5
6
7
8
9
10
11
[iyunv@node1 ~]# cp/usr/share/doc/heartbeat-2.1.4/{authkeys,ha.cf,haresources} /etc/ha.d/
[iyunv@node1 ~]# ll /etc/ha.d/
total 48
-rw-r--r-- 1 root root   645 May 30 10:15 authkeys
-rw-r--r-- 1 root root 10539 May 30 10:15 ha.cf
-rwxr-xr-x 1 root root   745 Sep 10 2013 harc
-rw-r--r-- 1 root root  5905 May 30 10:15 haresources
drwxr-xr-x 2 root root  4096 May 30 09:58 rc.d
-rw-r--r-- 1 root root   692 Sep 10 2013 README.config
drwxr-xr-x 2 root root  4096 May 30 09:58 resource.d
-rw-r--r-- 1 root root  7864 Sep 10 2013 shellfuncs



Ha.cf配置文件参数说明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#start
#debugfile /var/log/ha-debug   #是否启用debug功能
logfile    /var/log/ha-log      #指定日志文件位置
#logfacility    local0         #记录日志的设施,如果local0,没有被指定文件,则无法记录日志
  
日志推荐设置方法,注释logfacility和debugfile,启用logfile
  
#keepalive 2   #多长时间发一次心跳,单位为秒
#deadtime 30   #死亡时间,30秒接受不到对方心跳信息,则认为对方当机了
#warntime 10   #等待心跳时间,此值需要设置大于keepalived,小于deadtime
#initdead 120  #节点启动时等待第二个节点多长时间,如果等待不到不建立集群
#udpport  649  #heartbeat监听的端口
  
指定传递心跳信息的串行线缆设备
#serial /dev/ttyS0      # Linux
#serial /dev/cuaa0      # FreeBSD
#serial /dev/cuad0      # FreeBSD 6.x
#serial /dev/cua/a      # Solaris
  
  
#设置广播发送心跳信息
bcast eth0            # Linux   在一个网卡广播
#bcast  eth1eth2       # Linux 在多个网卡广播
#bcast  le0             # Solaris
#bcast  le1le2         # Solaris
  
mcast eth0 225.0.0.181 694 1 0   #心跳方式
参数解释:
Mcast:多播
eth0:指定心跳的网卡
255.0.0.181:多播地址
649:多播端口
1:ttl值
0:多播心跳
  
  
#设置单播发送心跳信息(不推荐使用)
#ucast eth0 192.168.1.2  #地址填写的是对方的地址
  
auto_failback on  #自动故障转回(主节点坏了,对方接管了,我修好了,是不是自动回来)
  
#设置当前集群的节点,node后面的名字需要和uname –r的名字保持一致
node   node1.xmfb.com
node   node2.xmfb.com
  
#ping 10.10.10.254  #指定pingnode
  
#ping_group group1 10.10.10.254 10.10.10.253 #指定多个主机为仲裁设备
  
#compression   bz2   #是否对节点传递的信息进行压缩
#compression_threshold 2  #压缩的起点,小于起点不进行压缩



说明,如果心跳方式设置为多播,需要网卡支持:出现MULTICAST就是支持多播
1
2
3
4
5
[iyunv@node1 ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdiscnoqueue state UNKNOWN
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:22:c5:c2 brd ff:ff:ff:ff:ff:ff



启动网卡多播的命令
1
[iyunv@node1 ~]# ip link set eth0 multicast on



authkeys
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#      Authentication file.  Must be mode600    #权限必须为600
#
#
#       Must have exactly one auth directive at thefront.
#      auth    send authentication usingthis method-id
#
#       Then,list the method and key that go with that method-id
#
#      Available methods: crc sha1, md5. Crc doesn't need/want a key.  #设置认证方式crc、 sha1、 md5其中Crc的方式不需要密钥
#
#       Younormally only have one authentication method-id listed in this file
#
#       Putmore than one to make a smooth transition when changing auth
#      methods and/or keys.
#
#
#       sha1 is believed to be the "best",md5 next best. #sha1是最好的,md5下最好
#
#       crcadds no security, except from packet corruption.  #crc不***全
#              Use only on physically secure networks.
#
#auth 1
#1 crc
#2 sha1 HI!
#3 md5 Hello!
生成md5编码
[iyunv@node1 ~]# dd if=/dev/random count=1 bs=512 |md5sum
0+1 records in
0+1 records out
128 bytes (128 B) copied, 0.000120379 seconds, 1.1MB/s
e797b227dba49b6b744f8175b5d7ef52  -  #md5编码
设置配置文件,最后两行添加如下内容
[iyunv@node1 ~]# vim /etc/ha.d/authkeys
auth 1       #auth的编号和选择的认真方式编号必须一致,如果上面是2下面也必须是2
1 md5e797b227dba49b6b744f8175b5d7ef52
如果是sha1的方式,那么最后两行添加如下内容
auth 1
1 sha147e9336850f1db6fa58bc470bc9b7810eb397f04



Haresources设置主节点    设置虚拟IP地址                设置集群服务
1
node1.xmfb.com IPaddr::192.168.100.10/24/eth0 httpd



部署heartbeat实现web高可用集群
Httpd测试页提供Centos6已经自带了httpd,无需安装,只需要设置不同的页面,测试web是否正常,如果正常就关闭服务,而且不能让服务开机自动启动
1
2
3
4
[iyunv@node1 ~]# echo "<h1>node1.xmfb.com</h1>" >>/var/www/html/index.html
[iyunv@node1 ~]# service httpd start
[iyunv@node2 ~]# echo "<h1>node2.xmfb.com</h1>" >>/var/www/html/index.html
[iyunv@node2 ~]# service httpd start



访问测试是否正常
1
2
3
4
[iyunv@node2 ~]# curl http://node1
<h1>node1.xmfb.com</h1>
[iyunv@node2 ~]# curl http://node2
<h1>node2.xmfb.com</h1>



关闭服务
1
2
[iyunv@node1 ~]# service httpd stop
[iyunv@node2 ~]# service httpd stop



修改ha.cf配置ha.cf主要就是修改心跳方式和添加集群节点,ping node和日志,其他功能保持默认即可。
1
2
3
4
5
6
7
8
9
logfile /var/log/ha-log   #设置日志记录方式
#logfacility   local0
  
mcast eth0 225.0.0.118 694 1 0 #指定心跳方式为多播
  
node   node1.xmfb.com   #设置集群节点
node   node2.xmfb.com
  
ping 172.16.0.1 #设置仲裁设备为自己的网关



修改authkeys配置文件
设置权限为600,如果不设置会无法启动
1
[iyunv@node1 ~]# chmod 600 /etc/ha.d/authkeys



生成md5编码
1
2
3
4
5
[iyunv@node1 ~]# dd if=/dev/random count=1 bs=512 |md5sum
0+1 records in
0+1 records out
128 bytes (128 B) copied, 0.000120379 seconds, 1.1MB/s
e797b227dba49b6b744f8175b5d7ef52  -  #md5编码



设置配置文件,最后两行添加如下内容
1
2
3
[iyunv@node1 ~]# vim /etc/ha.d/authkeys
auth 1
1 md5 e797b227dba49b6b744f8175b5d7ef52



修改haresources配置文件设置主机点为node1.benet.com 虚拟IP地址为192.168.100.10作用在eth0网卡 集群服务为httpd
1
2
[iyunv@node1 ~]# vim /etc/ha.d/haresources
node1.xmfb.com IPaddr::172.16.4.1/24/eth0 httpd



设置完成复制authkeys、haresources、ha.cf到node2节点
1
2
3
4
[iyunv@node1 ha.d]# scp authkeys haresources ha.cfnode2:/etc/ha.d/
authkeys                                     100%  652    0.6KB/s   00:00   
haresources                                   100%5951     5.8KB/s   00:00   
ha.cf                                        100%   10KB  10.3KB/s  00:00



启动heartbeat服务
1
2
[iyunv@node1 ~]# service heartbeat start
[iyunv@node1 ~]# ssh node2 'service heartbeat start'



查看主节点已经启动了80服务和VIP地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[iyunv@node1 ~]# netstat -lnt | grep :80
tcp       0      0 :::80                       :::*                        LISTEN     
[iyunv@node1 ~]# ifconfig
eth0     Link encap:Ethernet  HWaddr00:0C:29:22:C5:C2
         inet addr:172.16.4.100 Bcast:172.16.255.255 Mask:255.255.0.0
         inet6 addr: fe80::20c:29ff:fe22:c5c2/64 Scope:Link
          UPBROADCAST RUNNING MULTICAST MTU:1500  Metric:1
          RX packets:125042 errors:0 dropped:0overruns:0 frame:0
          TXpackets:27145 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
          RXbytes:148587982 (141.7 MiB)  TXbytes:2926379 (2.7 MiB)
  
eth0:0   Link encap:Ethernet  HWaddr00:0C:29:22:C5:C2
         inet addr:172.16.4.1 Bcast:172.16.4.255 Mask:255.255.255.0
          UPBROADCAST RUNNING MULTICAST MTU:1500  Metric:1
  
lo       Link encap:Local Loopback
         inet addr:127.0.0.1 Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
          UPLOOPBACK RUNNING  MTU:65536  Metric:1
          RXpackets:0 errors:0 dropped:0 overruns:0 frame:0
          TXpackets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
          RXbytes:0 (0.0 b)  TX bytes:0 (0.0 b)



使用VIP地址访问web正常
wKiom1V29bWCIkptAAC0xHlqQgE217.jpg
测试主备转换/usr/lib64/heartbeat/目录下面有很多的测试脚本,其中hb_standby就是将自己转换为被动节点的脚本
[iyunv@node1 ~]# sh /usr/lib64/heartbeat/hb_standby
设置完成之后查看备节点已经启用web服务和虚拟IP地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[iyunv@node2 ~]# netstat -lnt | grep 80
tcp       0      0 :::80                       :::*                        LISTEN     
[iyunv@node2 ~]# ifconfig
eth0     Link encap:Ethernet  HWaddr00:0C:29:F1:DD:B2
         inet addr:172.16.4.101 Bcast:172.16.255.255 Mask:255.255.0.0
         inet6 addr: fe80::20c:29ff:fef1:ddb2/64 Scope:Link
          UPBROADCAST RUNNING MULTICAST MTU:1500  Metric:1
          RXpackets:26398 errors:0 dropped:0 overruns:0 frame:0
          TXpackets:3469 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
          RXbytes:11756906 (11.2 MiB)  TXbytes:454918 (444.2 KiB)
  
eth0:0   Link encap:Ethernet  HWaddr00:0C:29:F1:DD:B2
         inet addr:172.16.4.1 Bcast:172.16.4.255 Mask:255.255.255.0
          UPBROADCAST RUNNING MULTICAST MTU:1500  Metric:1
  
lo       Link encap:Local Loopback
         inet addr:127.0.0.1 Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
          UPLOOPBACK RUNNING  MTU:65536  Metric:1
          RXpackets:10 errors:0 dropped:0 overruns:0 frame:0
          TXpackets:10 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
          RXbytes:985 (985.0 b)  TX bytes:985 (985.0b)



使用VIP访问web服务,出现的是node2的页面
wKioL1V291qCUimaAADEhtxM7Uc926.jpg
设置基于nfs的heartbeat集群环境拓扑正常环境,由于VIP地址在node1节点,所以请求会到node1

wKioL1V291uQ8MuqAAL_ggWqUp4652.jpg
Node1故障情况:vip地址和httpd以及NFS都会漂移到node2节点继续提供服务。
wKiom1V29bmga5wEAAMMRqL4EaM824.jpg
缺点:在集群中使用NFS就意味这集群中出现了单点,如果生产环境有条件最好使用分布式存储。

NFS服务器端配置
1
2
3
4
5
[iyunv@NFS ~]# mkdir /www
[iyunv@NFS ~]# echo "NFS" >/www/index.html
[iyunv@NFS ~]# vim /etc/exports
/www 172.16.0.0/16(ro)
[iyunv@NFS ~]# service nfs start



NFS客户端配置查看nfs共享目录,客户端不需要挂载,而是由集群资源管理器完成挂载操作
1
2
3
[iyunv@node1 ~]# showmount -e 172.16.4.200
Export list for 172.16.4.200:
/www 172.16.0.0/16



Heartbeat配置Heartbeat的ha.cf和authority文件不需要做任何修改,只需要修改haresources配置文件即可。

配置之前停止heartbeat服务
1
2
[iyunv@node1 ~]# ssh node2 '/etc/init.d/heartbeatstop'
[iyunv@node1 ~]# service heartbeat stop



修改haresources文件
1
2
3
[iyunv@node1 ~]# vim /etc/ha.d/haresources
node1.xmfb.com IPaddr::172.16.4.1/24/eth0 Filesystem::172.16.4.200:/www::/var/www/html::nfshttpd
[iyunv@node1 ~]# scp /etc/ha.d/haresourcesnode2:/etc/ha.d/



配置完成之后启动服务
1
2
[iyunv@node1 ~]# service heartbeat start
[iyunv@node1 ~]# ssh node2 'service heartbeat start'



说明:如果对haresources中NFS资源定义不是特别了解,可以参考下面手动启动NFS设置。
/etc/ha.d/resource.d/Filesystem 172.16.4.200:/www/var/www/html nfs start
就是在启动脚本后面,添加NFS服务器设备,本地挂载位置,设备类型即可。
验证基于nfs的heartbeat集群NFS挂载验证
1
2
[iyunv@node1 ~]# mount
172.16.4.200:/www on /var/www/html type nfs (rw,vers=4,addr=172.16.4.200,clientaddr=172.16.4.1)



Httpd验证
1
2
[iyunv@node1 ~]# netstat -lnt | grep 80
tcp       0      0 :::80                       :::*                        LISTEN



虚拟ip地址验证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[iyunv@node1~]# ifconfig
eth0     Link encap:Ethernet  HWaddr 00:0C:29:22:C5:C2
         inet addr:172.16.4.100 Bcast:172.16.255.255 Mask:255.255.0.0
         inet6 addr: fe80::20c:29ff:fe22:c5c2/64 Scope:Link
          UPBROADCAST RUNNING MULTICAST MTU:1500  Metric:1
          RXpackets:140118 errors:0 dropped:0 overruns:0 frame:0
          TXpackets:35448 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
          RXbytes:150543131 (143.5 MiB)  TXbytes:4462618 (4.2 MiB)
  
eth0:0    Linkencap:Ethernet  HWaddr00:0C:29:22:C5:C2
         inet addr:172.16.4.1 Bcast:172.16.4.255 Mask:255.255.255.0
          UPBROADCAST RUNNING MULTICAST MTU:1500  Metric:1
  
lo       Link encap:Local Loopback
         inet addr:127.0.0.1  Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
          UPLOOPBACK RUNNING  MTU:65536  Metric:1
          RXpackets:0 errors:0 dropped:0 overruns:0 frame:0
          TXpackets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
          RXbytes:0 (0.0 b)  TX bytes:0 (0.0 b)



访问验证
wKioL1V2913yUGGZAACTvtQcdTY693.jpg
测试主备切换
1
[iyunv@node1 ~]# sh /usr/lib64/heartbeat/hb_standby



查看资源是否转移到备节点
1
2
3
4
5
6
7
8
[iyunv@node2 ~]# mount
172.16.4.200:/www on /var/www/html type nfs(rw,vers=4,addr=172.16.4.200,clientaddr=172.16.4.1)
[iyunv@node2 ~]# netstat -lnt | grep 80
tcp       0      0 :::80                       :::*                        LISTEN
[iyunv@node2 ~]# ifconfig eth0:0
eth0:0   Link encap:Ethernet  HWaddr00:0C:29:F1:DD:B2
         inet addr:172.16.4.1  Bcast:172.16.4.255  Mask:255.255.255.0
          UPBROADCAST RUNNING MULTICAST MTU:1500  Metric:1



访问vip出现的还是nfs页面
wKiom1V29bnxs249AACIIxH4jms487.jpg


运维网声明 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-75672-1-1.html 上篇帖子: 搭建heartbeat运行后发现nginx及VIP不能正常启动 下篇帖子: 基于heartbeat v2 crm实现基于nfs的mysql高可用集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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