LVS的安装配置
减轻服务器的压力,是每个公司都想实现的,方法有很多种,可以用软件实现,也可以用硬件实现,可对于一些中小型企业来说,承受不起硬件负载均衡带来的负担,所以就选择了用软件,本文介绍了用LVS+Keepalived来搭建一个实现高性能高可用负载均衡的环境。
一. LVS+Keepalived 介绍
1. LVS
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在
1998 年 5 月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR
);
八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh )。
2. Keepalvied
Keepalived 在这里主要用作 RealServer的健康状态检查LoadBalance主机和
BackUP 主机之间failover 的实现
二. 网站负载均衡拓朴图
IP信息表
LVS-DR-MASTER 192.168.2.117
LVS-DR-BACKUP 192.168.0.36
LVS-DR-VIP 192.168.2.121
WEB1-Realserver 192.168.2.116
WEB2-Realserver 192.168.2.119
GateWay 192.168.0.1
LVS-DR-VIP指的是虚拟IP地址,还可以叫做LVS集群的服务IP,在DR、TUN模式中,数据包是直接返回给用户的,所以,在Director Server上以及集群的每个节点上都需要设置这个地址。此IP在Real Server上一般绑定在回环地址上.
各个Real Server可以是在同一个网段内,也可以是相互独立的网段,还可以是分布在internet上的多个服务器.
三. 安装LVS 和Keepalvied 软件包
LVS安装:yum –y install ipvsadm
Keepalived安装:wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
#tar zxvf keepalived-1.1.15.tar.gz
#cd keepalived-1.1.15
#./configure && make && make install
#find / -name keepalived # 查看keepalived 位置
#cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
#cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir /etc/keepalived
#cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
#cp /usr/local/sbin/keepalived /usr/sbin/
#service keepalived start|stop #做成系统启动服务方便管理.
四. 配置LVS 实现负载均衡
一、LVS-DR-MASTERS设置:
[root@localhost ~]#ifconfig eth0:0 192.168.2.121 broadcast 192.168.2.121 netmask 255.255.255.255 up
此处在eth0设备上绑定了一个虚拟设备eth0:0,同时设置了一个虚拟IP是192.168.2.121,也就是上面我们规划的IP地址,然后指定广播地址也为192.168.2.121,需要特别注意的是,这里的子网掩码为255.255.255.255。
然后给设备eth0:0指定一条路由,执行如下指令:
[root@localhost ~]#route add -host 192.168.2.121 dev eth0:0
然后用ipvsadm来配置LVS
[root@localhost ~]# ipvsadm -A -t 192.168.2.121:80 -s rr -p 600
表示在内核的虚拟服务器列表中添加一条192.168.2.121的虚拟服务器记录,并且指定此虚拟服务器的服务端口为80,然后指定此虚拟服务器的调度策略为轮询调度,并且在每个real server上的持续服务时间为600秒,即10分钟
[root@localhost ~]# ipvsadm -a -t 192.168.2.121:80 -r 192.168.2.116:80 –g
[root@localhost ~]# ipvsadm -a -t 192.168.2.121:80 -r 192.168.2.119:80 –g
以上两条设置表示在虚拟服务器192.168.2.121中添加两条新的Real Server记录,两个Real Server的IP分别为192.168.2.116和192.168.2.119,参数“-g”指定了虚拟服务器的工作模式为直接路由模式,即DR模式。
然后开启数据转发功能 并且立即生效
[root@localhost ~]#echo "1" >/proc/sys/net/ipv4/ip_forward
[root@localhost ~]#sysctrl –p
以上的操作可以用脚本来实现
Vim /usr/local/sbin/lvs-dr.sh
#!/bin/bash
GW=192.168.0.1
# website director vip.
SNS_VIP=192.168.2.121
SNS_RIP1=192.168.2.119
SNS_RIP2=192.168.2.116
logger $0 called with $1
case "$1" in
start)
# set squid vip
/sbin/ipvsadm --set 30 5 60
/sbin/ifconfig eth0:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 up
/sbin/route add -host $SNS_VIP dev eth0:0
/sbin/ipvsadm -A -t $SNS_VIP:80 -s wrr -p 3
/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1:80 -g -w 1
/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2:80 -g -w 1
touch /var/lock/subsys/ipvsadm >/dev/null 2>&1
;;
stop)
/sbin/ipvsadm -C
/sbin/ipvsadm -Z
ifconfig eth0:0 down
ifconfig eth0:1 down
route del $SNS_VIP
route del $SS_VIP
rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
echo "ipvsadm stoped"
;;
status)
if [ ! -e /var/lock/subsys/ipvsadm ];then
echo "ipvsadm stoped"
exit 1
else
echo "ipvsadm OK"
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
exit 0
可以用以上脚本来启动和关闭LVS,只需要./ lvs-dr.sh start就可以开启LVS了
二、Realserver的设置
[root@localhost ~]#ifconfig lo:0 192.168.2.121 netmask 255.255.255.255 broadcast 192.168.2.121
在本地回环接口上绑定了一个虚拟设备lo:0 设置一个IP为192.168.2.121 掩码为255.255.255.255
[root@localhost ~]#route add -host 192.168.2.121 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
sysctl –p
以上是忽略arp请求,立即生效。
由于虚拟ip,也就是上面的LVS-DR-VIP(192.168.2.121)地址,是Director Server和所有的Real
server共享的,如果有ARP请求VIP地址时,Director Server与所有Real
server都做应答的话,就出现问题了,因此,需要禁止Real server响应ARP请求。
2台WEB1-Realserver都做此配置
以上操作可以用如下脚本来操作:
Vim /usr/local/sbin/realserver.sh
!#/bin/bash
SNS_VIP=192.168.2.121
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP 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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
可以用以上脚本来启动和关闭lo:0回环接口上绑定的虚拟设备,只需要./realserver start
五.利用Keepalvied 实现负载均衡和和高可用性
1.配置在主负载均衡服务器上配置keepalived.conf
#vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
# acassen@firewall.loc //报警的邮箱
}
# notification_email_from Alexandre.Cassen@firewall.loc //发送报警邮件的邮箱地址
# smtp_server 192.168.200.1 //提供邮件服务的服务器的IP
# smtp_connect_timeout 30 //邮件服务器连接超时的时间
# router_id LVS_DEVEL //邮件的标记
}
vrrp_instance VI_1 {
state MASTER // #备份服务器上将MASTER 改为BACKUP
interface eth0
virtual_router_id 51
priority 100 //备份服务上将 100 改为99
advert_int 1
authentication {
auth_type PASS //加密方式
auth_pass 1111 //密码,MASTER 和BACKUP必须一致
}
virtual_ipaddress {
192.168.2.121 // #(如果有多个VIP,继续换行填写.)
}
}
virtual_server 192.168.2.121 80 { //虚拟服务器IP和端口
delay_loop 6 // #(每隔6 秒查询realserver 状态)
lb_algo wrr // #(lvs 算法)
lb_kind DR // #(Direct Route)模式
nat_mask 255.255.255.255 //子网掩码
persistence_timeout 50 // #( 同一IP 的连接60 秒内被分配到同一台realserver)
protocol TCP // #(用TCP 协议检查realserver 状态)
real_server 192.168.2.116 80 { //虚拟服务器下面的realserver的IP和端口
weight 1 //#(权重),越大被分配到的几率越大
TCP_CHECK {
connect_timeout 10 // #(10 秒无响应超时)
nb_get_retry 3 //尝试3次
delay_before_retry 3 //每次间隔3秒
connect_port 80 //连接端口
}
}
real_server 192.168.2.119 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
2. BACKUP服 务 器 同 上 配 置 ,先 安 装 lvs再 按 装 keepalived, 然 后 配 置
/etc/keepalived/keepalived.conf,只需将红色标示的部分改一下即可.
现在,在Master和backup上都运行脚本./lvs-dr.sh atsrt
在Master和backup上启动keepalived。
在realserver都运行脚本./realserver.sh start
然后用ipvsadm –ln来查看集群中的服务器
[root@localhost sbin]# 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.2.121:80 wrr persistent 3
-> 192.168.2.116:80 Route 1 0 0
-> 192.168.2.119:80 Route 1 0 0
这样,当用户访问192.168.2.121的80端口的时候,就会被随机分配到realserver其中的一台上面,当realserver其中一台宕
机的话,LVS会自动把宕机的机器提出服务器群集,当这台宕机的服务器恢复正常的时候,LVS会自动把它加入服务器群集中。
如果LVS-MASTER宕机的话,,LVS- BACKUP就会自动接管LVS-MASTER上运行的服务,当LVS-MASTER恢复正常的时候,LVS- BACKUP就会把运行的服务交给LVS-MASTER来运行。
发表评论
-
在linux网站运维方向老男孩最近几年常用的免费的开源软件
2013-02-18 23:35 1592http://blog.chinaunix.net/uid- ... -
rsync服务部署
2013-02-18 22:40 867http://oplinux.com/app/rsync/r ... -
centos6.0 配置SVN
2013-02-04 14:52 988http://blog.csdn.net/tonysz12 ... -
Centos搭建SVN服务器三步曲
2013-02-04 12:09 902搭建SVN服务,有效的管理代码,以下三步可以快速搞定。1、安 ... -
linux(centos)如何使用svn进行多个版本库的配置
2013-02-04 12:08 3546如果当前有svnserve进程在运行,指令 ... -
MySQL CMake参数说明手册
2012-12-24 10:52 770http://www.sunchis.com/html/db/ ... -
Nginx下搭建flv视频服务器且支持视频拖动进度条播放
2012-12-19 18:10 1160目前,由于Flash 的流行,网络上绝大多数的微视频网站 ... -
如何查询centos查看系统内核版本,系统版本,32位还是64位
2012-12-15 11:13 1210http://hi.baidu.com/tjbaso/item ... -
linux下磁盘I/O查看
2012-12-07 13:11 795http://zlbzhu.blog.51cto.co ... -
Centos5.5最小化安装后的优化
2012-11-20 23:16 1180购买了服务器(现在主流 ... -
CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.13+博客系统WordPress3.3.2
2012-11-11 23:37 1022说明: 操作系统:CentOS 6.2 32 ... -
CentOS minimal 版安装图形界面的步骤分享,中文语言包.
2012-11-11 22:33 7271、连接网络: CentOS minimal.iso安装好 ... -
CentOS 6.3编译安装Nginx1.2.2+MySQL5.5.25a+PHP5.4.5
2012-11-04 19:56 888说明: 操作系统:CentOS 6.3 32位 系 ... -
[HTML5]配置Ngnix服务器支持manifest 离线存储
2012-10-08 14:09 1404[HTML5]配 ... -
RSync实现文件备份同步
2012-09-21 12:20 759http://www.cnblogs.com/itech/ar ... -
CentOS 5 + rsync 同步2台服务器的文件
2012-09-21 12:11 862当需要把服务器上的文件复制到另外的机器上,可用rsync来同步 ... -
Linux下利用rsync实现多服务器文件同步
2012-09-21 12:07 927注意事项: 1、主服务器上有配置文件,从服务器上没有配置文件 ... -
Rsync命令参数详解
2012-10-08 14:06 720在对rsync服务器配置结束以后,下一步就需要在客户端发出rs ... -
rsync
2012-09-20 18:40 1097rsync两种模式:远程shell ... -
Linux下SVN服务器搭建(CentOS+Subversion)
2012-09-20 09:52 736本文主要介绍SVN独立服 ...
相关推荐
在本教程中,我们将探讨如何使用CentOS 5.4操作系统,配合Nginx 0.8.50,uWSGI 0.9.6.2和Django 1.2.3来构建高性能的Web服务器。这个组合是基于Python的Web应用程序部署的常见选择,因为它能够提供高速度、稳定性和...
它的主要功能是提供高性能的网络虚拟化服务,允许在网络中创建多个逻辑网络,并且可以灵活地配置这些网络的拓扑和流量规则。在本配置说明中,我们将探讨如何在CentOS 6.2环境下使用OVS进行网络配置,特别是如何利用...
文档中提到的CentOS 6.2,是一种广泛使用的Linux发行版,适合服务器环境。而在文档中所提到的nginx 1.2.0版本,是一个具体的Nginx发行版,不同版本的Nginx可能会有不同的特性和改动,因此在参考文档时,需要根据实际...
对于云环境的部署,需要规划好集群的架构,包括主节点、工作节点、数据节点等,以实现资源的有效利用和负载均衡。 3.1.2.1 集群规划 功能规划是集群设计的核心,根据业务需求划分不同节点的角色,如NameNode、...
- 负载均衡:通过配置上游服务器池,Nginx可以将请求分发到多个后端服务器,提高系统可用性和响应速度。 - SSL/TLS支持:配置HTTPS,实现网站的安全加密通信。 - 压缩与缓存:Nginx可以对内容进行压缩,减少网络传输...
MySQL主从复制是一种常见的数据库高可用性和数据冗余策略,它允许数据在多个服务器之间进行同步,以实现负载均衡、故障转移和数据备份。在这个过程中,一个MySQL服务器作为主节点,记录所有更改到二进制日志(binary...
Fastsocket通过减少内核的同步开销,优化数据包处理流程,可能实现了更好的CPU利用率,从而显著提高了如HAProxy这样的TCP/HTTP负载均衡器的性能。在测试环境中,Fastsocket展示了在Intel Ivy-Bridge E5-2697-v2双路...
Nginx是一款高性能的HTTP和反向代理服务器,广泛用于网站的负载均衡和内容分发。本文将详细介绍Nginx的安装过程、配置选项以及安全相关的设置。 **1. Nginx安装** 在CentOS 6.2 x86_64环境下,安装Nginx需要先安装...
此外,为了扩展nginx的功能,可以下载相关的模块插件,例如nginx_upstream_check_module用于检查后端服务器的状态,nginx-goodies-nginx-sticky-module用于解决session sticky问题,以及负载均衡配置。 编译安装...
- **负载均衡服务**:通过智能算法实现服务器间的负载均衡,提高整体系统性能。 - **高可用性支持**:确保即使部分组件故障,服务仍能正常运行。 - **安全性增强**:提供安全传输层协议支持,保护数据传输安全。 ...
在本篇教程中,我们将深入探讨CentOS 4.5环境下Oracle RAC(Real Application Clusters)的安装过程,这是一个专业级别的数据库集群解决方案,旨在提供高可用性、高性能和可扩展性。以下是从标题、描述、标签以及...
Oracle RAC 是 Oracle 提供的一种高可用性解决方案,它允许多个实例同时访问同一组数据文件,从而实现负载均衡和故障切换。本文档主要介绍如何在四个节点的集群上安装Oracle 12c RAC。 ### 二、安装环境准备 #### ...
Nginx是一款高性能的HTTP和反向代理服务器,常用于Web服务器、负载均衡器和反向代理服务。本文将深入讲解Nginx的安装过程、配置文件解析以及使用方法。 一、Nginx服务器安装 1.1 选择稳定版本 在开始安装前,应...
- **Workload Balancing**:不再支持自动负载均衡功能。 - **SCOM集成**:不再直接集成Microsoft System Center Operations Manager(SCOM)。 - **虚拟机保护和恢复**:移除了部分备份和恢复功能。 - **Web Self ...
HAProxy 是一款免费且开源的高性能 TCP/HTTP 负载均衡器,可以与 PXC 结合使用,实现更高级别的负载均衡和高可用性。 ##### 5.6 设置 PXCluster 参考架构与 HAProxy 通过设置参考架构与 HAProxy 的结合使用,可以...
通过Lua脚本可以实现自定义的负载均衡算法,如轮询、一致性哈希等。 ##### 5.3 API Server开发 利用Lua和Nginx的强大功能,可以快速搭建API Server: ```lua -- 定义一个简单的API端点 ngx.say("Hello World") ```...