方案:安装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. Linux安装Python3流程

    安装必要的依赖库文件 yum -y install zlib zlib-devel bzip2 bzip2-devel ncurses ncurses-devel readline readline- ...

  2. git出现Invalid path

    今天换了电脑,我直接把整个仓库从电脑A复制到了电脑B,包括仓库下面的 .git 文件夹. 修改代码后我执行了一下 git add . 出现了一个报错 fatal: Invalid path 'D:/S ...

  3. Shiro授权及注解式开发

    目的: shiro授权 shiro注解式开发 Shiro授权 首先设计shiro权限表: 从图中我们也清晰的看出五张表之间的关系 ShiroUserMapper Set<String> g ...

  4. python 实现 websocket

    一.websocket概要: websocket是基于TCP传输层协议实现的一种标准协议(关于网络协议,可以看看文末的图片),用于在客户端和服务端双向传输数据 传统的客户端想要知道服务端处理进度有两个 ...

  5. poj 3252 数位dp

    题意:一个二进制的数,如果0的个数大于1的个数,那么我们称这个数为Round Numbers,求给定区间(十进制表示)中Round Numbers的个数 题解:数位dp,不过这里枚举的时候lead标记 ...

  6. JDK8源码解析 -- HashMap(一)

    最近一直在忙于项目开发的事情,没有时间去学习一些新知识,但用忙里偷闲的时间把jdk8的hashMap源码看完了,也做了详细的笔记,我会把一些重要知识点分享给大家.大家都知道,HashMap类型也是面试 ...

  7. XPATH中text()和string()的使用区别

    <table style="WIDTH: 95.45%; BORDER-COLLAPSE: collapse; EMPTY-CELLS: show; MARGIN-LEFT: 4.55 ...

  8. 同步IO,异步IO,阻塞,非阻塞的定义与区别

    异步I/O 是指用户程序发起IO请求后,不等待数据,同时操作系统内核负责I/O操作把数据从内核拷贝到用户程序的缓冲区后通知应用程序.数据拷贝是由操作系统内核完成,用户程序从一开始就没有等待数据,发起请 ...

  9. Hibernate更新、删除后数据库无变化

    转自:https://ask.csdn.net/questions/756109 !-- 配置事务管理器 --> <tx:advice id="advice" tran ...

  10. jmeter第一次使用

    创建线程组 依次创建后,在http请求页面填入接口地址,参数,头信息,点击运行,然后查看结果树