LVS入门篇(五)之LVS+Keepalived实战
一、实验架构和环境说明

(1)本次基于VMware Workstation搭建一个四台Linux(CentOS 7.4)系统所构成的一个服务器集群,其中两台负载均衡服务器(一台为主机,另一台为备机),另外两台作为真实的Web服务器。
(2)本次实验基于DR负载均衡模式,设置了一个VIP(Virtual IP)为192.168.56.20,用户只需要访问这个IP地址即可获得网页服务。其中,负载均衡主机为192.168.56.12,备机为192.168.56.13。Web服务器RS1为192.168.56.11,Web服务器B为192.168.56.14。
二、配置2台web服务器
(1)在realserver上部署Nginx并配置主页
[root@rs1 ~]# yum install -y nginx
[root@rs2 ~]# yum install -y nginx
[root@rs1 ~]# echo "welcome to use RS1 192.168.56.11" > /usr/share/nginx/html/index.html
[root@rs1 ~]# echo "welcome to use RS1 192.168.56.14" > /usr/share/nginx/html/index.html
[root@rs1 ~]# curl 192.168.56.11
<h1>welcome to use RS1 192.168.56.11</h1>
[root@rs2 ~]# curl 192.168.56.14
<h1>welcome to use RS1 192.168.56.14</h1>
(2)在rs1和rs2上编辑realserver脚本并执行,此处贴rs1脚本详情
[root@rs1 ~]# vim /etc/init.d/realserver
#!/bin/bash
SNS_VIP=192.168.56.20
/etc/init.d/functions
case "$1" in
start)
ifconfig lo: $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:
echo "" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null >&
echo "RealServer Start OK"
;;
stop)
ifconfig lo: down
route del $SNS_VIP >/dev/null >&
echo "" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit
esac
exit [root@rs1 ~]# chmod +x /etc/init.d/realserver
[root@rs1 ~]# /etc/init.d/realserver start
RealServer Start OK
三、配置主负载均衡器
(1)lb01和lb02上安装Keepalived
[root@lb01 ~]# yum install -y keepalived
[root@lb02 ~]# yum install -y keepalived
(2)编辑lb01和lb02上的keepalived.conf配置文件
[root@lb01 ~]# cp /etc/keepalived/keepalived.conf{,.bak} #备份源文件
[root@lb01 ~]# > /etc/keepalived/keepalived.conf #清空源文件
[root@lb01 ~]# vim /etc/keepalived/keepalived.conf #编辑keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
@qq.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout
router_id lb01
}
vrrp_instance VI_1 {
state MASTER #指定Keepalived的角色,MASTER为主,BACKUP为备
interface eth0
virtual_router_id 55 #虚拟路由id号,主备需要一直
priority 150 #优先级,数值越大,优先级越高
advert_int 1 #检测间隔,默认为1s
authentication {
auth_type PASS #认证类型
auth_pass 1111 #认证密码
}
virtual_ipaddress {
192.168.56.20/ #设置DR的虚拟ip,可以多设,一行一个
}
}
virtual_server 192.168.56.20 { #定义LVS对外提供服务的VIP为192.168.56.20和port为80
delay_loop 6 #设置健康检查时间,单位为秒
lb_algo wrr #设置负载均衡调度算法为wrr
lb_kind DR #设置LVS实现负载均衡机制为DR模式
nat_mask 255.255.255.0
persistence_timeout 20 #会话保持超时配置
protocol TCP #使用TCP协议检查realserver的状态
real_server 192.168.56.11 { #配置真实服务器节点和端口
weight 100 #权重
TCP_CHECK {
connect_timeout 10 #连接超时,单位为秒
nb_get_retry 3 #重试连接次数
connect_port 80 #连接端口
}
}
real_server 192.168.56.14 {
weight
TCP_CHECK {
connect_timeout
nb_get_retry
connect_port
}
}
}
从负载均衡服务器与主负载服务器大致相同,只是在keepalived的配置文件中需要改以下两处:
(1)将state由MASTER改为BACKUP
(2)将priority由100改为99
配置完成后,启动Keepalived
[root@lb01 ~]# systemctl start keepalived
[root@lb02 ~]# systemctl start keepalived
[root@lb01 ~]# ipvsadm -L -n
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.56.20: wrr persistent
-> 192.168.56.11: Route
-> 192.168.56.14: Route
[root@lb02 ~]# ipvsadm -L -n
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.56.20: wrr persistent
-> 192.168.56.11: Route
-> 192.168.56.14: Route
[root@lb01 ~]# ip addr |grep 192.168.56.20 #查看lb01上是否存在VIP
inet 192.168.56.20/ scope global secondary eth0
[root@lb02 ~]# ip addr |grep 192.168.56.20 #查看lb02上是否存在VIP,如果有说明存在脑裂
四、验证测试访问http://192.168.56.20
(1)指定请求的均衡转发:因为两个Web服务器的权重都一样,所以会依次转发给两个Web服务器

(2)Web服务器发生故障时
模拟停止192.168.56.14,暂停其Nginx服务,再进行访192.168.56.20,可以看到只会从11上获取页面
[root@rs2 html]# /etc/init.d/nginx stop
Stopping nginx: [ OK ]

从负载均衡器的状态监控上,也可以看到192.168.56.14这台服务器已经从集群中剔除,当故障修复后,再查看调度器状态信息,可以看到rs2已经重新加入集群当中
[root@lb01 ~]# ipvsadm -L -n #lb01上查看调度信息,可以看到rs2已经从集群中剔除
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.56.20: wrr persistent
-> 192.168.56.11: Route
[root@rs2 html]# /etc/init.d/nginx start #重启rs2上的nginx服务
Starting nginx: [ OK ]
[root@lb01 ~]# ipvsadm -L -n #可以看到rs2又重新加入到集群当中提供服务
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.56.20: wrr persistent
-> 192.168.56.11: Route
-> 192.168.56.14: Route
(3)主负载均衡服务器发生故障时,备机立即充当主机角色提供请求转发服务
模拟停止lb01上的keepalived服务,可以看到lb01上的vip漂移到了lb02上,但继续访问vip却不受影响。当主负载均衡器(lb01)服务恢复时,vip又会重新漂移到主负载均衡器上(lb01)
[root@lb01 ~]# ip addr |grep 192.168.56.20
inet 192.168.56.20/ scope global secondary eth0
[root@lb01 ~]# systemctl stop keepalived
[root@lb01 ~]# ip addr |grep 192.168.56.20
[root@lb02 ~]# ip addr |grep 192.168.56.20
inet 192.168.56.20/ scope global secondary eth0

LVS入门篇(五)之LVS+Keepalived实战的更多相关文章
- 【SSRS】入门篇(五) -- 设置报表格式
原文:[SSRS]入门篇(五) -- 设置报表格式 在上一节 [SSRS]入门篇(四) -- 向报表添加数据 我们设置好了报表,并可以预览到数据,如下图: 当报表完成后,有个重要的工作就是美化报表格式 ...
- LVS入门篇(四)之LVS实战
一.LVS的NAT模式实战 1.环境说明: HOST OS role remask 192.168.56.12 Centos 7.4 LVS调度器(1.2.7) VIP:192.168.0.104 1 ...
- LVS入门篇(二)之LVS基础
1. LVS介绍 LVS是Linux虚拟服务器(LinuxVirtualServers),使用负载均衡技术将多台服务器组成一个虚拟服务器.它为适应快速增长的网络访问需求提供了一个负载能力易于扩展,而价 ...
- LVS入门篇(三)之LVS的工作模式和调度算法
1.NAT模型 (1)原理图: ①.客户端(200.10.10.1)将请求发往前端的负载均衡器(114.100.80.10),请求报文源地址是CIP(客户端IP),后面统称为CIP),目标地址为VIP ...
- LVS入门篇(一)之ARP协议
1.概念 地址解析协议,即ARP(AddressResolutionProtocol),是根据IP地址获取物理MAC地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到网络上 ...
- c++入门篇五
默认参数: //默认参数//函数的默认参数,参数后面有'='//函数参数注意事项,如有一个位置有了默认参数//那么从该位置的后面就必须要有参数 , ) { //b有默认参数,b的后面也应该要有默认参数 ...
- redis的入门篇---五种数据类型及基本操作
查看所有的key keys * 清空所有的key flushall 检查key是否存在 exists key 设置已存在的key的时长 expire key //设置key为10s 查看key还剩多少 ...
- 【SSRS】入门篇(六) -- 分组和总计
原文:[SSRS]入门篇(六) -- 分组和总计 通过[SSRS]入门篇(五) -- 设置报表格式的设计,一份简单格式的报表已产生,如下图: 这节来说说分组和总计: 根据日期.订单对数据进行分组 添加 ...
- .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了
写在前面 上篇文章我们讲了如在在实际项目开发中使用Git来进行代码的版本控制,当然介绍的都是比较常用的功能.今天我再带着大家一起熟悉下一个ORM框架Dapper,实例代码的演示编写完成后我会通过Git ...
随机推荐
- Nginx学习.md
正常运行的必备配置 user Syntax: user user [group]; Default: user nobody nobody; Context: main 指定运行worker进程的用户 ...
- 2018-2019-2 网络对抗技术 20165322 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165322 Exp4 恶意代码分析 目录 实验内容与步骤 系统运行监控 恶意软件分析 实验过程中遇到的问题 基础问题回答 实验总结与体会 实验内容与步骤 系 ...
- Windows下Python3.6安装PIL
PIL是Python平台事实上的图像处理标准库,需要用到图片的需要导入该模块 一 安装pip https://pip.pypa.io/en/stable/installing/#id8 python ...
- mavenWeb工程建立步骤
1.File >> New >>other...,在New窗口中打开Maven,选中Maven Project,Next. 2.在New Maven Project弹出窗口中去 ...
- PyTorch Softmax
PyTorch provides 2 kinds of Softmax class. The one is applying softmax along a certain dimension. Th ...
- background-position详解
一.background-position:left top; 背景图片的左上角和容器(container)的左上角对齐,超出的部分隐藏.等同于 background-position:0,0;也等同 ...
- 【SP2713 GSS4 - Can you answer these queries IV】 题解
题目链接:https://www.luogu.org/problemnew/show/SP2713 真暴力啊. 开方你开就是了,开上6次就都没了. #include <cmath> #in ...
- 【腾讯敏捷转型No.6】如何打造称手的敏捷工具
通常情况下,大家对于敏捷的感受就是:大家一起来开站立晨会啦!然后一大早,大家拿着早餐,围成一个圈,听一个人在讲话. 在很多公司,决定采用敏捷之后,都会从晨会开始,因为很多人觉得敏捷其它模块都很难学习, ...
- Java面向对象的三个特征
首先,Java面向对象的三大特征: 三大特征: ▪ 封装 ▪ 继承 ▪ 多态 首先面向对象的第一个特性 封装 : 封装:就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操 ...
- js数组定义和方法 (包含ES5新增数组方法)
数组Array 1. 数组定义 一系列数据的集合成为数组.数组的元素可以为任何类型的数据(包括数组,函数等),每个元素之间用逗号隔开,数组格式:[1,2,3]. 2. 数组创建方式 (1) 字面量方法 ...