LVS集群实战

简介:

LVS

 

Linux Virtual Server: Linux虚拟服务器

基于四层的LB

================================

LVS+keepalived Web Server 80/tcp

LVS+keepalived Galera MySQL/MySQL Cluster 3306/tcp

 

一、LVS概述

LVS是Linux内核的一部分,因此性能较高

Linux虚拟服务器(即分发器或调度器)功能:

   不真正提供服务,介接受客户的访问,为整个集群提供一个唯一的入口

   虚拟服务器和真实服务器(Real Server)通信

   真正提供服务,集群中每个(Real Server)可以是物理机,也可以是虚拟机

 

二、LVS三种基本模式


VS/NAT

VS/TUN

VS/DR

Server

any

Tunneling

Non-arp   device

Server   network

private

LAN/WAN

LAN

Server  number

low(10-20)

High(100)

High(100)

Server  gateway

load   balancer

own   router

Own   router

 

注:ServerReal  Server

VS/NAT:

any

IIS,Apache,Nginx

private

私有网络

low

10~20

gateway

所有Real  Server网关必须指向调度器

 

VS/NAT:网络地址转换模式,进站/出站的数据流量经过分发器。

 

VS/DR:直接路由模式,只有进站的数据流量经过分发器

        调试器和真实服务器必须在同一网段

 

VS/TUN:隧道模式,只有进站的数据流量经过分发器。

 

VS/NAT配置

实验说明:

1、  KVM网络使用NAT模式

2、  client、调试器、Real  Server都使用虚拟机或使用真实服务器

3、  虚拟机上的网卡使用半虚拟化驱动,如果半虚拟化驱动异常,可以使用default/rtl8139

 

网络拓扑:

主机功能

IP地址

必备软件

client

CIP:192.168.122.0/24

curlelinksfirefox

Director

eth0:VIP:192.168.122.100


eth1:DIP:10.10.10.1

Real   Server

RIP10.10.10.10    10.10.10.20    10.10.10.30

安装httpd服务

DNS   Server

www.ak.com=====>192.168.122.100

bindbind-chroot

建议:先在Real  Server安装如httpd

 

  • VS/NAT实施

1、  准备工作(集群中所有主机)[可选]

IPhostnamehostsiptablesSELinuxssh  trustntp

 

cat  /etc/hosts

  1. 0.0.1    localhost

  2. 10.10.1   director1.sky.com   director1

  3. 10.10.10   node1.sky.com   node1

  4. 10.10.20   node2.sky.com   node2

  5. 10.10.30   node3.sky.com   node3

 

2、  RS配置

说明:RS是指Real Server,即后端的真实服务器。

node1node2node3上部署

node1部署httpd服务


yum    install   -y  httpd

echo   ServerName  node1.sky.com:80  >   /etc/httpd/conf.d/sv.conf

echo   node1 web  > /var/www/html

service    httpd  restart

chkconfig   httpd    on


cd   /etc/sysconfig/network-scripts

cp   -v  ifcfg-eth0{,.bak}

cat   > ifcfg-eth0 <<EOF

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=static

IPADDR=10.10.10.10

NETMASK=255.255.255.0

GATEWAY=10.10.10.1

DNS=192.168.122.100

EOF

service    network  restart

ip   addr  show

curl    127.0.0.1


node2部署httpd服务


yum    install   -y  httpd

echo   ServerName  node2.sky.com:80  >   /etc/httpd/conf.d/sv.conf

echo   node2 web  > /var/www/html

service    httpd  restart

chkconfig   httpd    on

curl    127.0.0.1


cd   /etc/sysconfig/network-scripts

cp   -v  ifcfg-eth0{,.bak}

cat   > ifcfg-eth0 <<EOF

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=static

IPADDR=10.10.10.20

NETMASK=255.255.255.0

GATEWAY=10.10.10.1

DNS=192.168.122.100

EOF

service    network  restart

ip   addr  show


node3部署httpd服务


yum    install   -y  httpd

echo   ServerName  node3.sky.com:80  >   /etc/httpd/conf.d/sv.conf

echo   node3 web  > /var/www/html

service    httpd  restart

chkconfig   httpd    on

curl    127.0.0.1


cd   /etc/sysconfig/network-scripts

cp   -v  ifcfg-eth0{,.bak}

cat   > ifcfg-eth0 <<EOF

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=static

IPADDR=10.10.10.30

NETMASK=255.255.255.0

GATEWAY=10.10.10.1

DNS=192.168.122.100

EOF

service    network  restart

ip   addr  show


配置好网站服务器,测试所有RS      //为了看到效果,建议提供不同的页面

默认网关均指向DirectoryDIP

 

3、  Director分发器配置

配置VIP

ip   addr   add  dev   eth0  192.168.122.100/24

vim    /etc/sysctl.conf     修改内容如下

net_ipv4.ip_forward=1

:wq保存退出

sysctl   -p     //确保打开路由转发

 

定义LVS的分发策略

yum    install   -y  ipvsadm    

ipvsadm    --help

man    ipvsadm   然后查找EXAMPLE实例

ipvsadm  -A  -t   192.168.122.100:80  -s  rr

ipvsadm   -a  -t   192.168.122.100:80   -r   10.10.10.10  -m

ipvsadm   -a  -t   192.168.122.100:80   -r   10.10.10.20  -m

ipvsadm   -a  -t   192.168.122.100:80   -r   10.10.10.30  -m

确保RHEL仓库可用

 

-m是批massqueradingNAT

技巧:

     Director调度器调度多个网站服务时,只需要给调度器的WAN网卡设置多个外网IP,然后做第2个调度策略。

 

查看LVS状态信息

ipvsadm    -L

ipvsadm    -Ln


状态信息如下:


 

查看其他信息

ipvsadm    -L   -n   --stats

ipvsadm    -L   -n   --rate

ipvsadm    -Ln   -c

watch   -n.5  'ipvsadm   -Ln   -c'

 

看速率

LVS的连接条目

 

 

4、  测试

curl    http://192.168.122.100

elinks   -dump  http://192.168.122.100/

ab   -c1000   -n  1000    http://192.168.122.100


 

5、  小结

VS/NAT模式的原理:Director收到Client请求时,Director将数据包的目标IPVIP转换为选中的Real  ServerRIP来实现分发。

要求:RS将网关指向DirectorDIP

特点:配置简单,所有的入站、出站数据包都经过分发器。当数据量比较大时,分发器可能会出现网络瓶颈!因而支持的RS数量少。

 

重点注意:

     Director必须开启Kernel  ip_forward

所有Real Server默认网关指向DIP

     Director使用DIPReal ServerRIP通信

监测:

     watch -n.5  'ipvsadm   -Ln -c'

 

新命令了解:

     arping -I  eth0  172.20.20.250

     ip addr   add  dev br1  172.16.20.250/24

     ip addr   add  dev lo  172.16.20.250/32

     arp -n | grep  192.168.100.2

 

  • VS/DR模式原理解析

RIP:设置在物理网卡

VIP:设置在lo环回网卡(127.0.0.1) 

 

Non-arp工作原理:

 

VS-DR部署实战

实验说明:

1、  KVM网络使用NAT模式

2、  DR模式要求DirectorDIP和所有Real ServerRIP必须在同一个网段及广播域

3、  所有节点网关均指定真实网关

4、  用脚本部署LVS集群

 

注意:调度器和RealServer必须在同一个LANLAN可以使用公网IP,也可以使用private  IP

公网IP:前端路由器工作模式为路由模式

私网IP:前端路由器工作为NAT,并将某个公网IP映射到VIP(private)

网络拓扑:

Client

CIP:192.168.122.1




Director

VIP:192.168.122.100

DIP:192.168.122.2




Real Server

RIP:192.168.122.10

VIP:192.168.122.100

RIP:192.168.122.20

VIP:192.168.122.100

RIP:192.168.122.30

VIP:192.168.122.100

 

Nor-arp

DNS Server

www.sky.com  ===>192.168.122.100

 

  • LVS/DR实战

1、准备工作(集群中所有主机)

IPhostnamehostsiptablesSELinuxssh  trustntp

 

cat  /etc/hosts

  1. 0.0.1    localhost

  2. 168.122.2   director1.sky.com   director1

  3. 168.122.10   node1.sky.com   node1

  4. 168.122.20   node2.sky.com   node2

  5. 168.122.30   node3.sky.com   node3

 

6、  RS配置

说明:RS是指Real Server,即后端的真实服务器。

node1node2node3上部署好网站服务器,测试所有RS。为了测试效果,提供不同的网站页面。

在三台RS上的lo环回接口上添加VIP,并开启Non-arp功能


ip    addr   dee  lo    192.168.122.100/32        #lo接口上绑定VIP

echo   1 > /proc/sys/net/ipv4/conf/all/arp_ignore       #non-arp

echo   2> /proc/sys/net/ipv4/conf/all/arp_announce     #non-arp


node1部署httpd服务


yum    install   -y  httpd

echo   ServerName  node1.sky.com:80  >   /etc/httpd/conf.d/sv.conf

echo   node1 web  > /var/www/html

service    httpd  restart

chkconfig   httpd    on


cd   /etc/sysconfig/network-scripts

cp   -v  ifcfg-eth0{,.bak}

cat   > ifcfg-eth0 <<EOF

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=static

IPADDR=10.10.10.10

NETMASK=255.255.255.0

GATEWAY=10.10.10.1

DNS=192.168.122.100

EOF

service    network  restart

ip   addr  show

curl    127.0.0.1


node2部署httpd服务


yum    install   -y  httpd

echo   ServerName  node2.sky.com:80  >   /etc/httpd/conf.d/sv.conf

echo   node2 web  > /var/www/html

service    httpd  restart

chkconfig   httpd    on

curl    127.0.0.1


cd   /etc/sysconfig/network-scripts

cp   -v  ifcfg-eth0{,.bak}

cat   > ifcfg-eth0 <<EOF

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=static

IPADDR=10.10.10.20

NETMASK=255.255.255.0

GATEWAY=10.10.10.1

DNS=192.168.122.100

EOF

service    network  restart

ip   addr  show


node3部署httpd服务


yum    install   -y  httpd

echo   ServerName  node3.sky.com:80  >   /etc/httpd/conf.d/sv.conf

echo   node3 web  > /var/www/html

service    httpd  restart

chkconfig   httpd    on

curl    127.0.0.1


cd   /etc/sysconfig/network-scripts

cp   -v  ifcfg-eth0{,.bak}

cat   > ifcfg-eth0 <<EOF

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=static

IPADDR=10.10.10.30

NETMASK=255.255.255.0

GATEWAY=10.10.10.1

DNS=192.168.122.100

EOF

service    network  restart

ip   addr  show


配置好网站服务器,测试所有RS      //为了看到效果,建议提供不同的页面

默认网关均指向DirectorDIP

 

7、  Director分发器配置

配置VIP

ip   addr   add  dev   eth0  192.168.122.100/32     ##配置VIP

yum    install   -y   ipvsadm     ##确保yum仓库可用

 

定义LVS分发策略

ipvsadm   -C

ipvsadm   -A  -t  192.168.122.100:80  -s   rr

ipvsadm   -a  -t  192.168.122.100:80  -r   192.168.122.10  -g

ipvsadm   -a  -t  192.168.122.100:80  -r   192.168.122.20  -g

ipvsadm   -a  -t  192.168.122.100:80  -r   192.168.122.30  -g

service    ipvsadm  save

ipvsadm   -Ln


 

查看LVS状态信息

ipvsadm    -L

ipvsadm    -Ln


状态信息如下:

spacer.gif


 

查看其他信息

ipvsadm    -L   -n   --stats

ipvsadm    -L   -n   --rate

ipvsadm    -Ln   -c

watch   -n.5  'ipvsadm   -Ln   -c'

 

看速率

LVS的连接条目

 

 

8、  测试

curl    http://192.168.122.100

elinks   -dump  http://192.168.122.100/

ab   -c1000   -n  1000    http://192.168.122.100


 

9、  小结

VS/NAT模式的原理:当一个Client发送一个请求到VIPDirector根据VIP选择对应的RealServerPool,根据算法,在Pool中选择一台RealServer,然后将Client的请求包发给选择的RealServer,最后,选择的RealServer把应答包直接传给Client

 

LVS集群部署的脚本

vi   lvs_httpd.sh

#!/bin/bash

#LVS_DR_RealServerhttpd初始化脚本,并发处理。

IFS=$'\n'

alias   sed='sed  -c  --follow-syslinks'

ntpserver=172.16.8.100

vip=192.168.122.100

 

for    line   in  $(cat   real_serverip.txt)

#real_serverip.txt

#old_ip            hostname    newip

#192.168.122.10    web10      192.168.122.10 

#192.168.122.11    web11      192.168.122.20 

#192.168.122.12    web12      192.168.122.30 

#...

do

         {

         ip=$(echo  $line | awk '{print  $1}')

         hostname=$(echo  $line | awk '{print  $2}')

         newip=$(echo  $line | awk '{print  $3}')

 

         ssh  root@$ip   'chkconfig  NetworkManager  off'

         ssh  root@$ip   'iptables  -F ; service  iptables   save'

         ssh  root@$ip   "sed -r  -i  "/^SELINUX/cSELINUX=permissive"  /etc/selinux/config"

         ssh  root@$ip   "sed -r  -i  "/^HOSTNAME/cHOSTNAME=$hostname"  /etc/sysconfig/network"

         ssh  root@$ip   "sed -r  -i  "/^BOOTPROTO/cBOOTPROTO=none"   /etc/sysconfig/network-scripts/ifcfg-eth0"

         ssh  root@$ip   "sed -r  -i  "/IPADDR/cIPADDR=$newip"   /etc/sysconfig/network-scripts/ifcfg-eth0"

         ssh  root@$ip   "sed -r  -i  "3aPREFIX=24"  /etc/sysconfig/network-scripts/ifcfg-eth0"

         ssh  root@$ip   "sed -r  -i  "3aGATEWAY=$gw"  /etc/sysconfig/network-scripts/ifcfg-eth0"

        

         ssh  root@$ip   "wget   ftp://172.16.8.100/rhel6.repo   -O  /etc/yum.repos.d/rhel6.repo"

         ssh  root@$ip   "yum  install  -y   lftp  tree  httpd"

         ssh  root@$ip   "chkconfig  httpd  on"

         ssh  root@$ip   "echo   "ServerName   $hostname" > /etc/httpd/conf.d/sv.conf"

         ssh  root@$ip   "service  httpd  restart"

         ssh  root@$ip   "echo  $hostname >  /var/www/html/index.html"

         }&

done

 


LVS
调度算法详解

LVS持久性连接

LVS端口亲缘性

基本LVS  LB集群解决方案一  LVS  KeepAlived

基本LVS  LB集群解决方案二  LVS  Piranha

 

LVS持久性连接

 

LVS端口亲缘性

 

基本LVS  LB集群解决方案一  LVS  KeepAlived

 

基本LVS  LB集群解决方案二  LVS  Piranha

 




      本文转自rshare 51CTO博客,原文链接:http://blog.51cto.com/1364952/1955320,如需转载请自行联系原作者




相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
6月前
|
负载均衡 应用服务中间件 Linux
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
|
6月前
|
存储 负载均衡 网络协议
企业实战(13)LVS负载均衡DR(直接路由)模式实战详解(二)
企业实战(13)LVS负载均衡DR(直接路由)模式实战详解(二)
103 0
|
5月前
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
173 0
|
3月前
|
负载均衡 算法 Linux
LVS集群
LVS(Linux Virtual Server)集群是一种基于Linux操作系统的高可用性和负载均衡解决方案。它通过将网络流量分发到多个后端服务器上,实现了对网络服务的负载均衡,并提高了系统的可用性和性能。
65 1
|
4月前
|
负载均衡 算法 网络协议
小白带你学习linux的LVS集群(三十六)
小白带你学习linux的LVS集群(三十六)
71 0
|
7月前
|
负载均衡 测试技术
LVS+KeepAlived构建高可用集群
LVS+KeepAlived构建高可用集群
54 0
|
8月前
|
缓存 负载均衡 网络协议
|
缓存 负载均衡 网络协议
构建LVS负载均衡集群
LVS即Linux虚拟服务器,目前 LVS 已经被集成到 Linux 内核模块中,该项目在 Linux 内核实现了基于 IP 的数据请求负载均衡调度方案,LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器.整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序.为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性.
854 0
构建LVS负载均衡集群
|
机器学习/深度学习 缓存 负载均衡
LVS 的 NAT 模型实战应用(二)|学习笔记
快速学习 LVS 的 NAT 模型实战应用
96 0
LVS 的 NAT 模型实战应用(二)|学习笔记
|
负载均衡 监控 算法
企业集群平台架构设计与实现lvs篇4(二)|学习笔记
快速学习企业集群平台架构设计与实现lvs篇4(二)
84 0