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

注:Server为Real  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


curl、elinks或firefox


Director


eth0:VIP:192.168.122.100


eth1:DIP:10.10.10.1


Real   Server


RIP:10.10.10.10    10.10.10.20    10.10.10.30


安装httpd服务


DNS   Server


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


bind或bind-chroot

建议:先在Real  Server安装如httpd

  • VS/NAT实施

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

IP、hostname、hosts、iptables、SELinux、ssh  trust、ntp

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,即后端的真实服务器。

在node1、node2、node3上部署


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      //为了看到效果,建议提供不同的页面

默认网关均指向Directory的DIP

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是批massquerading(NAT)


技巧:

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将数据包的目标IP由VIP转换为选中的Real  Server的RIP来实现分发。

要求:RS将网关指向Director的DIP。

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

重点注意:

Director必须开启Kernel  ip_forward

所有Real Server默认网关指向DIP

Director使用DIP和Real Server的RIP通信

监测:

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模式要求Director的DIP和所有Real Server的RIP必须在同一个网段及广播域

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

4、  用脚本部署LVS集群

注意:调度器和RealServer必须在同一个LAN,LAN可以使用公网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、准备工作(集群中所有主机)

IP、hostname、hosts、iptables、SELinux、ssh  trust、ntp

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,即后端的真实服务器。

在node1、node2、node3上部署好网站服务器,测试所有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      //为了看到效果,建议提供不同的页面

默认网关均指向Director的DIP

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


状态信息如下:

查看其他信息


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发送一个请求到VIP,Director根据VIP选择对应的RealServer的Pool,根据算法,在Pool中选择一台RealServer,然后将Client的请求包发给选择的RealServer,最后,选择的RealServer把应答包直接传给Client。

LVS集群部署的脚本


vi   lvs_httpd.sh


#!/bin/bash

#LVS_DR_RealServer的httpd初始化脚本,并发处理。

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  [email protected]$ip   ‘chkconfig  NetworkManager  off‘

ssh  [email protected]$ip   ‘iptables  -F ; service  iptables   save‘

ssh  [email protected]$ip   "sed -r  -i  "/^SELINUX/cSELINUX=permissive"  /etc/selinux/config"

ssh  [email protected]$ip   "sed -r  -i  "/^HOSTNAME/cHOSTNAME=$hostname"  /etc/sysconfig/network"

ssh  [email protected]$ip   "sed -r  -i  "/^BOOTPROTO/cBOOTPROTO=none"   /etc/sysconfig/network-scripts/ifcfg-eth0"

ssh  [email protected]$ip   "sed -r  -i  "/IPADDR/cIPADDR=$newip"   /etc/sysconfig/network-scripts/ifcfg-eth0"

ssh  [email protected]$ip   "sed -r  -i  "3aPREFIX=24"  /etc/sysconfig/network-scripts/ifcfg-eth0"

ssh  [email protected]$ip   "sed -r  -i  "3aGATEWAY=$gw"  /etc/sysconfig/network-scripts/ifcfg-eth0"

ssh  [email protected]$ip   "wget   ftp://172.16.8.100/rhel6.repo   -O  /etc/yum.repos.d/rhel6.repo"

ssh  [email protected]$ip   "yum  install  -y   lftp  tree  httpd"

ssh  [email protected]$ip   "chkconfig  httpd  on"

ssh  [email protected]$ip   "echo   "ServerName   $hostname" > /etc/httpd/conf.d/sv.conf"

ssh  [email protected]$ip   "service  httpd  restart"

ssh  [email protected]$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

时间: 2024-10-11 22:41:03

LVS集群实战的相关文章

LVS集群之工作原理

  首先我们要了解LVS的工作机制: LVS里Director本身不响应请求,只是接受转发请求到后方,Realservers才是后台真正响应请求. LVS 工作原理基本类似DNAT,又不完全相像,它是一种四层交换,默认情况下通过用户请求的地址和端口来判断用户的请求,从而转发到后台真正提供服务的主机,而判断这种请求的是通过套接字来实现,所以四层就可以实现. 而且这个转发的过程对用户而言是透明的(简单的讲,就是用户访问DR的IP,而DR转发给RSS,而用户不知道这个过程) LVS的工作模式: 1.D

keepalived实现LVS集群的高可用(1)

HA集群:高可用集群: 实现方式:vrrp协议和ais完备HA集群 vrrp可以由keepalived实现 ais可以由heartbeat和corosync vrrp协议:虚拟冗余路由协议 VRRP为虚拟路由冗余协议,目的就是为了解决静态路由单点故障问题.在一个VRRP虚拟路由器中,有多台物理的VRRP路由器,但是这多台的物理的机器并不能同时工作,而是由一台称为MASTER的负责路由工作,其它的都是BACKUP,MASTER并非一成不变,VRRP让每个VRRP路由器参与竞选,最终获胜的就是MAS

LVS集群的负载调度

章文嵩 ([email protected]) 转自LVS官方资料 2002 年 5 月 本文主要讲述了LVS集群的IP负载均衡软件IPVS在内核中实现的各种连接调度算法.针对请求的服务时间变化很大,给出一个动态反馈负载均衡算法,它结合内核中的加权连接调度算法,根据动态反馈回来的负载信息来调整服务器的权值,来进一步避免服务器间的负载不平衡. 1. 前言 在上一篇文章中,我们主要讲述了LVS集群中实现的三种IP负载均衡技术,它们主要解决系统的可伸缩性和透明性问题,如何通过负载调度器将请求高 效地分

LVS集群中的IP负载均衡技术

章文嵩 ([email protected]) 转自LVS官方参考资料 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT.VS/TUN和VS/DR)的工作原理,以及它们的优缺点. 1.前言在 前面文章中,讲述了可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份).我们先分析实现虚拟网络服务的主要技术,指出 IP负载均衡技术是在负载调度器的实现技术中效率最高的.在已有的IP负载均衡技术

linux lvs集群nat模式(比上一篇的lvs nat实用)

这是一篇以apcache服务为例介绍lvs的nat模式配合keepalived实现的方案.实验拓扑图如下所示,虚线上面的大图可以看成是虚线下面"服务器群"的放大版: 本实验共用到4台linux虚拟服务器,其中两台rhel5.6作为主从HA(keepalived)服务器,另外两台rhel4.6模拟Apache服务器--用两台Apache服务器模拟多台Apache服务器. 实验原理是,用Apache服务器为代表模拟实际用到的服务器,用两台Apache模拟多台Apache,所有的Apache

c# 链接mongDB集群实战开发

最近看着公司的项目是在太悲剧了看不下去了.各种供跨库调用各种卡,想换一种思路模式,找了很久感觉mongDB非关系型数据库比较合适也比较好玩.开始学习首先第一步 c# 链接mongDB集群 一  了解mongdb 一  学习部署 二 部署集群 三 C#链接mongdb 完成测试 mongdb 是作为非关系型数据库,数据存储在内存中,由于目前我我们公司全部采用sqlserver数据库,项目太大.数据库也太多,读取数据压力太大.所以研究这种数据库来提高效率. 首先下载数据库文件 点击这里下载自己需要办

LVS集群---&gt;做前端调度器搭建使用

LVS集群--->在这里做前端调度器搭建使用,工作模式用的LVS-nat和LVS-dr. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++集群:一组通过高速网络互联的计算组,并以单一系统的模式加以管理,服务的是同一网站 集群目低:增加可靠性 提高性能 降低成本 提高可靠扩展性 集群分类:高性能计算集群HPC(工作中用的少):通过以集群开发的并行应用程序,解决复杂的科学问题|(主要是单

redis3.0 集群实战1 -- 安装和配置

本文主要是在centos7上安装和配置redis集群实战 参考: http://hot66hot.iteye.com/blog/2050676 集群教程: http://redisdoc.com/topic/cluster-tutorial.html#id2 1 安装准备 1.1 下载redis3.0版本 到redis官网redis.io或者redis中文官网www.redis.cn上(http://www.redis.cn/download.html)去下载最新的版本,我下载的是redis3.

跟老男孩学Linux运维:Web集群实战优惠预售中

跟老男孩学Linux运维:Web集群实战即将出版 感谢小伙们这么多年对老男孩的持续关注.支持和理解, 为此,我们特别组织预售活动,以网内最低价回馈小伙伴们, 为大家争取的特殊优惠加签名仅限前500名,优惠价预计7折左右! 还剩不到50个名额,大家抓紧了. 1.老男孩内部预售活动报名说明及缴费地址 http://www.huodongxing.com/event/8325097592500  2.京东商城预售地址: http://item.jd.com/11891124.html