方案:安装ipvsadm软件包,关于ipvsadm的用法可以参考man ipvsadm资料。
常用ipvsadm命令语法格式如表-1及表-2所示。

1.ipvsadm命令用法(proxy)
1.1 创建LVS虚拟集群服务器(算法为加权轮询:wrr)
]# yum -y install ipvsadm
]# ipvsadm -A -t 192.168.4.5:80 -s wrr
]# ipvsadm -Ln(n以数字显示端口号)查兰LVS规则表
1.2 为集群添加若干real server
]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100 -m -w 1
]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200 -m -w 2
]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.201 -m -w 3
]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.202 -m -w 4
]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port  Forward Weight ActiveConn InActConn
TCP  192.168.4.5:80 wrr
  -> 192.168.2.100:80    Masq    1      0          0         
  -> 192.168.2.200:80    Masq    2      0          0         
  -> 192.168.2.201:80    Masq    3      0          0         
  -> 192.168.2.202:80    Masq    4      0          0      
1.3 修改集群服务器设置(修改调度器算法,将加权轮询修改为轮询)
]# ipvsadm -E -t 192.168.4.5:80 -s rr
ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port  Forward Weight ActiveConn InActConn
TCP  192.168.4.5:80 rr
...
1.4 修改real server(使用-g选项,将模式改为DR模式)
]# ipvsadm -e -t 192.168.4.5:80 -r 192.168.2.202 -g
]# ipvsadm -Ln
...
  -> 192.168.2.202:80  Route  1   0   0
1.5 创建另一个集群(算法为最少连接算法;使用-m选项,设置工作模式为NAT模式)
]# ipvsadm -A -t 192.168.4.5:3306 -s lc
]# ipvsadm -a -t 192.168.4.5:3306 -r 192.168.2.100 -m
]# ipvsadm -a -t 192.168.4.5:3306 -r 192.168.2.200 -m
]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port  Forward Weight ActiveConn InActConn
TCP  192.168.4.5:80 rr
  -> 192.168.2.100:80    Masq  1    0   0         
  -> 192.168.2.200:80    Masq  2    0   0         
  -> 192.168.2.201:80    Masq  3    0   0         
  -> 192.168.2.202:80    Route 1    0   0         
TCP  192.168.4.5:3306 lc
  -> 192.168.2.100:3306  Masq  1    0   0         
  -> 192.168.2.200:3306  Masq  1    0   0  
1.5.1 永久保存所有规则
]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
1.5.2 清空所有规则
]# ipvsadm -C
 
2.部署LVS-NAT集群
2.1 问题

使用LVS实现NAT模式的集群调度服务器,为用户提供Web服务:
集群对外公网IP地址为192.168.4.5
调度器内网IP地址为192.168.2.5
真实Web服务器地址分别为192.168.2.100、192.168.2.200
使用加权轮询调度算法,真实服务器权重分别为1和2
2.2 方案
实验拓扑结构主机配置细节如表-3所示。
使用4台虚拟机,1台作为Director调度器、2台作为Real Server、1台客户端,拓扑结构如图-1所示,注意:web1和web2必须配置网关地址。
2.1 设置web1-2的网关:
]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
...
GATEWAY=192.168.2.5
]# systemctl restart network
]# route -n
 
2.2 设置Web服务器(以web1为例,web2为2.200)
]# yum -y install httpd
]# echo "192.168.2.100" > /var/www/html/index.html
]# systemctl restart httpd
 
2.3 部署LVS-NAT模式调度器(proxy)
2.3.1 确认调度器的路由转发功能(如果已经开启,可以忽略)
]# echo 1 > /proc/sys/net/ipv4/ip_forward
]# cat /proc/sys/net/ipv4/ip_forward
]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
#修改配置文件,设置永久规则
2.3.2 创建集群服务器
]# yum -y install ipvsadm
]# ipvsadm -A -t 192.168.4.5:80 -s wrr
2.3.3 添加真实服务器
]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100 -w 1 -m
]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200 -w 1 -m
2.3.4 查看规则列表,并保存规则
]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port  Forward Weight ActiveConn InActConn
TCP  192.168.4.5:80 wrr
  -> 192.168.2.100:80    Masq    1      0          0         
  -> 192.168.2.200:80    Masq    1      0          0    
]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
 
2.4:客户端测试(client),查看访问的页面是否会轮询到不同的后端真实服务器。
192.168.2.100
192.168.2.200
192.168.2.100
192.168.2.200
...
 
3.部署LVS-DR集群
要求:使用LVS实现DR模式的集群调度服务器,为用户提供Web服务:
客户端IP地址为192.168.4.10
LVS调度器VIP地址为192.168.4.15
LVS调度器DIP地址设置为192.168.4.5
真实Web服务器地址分别为192.168.4.100、192.168.4.200
使用加权轮询调度算法,web1的权重为1,web2的权重为2
说明:
CIP是客户端的IP地址;
VIP是对客户端提供服务的IP地址;
RIP是后端服务器的真实IP地址;
DIP是调度器与后端服务器通信的IP地址(VIP必须配置在虚拟接口)。
 
3.1 方案
使用4台虚拟机,1台作为客户端、1台作为Director调度器、2台作为Real Server,拓扑结构如图-2所示。实验拓扑结构主机配置细节如表-4所示

说明:
CIP是客户端的IP地址;
VIP是对客户端提供服务的IP地址;
RIP是后端服务器的真实IP地址;
DIP是调度器与后端服务器通信的IP地址(VIP必须配置在虚拟接口)。
 
3.2 配置实验网络环境
3.2.1 设置Proxy代理服务器的VIP和DIP
注意:为了防止冲突,VIP必须要配置在网卡的虚拟接口!!!
]# cd /etc/sysconfig/network-scripts/
]# cp ifcfg-eth0{,:0}
 
]# vim ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.4.5
PREFIX=24
 
]# vim ifcfg-eth0:0
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=eth0:0
DEVICE=eth0:0
ONBOOT=yes
IPADDR=192.168.4.15
PREFIX=24
 
]# systemctl restart network
 
3.2.2 设置Web1服务器网络参数
]# nmcli connection modify eth0 ipv4.method manual \
ipv4.addresses 192.168.4.100/24 connection.autoconnect yes
]# nmcli connection up eth0
接下来给web1配置VIP地址。
注意:这里的子网掩码必须是32(也就是全255),网络地址与IP地址一样,广播地址与IP地址也一样。
[]# cd /etc/sysconfig/network-scripts/
]# cp ifcfg-lo{,:0}
]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.4.15
NETMASK=255.255.255.255
NETWORK=192.168.4.15
BROADCAST=192.168.4.15
ONBOOT=yes
NAME=lo:0
 
防止地址冲突的问题:
这里因为web1也配置与代理一样的VIP地址,默认肯定会出现地址冲突;
sysctl.conf文件写入这下面四行的主要目的就是访问192.168.4.15的数据包,只有调度器会响应,其他主机都不做任何响应,这样防止地址冲突的问题。
]# vim /etc/sysctl.conf
#手动写入如下4行内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
#当有arp广播问谁是192.168.4.15时,本机忽略该ARP广播,不做任何回应
#本机不要向外宣告自己的lo回环地址是192.168.4.15
]# sysctl -p #查看
重启网络服务,设置防火墙与SELinux
]# systemctl restart network
]# ifconfig
 
3.2.3 设置Web2服务器网络参数
]# nmcli connection modify eth0 ipv4.method manual \
ipv4.addresses 192.168.4.200/24 connection.autoconnect yes
]# nmcli connection up eth0
接下来给web2配置VIP地址
注意:这里的子网掩码必须是32(也就是全255),网络地址与IP地址一样,广播地址与IP地址也一样。
]# cd /etc/sysconfig/network-scripts/
]# cp ifcfg-lo{,:0}
]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.4.15
NETMASK=255.255.255.255
NETWORK=192.168.4.15
BROADCAST=192.168.4.15
ONBOOT=yes
NAME=lo:0
 
防止地址冲突的问题:
这里因为web1也配置与代理一样的VIP地址,默认肯定会出现地址冲突;
sysctl.conf文件写入这下面四行的主要目的就是访问192.168.4.15的数据包,只有调度器会响应,其他主机都不做任何响应,这样防止地址冲突的问题。
]# vim /etc/sysctl.conf
#手动写入如下4行内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
#当有arp广播问谁是192.168.4.15时,本机忽略该ARP广播,不做任何回应
#本机不要向外宣告自己的lo回环地址是192.168.4.15
]# sysctl -p
]# systemctl restart network
[root@web2 ~]# ifconfig
 
3.3 配置后端Web服务器页面
web1 ~]# echo "192.168.4.100" > /var/www/html/index.html
web2 ~]# echo "192.168.4.200" > /var/www/html/index.html
web1 ~]# systemctl restart httpd
web2 ~]# systemctl restart httpd
 
3.4 proxy调度器安装软件并部署LVS-DR模式调度器
3.4.1 安装软件(如果已经安装,此步骤可以忽略)
]# yum -y install ipvsadm
3.4.2 清理之前实验的规则,创建新的集群服务器规则
]# ipvsadm -C  #清空所有规则
]# ipvsadm -A -t 192.168.4.15:80 -s wrr
3.4.3 添加真实服务器(-g参数设置LVS工作模式为DR模式,-w设置权重)
]# ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.100 -g -w 1
]# ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.200 -g -w 1
3.4.4 查看规则列表,并保存规则
]# ipvsadm -Ln
TCP  192.168.4.15:80 wrr
  -> 192.168.4.100:80   Route  1   0   0         
  -> 192.168.4.200:80   Route  2   0   0
]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
 
3.5 客户端测试(client)
192.168.4.100
192.168.4.200
192.168.4.100
192.168.4.200
**********************
扩展知识:默认LVS不带健康检查功能,需要自己手动编写动态检测脚本,实现该功能:(参考脚本如下,仅供参考)
]# vim check.sh
#!/bin/bash
VIP=192.168.4.15:80
RIP1=192.168.4.100
RIP2=192.168.4.200
while :
do
   for IP in $RIP1 $RIP2
   do
           curl -s http://$IP &>/dev/vnull
if [ $? -eq 0 ];then
            ipvsadm -Ln |grep -q $IP || ipvsadm -a -t $VIP -r $IP
        else
             ipvsadm -Ln |grep -q $IP && ipvsadm -d -t $VIP -r $IP
        fi
   done
sleep 1
done
**************************

二十六. 集群及LVS简介 LVS-NAT集群 LVS-DR集群的更多相关文章

  1. Web 前端开发人员和设计师必读精华文章【系列二十六】

    <Web 前端开发精华文章推荐>2014年第5期(总第26期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  2. 二十六、Jcreator使用初步

    摘自http://blog.csdn.net/liujun13579/article/details/7751464 二十六.Jcreator使用初步 Jcreator是一个小巧灵活的Java开发工具 ...

  3. JAVA之旅(二十六)——装饰设计模式,继承和装饰的区别,LineNumberReader,自定义LineNumberReader,字节流读取操作,I/O复制图片

    JAVA之旅(二十六)--装饰设计模式,继承和装饰的区别,LineNumberReader,自定义LineNumberReader,字节流读取操作,I/O复制图片 一.装饰设计模式 其实我们自定义re ...

  4. 剑指Offer(二十六):二叉搜索树与双向链表

    剑指Offer(二十六):二叉搜索树与双向链表 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/ ...

  5. Bootstrap <基础二十六>进度条

    Bootstrap 进度条.在本教程中,你将看到如何使用 Bootstrap 创建加载.重定向或动作状态的进度条. Bootstrap 进度条使用 CSS3 过渡和动画来获得该效果.Internet ...

  6. 二十六:Struts2 和 spring整合

    二十六:Struts2 和 spring整合 将项目名称为day29_02_struts2Spring下的scr目录下的Struts.xml文件拷贝到新项目的scr目录下 在新项目的WebRoot-- ...

  7. WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[扩展篇]

    原文:WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[扩展篇] 通过<实现篇>对WSDL元素和终结点三要素的之间的匹配关系的介绍,我们知道了WSDL的Binding ...

  8. WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[实现篇]

    原文:WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[实现篇] 元数据的导出就是实现从ServiceEndpoint对象向MetadataSet对象转换的过程,在WCF元数据框 ...

  9. VMware vSphere 服务器虚拟化之二十六 桌面虚拟化之View Persona Management

    VMware vSphere 服务器虚拟化之二十六 桌面虚拟化之View Persona Management 实验失败告终,启动VMware View Persona Management服务报10 ...

  10. 第一百二十六节,JavaScript,XPath操作xml节点

    第一百二十六节,JavaScript,XPath操作xml节点 学习要点: 1.IE中的XPath 2.W3C中的XPath 3.XPath跨浏览器兼容 XPath是一种节点查找手段,对比之前使用标准 ...

随机推荐

  1. css拓展

    自定义居中 .second-listleft{/*固定位置*/ position: relative; float: left; width: 25%; height: 100%; backgroun ...

  2. python 之 前端开发(CSS三大特性、字体属性、文本属性、背景属性)

    11.38 css三大特性 11.381 继承性 1.定义:给某一个元素设置一些属性,该元素的后代也可以使用,这个我们就称之为继承性​2.注意:    1.只有以color.font-.text-.l ...

  3. 深夜扒一扒Android的发展史

    说道,Android的发展史,我们就不得不先来了解一下手机的发展史 Android之前的时代 1831年英国的法拉第发现了电磁感应现象,麦克斯韦进一步用数学公式阐述了法拉第等人的研究成果,并把电磁感应 ...

  4. WebApi如何传递参数

    一 概述 一般地,我们在研究一个问题时,常规的思路是为该问题建模:我们在研究相似问题时,常规思路是找出这些问题的共性和异性.基于该思路,我们如何研究WebApi参数传递问题呢? 首先,从参数本身来说, ...

  5. C# mailKit 发邮件 简单代码

    public static async Task<bool> SendMailAsync22(string Name, string receive, string sender, str ...

  6. python之统计字符串中字母出现次数

    dic=dict() d={} s=set() s='helloworld' (1)d=dict() for x in s: if x not in d.keys(): d[x]=1 else: d[ ...

  7. nginx热加载、热升级、回滚

    修改完配置文件后使用 nginx -s reload 命令进行热加载 编译好新的 nginx 二进制文件后,运行nginx 开启nginx服务,然后使用 kill -USR2 新的nginx_mast ...

  8. http://go.microsoft.com/fwlink/?linkid问题

    今天不知怎的,打开一个网页出现了http://go.microsoft.com/fwlink/?linkid=XXX 烦死了,在百度搜了下方法,什么改注册表,策略模板等不见起效.其实打开IE的设置, ...

  9. javascript/js实现 排序二叉树数据结构 学习随笔

    二叉树是一种数据结构.其特点是: 1.由一系列节点组成,具有层级结构.每个节点的特性包含有节点值.关系指针.节点之间存在对应关系. 2.树中存在一个没有父节点的节点,叫做根节点.树的末尾存在一系列没有 ...

  10. css 边框上如何写入文字?

    方法一: 1.首先,打开html编辑器,新建html文件,例如:index.html. 2.在index.html中的<body>标签中,输入html代码:. <div style= ...