搭建LVS+Keepalived负载均衡集群
这两天学习了LVS+Keepalived负载均衡的搭建。网上的教程非常多,可是动起手来遇到不少问题。
如今把自己的搭建过程以及遇到的一些问题给分享下。
硬件环境:
Macbook 8G内存。250G SSD,双核
软件环境:
因为资源有限。搭建了4个虚拟机。
虚拟机
[root@rs-1 work]# uname -a
Linux rs-1 2.6.18-238.el5 #1 SMP Thu Jan 13 15:51:15 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
[root@rs-1 work]# cat /etc/redhat-release
CentOS release 5.6 (Final)
4个虚拟机的ip地址分配例如以下:
Master DR: { ip: 172.16.3.89 hostname: lvs-backup}
Slave DR: { ip:172.16.3.90 hostname:lvs}
Real Server1: {ip: 172.16.3.91 hostname: rs-1}
Real Server2: { ip:172.16.3.92 hostname: rs-2}
VIP: 172.16.3.199
1.在Master DR和Slave DR分别安装ipvsadm(1.24), keepalived(1.2.12)
安装ipvsadm
检查系统是否安装了IPVS模块,下图显示系统已经支持ipvs模块的。
[root@lvs ~]# modprobe -l | grep ipvs
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_dh.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_ftp.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_lblc.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_lc.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_nq.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_rr.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_sed.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_sh.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_wlc.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_wrr.ko
做个软连接
[vagrant@lvs src]$ sudo ln -s /usr/src/kernels/2.6.18-238.el5-x86_64/ /usr/src/linux
编译
[vagrant@lvs ipvsadm-1.24]$ make
[vagrant@lvs ipvsadm-1.24]$ sudo make install
检測是否成功安装
[root@lvs ~]# ipvsadm -v
ipvsadm v1.24 2005/12/10 (compiled with getopt_long and IPVS v1.2.1)
能打印出版本说明已经成功安装了!!
!
!
安装keepalived
configure
[vagrant@lvs keepalived-1.2.12]$./configure --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.18-238.el5-x86_64/
编译
[vagrant@lvs keepalived-1.2.12]$ make
安装
[vagrant@lvs keepalived-1.2.12]$ sudo make install
做个软连接
[vagrant@lvs keepalived-1.2.12]$ sudo ln -s /usr/local/sbin/keepalived /sbin/
检測是否成功安装
[root@lvs ~]# keepalived -v
Keepalived v1.2.12 (05/06,2014)
能打印出版本。说明安装已经成功了!!
同理在lvs-backup上安装keepalived
检測是否成功安装
[root@lvsbackup~]# keepalived -v
Keepalived v1.2.12 (05/06,2014)
配置keepalived
! Configuration File for keepalived
#global_defs {
# notification_email {
#设置报警邮件地址,能够设置多个,每行1个。
#需开启邮件报警及本机的Sendmail服务。
# }
#notification_email_from Alexandre.Cassen@firewall.loc
#smtp_server 192.168.199.1 #设置SMTP Server地址;
#smtp_connect_timeout 30
#router_id LVS_DEVEL
#}
########VRRP Instance########
vrrp_instance VI_1 {
state MASTER #指定Keepalived的角色,MASTER为主机server。BACKUP为备用server
interface eth1 #BACKUP为备用server
virtual_router_id 51
priority 100 #定义优先级。数字越大,优先级越高。主DR必须大于备用DR。
advert_int 1
authentication {
auth_type PASS #设置验证类型。主要有PASS和AH两种
auth_pass 1111 #设置验证password
}
virtual_ipaddress {
172.16.3.199 #设置主DR的虚拟IP地址(virtual IP),可多设。但必须每行1个
}
}
########Virtual Server########
virtual_server 172.16.3.199 80 { #注意IP地址与port号之间用空格隔开
delay_loop 6 #设置健康检查时间。单位是秒
lb_algo rr #设置负载调度算法,默觉得rr,即轮询算法,最棒是wlc算法
lb_kind DR #设置LVS实现LB机制。有NAT、TUNN和DR三个模式可选
nat_mask 255.255.255.0
#persistence_timeout 50 #会话保持时间,单位为秒
protocol TCP #指定转发协议类型。有TCP和UDP两种
real_server 172.16.3.92 80 {
weight 50 #配置节点权值,数字越大权值越高
TCP_CHECK {
connect_timeout 3 #表示3秒无响应,则超时
nb_get_retry 3 #表示重试次数
delay_before_retry 3 #表示重试间隔
}
}
real_server 172.16.3.91 80 { #配置服务器节点。即Real Server2的public IP
weight 50 #配置节点权值。数字越大权值越高
TCP_CHECK {
connect_timeout 3 #表示3秒无响应,则超时
nb_get_retry 3 #表示重试次数
delay_before_retry 3 #表示重试间隔
}
}
Slave DR的配置和Master DR的配置基本一样。仅仅有2个不同点:
MASTER改为BACKUP,priority 100改为priority 80
这边说下persistence_timeout 选项,意思就是在这个一定时间内会讲来自同一用户(依据ip来推断的)route到同一个real
server。
我这边给凝视掉了。详细依据业务需求。长连接的话最好是配置上,配置值最好跟lvs的配置的timeout一致。
启动keepalived
编写start.sh(stop.sh,restart.sh)脚本方便启动
#!/bin/sh
/etc/init.d/keepalived start
运行脚本
[root@lvs work]# ./start.sh
Starting keepalived: [ OK ]
编写检測脚本watch.sh
#!/bin/sh
watch 'ipvsadm -l -n'
启动检測
[root@lvs work]# ./watch.sh
Every 2.0s: ipvsadm -l -n Tue May 6 12:49:52 2014
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.3.199:80 rr persistent 50
-> 172.16.3.91:80 Route 50 0 0
-> 172.16.3.92:80 Route 50 0 0
能够看到已经检測到172.16.3.91, 172.16.3.92两台server。
在Slave DR上做相同配置和脚本。
2.在Real Server1和Real Server2安装nginx
安装nginx过程省略。
安装完nginx之后。须要启动nginx。
配置 realserver.sh脚本
#!/bin/bash
SNS_VIP=172.16.3.199
/etc/rc.d/init.d/functions
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
~
启动脚本
[root@rs-1 work]# ./realserver.sh start
RealServer Start
运行ifconfig,能够看到做往常多了一段下图红框内的内容。
測试
在Slave DR上測试
[vagrant@centos-5 conf]$ for((i=0;i<100;i++));do curl 172.16.3.199;done;
[vagrant@centos-5 conf]$ webbench -c 10 -t 10 http://172.16.3.199/
在Master DR上运行watch.sh
Every 2.0s: ipvsadm -l -n Wed May 7 11:45:27 2014
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.3.199:80 rr
-> 172.16.3.91:80 Route 50 0 1763
-> 172.16.3.92:80 Route 50 0 1762
整个配置过程,记得关闭全部虚拟机的防火墙, 这点非常重要。!!
[root@lvs work]# service iptables stop
例如以下命令可查询是否已经关闭防火墙
[root@lvs work]# chkconfig --list | grep iptables
iptables 0:off1:off2:off3:off4:off5:off6:off
參考链接:
搭建LVS+Keepalived负载均衡集群的更多相关文章
- Linux平台上搭建apache+tomcat负载均衡集群
传统的Java Web项目是通过tomcat来运行和发布的.但在实际的企业应用环境中,采用单一的tomcat来维持项目的运行是不现实的.tomcat 处理能力低,效率低,承受并发小(1000左右).当 ...
- (转)CentOS7 搭建LVS+keepalived负载均衡(一)
原文:http://blog.csdn.net/u012852986/article/details/52386306 CentOS7 搭建LVS+keepalived负载均衡(一) CentOS7 ...
- 搭建高性能Jboss负载均衡集群
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/a1314517love/article/details/26836357 负载均衡集群是由两台或者两 ...
- linux 负载均衡配置 keepalive lvs 使用nginx转发 CentOS7 搭建LVS+keepalived负载均衡
最近希望能够配置一下负载均衡,在虚拟机上面,但是网上找了很多资料很零散,对于不了解的人,很多不够详细,最近终于做好了,把具体的步骤写下来,方便各位网友查阅学习 这个实验需要安装nginx如果没有安装过 ...
- Redhat/CentOS7-环境虚拟机简单搭建Nginx+Tomcat负载均衡集群
Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,是开发和调试JSP程序的首选.由于Tomcat处理静态HTML的能力运不及Apache或者Nginx,所以Tomcat ...
- CentOS7 搭建LVS+keepalived负载均衡
1.实验环境 4台节点 Keepalived1 + lvs1(Director1):192.168.31.4 Keepalived2 + lvs2(Director2):192.168.31.3 Re ...
- Nginx+Keepalived搭建高可用负载均衡集群
本文的重点是Keepalived的配置,Nginx的配置就简略带过.软件:CentOS 7.2 / Nginx 1.12.2 / Keepalived 1.3.9 ha-01:192.168.1.97 ...
- RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群
本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群.受限于自身条件,本 ...
- Apache和Nginx负载均衡集群及测试分析
一.应用场景介绍 本文主要是介绍Apache和Tomcat在Linux环境下的安装讲解以及AJP协议动静分离负载均衡的实现,以及与Nginx负载性能比较.联网安装较为简单,故此处只说脱机的Linux环 ...
随机推荐
- [Swift通天遁地]四、网络和线程-(1)线程的锁和解锁
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Horspool和BM算法解析
最近算法中学到了Horspool,KMP,BM三种算法.接下来给大家做个分享. Horspool算法: 算法思路: 1.分为匹配串,原串 2.从右往左依次匹配: 一旦遇到不匹配的,原串相对于匹配串 移 ...
- BZOJ 2178 Simpson积分
思路: 我发现能用Simpson积分水的题 好像都是裸题诶233333 //By SiriusRen #include <bits/stdc++.h> using namespace s ...
- Wannafly挑战赛19 A-队列Q
题目描述 ZZT 创造了一个队列 Q.这个队列包含了 N 个元素,队列中的第 i 个元素用 Qi 表示.Q1 表示队头元素,QN 表示队尾元素.队列中的元素是 N 的一个全排列. ZZT 需要在这个队 ...
- ACM_Alien And Password
Alien And Password Time Limit: 2000/1000ms (Java/Others) Problem Description: Alien Fred wants to de ...
- 6.11---multipartfile在哪个jar包下---6.11---uuid---swagger上传图片包错去掉注解响应体
<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupl ...
- ios数据的基本类型和流程控制
swift的声明变量方式和js是类似的.基本类型基本都和java的差不多,多了字符类型. let:用于声明常量: var:用于声明变量: 基本类型有:double,float,Int(数字类型):bo ...
- VMWare 安装Ubuntu 16.04
1.新建虚拟机 (1)点击文件-->新建虚拟机 (2)选择 自定义(高级)--> 下一步 (3)选择Workstation 12.0 --> 下一步 (4)选择 稍后安装操作系统 - ...
- Javascript实现导航锚点滚动效果实例
本篇文章主要介绍了Javascript实现页面滚动时导航智能定位,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 常见的开发页面中可能会有这么一个需求,页面中会有多个模块,每个模块对应一个导航,当页 ...
- [Windows Server 2012] Filezilla安全加固方法
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:FileZ ...