方案:安装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
**************************
- Web 前端开发人员和设计师必读精华文章【系列二十六】
<Web 前端开发精华文章推荐>2014年第5期(总第26期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- 二十六、Jcreator使用初步
摘自http://blog.csdn.net/liujun13579/article/details/7751464 二十六.Jcreator使用初步 Jcreator是一个小巧灵活的Java开发工具 ...
- JAVA之旅(二十六)——装饰设计模式,继承和装饰的区别,LineNumberReader,自定义LineNumberReader,字节流读取操作,I/O复制图片
JAVA之旅(二十六)--装饰设计模式,继承和装饰的区别,LineNumberReader,自定义LineNumberReader,字节流读取操作,I/O复制图片 一.装饰设计模式 其实我们自定义re ...
- 剑指Offer(二十六):二叉搜索树与双向链表
剑指Offer(二十六):二叉搜索树与双向链表 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/ ...
- Bootstrap <基础二十六>进度条
Bootstrap 进度条.在本教程中,你将看到如何使用 Bootstrap 创建加载.重定向或动作状态的进度条. Bootstrap 进度条使用 CSS3 过渡和动画来获得该效果.Internet ...
- 二十六:Struts2 和 spring整合
二十六:Struts2 和 spring整合 将项目名称为day29_02_struts2Spring下的scr目录下的Struts.xml文件拷贝到新项目的scr目录下 在新项目的WebRoot-- ...
- WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[扩展篇]
原文:WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[扩展篇] 通过<实现篇>对WSDL元素和终结点三要素的之间的匹配关系的介绍,我们知道了WSDL的Binding ...
- WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[实现篇]
原文:WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[实现篇] 元数据的导出就是实现从ServiceEndpoint对象向MetadataSet对象转换的过程,在WCF元数据框 ...
- VMware vSphere 服务器虚拟化之二十六 桌面虚拟化之View Persona Management
VMware vSphere 服务器虚拟化之二十六 桌面虚拟化之View Persona Management 实验失败告终,启动VMware View Persona Management服务报10 ...
- 第一百二十六节,JavaScript,XPath操作xml节点
第一百二十六节,JavaScript,XPath操作xml节点 学习要点: 1.IE中的XPath 2.W3C中的XPath 3.XPath跨浏览器兼容 XPath是一种节点查找手段,对比之前使用标准 ...
随机推荐
- Python Unittest进行接口测试的简单示例
今年肯定是要把Python学到一定程度的,否则感觉自己混不下去了,那就开始半挣扎的咸鱼生活吧. ---------------------------------------------------- ...
- centos7上使用git clone出现问题
centos 7 git clone时出现不支持协议版本的问题 unable to access 'https://github.com/baloonwj/TeamTalk.git/': Peer ...
- vue的mescroll搜索运用以及各种填坑处理
父组件处理: <template> <div class="wrap"> <!-- 搜索框 --> <div class="se ...
- enumerateKeysAndObjectsUsingBlock 的用法
block是一个有序列的指令代码块,通常在代码中间花括号括起来的objective-c代码,但是它能被传递和被分配局部变量,然后作为一个参数来传递,基本上可以把花括号中间的代码保存到数据结构里.看起来 ...
- Android简单闹钟设置
利用AlarmManager实现闹钟设置 //设置本地闹钟,actiongString:闹钟标识 setLocAlarm(int week, String actionString) { Calend ...
- 消息队列与RPC的区别
一. 区别 1.消息队列能够积压消息,让消费者可以按照自己的节奏处理消息,但是RPC不能. 2.消息队列是一个异步的过程(生产者发送消息之后,不会等待消息的处理),RPC是一个同步的过程. 3.消息队 ...
- 【DevOps】在CentOS中安装DockerCE
准备 安装好CentOS7,拥有root账号密码,使用客户端登录. 安装 启动进入root用户,复制以下代码执行即可 yum install -y yum-utils device-mapper-pe ...
- Nginx突破高并发的性能优化 - 运维笔记
在日常的运维工作中,经常会用到nginx服务,也时常会碰到nginx因高并发导致的性能瓶颈问题.今天这里简单梳理下nginx性能优化的配置(仅仅依据本人的实战经验而述,如有不妥,敬请指出~) 一.这里 ...
- charles 手机证书下载安装
本文参考:charles 手机证书下载安装 本文的Charles,适应windows/MAC/IOS/Android,避免抓包HTTPS失败和乱码: 用的版本是V4.1.2,其它版本原理类似: cha ...
- 关于日期格式yyyy-MM-dd和YYYY-MM-dd
原文:https://blog.csdn.net/guotufu/article/details/85696296 开发的时候用到这个类进行日期的转换,想转换的日期格式为“YYYY/MM/dd”,结果 ...