LVS原理及实验

LVS :Linux Virtual Server,负载调度器,集成内核
官网:http://www.linuxvirtualserver.org/

角色

VS  :Virtual Server,负责调度
RS  :Real Server,负责真正提供服务

vs集群类型中的术语:

VS:Virtual Server、Director、Dispatcher(调度器)、Load Balancer
RS:Real Server(lvs)、upstream server(nginx)(业务服务器)、backend、server(haproxy)
CIP:Client IP(客户端)  
VIP: Virtual serve IP      VS服务器外网的IP
DIP: Director IP           VS服务器内网的IP
RIP: Real server IP        业务服务器的IP

访问流程:CIP < -- > VIP == DIP < -- > RIP

工作原理:

LVS工作在OSI7层模型的第四层(传输层),在Linux工作在内核空间中,所以并不受到socket套接字上线的影响,调度能力非常强大。
LVS通过在VS服务器中防火墙的INPUT上设置规则来实现客户端请求的拦截和转发。
VS服务器根据请求报文的目标IP和协议及端口将其调度转发至某RS服务器,根据调度算法来挑选RS服务器

lvs集群的类型:

lvs-nat    :修改请求报文的目标IP,多目标IP的DNAT
lvs-dr     :操纵封装新的MAC地址
lvs-tun    :在原请求IP报文之外新加一个IP首部
lvs-fullnat:修改请求报文的源和目标IP,(现阶段内核不支持)

LVS模式详解

LVS-NAT模式:

本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS服务器的RIP和PORT实现转发

  1. RIP和DIP通常在同一个IP网络,推荐使用私网地址;RS的网关要指向DIP。
  2. 请求报文和响应报文都必须经由Director(调度器)转发,但响应报文一般较大,所以Director(调度器)易于成为系统瓶颈(转发能力)
  3. 支持端口映射,可修改请求报文的目标Port
  4. VS服务器必须是Linux系统,RS服务器可以是任意OS系统

优点:集群中的RS服务器可以使用任何支持TCP/IP操作系统,只有VS调度器需要一个公网的IP地址,其他的RS服务器可以使用私有地IP地址。、
缺点:不适用于大型网路环境,由于请求报文和响应报文都必须由调度器转发,当后端RS服务器的数量达到20台以上时,调度器就会成为整个网络的瓶颈。


LVS-DR模式:

LVS-DR:Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变

Director(调度器)和各RS都配置有VIP

  1. 确保前端路由器将目标IP为VIP的请求报文发往Director ,方法如下:

      在前端网关做静态绑定VIP和Director的MAC地址(不推荐)
      在RS上使用arptables工具,禁止RS响应arp广播
          arptables -A IN  -d $VIP -j DROP
          arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
      在RS上修改内核参数以限制arp通告及应答级别
          arp_announce(通告)
                  0  可以在任意接口向外发送所有IP的免费ARP
                  1  尽量避免发送所在接口之外IP的免费ARP
                  2  只向外发送所在接口的IP的免费ARP
      arp_ignore(忽略)
                  0   可以响应所有配置的IP的ARP报文
                  1  只响应从入接口IP的ARP报文
                  8  不响应任何ARP请求
    

    2.RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director(调度器)

    3.RS和Director要在同一个物理网络
    4.请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client
    5.不支持端口映射(端口不能修败)
    6.RS可使用大多数OS系统

LVS-TUN模式

转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP是CIP)可以跨网络,可以不走来时的路由
1.DIP、VIP、RIP都应该是公网地址,DIP、RIP也可以是私网IP
2.RS的网关不能,也不可能指向DIP
3.请求报文要经由Director,但响应不能经由Director
4.不支持端口映射
5.RS的OS须支持隧道功能

LVS-FULLNAT模式

lvs-fullnat:通过同时修改请求报文的源IP地址和目标IP地址进行转发
CIP -- > DIP
VIP -- > RIP
1. VIP是公网地址RIP和DIP是私网地址,且通常不在同一IP网络,因此,RIP的网关一般不会指向DIP
2. RS收到的请求报文源地址是DIP,因此只需响应给DIP;但Director还要将其发往Client
3. 请求和响应报文都经由Director
4. 支持端口映射;

注意:此类型kernel默认不支持

LVS工作模式总结

lvs-nat与lvs-fullnat :请求和响应报文都经由 Director
lvs-nat :RIP的网关要指向DIP
lvs-fullnat :RIP和DIP未必在同一IP网络,但要能通信
lvs-dr与lvs- tun :请求报文要经由 Director,但响应报文由 RS直接发往Client
lvs-dr :通过封装新的MAC首部实现,通过MAC网络转发
lvs-tun :通过在原IP报文外封装新IP头实现转发,支持远距离通信

调度算法分为两种:静态方法和动态方法

静态方法:仅根据算法本身进行调度,容易造成处理请求比例的不公平
  1. RR :roundrobin 轮询

  2. WRR :Weighted RR 加权轮询,根据RS服务器性能来决定各服务器处理请求的比例

  3. SH :Source Hashing 实现session sticky 源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定

  4. DH :Destination Hashing 目标地址哈希,将发往同一个目标地址的请求始终转发至第一次选中的RS服务器,典型使用场景是正向代理缓存场景中的负载均衡服务器。如:宽带运营商

动态方法:主要根据每RS当前的负载状态及调度算法进行调度,Overhead=value 较小的RS将被调度

activeconns:活动连接
inactiveconns:非活动连接
weight:权重

  1. LC :least connections 根据服务器处理的请求数,适用于长连接应用
    Overhead=activeconns*256+inactiveconns

  2. WLC :Weighted LC 默认调度方法
    Overhead=(activeconns*256+inactiveconns)/weight

  3. SED :Shortest Expection Delay初始连接高权重优先
    Overhead=(activeconns+1)*256/weight

  4. NQ :Never Queue 第一轮均匀分配,后续SED

  5. LBLC :Locality-Based LC 动态的DH算法,针对第一次访问有效。使用场景:根据负载状态实现正向代理

  6. LBLCR:LBLC with Replication 带复制功能的LBLC解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS

lvs管理工具: ipvsadm/ipvs

ipvsadm :用户空间的命令行工具,规则管理器,用于管理集群服务及RealServer(RS服务器)
ipvs :工作于内核空间netfilter的INPUT钩子上的框架
ipvs:
grep -i -C 10 "ipvs" /boot/config-VERSIONRELEASE.x86_64 #可以看到内核支持的算法
支持的协议:TCP、UDP、AH、ESP、AH_ESP、SCTP

ipvsadm:
程序包 :ipvsadm
Unit File : ipvsadm.service
主程序 :/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsad

ipvsadm命令:
核心功能:
集群服务管理:增、删、改
集群服务的RS管理:增、删、改,小写字母
查看
语法:

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]

管理集群服务:
ipvsadm -A,--add-service:为ipvs虚拟服务器添加一个虚拟服务,即添加一个需要被负载均衡的虚拟地址。虚拟地址需要是ip地址,端口号,协议的形式。
ipvsadm -E,--edit-service:修改
ipvsadm -D,--delete-service :-t|u|f service-address 删除
ipvsadm -C,--clear :清空
ipvsadm -R,--restore : 重载,从标准输入获取ipvsadm命令。一般结合下边的-S使用
ipvsadm -S,--save:[-n] 保存

增、改、删
增加
ipvsadm -A -t|u|f service-address [-s scheduler] [-p [timeout]]
修改
ipvsadm -E -t|u|f service-address [-s scheduler] [-p [timeout]]
删除:
ipvsadm -D -t|u|f service-address

-t,--tcp-service           指定虚拟服务为tcp服务。
-u,--udp-service           使用udp服务,其他同上。
-f,--fwmark-service     integer: 可以通过这个命令实现把不同的虚拟IP、端口整合成一个虚拟服务,
      可以让虚拟服务器同时截获处理去往多个不同地址端口的数据包。fwmark可以通过iptables命令指定。
        如果用在ipv6需要加上-6
service-address[:port]  指定VIP的地址和端口 ,0表示任意端口。
[-s scheduler]:指定集群的调度算法,默认为wl,rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq

RS服务器
语法:ipvsadm -a|e -t|u|f service-address -r server-address [options] -g|m|i

ipvsadm -a,--add-service          添加一个RS服务器
ipvsadm -e,--edit-server            修改RS服务器
ipvsadm -d,--delete-server         删除RS服务器
ipvsadm -L|l [options]             列出虚拟服务表中的所有虚拟服务,可以指定VIP地址。
ipvsadm -Z [-t|u|f service-address]  清空计数器
--set tcp tcpfin udp       修改协议的超时时间。
 --start-daemon state       设置虚拟服务器的备服务器,用来实现主备服务器冗余。注:该功能只支持ipv4
--stop-daemon               停止备服务器。
-r,--real-server   指定集群服务器地址,可以添加端口号。如果没有指定端口号,默认使用虚拟地址的端口号。
-p, --persistent [timeout]:设置持久连接,这个模式可以使来自客户的多个请求被送到同一个真实服务器。timeout 的默认值为360秒
-M, --netmask netmask:指定客户地址的子网掩码。用于将同属一个子网的客户的请求转发到相同服务器
指定RS服务器所使用的模式。需要对每个RS服务器分别指定模式。
        -g,--gatewaying      :使用直接路由,DR模式,此模式是默认模式。
        -i,--ipip           :使用ipip隧道模式。tun模式
        -m,--masquerading    :使用NAT模式。
-w,--weight : 设置权重。权重是0~65535的整数。如果将某个真实服务器的权重设置为0,那么它不会收到新的连接,但是已有连接还会继续维持。
-x, --u-threshold uthreshold:设置一个服务器可以维持的连接上限。0~65535。设置为0表示没有上限
-y, --l-threshold lthreshold:设置一个服务器的连接下限。当服务器的连接数低于此值的时候服务器才可以重新接收连接。如果此值未设置,则当服务器的连接数连续三次低于uthreshold时服务器才可以接收到新的连接。
--mcast-interface interface :指定使用备服务器时候的广播接口。
--syncid syncid         :指定syncid 同样用于主备服务器的同步。默认=255
--pe engine  备用持续服务器可能是sip,默认情况下不设置。

以下选项用于查看命令:

-c,--connection 列出当前的连接。
--timeout         列出超时
--daemon          输出守护进程信息
--stats           统计信息
--rate            传输速率
--thresholds      列出阈值
--persistent-conn 持续连接
--sort            把列表排序。
--nosort          不排序
-n,--numeric     不对ip地址进行解析
--exact           显示精确数值
-6                如果fwmark用的是ipv6地址需要指定此选项。

使用 --rate选项是显示速率信息

CPS      (current connection rate)   每秒连接数
InPPS    (current in packet rate)    每秒的入包个数
OutPPS   (current out packet rate)   每秒的出包个数
InBPS    (current in byte rate)      每秒入流量(字节)
OutBPS   (current out byte rate)     每秒入流量(字节)

使用 --stats选项是统计自该条转发规则生效以来的包

Conns    (connections scheduled)  已经转发过的连接数  
InPkts   (incoming packets)       入包个数  
OutPkts  (outgoing packets)       出包个数  
InBytes  (incoming bytes)         入流量(字节)    
OutBytes (outgoing bytes)         出流量(字节) 

ipvs规则:/proc/net/ip_vs,ipvsadm 设置好的规则临时存放在这个文件中,重启失效。
ipvs连接连接数:/proc/net/ip_vs_conn

保存配置:建议保存至/etc/sysconfig/ipvsadm
ipvsadm-save > /PATH/TO/IPVSADM_FILE
ipvsadm -S > /PATH/TO/IPVSADM_FILE
systemctl stop ipvsadm.service

重载:
ipvsadm-restore < /PATH/FROM/IPVSADM_FILE
ipvsadm -R < /PATH/FROM/IPVSADM_FILE
systemctl restart ipvsadm.service

实验:本次实验只演示NAT模式和DR模式

lvs-nat
环境
VS服务器:CentOS 7.3 1台
RS服务器:CentOS 6.9 2台
CentOS 6.9 RS1
CentOS 6.9-1 RS2
客户端 :CentOS 6.9 1台
CetnOS 6.9-2
VIP:172.16.253.63
DIP:192.168.166.130
RIP1:192.168.166.129
RIP2:192.168.166.132
客户端:172.16.253.36

设计要点:
(1) RIP与DIP在同一IP网络, RIP的网关要指向DIP
(2) 支持端口映射
(3) Director要打开核心转发功能

VS服务器配置,下面的一些参数请看上面的选项介绍。
[root@CentOS7.3 ~]#yum -y install ipvsadm   #安装ipvsadm管理工具
[root@CentOS7.3 ~]#ipvsadm -A -t 172.16.253.63:80 -s rr        #添加一个集群服务,服务端口tcp的80,采用rr轮询算法。
[root@CentOS7.3 ~]#ipvsadm -Ln              #查看本机的lvs服务
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.253.63:80 rr                                                    #添加完成
[root@CentOS7.3 ~]#ipvsadm -a -t 172.16.253.63:80 -r 192.168.166.129 -m          #添加一台RS服务器,使用NAT模式 
[root@CentOS7.3 ~]#ipvsadm -a -t 172.16.253.63:80 -r 192.168.166.131 -m         #添加一台RS服务器,使用NAT模式
[root@CentOS7.3 ~]#ipvsadm -Ln          
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.253.63:80 rr  
  -> 192.168.166.129:80           Masq    1      0          0               #添加完成,添加的两台RS服务器都可以看到
  -> 192.168.166.131:80           Masq    1      0          0     

打开VS服务器的路由转发功能,使其可以转发数据包。

[root@CentOS7.3 ~]#sysctl -w net.ipv4.ip_forward=1        #临时开启
net.ipv4.ip_forward = 1
[root@CentOS7.3 ~]#vim /etc/sysctl.conf                       #打开这个文件把   net.ipv4.ip_forward = 1 写在里面永久开启
[root@CentOS7.3 ~]#sysctl -p                                      #执行这条命令从文件中读取参数
net.ipv4.ip_forward = 1
RS1服务器配置
[root@CentOS6.9 ~]#yum -y install httpd          #RS1安装httpd服务
[root@CentOS6.9 ~]#service httpd start           #启动httpd服务
[root@CentOS6.9 ~]#ss -ntl                              #查看监听的端口
State       Recv-Q Send-Q                   Local Address:Port                     Peer Address:Port 
LISTEN      0      128                                 :::80                                 :::*             #80端口已经监听
LISTEN      0      128                                 :::22                                 :::*     
LISTEN      0      128                                  *:22                                  *:*   
[root@CentOS6.9 ~]#echo Web1 > /var/www/html/index.html      #写一个测试页面
[root@CentOS6.9 ~]#curl 192.168.166.129                                    #本机访问,测试
Web1   
[root@CentOS6.9 ~]#iptables -I INPUT 2  -p tcp --dport 80 -j ACCEPT        #添加防火墙策略允许访问80端口
                                                                                          

RS2服务器配置和RS1基本相同

[root@CentOS6.9-1 ~]#echo Web2 > /var/www/html/index.html
[root@CentOS6.9-1 ~]#curl 192.168.166.131
Web2

客户端测试

[root@CentOS6.9-2 ~]#curl 172.16.253.63
Web1
[root@CentOS6.9-2 ~]#curl 172.16.253.63
web2

查看访问集群服务的统计数据

[root@CentOS7.3 ~]#ipvsadm -L --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  CentOS7.3:http                    120      514      402    37357    42204
  -> 192.168.166.129:http               60      271      244    21316    25429
  -> 192.168.166.131:http               60      243      158    16041    16775

修改算法为wrr(带权重的轮询算法)

[root@CentOS7.3 ~]#ipvsadm -E -t 172.16.253.63:80 -s wrr       #修改为wrr算法
[root@CentOS7.3 ~]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.253.63:80 wrr                                                    #修改成功
  -> 192.168.166.129:80           Masq    1      0          0         
  -> 192.168.166.131:80           Masq    1      0          0       

为RS服务器设置权重

[root@CentOS7.3 ~]#ipvsadm -e -t 172.16.253.63:80 -r 192.168.166.129 -m -w 2   #修改RS1的权重为2,RS2不修改
[root@CentOS7.3 ~]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.253.63:80 wrr
  -> 192.168.166.129:80           Masq    2      0          0                       #RS1的权重已被修改为2
  -> 192.168.166.131:80           Masq    1      0          0                       #RS2的权重还为默认值1

客户端测试


上图可以看到Web1和Web2的比例2比1。权重已经生效。

DR模式

lvs-dr:
dr模型中,各主机上均需要配置VIP,解决地址冲突的方式有三种:
(1) 在前端网关做静态绑定
(2) 在各RS使用 arptables
(3) 在各RS修改内核参数,来限制arp响应和通告的级别
限制响应级别:arp_ignore
0:默认值,表示可使用本地任意接口上配置的任意地址进行响应
1: 仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应
限制通告级别:arp_announce
0:默认值,把本机所有接口的所有信息向每个接口的网络进行通告
1:尽量避免将接口信息向非直接连接网络进行通告
2:必须避免将接口信息向非本网络进行通告
/proc/sys/net/ipv4/conf/ #所有网卡的设置都在这个目录下
ikernel-doc #这些文件由这个软件包生成

实验环境
环境
VS服务器:CentOS 7.3 1台
RS服务器:CentOS 6.9 2台
CentOS 6.9 RS1
CentOS 6.9-1 RS2
网关: CentOS 6.9 一台
CentOS 6.9.-2
客户端:CentOS 7.3 1台
CetnOS 7.3-1
VIP:172.16.253.63
DIP:192.168.166.130
RIP1:192.168.166.129
RIP2:192.168.166.132
网关内网IP:172.168.253.36(VS服务器的网关)、192.168.166.100(RS服务器的网关)
网关外网IP:100.0.0.100
客户端:100.0.0.6,客户机的网关指向 100.0.0.100

网关配置
[root@CentOS6.9-2 ~]#vim /etc/sysctl.conf       #把这个文件中的net.ipv4.ip_forward = 1参数设置为1开启转发功能
[root@CentOS6.9-2 ~]#sysctl -p          #重读配置文件
[root@CentOS6.9-2 ~]#iptables -F      #清除防火墙规则

一块网卡上面配置多个IP地址

[root@CentOS6.9-2 ~]#cd /etc/sysconfig-network-scripts/
[root@CentOS6.9-2 network-scripts]#cp -a ifcfg-eth0 ifcfg-eth0:1      #复制eth0的网卡配置文件,改名的eth0:1
[root@CentOS6.9-2 network-scripts]#vim ifcfg-eth0:1        #配置文件的格式和eth0相同
DEVICE="eth0:1"                  #这里写配置文件的名字,一定要写对否则无法启动网卡
BOOTPROTO="static"
IPV6INIT="yes"
MTU="1500"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=192.168.166.100                                    #这里写IP地址
PREFIX=24                                                            #子网
GATEWAY=192.168.166.100                                #网关
DNS=192.168.166.100                                      #DNS

配置VS服务器,VS可以把VIP和DIP设置在同一块网卡上面,多个IP绑定在一块网卡上请看上面。
[root@CentOS7.3 network-scripts]#ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.166.130  netmask 255.255.255.0  broadcast 192.168.166.255
        inet6 fe80::50fe:a3f3:83a0:d38a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:b9:7d:cb  txqueuelen 1000  (Ethernet)

eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.253.63  netmask 255.255.0.0  broadcast 172.16.255.255
        ether 00:0c:29:b9:7d:cb  txqueuelen 1000  (Ethernet)

配置

[root@CentOS7.3 ~]#ipvsadm -A -t 172.16.253.63:80 -s wrr
[root@CentOS7.3 ~]#ipvsadm -a -t 172.16.253.63:80 -r  192.168.166.129 -g -w 2    #DR模式这里把 -m 换成 -g,其他的和NAT模式一样    
[root@CentOS7.3 ~]#ipvsadm -a -t 172.16.253.63:80 -r  192.168.166.131 -g -w 6  
[root@CentOS7.3 ~]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.253.63:80 wrr
  -> 192.168.166.129:80           Route   2      0          0         
  -> 192.168.166.131:80           Route   6      0          0 
配置RS1,把DIP的网关设置成路由器内网IP。Web配置和前面相同,
[root@CentOS6.9 ~]#ip a a 172.16.253.63/32 dev lo    #在本机回环网卡上面设置一个临时IP地址,如果设置永久IP地址请写配置文件
[root@CentOS6.9 ~]#ip a show lo        #查看配置
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet 172.16.253.63/32 scope global lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
[root@CentOS6.9 ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore        #修改响应等级
[root@CentOS6.9 ~]#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@CentOS6.9 ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  #限制通告
[root@CentOS6.9 ~]#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
RS2的配置和RS1相同
客户机测试
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 197,597评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,053评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 144,583评论 0 326
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,888评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,772评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,536评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,922评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,554评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,838评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,861评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,677评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,483评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,928评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,104评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,403评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,945评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,156评论 2 339

推荐阅读更多精彩内容

  • 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有ngin...
    jiangmo阅读 1,311评论 0 1
  • 本文部分观点图片采用于:http://chenx1242.blog.51cto.com 随着智能机的逐渐普及,大量...
    BossHuang阅读 3,105评论 0 16
  • (一)LVS概念 LVS( Linux Virtual Server)是一种负载均衡(LB,Laod Balanc...
    uangianlap阅读 3,571评论 0 9
  • 集群的概念LVS介绍ipvsadm的使用实现LVS-NAT实现LVS-DRLVS高可用 一、集群的概念 (一)系统...
    哈喽别样阅读 748评论 0 2
  • 1.Cluster(集群)概念 (1)系统扩展方式: Scale UP:向上扩展,增强Scale Out:向外扩展...
    尛尛大尹阅读 1,085评论 0 4