Chinaunix首页 | 论坛 | 博客
  • 博客访问: 146702
  • 博文数量: 70
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 770
  • 用 户 组: 普通用户
  • 注册时间: 2017-11-04 11:19
文章分类

全部博文(70)

文章存档

2018年(69)

2016年(1)

我的朋友

分类: LINUX

2018-09-11 09:07:17

LVSLinux virtual server

它是一个负载均衡、高可用性集群,主要针对大业务量的网络应用(比如新闻。电子商务、网上银行

LVS是建立在一个主控服务器(双机)及若干个真实服务器组成。真实服务器负责提供服务,主控服务器会根据指定的调度算法对真实的服务器进行控制。LVS集群结构对用户来说是透明的,客户端只与单个IP(虚拟IP)进行通信。客户端向lvs发出服务请求,主控服务器会通过特定的算法来指定某个真实服务器来应答,而客户端只与负载均衡的IP进行通信

LVS 常见算法:

轮询调度RR

  将外部请求按照顺序轮流分配到真实的服务器上

加权轮询WRR

  根据真实服务器的不同处理能力来调度访问请求

最少链接数LC

  调度器通过最少连接调度算法动态的将网络请求调度到以建立的连接数最少的服务器上

(两台服务器配置差不多时使用)

加权最少连接WLC

  优化负载的性能,较高权重的服务器将承受较大比例的活动连接负载

  (两台服务器 有一台比较弱时 可以使用)

基于局部性的最少连接 LBLC:

  针对目标的IP地址的负载均衡,应用于cache集群上。会根据请求的目标IP地址找出该目标IP地址最近使用的服务器,如果该服务器是可用的没有超载,则将请求发送到服务器上,若服务器不存在,或服务器处于一半的工作负载,则用最少连接数选出一个服务器

带复制的基于局部性的最少连接(locality-Based Least Connections with Replication

也是针对目标IP地址的负载均衡,用于cache集群。它与LBLC算法不同之处是它要维护的是从一个目标IP地址到一组服务器的映射,而LBLC算法维护的是从一个目标IP地址到一台服务器的映射。

目标地址散列(Destination IP Hashing
   
目标地址散列调度算法根据请求的目标IP地址,作为散列键(Hash KEY)从静态分配的散列表中找出对应的服务器,若服务器是可用的且未超载,则请求发送到该服务器,否则返回空。

源地址散列

  根据请求的源IP地址,作为散列键从静态分配的散列表中找出对应的服务器,若服务器是可用的且未超载,则请求发送到该服务器,否则返回空。

IP端口散列 

   通过hash函数将来自用一个源IP地址和源端口号的请求映射到后端同一台服务器上。

   (适合按服务的类型分类)

随机

  随机地将请求分发到不同的服务器上

  典型的负载均衡集群中,包括三层次的组件,前端至少一个负载均衡调度器(LB)负责相应并发来自客户端的访问请求;后端有大量真实服务器构成服务池(server pool)提供实际的应用服务

透明性 一致性和伸缩性

第一层:

负载调度器,这是访问整个集群系统唯一入口,对外使用所有服务器共有VIP,也称为集群IP,通常会配置主备两台调度器实现热备份。

第二层:

   服务器池,集群符提供的应用服务,由服务器池承担。每个节点具有独立的真实IP,只处理调度器分发过来的客户机请求。当某个节点失效时,负载调度器的容错机制会将它隔离,等排出错误后,在从新纳入服务器池

第三层:

  共享存储,为服务池中的所有节点提供稳定的,一致的文件存取服务,保证整个集群的统一性

工作模式: 调度技术可以基于IP、端口、内容进行分发。基于IP的效率最高。常见的有三种,地址转换、IP隧道和直接路由。

  地址转换:

简称NAT模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,及作为客户机的访问入口,也是各个节点回应客户机的访问出口。服务器节点使用的是私有IP地址

IP隧道:

简称TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器。服务器节点分散在不同的位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信。

直接路由:

简称DR模式,采用半开放式网络结构,与TUN模式的结构类似,但是节点并不是分散的,而是与调度器位于同一物理网络。通过本地网络连接,不需要建立专用IP隧道。

LVS集群的管理工作主要包括创建虚拟服务器、添加服务器节点、查看集群节点状态、删除服务器节点和保存负载分配策略

 

 

基础环境:

modprobe ip_vs  加载IPVS模块

cat /proc/net/ip_vs  查看版本号

yum install -y ipvsadm 安装IPvsadm  使用前必须调用这个模块

rpm -ivh /media/cdrom/Packages/ipvsadm-1.26-2.el6.x86_64.rpm  安装IPvsadm 挂盘的路径里

ipvsadm –v 查看版本号

ipvsadm -A -t 192.168.10.100:80 -s rr  创建虚拟服务器

-A 添加虚拟服务器

-t 指定我的VIP地址和端口号

-s 指定负载均衡的调度算法

rr 轮询

wrr加权轮询

lc 最少连接数轮询

wlc加权最少连接数

ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.10:80 -m -w 1 向虚拟服务器里添加真实IP

-a 添加真实的服务器

-t 指定VIP端口 虚拟服务器IP

-r 指定真实节点服务器IP及端口  节点

-m 表示使用nat 模式

-g 表示使用DR模式

-i  表示使用TUN模式 IP隧道模式

-w 1:权重 0:为暂停节点

ipvsadm -ln 查看节点状态

-l 列出lvs的虚拟主机

n 以数字形式显示地址和端口

Masq地址伪装  route采用DR模式  local本地的

ipvsadm -d -r 192.168.10.10:80 -t 192.168.10.100:80  删除节点

ipvsadm -D -t 192.168.10.100:80  删除虚拟服务器

-D 删除虚拟服务器

-d  -r删除真实的IP节点

-t 指定服务器IP地址

ipvsadm-save > /etc/sysconfig/ipvsadm 保存策略 

service ipvsadm start 开启 如果没有保存stop相当于清空

 

 lvs 192.168.10.14 ---------Nginx192.168.10.11--------Nginx192.168.10.12

192.168.10.100

Net模式:

lvs

添加一开网卡

vim /etc/sysconfig/network-scripts/ifcfg-eth0 复制

vim /etc/sysconfig/network-scripts/ifcfg-eth1  粘贴 eth1和网址192.168.10.100

/etc/init.d/network restart 重启

ip a 查看一下

ipvsadm -A -t 192.168.10.100:80 -s rr

ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.11:80 -m -w 1

ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.12:80 -m -w 1

ipvsadm –ln

firefox 192.168.10.100

Nginx 12  两台设置页面内容不同即可,其他一致

下面为其中一台Nginx设置

netstat -anput | grep 80

vim  /usr/local/nginx/conf/nginx.conf

server {

        listen       80;

        server_name       

        location / {

            root   /var/www/baidu;

            index  index.html index.htm ;

        }

mkdir /var/www/baidu

vim /var/www/baidu/index.html         

nginx 1

nginx –t

killall -s HUP nginx

vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

127.0.0.1       //最下面添加

nginx -t

nginx

LVS 访问验证:firefox 192.168.10.100

 

LVS+keepalived

Web服务器----Web服务器----LVS+keepalived----LVS+keepalived----五客户机

192.168.10.11   192.168.10.12    eth0:192.168.10.13     eth0:192.168.10.15  

                              eth1:192.168.11.13  eth1:192.168.11.15   192.168.11.11

内网漂移IP192.168.10.10

外网漂移IP192.168.11.9

一、两台LVS+keepalived添加网卡,并且配置IP地址(跟第一个网卡IP设置为不同网段)

右下角电脑---网络适配器---添加---设置和其他虚拟机相同模式  网关都配置为通网段的漂移IP

ip a  查看IP 多了eth1

cd /etc/sysconfig/network-scripts/

ls

cp ifcfg-eth0 ifcfg-eth1

vim ifcfg-eth1  配置第二块网卡

三: DEVICE=eth0 改为eth1

IPADDR=192.168.11.13

NETMASK=255.255.255.0

GATEWAY=192.168.11.9   网关为通网段漂移IP  eth0也设置同网段网关

四: DEVICE=eth0 改为eth1

IPADDR=192.168.11.15

NETMASK=255.255.255.0

GATEWAY=192.168.11.9   网关为通网段漂移IP  eth0也设置同网段网关

网关为通网段漂移IP  eth0也设置同网段网关

/etc/init.d/network restart  重新启动网卡   显示eth1 IP地址添加网卡成功

 

二、调整响应参数(LVS+keepalived两台都一样)

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1    //0改为1 把路由转发

添加:

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.eth1.send_redirects = 0

    sysctl –p  显示 添加模块

三、安装并配置启动ipvsadm

     modprobe ip_vs 添加ip_vs模块

     cd /media/cdrom/Packages/

     rpm -ivh ipvsadm-1.26-2.el6.x86_64.rpm

     service ipvsadm stop

ipvsadm -A -t 192.168.11.9:80 -s rr

  ipvsadm -a -t 192.168.11.9:80 -r 192.168.10.11:80 -m -w 1

     ipvsadm -a -t 192.168.11.9:80 -r 192.168.10.12:80 -m -w 1

ipvsadm –ln

service ipvsadm save

chkconfig ipvsadm on

service ipvsadm start

四、两台LVS+keepalived安装心跳线(两台一致)

yum install -y kernel-devel openssl-devel popt-devel

tar -zxvf keepalived-1.2.13.tar.gz

cd keepalived-1.2.13

    ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64

 make && make install

 service keepalived start

 chkconfig --add keepalived

 chkconfig keepalived on

  cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

五、修改keepalived主从配置文件

修改主配置文件

 vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

   router_id LVS_DEVEL_R1

}

vrrp_instance VI_1 {

    state MASTER

    nopreempt    //不抢占 master坏了之后 重新上线时不抢占主   主备都要加(迁移会花费资源)

    interface eth1

    virtual_router_id 1     //准备要相同

    priority 100     //从要比主小

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.11.9

    }

}

vrrp_instance VI_1 {

    state MASTER

    nopreempt

    interface eth0

    virtual_router_id 1

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.10.10

    }

}

virtual_server 192.168.11.9 80 {

    delay_loop 15

    lb_algo rr

    lb_kind NAT

    protocol TCP

    real_server 192.168.10.11 80 {          一下IP为两台web服务器IP地址和web端口

        weight 1

        TCP_CHECK {

             connect_port 80

             connect_timeout 3

             nb_get_retry 3

             delay_before_retry 4

             }

        }

    real_server 192.168.10.12 80 {

        weight 1

        TCP_CHECK {

             connect_port 80

             connect_timeout 3

             nb_get_retry 3

             delay_before_retry 4

             }

        }

}

                                     

 service keepalived restart

Ip a 查看一下漂移地址

修改从配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

   router_id LVS_DEVEL_R2

}

vrrp_instance VI_1 {

    state BACKUP

    nopreempt

    interface eth1

    virtual_router_id 1

    priority 90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.11.9

    }

}

vrrp_instance VI_1 {

    state BACKUP

    nopreempt

    interface eth0

    virtual_router_id 1

    priority 90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.10.10

    }

}

其他配置和主配置文件一致

service keepalived restart

 

六、两台Web服务器

  1)设置网页(显示出两台不同效果)

      vim /usr/local/nginx/html/index.html   修改标题或者内容 两台修改不同即可 为了显示轮询效果

nginx –t

2)添加网关

GATEWAY=192.168.10.10 为同网段漂移地址

/etc/init.d/network restart  重新启动网卡

 

验证:

客户机测试用客户机ping外网的虚拟IP,断开再ping,重新连上再ping

Ping 192.168.11.9 断开主 同样能pingOK

客户机访问外网虚拟IP并在主LVS服务器查看访问日志

  firefox 192.168.11.9

显示两台web页面 OK

 

 主上查看日志  ipvsadm –lnc

断开主 在次Firefox访问192.168.11.9

从上查看日志  ipvsadm –lnc

阅读(1711) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~