Windows+IIS结合LVS+Keepalived是实现Linux负载均衡软件
在Discuz!NT的最新版本(企业版)中,支持目前主流LINUX平台上的负载均衡解决方案,比如NGINX,HAPROXY,LVS等。本文与其说是解决方案,倒不如说是介绍如何搭建Discuz!NT负载均衡解决方案:)
因为我们的产品运行的主流平台是WINDOWS+IIS+SQLSERVER(2000以上版本),而LVS+KEEPALIVED是LINUX下的四层负载均衡软件。其有如下特点:
LVS 集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率(在DR模式下),将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉 服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为 此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。一般来说,LVS集群采用三层结构,其主要组成部分为:
A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
B、服务器池(server pool),是一组真正执行客户请求的服务器,即realserver,执行的服务有WEB、MAIL、FTP和DNS等。
C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。
LVS的IP负载均衡技术实现:
目前IP负载均衡技术是在负载调度器的实现技术中效率最高的。LVS集群中实现的三种IP负载均衡技术,分别是:
Virtual Server via Network Address Translation (VS/NAT): 也有说端口映射的,其目标是将一组服务器构成一个高性能的、高可用的虚拟服务器。因为这种技术容易形成单点故障,从而造成网路无法访问,并且存在带宽瓶 颈。所以LVS又提供了下面两种实现。
Virtual Server via IP Tunneling (VS/TUN ): 通过IP隧道实现虚拟服务。
Virtual Server via Direct Routing (VS/DR) :直接路由实现虚拟服务器的方法(负载能力最强),本文搭建的就是DR模式。
我们的产品目前如果要作用负载均衡技术,则需要在管理后台开启远程附件(FTP)和分布式缓存服务(MEMCACHED),下面介绍一下相应的服务器环境搭建。首先是IIS配置站点(要求在一个物理网段上)
RealServer 1:10.0.8.13:80
 RealServer 2:10.0.8.12:80
VIP(虚拟IP):10.0.8.9
两台虚拟机安装Centos5.4(采用DHCP安装模式),地址:
 Centos1: 10.0.8.25 (keepalived:MASTER)
 Centos2: 10.0.8.55 (keepalived:BACKUP)

所以我们还需要在windows 服务器上配置VIP,可以使用下面的方法 :
1.在控制面板里添加一个硬件设备, Microsoft Loopback Adapter ,如下图:

2.设置ip为vip,掩码随意:

3.进注册表编辑器,搜索这个vip,把掩码改成255.255.255.255,然后禁用启用网卡即可(在window server 2003系统中有三处)。

这样在‘网上邻居’上看相应Microsoft Loopback Adapter 的IP MASK就变成了255.255.255.255。然后在IIS的相应站点下配置IP地址,可使用VIP地址或使用‘全部未分配选项’。如下图:

这样配置就完成了,之后用:
c:\>telnet 10.0.8.13 80和c:\>telnet 10.0.8.12 80 看一下配置是否已正常启用。
这样就完成了windows服务器的配置工作。在介绍如何如何安装配置LVS和KEEPALIVED之前,先要说明一下在虚拟机安装CENTOS时要注意的几个问题,如下:
1.因为Keepalived需要gcc工具来编译所以要在安装时定制一下安装组件,如下:



然后安装程序会检验相应组件依赖性

2.之后安装防火墙时选择禁用:

2.设置ip为vip,掩码随意:

3.进注册表编辑器,搜索这个vip,把掩码改成255.255.255.255,然后禁用启用网卡即可(在window server 2003系统中有三处)。

这样在‘网上邻居’上看相应Microsoft Loopback Adapter 的IP MASK就变成了255.255.255.255。然后在IIS的相应站点下配置IP地址,可使用VIP地址或使用‘全部未分配选项’。如下图:

这样配置就完成了,之后用:
c:\>telnet 10.0.8.13 80和c:\>telnet 10.0.8.12 80 看一下配置是否已正常启用。
这样就完成了windows服务器的配置工作。在介绍如何如何安装配置LVS和KEEPALIVED之前,先要说明一下在虚拟机安装CENTOS时要注意的几个问题,如下:
1.因为Keepalived需要gcc工具来编译所以要在安装时定制一下安装组件,如下:



然后安装程序会检验相应组件依赖性

2.之后安装防火墙时选择禁用:

6.配置network(/etc/sysconfig/network )文件,内容如下(注:该步骤在网上某些文章中提到,这里也就随手多做了一步):
HOSTNAME=localhost.localdomain
GATEWAY=10.0.8.1
7.LVS 在3 种方式下均需要打开ip forward 功能,这可以配置/etc/sysctl.conf. 文件,保证其中有如下一行(注:该步骤在网上某些文章中提到,这里也就随手多做了一步): 
#net.ipv4.ip forward = 1
#sysctl -p #然后执行下面命令使配置生效:
备注:因为KEEPALIVED要使用80端口(稍后配置文件中会做设置),所以如果要马上启用80端口,可以启动Apache,用下面命令(这一步并不在安装步骤中):
完成了环境配置之后,下面就是打开并修改Keepalived.conf文件了,我们可以从下面地址打开并编辑它:
/usr/local/keepalived/etc/keepalived.conf
或:
/etc/keepalived/keepalived.conf (之前的ln指令指向)
这里将10.0.8.25这台虚拟机设置为MASTER,配置文件如下:
! Configuration File for keepalived
global_defs {
notification_email {
daizhj617595@12.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0 #HA监测网络接口
virtual_router_id 51 #主、备机的virtual_router_id必须相同
priority 100 #主、备机取不同的优先级,主机值较大,备份机值较小,值越大优先级越高
advert_int 1 #VRRP Multicast广播周期秒数
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.8.9
}
}
virtual_server 10.0.8.9 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 10 !同一ip50秒内的请求都发送到同一realserver
protocol TCP
real_server 10.0.8.12 80 {
weight 2
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 10.0.8.13 80 {
weight 2
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
然后我们使用如下命令启用keepalived:
或
我们可以通过下面指令来查看相应进程:
------------------------------
sr/local/keepalived/etc/keepalived/keepalived.conf
root 17670 0.0 0.2 4932 564 ? Ss 19:03 0:00 keepalived -D
root 17671 0.0 0.6 4976 1416 ? S 19:03 0:02 keepalived -D
root 17672 0.0 0.4 4976 928 ? S 19:03 0:00 keepalived -D
....
这里注意keepalived要启动一个主并fork两个子进程,所以这里显示了三个进程。
这里我们可以下面指令检查一下配置是否生效:
#telnet 10.0.8.9 80
如果正常的话,就说明keepalived已启用了我们的配置。
注:之前本人配置过程中发现telnet经常无法正常访问,可以使用下面指令查看80端口是否启用:
也可以使用下面指令检查LVS进程:
到
这里就完成了10.0.8.25这台虚拟机上的keepalived配置。然后重复1-7这些步骤,在10.0.8.55上也安装并配置
keepalived,这里要注意的是在keepalived.conf文件中要将state MASTER改成state BACKUP
接着,我们在IE上输入下面地址: http://10.0.8.9/index.aspx
如果能正常访问,就说明负载均衡环境搭建完毕了
注:还可以配置HOST文件(/etc/hosts)和DNS域名解析的配置文件(/etc/resolv.conf)
我们可以使用下面指令查看请求的转发情况:
-------------------------------------------
clientip vip realserver
TCP 14:44 ESTABLISHED 10.0.4.102:5244 10.0.8.9:80 10.0.8.12:80
TCP 14:44 ESTABLISHED 10.0.4.102:5232 10.0.8.9:80 10.0.8.12:80
TCP 07:35 ESTABLISHED 10.0.4.102:4875 10.0.8.9:80 10.0.8.13:80 
TCP 14:44 ESTABLISHED 10.0.4.102:5249 10.0.8.9:80 10.0.8.12:80
TCP 14:46 ESTABLISHED 10.0.4.102:5246 10.0.8.9:80 10.0.8.12:80
TCP 08:40 ESTABLISHED 10.0.4.102:4913 10.0.8.9:80 10.0.8.12:80
TCP 08:40 ESTABLISHED 10.0.4.102:4927 10.0.8.9:80 10.0.8.12:80
TCP 14:44 ESTABLISHED 10.0.4.102:5247 10.0.8.9:80 10.0.8.12:80
TCP 08:40 ESTABLISHED 10.0.4.102:4929 10.0.8.9:80 10.0.8.12:80
TCP 07:35 ESTABLISHED 10.0.4.102:4872 10.0.8.9:80 10.0.8.13:80
TCP 14:47 ESTABLISHED 10.0.4.102:5243 10.0.8.9:80 10.0.8.12:80
TCP 08:40 ESTABLISHED 10.0.4.102:5011 10.0.8.9:80 10.0.8.12:80
TCP 14:56 ESTABLISHED 10.0.4.102:5245 10.0.8.9:80 10.0.8.12:80
TCP 00:44 NONE 10.0.4.102:0 10.0.8.9:80 10.0.8.12:80
TCP 00:34 NONE 10.0.4.102:0 10.0.8.9:65535 10.0.8.13:65535
TCP 07:35 ESTABLISHED 10.0.4.102:4848 10.0.8.9:80 10.0.8.13:80
接着我们可以把10.0.8.12:80或10.0.8.13:80 站点停掉,看看访问是否正常。
然后我们将10.0.8.25或10.0.8.55 虚拟机上关掉keepalived (使用killall keepalived或serivce keepalived stop),再用IE访问相应网址看看。
另外那台机器上的keepalived能否正常切换接管。如果正常,就说明这个环境是HA(高可用的)。
最后再罗列一些常的指令,以便大家查看keepalived运行情况和网络状况:
#tail -f /var/log/messages #查看系统日志
#tcpdump src host 10.0.8.9 and port 80 #抓包
#curl -I http://10.0.8.9/ #利用URL语法在命令行方式下的文件传输工具
#ip addr #IP地址信息或ip add show eth0 查看虚拟IP绑定情况
#service iptables stop #关闭iptables防火墙
#iptables –nvL #列出防火墙进入数据信息
#ipvsadm -ln #查看lvs服务是否正常,包括活动链接,weight(keepalived配置),内部链接等。
Windows+IIS结合LVS+Keepalived是实现Linux负载均衡软件的更多相关文章
- Linux负载均衡软件LVS简介
		
Linux负载均衡软件LVS LVS集群的体系结构以及特点 1. LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起 ...
 - LVS+Keepalived实现高可用负载均衡(转)
		
LVS+Keepalived实现高可用负载均衡 一.原理 1.概要介绍 如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具 ...
 - lvs+keepalived+nginx实现高性能负载均衡集群【转】
		
转自 lvs+keepalived+nginx实现高性能负载均衡集群 - 青衫lys - 博客园http://www.cnblogs.com/liuyisai/p/5990645.html 一.为什么 ...
 - 【架构师之路】 LVS+Keepalived实现高可用负载均衡
		
一.原理 1.概要介绍 如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具有3~5层交换功能,其主要作用是检测web服务器的状态, ...
 - (转)Linux负载均衡软件LVS之一(概念篇)
		
转:http://ixdba.blog.51cto.com/2895551/552947 Linux负载均衡软件LVS之二(安装篇):http://ixdba.blog.51cto.com/28955 ...
 - LVS+Keepalived  实现高可用负载均衡集群
		
LVS+Keepalived 实现高可用负载均衡集群 随着网站业务量的增长,网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如 F5 ,Array又太贵,你们又是创业型互联公司如何有效 ...
 - LVS+Keepalived 实现高可用负载均衡
		
前言 在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的.此时最常见的方式就是通过负载均衡来进行横向扩展.其中我们最常用的软件就是 Nginx.通过其反向代理的能力能够轻松实现负载均衡,当有服务出 ...
 - Linux负载均衡软件LVS之二(安装篇)[转]
		
Linux负载均衡软件LVS之二(安装篇) 2011-04-26 16:01:47 标签:lvs安装配置 linux lvs 休闲 linux高可用 原创作品,允许转载,转载时请务必以超链接形式标明文 ...
 - LVS+Keepalived实现mysql的负载均衡
		
1 初识LVS:Linux Virtual Server 1.1 LVS是什么 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起 ...
 
随机推荐
- 利用jdbc连接池(利用jdni)
			
简介 前段时间用jdbc连接池,在这里记录下 1.利用jdni配置数据源 在Web项目的META-INF文件夹中新建context.xml文件,内容为: <?xml version=" ...
 - C# Winform获取bin目录的路径
			
//获取到bin目录的下层路径:bin\Debug\ string aa = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBa ...
 - 【WPF】使用Popup控件做浮窗/提示框
			
需求:当鼠标移入某个区域时,弹出一个浮窗,以便用户进行下一步操作. 效果如下图: 当鼠标移入左上角的[多选显示]框内,出现下面的浮窗(悬浮在原UI之上).当在浮窗外点击鼠标左键时,隐藏该浮窗. 由于该 ...
 - am335x gpio 模拟 spi 驱动添加
			
kernel 内 make menuconfig // make menuconfig Device Drivers ---> [*] SPI support ---> <*> ...
 - HAProxy+Varnish+LNMP实现高可用负载均衡动静分离集群部署
			
HAProxy高可用负载均衡集群部署 基本信息: 系统平台:VMware WorkStation 系统版本: CentOS Linux release 7.2.1511 (Core) 内核版本: 3. ...
 - 谈API网关的背景、架构以及落地方案
			
Chris Richardson曾经在他的博客上详细介绍过API网关,包括API网关的背景.解决方案以及案例.对于大多数基于微服务的应用程序而言,API网关都应该是系统的入口,它会负责服务请求路由.组 ...
 - EMS快递单号生成算法
			
<?php function emsnum($ems, $num) { $fri = substr($ems, 2, 8); $head = substr($ems, 0, 2); $tail ...
 - laravel 视图与传参
			
1:先建立好一个控制器HgjController,其中index方法 return view('hgj'); 2: 建立视图 在resources/views/hgj.blad.php <ht ...
 - absolute绝对定位的非绝对定位用法
			
总结: position为absolute的元素如果没有设置left, top等值与left:0;top:0;的的效果是不一样的.例如一个div中有个absolute属性元素,其没有left或是top ...
 - JS 播放列表收缩展开
			
下面要做实现的效果 收缩和展的功能 遵循网页布局,行为,结构,样式 分离 下面是html 结构代码: <div id="drop" class="down_list ...