LVS+keepalived+nginx实现手册
1、负载均衡lvs介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上,然后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真正服务器(real server)上。为了避免不同机器上用户请求得到的数据不一样,需要用到了共享存储,这样保证所有用户请求的数据是一样的。 常用的负载均衡开源软件有nginx、lvs、haproxy,
1、负载均衡lvs介绍
LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上,然后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真正服务器(real server)上。为了避免不同机器上用户请求得到的数据不一样,需要用到了共享存储,这样保证所有用户请求的数据是一样的。
常用的负载均衡开源软件有nginx、lvs、haproxy,商业的硬件负载均衡设备F5、Netscale。 LVS是 Linux Virtual Server 的简称,也就是Linux虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网站是 http://www.linuxvirtualserver.org 现在 LVS 已经是 Linux 内核标准的一部分。使用 LVS 可以达到的技术目标是:通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。LVS 是一个实现负载均衡集群的开源软件项目,LVS架构从逻辑上可分为调度层、Server集群层和共享存储。
LVS可以实现负载均衡,但是不能够进行健康检查,比如一个rs出现故障,LVS 仍然会把请求转发给故障的rs服务器,这样就会导致请求的无效性。keepalive 软件可以进行健康检查,而且能同时实现 LVS 的高可用性,解决 LVS 单点故障的问题,其实 keepalive 就是为 LVS 而生的。
2、本次实验环境介绍
dr1:10.1.52.13 Keepalived1 + lvs1(dr1)
dr2:10.1.52.14 Keepalived2 + lvs2(dr2)
rs1:10.1.52.15
rs2:10.1.52.16
vip:10.1.52.10
3、软件安装
Lvs + keepalived的dr服务器上2个节点安装
# yum install ipvsadmkeepalived -y
rs1、rs2、服务器上安装nginx(略)
# yum install nginx -y
4、脚本设置
rs服务器上两台脚本的设置:
#vi /usr/local/sbin/lvs_dr_rs.sh
#! /bin/bash
vip=10.1.52.10
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip 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
保存退出!
执行脚本
keepalived的两台dr服务器上配置脚本
主节点( MASTER )配置文件
vi /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.1.52.10
}
}
virtual_server 10.1.52.10 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 0
protocol TCP
real_server 10.1.52.15 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 10.1.52.16 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
从节点( BACKUP )配置文件
拷贝主节点的配置文件keepalived.conf,然后修改如下内容:
state MASTER -> state BACKUP
priority 100 -> priority 90
keepalived的2个节点执行如下命令,开启转发功能:
# echo 1 > /proc/sys/net/ipv4/ip_forward
5、启动keepalived
先主后从分别启动keepalive
service keepalived start
6、实验验证
实验1:手动关闭rs1服务,去访问http://10.1.52.10结果一直是访问rs2的节点
实验2、重新开启rs1的nginx服务访问http://10.1.52.10,结果按照轮询rr调度算法访问rs1和rs2
实验3:验证keepalived的HA
首先在dr1上执行ip addr可以可以看到vip在master节点上,此时在dr1上执行service keepalived stop命令,这时vip不在dr1上了,去dr2上执行ip addr 发现vip漂在dr2的salve节点上,继续访问http://10.1.52.10依然正常
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)