当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪简单介绍Nginx的负载均衡配置      nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态、静态页面的分离,可以按照轮询、ip哈希、URL哈希、权重等多种方式对后端服务器.........
    ▪配置nginx作为负载均衡器      首先,我们了解下Nginx作为负载均衡器的优点: 1.实现了可弹性化的架构,在压力增大的时候可以临时添加tomcat服务器添加到这个架构里面去; 2.upstream具有负载均衡能力,可以自动判断下面的机.........
    ▪Nginx反向代理及负载均衡配置      nginx无论是作为HTTP服务器,还是用来作为反向代理或负载均衡,都会是不错的选择。 首先,了解负载均衡的相关知识。 1. 负载均衡的概念 负载均衡是由多台服务器以对称的方式组成一个服务.........

[1]简单介绍Nginx的负载均衡配置
    来源: 互联网  发布时间: 2013-12-24

nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态、静态页面的分离,可以按照轮询、ip哈希、URL哈希、权重等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。

如果只有一台服务器时,这个服务器挂了,那么对于网站来说是个灾难.因此,这时候的负载均衡就会大显身手了,它会自动剔除挂掉的服务器.
下面介绍下我使用Nginx做负载的体会。下载与安装Nginx略过。windows和Linux下配置Nginx负载的写法一样,故不分开介绍。

Nginx负载均衡一些基础知识:
    nginx 的 upstream目前支持 4 种方式的分配
    1)、轮询(默认)
         每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
    2)、weight
          指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
    3)、ip_hash
          每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
    4)、fair(第三方)
          按后端服务器的响应时间来分配请求,响应时间短的优先分配。
    5)、url_hash(第三方)

配置:

    在http节点里添加:
   

代码如下:
#定义负载均衡设备的 Ip及设备状态
    upstream myServer {  
        server 127.0.0.1:9090 down;
        server 127.0.0.1:8080 weight=2;
        server 127.0.0.1:6060;
        server 127.0.0.1:7070 backup;
    }

    在需要使用负载的Server节点下添加
   

代码如下:
proxy_pass http://myServer;

    upstream 每个设备的状态:
    down 表示单前的server暂时不参与负载
    weight  默认为1.weight越大,负载的权重就越大。
    max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
    fail_timeout:max_fails 次失败后,暂停的时间。
    backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

Nginx还支持多组的负载均衡,可以配置多个upstream  来服务于不同的Server.配置负载均衡比较简单,但是最关键的一个问题是怎么实现多台服务器之间session的共享
下面有几种方法(以下内容来源于网络,第四种方法没有实践.)

1) 不使用session,换作cookie

    能把session改成cookie,就能避开session的一些弊端,在从前看的一本J2EE的书上,也指明在集群系统中不能用session,否则惹出祸端来就不好办。如果系统不复杂,就优先考虑能否将session去掉,改动起来非常麻烦的话,再用下面的办法。

2) 应用服务器自行实现共享

    asp.net可以用数据库或memcached来保存session,从而在asp.net本身建立了一个session集群,用这样的方式可以令 session保证稳定,即使某个节点有故障,session也不会丢失,适用于较为严格但请求量不高的场合。但是它的效率是不会很高的,不适用于对效率 要求高的场合。

    以上两个办法都跟nginx没什么关系,下面来说说用nginx该如何处理:

3) ip_hash

    nginx中的ip_hash技术能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session,ip_hash是在upstream配置中定义:         
 

代码如下:
upstream backend {
      server 127.0.0.1:8080 ;
      server 127.0.0.1:9090 ;
       ip_hash;
    }

    ip_hash是容易理解的,但是因为仅仅能用ip这个因子来分配后端,因此ip_hash是有缺陷的,不能在一些情况下使用:

    1. nginx不是最前端的服务器。ip_hash要求nginx一定是最前端的服务器,否则nginx得不到正确ip,就不能根据ip作hash。譬如使用的是squid为最前端,那么nginx取ip时只

能得到squid的服务器ip地址,用这个地址来作分流是肯定错乱的。

    2. nginx的后端还有其它方式的负载均衡。假如nginx后端又有其它负载均衡,将请求又通过另外的方式分流了,那么某个客户端的请求肯定不能定位到同一台session应用服务器上。这么算起来,nginx后端只能直接指向应用服务器,或者再搭一个squid,然后指向应用服务器。最好的办法是用location作一次分流,将需要session的部分请求通过ip_hash分流,剩下的走其它后端去。

4) upstream_hash

    为了解决ip_hash的一些问题,可以使用upstream_hash这个第三方模块,这个模块多数情况下是用作url_hash的,但是并不妨碍将它用来做session共享:

    假如前端是squid,他会将ip加入x_forwarded_for这个http_header里,用upstream_hash可以用这个头做因子,将请求定向到指定的后端:

    可见这篇文档:http://www.sudone.com/nginx/nginx_url_hash.html

    在文档中是使用$request_uri做因子,稍微改一下:
   

代码如下:
hash   $http_x_forwarded_for;

    这样就改成了利用x_forwarded_for这个头作因子,在nginx新版本中可支持读取cookie值,所以也可以改成:
 

代码如下:
    hash   $cookie_jsessionid;

    假如在php中配置的session为无cookie方式,配合nginx自己的一个userid_module模块就可以用nginx自发一个cookie,可参见userid模块的英文文档:
    http://wiki.nginx.org/NginxHttpUserIdModule
    另可用姚伟斌编写的模块upstream_jvm_route:http://code.google.com/p/nginx-upstream-jvm-route/

PS:继续求救,为什么部署在Nginx 服务器上的页面样式会显示不对呢?

本文转自:小刚的博客


    
[2]配置nginx作为负载均衡器
    来源: 互联网  发布时间: 2013-12-24

首先,我们了解下Nginx作为负载均衡器的优点:
1.实现了可弹性化的架构,在压力增大的时候可以临时添加tomcat服务器添加到这个架构里面去;
2.upstream具有负载均衡能力,可以自动判断下面的机器,并且自动踢出不能正常提供服务的机器;而Keepalvied可保证单个nginx负载均衡器的有效性,避免单点故障。

IP地址:
nginx(主负载均衡器):192.168.18.118
nginx(从负载均衡器):192.168.1.120
VIP地址:192.168.1.108
web1的IP:192.168.18.105
web2的IP:192.168.18.117
web3的IP:192.168.1.121

软件:
nginx-0.7.17.tar.gz 
prce-7.7.tar.gz
mysql
php

一、首先分别在3台tomcat主机上布置环境,安装nginx+php+mysql,具体步骤为:

二、分别在二台nginx负载均衡器上安装nginx及配置

下载及安装nginx:  

代码如下:
1. wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gz 
2. tar zxvf pcre-7.7.tar.gz 
3. cd pcre-7.7/ 
4. ./configure 
5. make && make install 
6. wget http://sysoev.ru/nginx/nginx-0.7.17.tar.gz 
7. tar zxvf nginx-0.7.17.tar.gz 
8. cd nginx-0.7.17/ 
9. ./configure --prefix=/usr/local/nginx --with-http_stub_status_module 
10. make && make install

这里贴上nginx.conf配置文件,不加任何说明。
二个nginx负载均衡器的文件一样,配置完成后分别用/usr/local/nginx/sbin/nginx启动。

代码如下:

user www www;
worker_processes 1;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
}
http{
include       mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
sendfile on;
tcp_nopush     on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers     4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types       text/plain application/x-javascript text/css application/xml;
gzip_vary on;
upstream backend
{
server 192.168.18.117;
server 192.168.18.105;
server 192.168.1.121;
}
server {
listen 80;
server_name test.com www.test.com;
location / {
root /usr/local/nginx/www ;
index index.jsp index.htm index.html;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://backend;
}

#location /nginx {
#access_log on;
#auth_basic "NginxStatus";
#auth_basic_user_file /usr/local/nginx/htpasswd;
#}
log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"

$http_x_forwarded_for';
access_log /usr/local/nginx/logs/access.log access;
}
}

三、在二台Nginx机上安装及配置keepalived,做双机互备。  

代码如下:
#wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz 
#tar zxvf keepalived-1.1.15.tar.gz 
#cd keepalived-1.1.15 
#./configure 
#make 
#make install 

将keepalived做成启动脚务,方便管理:   

代码如下:
#cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ 
#cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ 
#mkdir /etc/keepalived 
#cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ 
#cp /usr/local/sbin/keepalived /usr/sbin/ 
#service keepalived start|stop

在二台Nginx上,我分别贴出keepalived.conf配置文件,配置完成后分别用service keepalived start启动。检验keepalived是否成功可用命令  

代码如下:
vrrp_instance VI_INET1 { 
        state MASTER 
        interface eth0 
        virtual_router_id 53 
        priority 200 
        advert_int 1 
        authentication { 
                auth_type pass 
                auth_pass yourpass 
        } 
        virtual_ipaddress { 
                192.168.1.108 
        } 

vrrp_instance VI_INET1 { 
        state BACKUP 
        interface eth0 
        virtual_router_id 53 
        priority 100 
        advert_int 1 
        authentication { 
                auth_type pass 
                auth_pass yourpass 
        } 
        virtual_ipaddress { 
                192.168.1.108 
        } 
}

以上三步完成nginx负载均衡设置后,就是检测了,大家可任意停掉其中一台的任何服务;在正常结果中大家应该发现,其中任意一台服务器宕机后,不影响整个系统的运作。


    
[3]Nginx反向代理及负载均衡配置
    来源: 互联网  发布时间: 2013-12-24

nginx无论是作为HTTP服务器,还是用来作为反向代理或负载均衡,都会是不错的选择。

首先,了解负载均衡的相关知识。

1. 负载均衡的概念
负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助.负载均衡能够平均分配客户请求到服务器阵列,藉此快速获取重要数据,解决大量并发访问服务问题,这种集群技术可以用最少的投资获得接近于大型主机的性能.

2.反向代理方式和包过滤方式
和普通代理方式并无冲突,因此可以在防火墙设备中同时使用这两种方式,其中反向代理用于外部网络访问内部网络时使用,正向代理或包过滤方式用于拒绝其他外部访问方式并提供内部网络对外部网络的访问能力.

3.常见负载均衡模式
(1)用户手动选择方式,(比较古老的方式了,如华军软件园,选择下载站点)
(2)DNS轮询方式,大多数域名注册商都支持对同一主机名添加多条A记录,这就是DNS轮询,DNS服务器将解析请求按照A记录的顺序,随机分配到不同的IP上,这样就完成了简单的负载均衡.(linux下面可以使用dig命令来查看一个网站的域名解析情况)
缺点:可靠性低,负载分配不均衡.
(3)四/七层负载均衡设备
(4)多线多地区智能DNS解析与混合负载均衡

4.DNS轮询负载分配不均衡
DNS服务器是按照一定的层次结构组织的,本地DNS服务器会缓存已解析的域名到IP地址的映射,这会导致使用该DNS服务器的用户在一段时间内访问的是同一台web服务器,导致Web服务器间的负载不均衡.因此,DNS轮询方式仅适用于一些可靠性要求不高的服务器集群,例如图片服务器集群,纯静态网页服务器集群.

5.四/七层负载均衡设备
现代负载均衡技术通常操作于OSI网络模型的第四层或第七层.第四层负载均衡将一个Internet上合法注册的Ip地址映射为多个内部服务器的IP地址,对每次TCP连接请求动态使用其中一个内部IP地址,达到负载均衡的目的.在第四层交换机中,此种均衡技术得到广泛的应用,一个目标地址是服务器群VIP(虚拟IP)连接请求的数据包流经交换机,交换机根据源端和目的IP地址,TCP或UDP端口号和一定的负载均衡策略,在服务器IP和VIP间进行映射,选取服务器群众最好的服务器来处理连接请求.
第七层负载均衡控制应用层服务的内容,提供了一种对访问流量的高层控制方式,适合对HTTP服务器群的应用.第七层负载均衡技术通过检查流经的HTTP报头,根据报头内的信息来执行负载均衡任务.

(1)硬件四/七层负载均衡交换机(新浪,百度,雅虎大都采用这种技术)
(2)软件四层负载均衡(LVS)LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障。
(3)软件七层负载均衡大多基于HTTP反向代理方式,代表产品有Nginx.Nginde代理负载均衡能够很好地支持虚拟主机,可配置性很强.可以按轮询,IP哈希,URL哈希,权重等方式对服务端做负载均衡.

6.Nginx反向代理的配置
upstream 指令用于设置一组可以在proxy_pass和fastcgi_pass指令中使用的代理器集合.如果不另外设置的话,默认的负载均衡方式为轮询.upstream模块中的server模块内通过

proxy_pass和fastcgi_pass指令指定后端用于反向代理的upstream服务器集群的名称和参数,服务器的名称可以是域名,IP地址,端口或Unix Socket
proxy_set_header指令用于为客户端访问后端服务器指定Header头信息.
proxy_set_header Host $host ;
proxy_set_header X-Forwarded-For $remote_addr ;
$host表示的是客户端请求的域名
$remote_addr表示的是客户端IP地址
配置反向代理后$_SERVER["REMOTE_ADDR"]获取的是Nginx负载均衡服务器的IP,通过在Nginx反向代理时添加Header头信息X-Forwared-For之后就可以通过$_SERVER["HTTP_X_FORWARDED_FOR"]获得到用户的真实IP.

代码如下:

#允许客户端请求的最大单个文件字节数
client_max_body_size 300m
#缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户
client_body_buffer_size 128k
#跟后端服务器连接的超时时间,发起握手等候相应超时时间
proxy_connect_timeout 600;
#连接成功后,等候后端服务器响应时间,其实已经进入后端的排队之中等候处理.
proxy_read_timeout 600;
#后端服务器数据回传时间,就是在规定时间内后端服务器必须传完所有数据.
proxy_send_timeout 600;
#代理请求缓存区,这个缓存区间会保存用户的头信息以供Nginx进行规则处理,一般只要能保存下头信息即可.
proxy_buffer_size 16k;
#同上告诉Nginx保存单个用的几个Buffer最大用多大空间
proxy_buffers 4 32k ;
#如果系统很忙的时候可以申请更大的proxy_buffers
proxy_busy_buffers_size 64k;
#proxy缓存临时文件的大小
proxy_temp_file_write_size 64k;

upstream php_server_pool{
  server 192.168.1.10:80 weight=4 max_fails=2 fail_timeout=30s ;
  server 192.168.1.11:80 weight=4 max_fails=2 fail_timeout=30s ;
  server 192.168.1.12:80 weight=2 max_fails=2 fail_timeout=30s ;
}

upstream message_server_pool{
  server 192.168.1.13:3245 ;
  server 192.168.1.14:3245 down;
}

upstream bbs_server_pool{
  server 192.168.1.15:80 weight=1 max_fails=2 fail_timeout=30s ;
  server 192.168.1.16:80 weight=1 max_fails=2 fail_timeout=30s ;
  server 192.168.1.17:80 weight=1 max_fails=2 fail_timeout=30s ;
  server 192.168.1.18:80 weight=1 max_fails=2 fail_timeout=30s ;
}

#第一个虚拟主机,反向代理php_server_pool 这组服务器
server
{
  listen 80;
  server_name www.yourdomain.com;
 
  location /
  {
    #如果后端的服务器返回502,504,执行超时等错误,自动将请求转发到upstream
    #负载均衡池中的另一台服务器,实现故障转移.
    proxy_next_upstream http_502 http_504 error timeout invalid_header ;
    proxy_pass http://php_server_pool ;
    proxy_set_header Host www.yourdomain.com ;
    proxy_set_header X-Forwarded-For $remote_addr ;
  }
  access_log /data1/logs/www.yourdomain.com_access.log ;
}

#第二个虚拟主机
server
{
  listen 80 ;
  server_name www1.yourdomain.com ;
  #访问http://www1.yourdomain.com/message/***地址,反向代理  #message_server_pool 这组服务器
  location /message/
  {
    proxy_pass http://message_server_pool ;
    proxy_set_header Host $host;
  }
  #访问除了/message/之外的http://www1.yourdomain.com/***地址,反向代理
  #php_server_pool这组服务器
  location /
  {
    proxy_pass http://php_server_pool ;
    proxy_set_header Host $host ;
    proxy_set_header X-Forwarded-For $remote_addr ;
  }
  access_log /data1/logs/message.yourdomain.com_access.log ;
}

#第三个虚拟主机
server{
  listen 80 ;
  server_name bbs.yourdomain.com *.bbs.yourdomain.com ;
 
  location /
  {
    proxy_pass http://bbs_server_pool ;
    proxy_set_header Host $host ;
    proxy_set_header X-Forwarded-For $remote_addr ;
  }
 
  access_log off ;
}

用upstream定义服务器,然后server中location引用,并且获取客户端的IP和域名请求。

注解

1.ip_hash指令:
ip_hash指令用来保证客户端IP的请求始终在后端同一Web服务器,以免SESSION不一致,出现用户未登录的情况.但是ip_hash无法保证后端服务器的负载均衡.
如果后端服务器有时要从Nginx负载均衡中摘除一段时间,必须将其标记为"down",而不是直接从配置文件中删掉或者注释掉该后端服务器信息.以免Nginx会按照n-1台服务器进行重新哈希,这样原来的客户端IP会被定为到其他后端web服务器.

2.server指令:
server name [parameters]
weight=NUMBER 设置服务器的权重,值越高被分配的客户端请求就越多.默认为1.
max_fails=NUMBER允许对后端服务器请求失败的次数.(后端服务器无法连接及发生服务器错误404除外,就标记失败1次)默认值为1,设置为0将关闭这项检查.
fail_timeout=TIME在经历max_fails设置的失败次数后,暂停客户端请求的时间.
down标记服务器为永久离线状态,用于ip_hash指令.
backup仅仅在非backup服务器全部宕机或繁忙的时候才启用.

3.upstream相关变量
从Nginx0.5.18版本开始,可以支持用log_format指令设置日志格式。日志格式中可以使用变量.upstream模块拥有以下变量.
$upstream_addr
处理请求的upstream服务器地址
$upstream_status
upstream服务器的应答状态
$upstream_response_time
upstream服务器响应时间(毫秒),多个响应以逗号和冒号分割.
$upstream_http_$HEADER
任意的HTTP协议头信息,例如$upstream_http_host

4.Nginx负载均衡服务器的双机高可用的两种方法
(1)一台主服务器加一台热备服务器,正常情况下主服务器绑定一个公网虚拟IP,提供负载均衡,热备服务器处于空闲状态,当主服务器发生故障时,热备服务器接管主服务器的虚拟IP,提供负载均衡服务;这种方法比较常见,但是有一台服务器处于空闲状态,浪费了负载均衡处理能力。
(2)两台负载均衡服务器都处于活动状态,各自绑定一个公网虚拟IP,提供负载均衡服务,当其中一台服务器发生故障时,另一台服务器接管发生故障服务器的虚拟IP,这种方法需要多用一个公网IP.但是可以将两台服务器都用于实际的负载均衡处理。

5.Nginx负载均衡服务器双机高可用方法一:
(1)www.yourdomain.com域名解析到虚拟IP61.1.1.2上.
(2)正常情况下,主机A绑定虚拟IP61.1.1.2
(3)用户访问www.yourdomain.com(虚拟IP61.1.1.2)实际访问的是主机A,而备机B则处于空闲状态.
(4)如果主机61.1.1.4发生故障,备机B将在几秒钟内接管虚拟IP61.1.1.2,与自己绑定,并发送ARPing包给IDC的公网网关刷新MAC地址.
(5)这时,用户访问www.yourdomain.com(虚拟IP61.1.1.2)实际上访问的是备机B,从而实现故障转移与高可用,避免了单点故障.

6.Nginx负载均衡服务器双机高可用方法二:
(1)www.yourdomain.com域名通过DNS轮询解析到虚拟IP61.1.1.2和61.1.1.3上.
(2)正常情况下,服务器A绑定虚拟IP61.1.1.2服务器B绑定虚拟IP61.1.1.3.
(3)用户访问www.yourdomain.com实际上是根据DNS轮询访问两台负载均衡服务器,两台服务器均处于活动状态.
(4)如果服务器A发送故障,服务器B将在几秒钟内接管服务器A的虚拟IP61.1.1.2,与自己绑定,并发送ARPing包给IDC的公网网关刷新MAC地址.这时,服务器B同时绑定61.1.1.2和61.1.1.3两个虚拟IP.


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
java开发知识 iis7站长之家
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3