LVS负载均衡配置说明
来源:互联网 发布:windows系统描述 编辑:程序博客网 时间:2024/06/05 21:14
一、体系架构:
前端两台服务器作LVS负载均衡,两台是为了作双机热备使用(可以为多台)。后端两台服务器(可以为多台),作业务使用,客户端通过负载均衡后,将连接(以TCP连接为例)路由到业务服务器。
二、 硬件环境:Dell PowerEdge R710
三、 系统软件环境:
LVS两台机器安装:RHEL 4.8(RedHat Enterprise Linux 4.8) 64位。注意安装系统时按F10进入系统,不是直接从光盘安装,按提示插入安装光盘安装系统。
分别命名为:LVS1,LVS2,默认LVS1作主机,LVS2作热备。
后端两台服务器安装:Windows server 2003,需安装虚拟网卡Windows loopback Adapter。分别命名为Server1,Server2。
IP地址配置:
默认网关地址:192.168.10.1
子网掩码:255.255.255.0
虚拟服务器地址(Virtual Server IP):192.168.10.15
LVS1地址:192.168.10.16
LVS2地址:192.168.10.17
Server1: 192.168.10.18
Server2: 192.168.10.19
四、 LVS软件安装:下载ipvsadm、keepalived.(ipvsadm-1.24.tar.gz、keepalived-1.1.19.tar.gz,这两个版本比较小巧稳定,其它版本也可以,但是keepalived-1.1.20.tar.gz在CentOS-5.5上编译是乎有点问题),在有的系统上ipvsadm是默认安装的,但有的系统没有安装,如FC4,CentOS-5.5都已安装。,运行ipvsadm –ln看看有没有错误提示即可知道。这两个软件具体功能介绍参看说明文档,此处只做配置说明,以root用户登录操作。
1. 安装ipvsadm:
首先要建立到内核的连接,运行cat /proc/version查看内核版本, RHEL4.8内核2.6.9-89.EL-smp-x86_64
建立到内核的连接:ln –s /usr/src/kernels/2.6.9-89.EL-smp-x86_64 /usr/src/linux
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make
make install
无需作另外配置即可使用
Ipvsamd –ln即可看查是否安装正确。
2. 安装keepalived
由于系统的原因,在安装keepalived-1.1.19之前要修改一个地方,如果已经在第一步安装ipvsadm时建立了到内核的链接,则如下修改
vi /usr/src/linux/include/linux/types.h
注释到以下两行
/*
typedef __u16 __bitwise __sum16
typedef __u32 __bitwise __wsum
*/
不过要注意,这样做是否会引起其它程序不能编译未可知。
如果不这样做会报类似这样的错误:
/usr/src/linux/include/linux/types.h:158: error: syntax errorbefore "__sum16"
/usr/src/linux/include/linux/types.h:159: error: syntax errorbefore "__wsum"
tar zxvf keepalived-1.1.19.tar.gz
cd keepalived-1.1.19
首先建立到内核的链接
ln –s /usr/src/kernels/2.6.9-89.EL-smp-x86_64 /usr/src/linux
./configure
或者
./configure –with-kernel-dir= /usr/src/kernels/2.6.9-89.EL-smp-x86_64
检查后看检查结果是否配置正确,是不是支持ipvsadm 框架。
make
make install
查看keepalived安装到了那个目录
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/sbin/keepalived /usr/sbin/
至此,keepalived除了配置已安装完毕。要让keepalived正确运行,还需做好配置,首先开启linux路由功能,这一点容易忽略,另外如果不清楚防火墙如何配置,直接关掉防火墙。
开启路由功能:
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1 #为1表示开启路由,否则连接不会转发
sysctl –p #使改动生效
关闭防火墙
service iptables stop
复制一个keepalived.conf例子
cd /etc/keepalived/
vi keepalived.conf
LVS1环境配置如下(作主机):
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP #注意此处
nopreempt #表示主机起来后不抢占备份机上的连接
interface eth0
virtual_router_id 51
#mcast_src_ip 192.168.10.17
priority 100 #主机优先级高于备份机
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.15 #虚拟服务器地址,可以有多个
}
}
virtual_server 192.168.10.15 8001 { #虚拟机
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.10.18 8001 { #对应的后端服务器
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 10
delay_before_retry 10
connect_port 8001 #后端服务器监听端口
}
}
real_server 192.168.10.19 8001 { #对应的后端服务器
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 10
delay_before_retry 10
connect_port 8001
}
}
}
其中global_defs部分本实例未用到。
LVS2配置如下,作备份。
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP #作备分机,由priority区别,优先级低于主机
interface eth0
virtual_router_id 51
#mcast_src_ip 192.168.10.16
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.15
}
}
virtual_server 192.168.10.15 8001 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.10.18 8001 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 10
delay_before_retry 10
connect_port 8001
}
}
real_server 192.168.10.19 8001 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 10
delay_before_retry 10
connect_port 8001
}
}
}
以上配置的各个详细项参见文档,需注意几个地方:
vrrp_instance VI_1 {
state BACKUP #作备分机,由priority区别,优先级低于主机
interface eth0
virtual_router_id 51
#mcast_src_ip 192.168.10.16
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.15
}
}
此处配置双机热备的调度,有两种方式:
(1)一台作主机,另一台作热备,当主机停止时备份机器接管主机的任务,主机起来后重新抢占备机接管的任务,此种方式会使会话中断,并重新连接,配置区别如下:
主机:state MASTER
priority 100 #高于备机
nopreempt#不需要了。
advert_int 1 #主备机之间的心跳检测
备机:state BACKUP
priority 99 #低于主机
nopreempt #不需要了。
advert_int 1 #主备机之间的心跳检测
(2) 一台作主机,另一台热备,当主机停止时备份机器接管主机任务,主机起来后不抢中备机的连接,充电备机的角色,当备机中止时充当主机,这样的好处是不中断会话,本实例使用此种方式:
主机:state BACKUP
priority 100 #高于备机
nopreempt #主机需要。
advert_int 1 #主备机之间的心跳检测
备机:state BACKUP
priority 99 #低于主机
#nopreempt 备机不需要。
advert_int 1 #主备机之间的心跳检测
LVS配置即好,开启LVS
service keepalivedstart
ipvsadm –ln 即可查看状态
五、 后台服务端配置:
主要是安装Microsoftloopback Adapter虚拟网卡:步骤如下
控制面板->添加硬件->硬件已连接->添加新硬件->安装我手动从列表选择的硬件->网络适配器->Microsoft->Microsoftloopback Adapter
设置IP地址:设成虚拟IP地址,192.168.10.15和keepalived.conf配置的虚拟IP一样,默认网关不设置,子网先填写一个255.255.255.0,确定后停止网卡,再到注册表中找到该地址对应的子网掩码,改成255.255.255.255,有两个地方要改,保存后启用虚拟网卡。
配置好之后,启动此两台后端服务器上的服务程序,客户端即可通过LVS按算法分配连接到服务器上来。如果服务器是linux系统,配置相似,至于为什么要如此配置,有许细的文档可查。
六、 遗留问题极其它说明:
Keepalived被证明是一个具有高可用性的集群调度软件,但是在不同的硬件和操作系统版本上可能有一些差异,第一次配置或许不那么顺利,或多或少会遇到一些问题,正所谓知道不难,不知道甚难。曾经在R710上安装CentOS-5.3部署keepalived,当客户端连接超过1500时,LVS机器网络中断,ping出去或者ping进来都ping不通,只有ping自己能ping通,排除是硬件故障,证实是软件原因。
当运动service network restart后,又能跑一下,连接达到1500时又是同样的问题。情绪是对连接数有限制,查看ulimit –n显示是1024。当改了这个限制还是一样的问,ping机器是显示的是无法找到路由。百思不得其角,于是换装操作系统,RHEL 4.8,一切如keepalived功能所愿。期待高手。
另外还有一个类似的软件keartbeat,和keepalived是两套不同的模式,是不相关的系统不要混肴,heartbeat比keepalived配置要复杂的多,而且心跳检测是另外的检测线,即两种搭配
lvs + keepalived
lvs + ldirectord + heartbeat
Keepalived配置中已经包含了双机备份的心跳机制,可以试着将正在接管任务的主机服务关掉,看看另一台备机能不能接管,正常情况下是能接管的。
- LVS负载均衡配置说明
- Piranha配置lvs负载均衡
- 配置LVS 负载均衡集群
- redhat5 配置lvs负载均衡
- 负载均衡--LVS安装配置
- LVS 负载均衡服务器安装配置
- 负载均衡 lvs dr 私网配置
- Linux负载均衡软件LVS(配置)
- lvs+keepalived 负载均衡keepalived.conf配置
- LVS DR模式负载均衡配置
- LVS+Keepalived负载均衡配置部署
- LVS-DR负载均衡简易配置
- LVS+Keepalived负载均衡配置部署
- LVS+Mysql集群负载均衡--内网lvs配置
- nginx负载均衡配置说明
- 网络负载均衡配置说明
- Nginx负载均衡配置说明
- 负载均衡中的LVS
- C#重绘,高级进度条 - (参考基础上原创)
- C# 圆角Panel - (参考基础上原创)
- C#跨进程窗体获得焦点
- 还是用CSDN吧……
- Web前端
- LVS负载均衡配置说明
- Nginx HTTP负载均衡/反向代理的相关参数测试
- ajax
- HTML开心人人新浪微薄等
- C#获取当前系统时间
- 做项目时遇到的几个关于C#和SQL的细节问题(一)
- UML
- Linux操作系统主机名(hostname)简说(v0.1b)
- SDFSDF