lvs虚拟服务器
NAT模式
1.模拟环境:
LVS服务器有两块网卡,连接外网(用户端)和内网(服务器),充当"交警"角色.
优点: 节省ip开销
缺点: LVS服务器负载过高,数据吞吐量降低
三台Linux虚拟机:
LVS服务器(vmnet1 ip: 200.168.10.10 , vmnet2 ip: 192.168.10.1)
WEB服务器1(vmnet2 ip: 192.168.10.2)
WEB服务器2(vmnet2 ip: 192.168.10.3)
本地真实机: 外网用户(vmnet1 ip: 200.168.10.2)
2.准备:
a) 关闭防火墙
# service iptables stop
# vi /etc/selinux/config (设置 SELINUX=disabled)
b) 建立网页文件
# vi /var/www/html/index.html
(两台web服务器的index.html内容要差异化...)
c) 安装 ipvsadm 软件
# yum -y install ipvsadm*
3.配置LVS/WEB服务器:
a) LVS: 开启路由转发功能
# echo 1 > /proc/sys/net/ipv4/ip_forward
b) WEB: 设置网关
# route add default gw 192.168.10.1
(因为它在内网,它的数据得经过LVS服务器到外网去!)
c) 在LVS服务器上,ping内网和外网,看是否能通?
4.设置LVS服务器的转发规则:
#!/bin/bash
#lvs.sh
ipvsadm -At 200.168.10.10:80 -s rr
ipvsadm -at 200.168.10.10:80 -r 192.168.10.2:80 -m
ipvsadm -at 200.168.10.10:80 -r 192.168.10.3:80 -m
ipvsadm
# chmod a+x lvs.sh
./lvs.sh
-s 模式 rr 轮询
-r 真实服务器 -m 模式
5.测试:
外网用户访问 200.168.10.10
(如果操作正确,每刷新一次会显示不同内容,因为web服务器有2台,它们是轮流应答的!!)
TUN模式
1.模拟环境: LVS服务器和WEB服务器都设置为公网IP(有点:web服务器的返回数据不经过LVS服务器,二是直接给外网用户,数据吞吐量较NAT模式增加10倍!)
三台Linux虚拟机:
LVS服务器:(vmnet1 ip: 200.168.10.1)
WEB服务器1:(vmnet1 ip: 200.168.10.2)
WEB服务器2:(vmnet1 ip: 200.168.10.3)
本地真实机: 外网用户(vmnet1)
2.思考一个问题:
三台服务器全部在公网,用户访问时,怎么知道该访问哪一台WEB服务器 ; 即使知道要访问的是LVS服务器,那LVS怎么知道要去找哪一台WEB服务器呢?
3.写两个脚本: lvs.sh在LVS服务器执行,arp.sh在WEB服务器执行
#!/bin/bash
#lvs.sh
ifconfig tunl0 200.168.10.10 netmask 255.255.255.255 up
route add -host 200.168.10.10 dev tunl0
ipvsadm -At 200.168.10.10:80 -s rr
ipvsadm -at 200.168.10.10:80 -r 200.168.10.2:80 -i
ipvsadm -at 200.168.10.10:80 -r 200.168.10.3:80 -i
ipvsadm -L -n
#!/bin/bash
#arp.sh
ifconfig tunl0 200.168.10.10 netmask 255.255.255.255 up
route add -host 200.168.10.10 dev tunl0
echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
当交换机问"谁是10.10",作arp忽略
echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce
当LVS问谁是"10.2",作arp宣告
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
4.测试: 用户访问 200.168.10.10
DR模式
1.模拟环境:
a) 在TUN模式上,把tunl0网卡都关闭,改用回环网卡,兼容性更强
b) 网络环境与TUN模式一致
2.写两个脚本:
#!/bin/bash
#lvs.sh
ifconfig eth0:0 200.168.10.10 netmask 255.255.255.255 up
route add -host 200.168.10.10 dev eth0:0
ipvsadm -At 200.168.10.10:80 -s rr
ipvsadm -at 200.168.10.10:80 -r 200.168.10.2:80 -g
ipvsadm -at 200.168.10.10:80 -r 200.168.10.3:80 -g
ipvsadm -L -n
#!/bin/bash
#arp.sh
ifconfig lo:0 200.168.10.10 netmask 255.255.255.255 up
route add -host 200.168.10.10 dev lo:0
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
3.测试: 用户访问 200.168.10.10
;
lvs虚拟服务器的更多相关文章
- [Linux] LVS虚拟服务器四层负载均衡
随着互联网的爆炸性增长及其在我们生活中日益重要的作用,互联网上的流量急剧增加,并且每年以超过100%的速度增长.服务器上的工作负载正在迅速增加,因此服务器很容易在短时间内过载,尤其是对于流行的网站.为 ...
- Linux虚拟服务器--LVS
LVS 百科名片 LVS是一个开源的软件,由毕业于国防科技大学的章文嵩博士于1998年5月创立,可以实现LINUX平台下的简单负载均衡.LVS是Linux Virtual Server的缩写,意思是L ...
- LVS (Linux虚拟服务器)模型及算法
LVS(Linux Virtual Server)Linux虚拟服务器 LVS集群采用IP负载均衡技术和基于内容请求分发技术. 用户请求发给负载均衡调度器,由负载均衡调度器根据设定的调度算法将请求发给 ...
- LVS (Linux虚拟服务器)-不同的负载均衡方法
随着Internet用户的增长,基于Web的公司处理的通信量急剧增加.有各种解决方案来应对这种不断增长的流量. 一种解决方案是垂直扩展服务器(即:简单地向服务器添加更多的CPU和内存资源.)当然在一定 ...
- Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台 Seesaw
负载均衡系统 Seesaw Seesaw是由我们网络可靠性工程师用 Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台,就像所有好的项目一样,这个项目也是为了解决实际问题而产生的. Seesa ...
- macOS apache配置及开启虚拟服务器的开启,apache开启重写模式
今天把自己的mac系统升到最新版,但是,apache却不能用了,因为mac上的apache是系统自带的,因为是mac目前的最新系统,所以出现了好多问题,整理了一下午也没有啥进展,最后还是把原来的在云盘 ...
- Nginx的虚拟服务器域名配置
虚拟服务器名(server name)是通过指令server_name来指定的.在< Nginx是如何处理Request的?>一节中,我们讲到nginx分两步来匹配过来的Request请求 ...
- C# 构建S7服务器 西门子的虚拟服务器 测试通讯 HslCommunication应用
本文将使用一个gitHub开源的组件技术来实现S7服务器的功能,使用的是基于以太网的TCP/IP实现,不需要额外的组件 github地址:https://github.com/dathlin/HslC ...
- vps 虚拟服务器 教程 ( Virtual Private Server 虚拟专用服务器 )
VPS是虚拟服务器的意思.他是通过软件在独立服务器上划分出来的一部分资源.从而虚拟出一个服务器.他拥有独立的IP.独立的操作系统.以及用户名和密码.在功能和使用方法上与服务器一模一样.用户也可以根据自 ...
随机推荐
- Java I/O系统学习系列一:File和RandomAccessFile
I/O系统即输入/输出系统,对于一门程序语言来说,创建一个好的输入/输出系统并非易事.因为不仅存在各种I/O源端和想要与之通信的接收端(文件.控制台.网络链接等),而且还需要支持多种不同方式的通信(顺 ...
- Python那些事
Python这几年很火,在这里我用问答的方式来总结一下使用python的一些常见问题,对自己是个总结,也希望对有同样问题的朋友有帮助. Q:Python为什么流行? A:Python是一个比较方便 ...
- 生成唯一标识符 ,通用唯一标识符 UUID
import java.util.UUID; /** * UUID生成工具 * */ public final class UuidGenUtils { /** * 生成一个UUID串(32个字符,其 ...
- Android Spinner In Toolbar
As the title of the post suggest in this tutorial we will see how to have spinner widget inside the ...
- Linux 设备驱动模型
Linux系统将设备和驱动归一到设备驱动模型中了来管理 设备驱动程序功能: 1,对硬件设备初始化和释放 2,对设备进行管理,包括实参设置,以及提供对设备的统一操作接口 3,读取应用程序传递给设备文件的 ...
- 在程序中使用NV 3D Vision 【转】
http://www.cnblogs.com/gongminmin/archive/2010/11/21/1883392.html 多年前NVIDIA就发布了3D Vision技术,能提供多种立体渲染 ...
- Codis的了解和操作
1.Codis的基本架构 2.Codis各组件 Codis-server:就是redis服务,可以使用codis修改的reids和原生的redis Codis-proxy:客户端连接的代理服务,客户端 ...
- 百科知识 国内的创业项目如何众筹,能登录Kickstarter吗
一个国内的团队登陆Kickstarter到底有多难? 300万用户,4.8亿美元筹款,Kickstarter在2013年交出了一份惊艳的答卷.对于美英澳加新荷六国的创业团队来说,Kickstarter ...
- python:如何判断字符串中的内容是否都为数字并且把字符串转换为数字
使用str.isdigit();有两种使用方法 str.isdigit('12345') =====>True str.isdigit('aaaaa')======>False 或者 '1 ...
- sakila演示数据库安装
下载地址:https://dev.mysql.com/doc/index-other.html 安装帮助文档:https://dev.mysql.com/doc/sakila/en/sakila-in ...