篇三:LVS与keepalived实现负载均衡高可用

曹阿瞒,改错不认错。

人们过去看错了我曹操,现在还看错,也许将来还会看错。

一直很喜欢演义里关于曹孟德的这两句话,送给大家!

时光匆匆,日月光华,斗转星移,已然悄悄离去,万物诚永恒,生命绝尘寰。

这段时间忙于各种学习、业务、上班、惰性,有好一段时间没有更新公众号了,虽然公众号里人不多,但我也是愧对各位。当然,并不是我有多么精辟的内容分享给大家,而是因为少了坚持、韧性,让你们看到一个人开始了,但却没有了过程、结果。纯属于负能量,我绝逼不要干这样的事情,你们说是吧!

今天,给大家带来的是:LVS与keepalived实现负载均衡高可用。前面有两篇,已经做了关于haproxy与nginx实现负载均衡的方式。你想学,可以回过头去看一看。

一、环境要求

系统:Centos7.4 64位

LvsMaster IP: 192.168.1.103

LvsSlave IP: 192.168.1.104

Web1 IP: 192.168.1.102

Web2 IP: 192.168.1.107

VIP: 192.168.1.111

ipvsadm: ipvsadm v1.27

keepalived: Keepalived v2.0.7

nginx: nginx/1.13.11

Vmware: vm下开启4台虚拟机

二、ipvsadm安装

1、首先,说说ipvsadm是什么

ipvs[IP Vertual Server],是运行在LVS[Linux Vertual Server]下提供负载均衡功能的技术,相当于一个高效的Layer-4交换机。

而ipvsadm是IPVS的管理工具。

2、安装

[root@yyd ~] yum install ipvsadm -y

加载支持ipvs

[root@yyd ~] modprobe ip_vs

4台机器都执行上面的操作

3、ipvsadm命令说明

我们可以

[root@yyd ~] man ipvsadm

下面我附上中文说明

-A (--add-service) 在内核的虚拟服务器列表中添加一条新的虚拟IP记录。也就是增加一台新的虚拟服务器。虚拟IP也就是虚拟服务器的IP地址。

-E (--edit-service) 编辑内核虚拟服务器列表中的一条虚拟服务器记录

-D (--delete-service) 删除内核虚拟服务器列表中的一条虚拟服务器记录

-C (--clear) 清除内核虚拟服务器列表中的所有规则

-R (--restore) 恢复虚拟服务器规则

-S (--save) 保存虚拟服务器规则,输出为-R 选项可读的格式

-a (--add-server) 在内核虚拟服务器列表的一条记录里添加一条新的Real Server记录。也就是在一个虚拟服务器中增加一台新的Real Server

-e (--edit-server) 编辑一条虚拟服务器记录中的某条Real Server记录

-d (--delete-server) 删除一条虚拟服务器记录中的某条Real Server记录

-L|-l –list 显示内核中虚拟服务器列表

-Z (--zero) 虚拟服务器列表计数器清零(清空当前的连接数量等)

--set tcp tcpfin udp 设置连接超时值

-t 说明虚拟服务器提供的是tcp服务,此选项后面跟如下格式:

[virtual-service-address:port] or [real-server-ip:port]

-u 说明虚拟服务器提供的是udp服务,此选项后面跟如下格式:

[virtual-service-address:port] or [real-server-ip:port]

-f fwmark 说明是经过iptables标记过的服务类型

-s 此选项后面跟LVS使用的调度算法

有这样几个选项: rr|wrr|lc|wlc|lblc|lblcr|dh|sh

默认的调度算法是: wlc

-p [timeout] 在某个Real Server上持续的服务时间。也就是说来自同一个用户的多次请求,将被同一个Real Server处理。此参数一般用于有动态请求的操作中,timeout 的默认值为360 分钟。例如:-p 600,表示持续服务时间为600分钟。

-r 指定Real Server的IP地址,此选项后面跟如下格式:

[real-server-ip:port]

-g (--gatewaying) 指定LVS 的工作模式为直接路由模式(此模式是LVS 默认工作模式)

-i (-ipip) 指定LVS 的工作模式为隧道模式

-m (--masquerading) 指定LVS 的工作模式为NAT模式

-w (--weight) weight 指定Real Server的权值

-c (--connection) 显示LVS目前的连接信息 如:ipvsadm -L -c

-L --timeout 显示“tcp tcpfin udp”的timeout值,如:ipvsadm -L --timeout

-L --daemon 显示同步守护进程状态,例如:ipvsadm -L –daemon

-L --stats 显示统计信息,例如:ipvsadm -L –stats

-L --rate 显示速率信息,例如:ipvsadm -L --rate

-L --sort 对虚拟服务器和真实服务器排序输出,例如:ipvsadm -L --sort

注: 保存添加的虚拟ip记录和ipvsadm的规则可以使用service ipvsadm save,还可以用-S或--save清除所有记录和规则除了使用-C,还以使用--clear。

man文档里的样例:

三、配置ipvs

对LvsMaster、LvsSlave,我们将之配置成服务脚本:

[root@yyd ~] cd /etc/init.d

[root@yyd /etc/init.d] vim lvs

对web1、web2:

[root@yyd ~] chmod +x /etc/init.d/lvs

上面我们的服务脚本写完,但由于是高可用,我们需要keepalived,

接下来,我们安装keepalived。

四、安装keepalived[源码编译方式]

1、下载

[root@yyd ~] wget http://www.keepalived.org/software/keepalived-2.0.7.tar.gz

2、安装

[root@yyd ~] tar -zxvf keepalived-2.0.7.tar.gz && cd keepalived-2.0.7

[root@yyd ~/keepalived-2.0.7] ./configure --prefix=/usr/local/keepalived

[root@yyd ~/keepalived-2.0.7] make && make install

keepalived默认会用/etc/keepalived/keepalived.conf

[root@yyd ~] cp /usr/local/keepalived/etc/keepalived/keepalived.conf

/etc/keepalived/

[root@yyd ~] cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

[root@yyd ~] cp /root/keepalived-2.0.7/keepalived/etc/init.d/keepalived

/etc/init.d/

[root@yyd ~] chmod +x /etc/init.d/keepalived

[root@yyd ~] cp /usr/local/keepalived/sbin/keepalived /usr/sbin

3、配置keepalived

现在LVS与keepalived都配置完成,启动试试!

五、启动nginx、lvs、keepalived

启动web1的lvs、nginx:

[root@yyd ~] nginx

[root@yyd ~] service lvs start

启动web2的lvs、nginx:

[root@yyd ~] nginx

[root@yyd ~] service lvs start

启动LvsMaster、keepalived

[root@yyd ~] service lvs start

[root@yyd ~] service keepalived start

启动LvsSlave、keepalived

[root@yyd ~] service lvs start

[root@yyd ~] service keepalived start

六、检测

LvsMaster:

LvsSlave:

可以看出lvsSlave上没有VIP

七、访问

八、测试高可用

停掉master上的服务

[root@yyd ~] service lvs stop

[root@yyd ~] service keepalived stop

LvsMaster:

LvsSlave:

浏览器:

可见当LvsMaster的服务器宕机后,VIP就切换到了LvsSlave上,并不影响到服务的可用性,用户完全是无感知的。

九、Ending.................................................................................

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180909G0VXJD00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券