1、环境说明:

系统版本:Ubuntu 14.04

LVS1物理IP:14.17.64.2   初始接管VIP:14.17.64.13

LVS2物理IP:14.17.64.3   初始接管VIP:14.17.64.14

真实web服务器IP:14.17.64.4-12

实现效果:去往14.17.64.13或14的报文,转发给14.17.64.4-12中的一台服务器处理,实现负载均衡。

要求1:当一台真实web服务器故障后,自动把该IP从负载均衡中踢除,恢复后自动加入集群。

要求2:当一台LVS服务器故障后,正常的LVS服务器会接管故障LVS服务器上的VIP,故障恢复后自动抢占回VIP,继续负载分担。

2、安装LVS与Keepalived

#aptitude install ipvsadm          #安装lvs

#ipvsadm                             #加载lvs,ipvsadm的规则由keepalived来配置,所以安装即可,如果要对lvs手动配置详细了解,可参考我的另一篇文章:http://yangrong.blog.51cto.com/6945369/1574991

#aptitude install keepalived      #安装keepalived

#配置文件目录/etc/keepalived/keepalived.conf,默认并没有配置文件,需要手动创建。

#Keepalived配置文件详解参考地址:http://www.360doc.com/content/11/1228/16/834950_175607432.shtml

3、keepalived配置

此处是单台LVS上keepalived.conf的配置,另一台LVS上的keepalived.conf的配置文件,只需把下列红色与蓝色字体参数对换一下即可。

配置文件如下:

! Configuration File for keepalived

vrrp_instance VI_1 {            #定义一个实例,keepalived间的高可用只能接管相同实例名称

stateMASTER                 #指定Keepalived的角色,MASTER表示此主机是主服务器 BACKUP表示此主机是备用服务器,所以设置priority时要注意MASTER比BACKUP高。

interface p1p1              #指定监测网络的接口,当LVS接管时,将会把IP地址添加到该网卡上。

virtual_router_id 51        #虚拟路由标识,同一个vrrp实例使用唯一的标识,同一个vrrp_instance下,MASTER和BACKUP必须一致。

priority120                 #指定这个实例优先级

advert_int 1                 #心跳报文发送间隔

#notify_master/path/xx.sh    #这个实例切换为master时执行的脚本

#notify_backup /path/xx.sh   #这个实例切换为backup时执行的脚本

#track_interface{            #设置额外的监控,里面某个网卡故障也会进行切换,这个一般用来监控上行链路

#eth1

#}

authentication {

auth_type PASS          #设置验证类型,主要有PASS和AH两种

auth_pass 1111          #设置验证密码,同一个vrrp_instance下,MASTER和BACKUP的密码必须一致才能正常通信

}

virtual_ipaddress {         #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个

14.17.64.13

}

}

vrrp_instance VI_2 {            #定义另一个实例

state BACKUP

interface p1p1

virtual_router_id 52

priority 80

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

14.17.64.14

}

}

virtual_server 14.17.64.13 0 {     #设置虚拟服务器,需要指定虚拟IP地址和服务端口,IP与端口之间用空格隔开

delay_loop 6                   #设置运行情况检查时间,单位是秒

lb_algo wrr                    #设置负载调试算法,这里设置为wrr即加权论询算法

lb_kind DR                     #设置LVS实现负载均衡的机制,有NAT,TUN和DR三个模式可选

persistence_timeout 50         #设置会话保持时间,单位是秒

protocol TCP                   #指定转发协议类型,有TCP和UDP两种

real_server 14.17.64.4 0 {     #配置服务节点1,需要指定real server的真实IP地址和端口

weight 1                   #配置服务节点的权值,

TCP_CHECK {

connect_timeout 8          #表示8秒无响应超时

nb_get_retry 3             #表示重试次数

delay_before_retry 3       #表示重试间隔

connect_port 80            #使用80端口进行保活

}

}

real_server 14.17.64.5 0 {

weight 1

TCP_CHECK {

connect_timeout 8

nb_get_retry 3

delay_before_retry 3

#connect_port 80

}

}

#更多real_server略掉。

}

virtual_server 14.17.64.14 0 {    #设置虚拟服务器,需要指定虚拟IP地址和服务端口,IP与端口之间用空格隔开

delay_loop 6                  #设置运行情况检查时间,单位是秒

lb_algo wrr                   #设置负载调试算法,这里设置为wrr即加权论询算法

lb_kind DR                    #设置LVS实现负载均衡的机制,有NAT,TUN和DR三个模式可选

persistence_timeout 50        #设置会话保持时间,单位是秒

protocol TCP                  #指定转发协议类型,有TCP和UDP两种

real_server 14.17.64.4 0 {    #配置服务节点1,需要指定real server的真实IP地址和端口

weight 1                  #配置服务节点的权值,

TCP_CHECK {

connect_timeout 8         #表示8秒无响应超时

nb_get_retry 3            #表示重试次数

delay_before_retry 3      #表示重试间隔

connect_port 80

}

}

real_server 14.17.64.5 0 {

weight 1

TCP_CHECK {

connect_timeout 8

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

#更多real_server略掉

}

4、真实服务器健康检查测试

由于是线上环境,我不能通过关闭机器或网卡进行测试,但是他保活是通过tcp 80端口来保活的,所以只需关闭真实服务器上的http服务就OK。

如下所示,关掉nginx服务后,果真从lvs负载里踢出了。

root@ubuntu:/etc/keepalived# ipvsadm-L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  14.17.64.13:0 wrr persistent50

-> 14.17.64.4:0                 Route   1     0          0

-> 14.17.64.5:0                 Route   1     0          0

-> 14.17.64.6:0                 Route   1     0          0

-> 14.17.64.7:0                 Route   1     3          0

-> 14.17.64.8:0                 Route   1     0          0

-> 14.17.64.9:0                 Route   1     0          0

-> 14.17.64.10:0                Route   1     2          1

-> 14.17.64.11:0                Route   1     1          1

-> 14.17.64.12:0                Route   1     0          0

TCP  14.17.64.14:0 wrr persistent50

-> 14.17.64.4:0                 Route   1     0          0

-> 14.17.64.5:0                 Route   1      0         0

-> 14.17.64.6:0                 Route   1     0          0

-> 14.17.64.7:0                 Route   1     0          0

-> 14.17.64.8:0                 Route   1     0          0

-> 14.17.64.9:0                 Route   1     0          0

-> 14.17.64.10:0                Route   1     0          0

-> 14.17.64.11:0                Route   1     0          0

-> 14.17.64.12:0                Route   1      0         0

root@ubuntu:/etc/keepalived# /etc/init.d/nginxstop

root@ubuntu:/etc/keepalived# ipvsadm-L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  14.17.64.13:0 wrr persistent50

-> 14.17.64.4:0                 Route   1     0          0

-> 14.17.64.5:0                 Route   1     0          0

-> 14.17.64.6:0                 Route   1     0          0

-> 14.17.64.7:0                 Route   1     3          0

-> 14.17.64.8:0                 Route   1     0          0

-> 14.17.64.9:0                 Route   1     0          0

-> 14.17.64.11:0                Route   1     1          1

-> 14.17.64.12:0                Route   1     0          0

TCP  14.17.64.14:0 wrr persistent50

-> 14.17.64.4:0                 Route   1     0          0

-> 14.17.64.5:0                 Route   1     0          0

-> 14.17.64.6:0                 Route   1     0          0

-> 14.17.64.7:0                 Route   1     0          0

-> 14.17.64.8:0                 Route   1     0          0

-> 14.17.64.9:0                 Route   1     0          0

-> 14.17.64.11:0                Route   1     0          0

-> 14.17.64.12:0                Route   1     0          0

启动真实服务器上nginx后,该真实服务器又加入ipvsadm转发规则中。

root@ubuntu:/etc/keepalived# /etc/init.d/nginxstart

root@ubuntu:/etc/keepalived# ipvsadm-L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  14.17.64.13:0 wrr persistent50

-> 14.17.64.4:0                 Route   1     0          0

-> 14.17.64.5:0                 Route   1     0          0

-> 14.17.64.6:0                 Route   1     0          0

-> 14.17.64.7:0                 Route   1     3          0

-> 14.17.64.8:0                 Route   1     0          0

-> 14.17.64.9:0                 Route   1     0          0

-> 14.17.64.10:0                Route   1     1          1

-> 14.17.64.11:0                Route   1      0         0

-> 14.17.64.12:0                Route   1     0          0

TCP  14.17.64.14:0 wrr persistent50

-> 14.17.64.4:0                 Route   1     0          0

-> 14.17.64.5:0                 Route   1     0          0

-> 14.17.64.6:0                 Route   1     0          0

-> 14.17.64.7:0                 Route   1     0          0

-> 14.17.64.8:0                 Route   1     0          0

-> 14.17.64.9:0                 Route  1      0          0

-> 14.17.64.10:0                Route   1     0          0

-> 14.17.64.11:0                Route   1     0          0

-> 14.17.64.12:0                Route   1     0          0

从测试结果得知,keepalived真实服务器保活测试成功。

5、LVS高可用自动切换测试

由于都是在IDC机房服务器上操作,不可能断掉网卡,所以重启一台LVS服务器。

VIP接管查看:

其中一台LVS接管了14.17.64.14:

root@ubuntu:~# ip add |grep14.17.64

inet 14.17.64.2/24 brd14.17.64.255 scope global p1p1

inet 14.17.64.14/32 scopeglobal p1p1

另一台LVS接管了14.17.64.13:

root@ubuntu:/etc/keepalived# ipadd |grep 14.17.64

inet 14.17.64.3/24 brd14.17.64.255 scope global p1p1

inet 14.17.64.13/32 scopeglobal p1p1

把ipvsadm和keepalived加入开机自启动:

#cat  /etc/rc.local

ipvsadm

/etc/init.d/keepalived start

重启14.17.64.3服务器查看VIP切换情况:

经过测试,重启几秒钟后,14.17.64.2服务器就把VIP 14.17.64.13接管了过来。同时使用ssh登录14.17.64.13测试,能够正常的转发。

root@ubuntu:~# ip add|grep 14.17.64

inet 14.17.64.2/24 brd14.17.64.255 scope global p1p1

inet 14.17.64.14/32 scopeglobal p1p1

inet 14.17.64.13/32 scopeglobal p1p1

root@ubuntu:~# ipvsadm -L -c      #从这儿可以看出,14.17.64.13转发到10真实服务器上。

IPVS connection entries

pro expire state      source             virtual            destination

TCP 14:58  ESTABLISHED242.103.143.219.broad.bj.bj.dynamic.163data.com.cn:54106 14.17.64.13:62222  14.17.64.10:62222

在lvs服务器重新启动之后,还会把VIP抢占回来

root@ubuntu:~# ip add|grep 14.17.64

inet 14.17.64.2/24 brd14.17.64.255 scope global p1p1

inet 14.17.64.14/32 scopeglobal p1p1

到此,LVS+Keepalived高可用搭建完成,并能实现多端口的转发(即转发所有TCP端口)。

思考:

此处只部署了两台LVS,如果要部署更多LVS,也是同样的配置,因为keepalived的心跳报文是广播的,所以只要在同一个局域网内,无论多少个keepalived程序都能够进行选举与VIP接管。

Ubuntu构建LVS+Keepalived高可用负载均衡集群【生产环境部署】的更多相关文章

  1. 测试LVS+Keepalived高可用负载均衡集群

    测试LVS+Keepalived高可用负载均衡集群 1. 启动LVS高可用集群服务 此时查看Keepalived服务的系统日志信息如下: [root@localhost ~]# tail -f /va ...

  2. LVS+Keepalived高可用负载均衡集群架构实验-01

    一.为什么要使用负载均衡技术? 1.系统高可用性 2.  系统可扩展性 3.  负载均衡能力 LVS+keepalived能很好的实现以上的要求,LVS提供负载均衡,keepalived提供健康检查, ...

  3. 配置LVS + Keepalived高可用负载均衡集群之图文教程

    负载均衡系统可以选用LVS方案,而为避免Director Server单点故障引起系统崩溃,我们可以选用LVS+Keepalived组合保证高可用性.  重点:每个节点时间都同步哈! C++代码 [r ...

  4. Keepalived+LVS(dr)高可用负载均衡集群的实现

    一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+lvs双主高可用负载均衡集群及LAMP应用keepalived-1.2 ...

  5. LVS+Keepalived搭建MyCAT高可用负载均衡集群

    LVS+Keepalived 介绍 LVS LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国 ...

  6. Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群

    一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...

  7. LVS+Keepalived 实现高可用负载均衡集群

    LVS+Keepalived  实现高可用负载均衡集群     随着网站业务量的增长,网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如 F5 ,Array又太贵,你们又是创业型互联公司如何有效 ...

  8. RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群

    本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群.受限于自身条件,本 ...

  9. Keepalived+Nginx实现高可用负载均衡集群

    一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+nginx双主高可用负载均衡集群及LAMP应用keepalived-1 ...

随机推荐

  1. Fiddler抓包工具(捕获Android数据包)

    一:获取Android的数据包必须要在同一个网络中 移动设备访问网络原理 先看看移动设备是怎么去访问网络,如图所示,可以看到,移动端的数据包是从wifi出去的. 可以看得出,移动端的数据包,都是要走w ...

  2. Java虚拟机栈---本地方法栈

    1.Java虚拟机栈(Java Virtual Machine Stacks) 线程私有,它的生命周期与线程相同.描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack ...

  3. webstorm中不能识别react、vue alias 路径别名符号

    https://blog.csdn.net/weixin_37939942/article/details/89388466 因为我平时比较喜欢使用ws做开发,所以在使用vue或react的时候只要使 ...

  4. 二十一.构建memcached服务、LNMP+memcached、PHP的本地Session信息、PHP实现session共享

    proxy client web1 web2   1.构建memcached服务 ]# yum -y install memcached ]# cat /etc/sysconfig/memcached ...

  5. mac 安装 mysql 5.7

    下载 https://dev.mysql.com/downloads/mysql/5.7.html#downloads 下一步,经过一系列安装步骤后,会跳出一个这样的界面,请注意!!! 上面红框中是你 ...

  6. linux环境下完成jenkins的环境搭建

    环境搭建部署: 请完成jenkins的环境搭建,需安装tomcat,mysql. Jenkins 地址:  https://jenkins.io/download/ 步骤分析: 1.全部操作使用普通用 ...

  7. (转)supervisor

    转载:https://www.cnblogs.com/zhoujinyi/p/6073705.html 进程管理supervisor的简单说明 背景: 项目中遇到有些脚本需要通过后台进程运行,保证不被 ...

  8. 走进JavaWeb技术世界10:从JavaBean讲到Spring

    Java 帝国之Java bean (上) 转自: 刘欣 码农翻身 2016-05-27 前言: 最近看到到spring 的bean 配置, 突然想到可能很多人不一定知道这个叫bean的东西的来龙去脉 ...

  9. C语言--输入输出格式

    一.PTA实验作业 题目1:7-3 温度转换 本题要求编写程序,计算华氏温度150°F对应的摄氏温度.计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型. 1 ...

  10. 虚拟机VMware安装及Linux系统基础配置(CentOS 7)

    PS: 我是 VMware 14 安装 CentOS 7 来配置Linux虚拟机,想要安装 Ubuntu 18.04 的可以自行其他搜或者参考博客:https://blog.csdn.net/gith ...