Centos7搭建lvs+keepalive负载均衡集群

keepalived简介

keepalived是分布式部署解决系统高可用的软件,结合lvs(LinuxVirtual Server)使用,解决单机宕机的问题。

keepalived是一个基于VRRP协议来实现IPVS的高可用的解决方案。对于LVS负载均衡来说,如果前端的调度器direct发生故障,则后端的realserver是无法接受请求并响应的。因此,保证前端direct的高可用性是非常关键的,否则后端的服务器是无法进行服务的。而我们的keepalived就可以用来解决单点故障(如LVS的前端direct故障)问题。keepalived的主要工作原理是:运行keepalived的两台服务器,其中一台为MASTER,另一台为BACKUP,正常情况下,所有的数据转换功能和ARP请求响应都是由MASTER完成的,一旦MASTER发生故障,则BACKUP会马上接管MASTER的工作,这种切换时非常迅速的。

LVS简介

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,LVS工作在ISO模型中的第四层,由于其工作在第四层,因此与iptables类似,必须工作在内核空间上。因此lvs与iptables一样,是直接工作在内核中的,叫ipvs,主流的linux发行版默认都已经集成了ipvs,因此用户只需安装一个管理工具ipvsadm即可。

IPVS中实现了三种负载均衡技术:

1、VS/NAT --- Virtual Server via Network Address Translation

通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端真实服务器;真实服务器的响应报文通过调度器时,报文源地址被重写再返回给客户,完成整个负载调度过程。但通常在流量比较大的情况下会造成调度器的瓶颈。因为服务数据的返回必须通过调度器出去。

2、VS/TUN --- Virtual Server via IP Tunneling

采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器 把请求报文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用 VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。但是目前支持TUN 只有Linux系统

3、VS/DR --- Virtual Server via Direct Routing

VS/DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同VS/TUN技术一样,VS/DR技术 可极大地提高集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连在同一物理网段上。也就是说,在这种结构中,数据从外部到内部真实服务器的访问会通过调度器进来,但是真实服务器对其的应答不是通过调度器出去。 即在大多数情况下,真实服务器可以通过各自的网关或者专用的网关对数据进行外发,从而降低调度器负载。

LVS优点:

1、抗负载能力强

因为lvs工作方式的逻辑是非常之简单,而且工作在网络4层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。在我手里的 lvs,仅仅出过一次问题:在并发最高的一小段时间内均衡器出现丢包现象,据分析为网络问题,即网卡或linux2.4内核的承载能力已到上限,内存和 cpu方面基本无消耗。

2、配置性低

这通常是一大劣势,但同时也是一大优势,因为没有太多可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率。

3、工作稳定

因为其本身抗负载能力很强,所以稳定性高也是顺理成章,另外各种lvs都有完整的双机热备方案,所以一点不用担心均衡器本身会出什么问题,节点出现故障的话,lvs会自动判别,所以系统整体是非常稳定的。

4、无流量

上面已经有所提及了。lvs仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路分流之用。没有流量同时也保住了均衡器的IO性能不会受到大流量的影响。

5、基本上能支持所有应用

因为lvs工作在4层,所以它可以对几乎所有应用做负载均衡,包括http、数据库、聊天室等等。

注:LVS需要手工动态增加命令,所以需要Keepalived来实现自动配合。

Lvs+keepalive负载均衡架构

Centos7搭建lvs+keepalive负载均衡集群

实验环境

系统版本:centos7x3.10.0-514.el7.x86_64

Keepalived版本:keepalived.x86_64 0:1.3.5-6.el7(yum)

Lvs版本:ipvsadm-1.27-7.el7(yum)

Nginx版本:nginx-1.14.0

关闭防火墙并禁止开机自启

systemctl stop firewalld.service
systemctl disable firewalld

关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

重启 reboot

安装Keepalived+Lvs的master主机

IP:192.168.152.170
主要组件: keepalived lvs(ipvsadm)
主要依赖包: gcc openssl openssl-devel

1、安装master组件和依赖包

yum -y install keepalived ipvsadm gcc openssl openssl-devel

2、备份keepalived配置文件

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.backup

3、编辑keepalived配置文件

vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
router_id lvs_clu_1
}
virrp_sync_group Prox {
group {
mail
}
}
vrrp_instance mail {
state MASTER
interface ens33
lvs_sync_daemon_interface ens33
virtual_router_id 50
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.152.100
}
}
virtual_server 192.168.152.100 80 {
delay_loop 6
lb_algo wlc
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.152.168 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.152.169 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

Centos7搭建lvs+keepalive负载均衡集群
Centos7搭建lvs+keepalive负载均衡集群

4、开启路由转发

1)添加配置文件

echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf

2)刷新配置

sysctl –p

5、重启keepalived服务并设置开机自启

1)重启keepalived

systemctl restart keepalived

2)开机自启keepalived

systemctl enable keepalived

注:如果服务启动不起来,并报错/usr/lib64/perl5/CORE/libperl.so: file too short,那就必须先升级perl,然后在重新安装这些步骤哦!

6、查看服务

ipvsadm -l
Centos7搭建lvs+keepalive负载均衡集群

安装Keepalived+Lvs的backup主机

IP:192.168.152.91
主要组件: keepalived lvs(ipvsadm)
主要依赖包: gcc openssl openssl-devel

1、安装master组件和依赖包

yum -y install keepalived ipvsadm gcc openssl openssl-devel

2、备份keepalived配置文件

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.backup

3、编辑keepalived配置文件

vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
router_id lvs_clu_1
}
virrp_sync_group Prox {
group {
mail
}
}
vrrp_instance mail {
state backup
interface ens33
lvs_sync_daemon_interface ens33
virtual_router_id 50
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.152.100
}
}
virtual_server 192.168.152.100 80 {
delay_loop 6
lb_algo wlc
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.152.168 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.152.169 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

Centos7搭建lvs+keepalive负载均衡集群
Centos7搭建lvs+keepalive负载均衡集群

4、开启路由转发

1)添加配置文件

echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf

2)刷新配置

sysctl –p

5、重启keepalived服务并设置开机自启

1)重启keepalived

systemctl restart keepalived

2)开机自启keepalived

systemctl enable keepalived

注:如果服务启动不起来,并报错/usr/lib64/perl5/CORE/libperl.so: file too short,那就必须先升级perl,然后在重新安装这些步骤哦!

6、查看服务

ipvsadm -l
Centos7搭建lvs+keepalive负载均衡集群

猜你喜欢

转载自blog.51cto.com/13043516/2309505