方案:安装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. Python 重点知识整理(基于Python学习手册第四版)

    字节型编译 如果Python在系统中有写的权限,当程序运行时Python会把源码编译成字节码(与系统环境无关)存在一个.pyc扩展名文件中,如果没有修改源码而重新运行程序时,不会进行编译的步骤而使用字 ...

  2. Python基础 — 数据类型转换

    Python 数据类型转换 有时候,我们需要对数据内置的内心进行转换,数据类型的转换,你只需要将数据类型作为函数名即可. 以下几个内置的函数可以执行数据类型之间的转换,这些函数返回一个新的对象,表示转 ...

  3. zabbix4.2的yum+mariadb方式部署安装

    本文依据官方文档操作(英文4.2):https://www.zabbix.com/documentation/4.2/manual/installation/install_from_packages ...

  4. iOS 如何判断一个点在某个指定区域中

    在iOS 开发中会遇到 判断位置的情况 iOS 自己都有函数实现的这些功能. 判断一个点是否在这个rect区域中 bool CGRectContainsPoint(CGRect rect,CGPoin ...

  5. Redis 知识 整理

    简介 安装 启动 注意事项 使用命令 通用命令 数据结构 字符串(string) 哈希(hash) 队列(list) 集合(set) 有序集合(zset) 位图(bitcount) 事务 订阅与发布 ...

  6. MVC-区域(Area)

    1.启用路由前的准备工作 1.Global.asax.cs中注册路由 public class MvcApplication : System.Web.HttpApplication { protec ...

  7. ES Client

    关于 ElasticSearch的学习参见:ELK | wjcx_sqh 本文分别学习 .Net | Java 下操作 ES: .Net 目前主流的 .Net 客户端有 2 种: PlainElast ...

  8. LVS实现健康性检查功能

    LVS高可用性 Director不可用,整个系统将不可用:SPoF Single Point of Failure 解决方案:高可用 keepalived heartbeat/corosync 某RS ...

  9. windows虚拟机性能调整

    在通过KVM安装WindowsXP/2003/7/2008操作系统后,由于默认的磁盘驱动(IDE)性能与网卡驱动(RTL8139100M)的性能都极其低下,需要调整,通过加载Redhatvirtio驱 ...

  10. Bootstrap学习地址

    第一步:https://www.runoob.com/bootstrap/bootstrap-tutorial.html  //菜鸟教程 第二步:https://v3.bootcss.com/gett ...