文档章节

LVS负载均衡集群服务搭建详解(二)

linuxprobe16
 linuxprobe16
发布于 2016/11/13 10:32
字数 2438
阅读 37
收藏 0
点赞 0
评论 0

lvs-nat模型构建

1.lvs-nat模型示意图
本次构建的lvs-nat模型的示意图如下,其中所有的服务器和测试客户端均使用VMware虚拟机模拟,所使用的CentOS 7
VS内核都支持ipvs功能,且安装ipvsadm控制书写lvs规则工具。
RS端两台服务器为httpd服务器做请求的负载均衡。
注意:
1) 客户端可以使用Windows上的浏览器,会后缓存影响结果,所以采用CentOS上的curl命令请求http协议显示更加直观
2) DIP上不能配置iptables规则
LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)

2.VS网卡配置
(1)增加网卡
在"虚拟机设置"中增加一个网络适配器设备,并将其自定义特定网络为VMnet2模式,此处为了模拟负载均衡服务器的两张网卡处于不同网段
LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)

(2)配置VS两张网卡的IP地址

[root@localhost ~]# nmtui # CentOS 7 文本图形界面配置网卡命令
[root@localhost ~]# systemctl start network.service

LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)
注意:
网络适配器1(172.16.249.57)模拟为外网网卡,网络适配器2(192.168.100.1)模拟为内网,且该网卡的Ip地址要和RS服务器得ip在同一网段,DIP作为RIP的网络调度(网关),无需配置GATEWAY

[root@localhost~]# ifconfig

LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)

3.RS网卡配置
此处使用两台CentOS 7虚拟机作为负载均衡后端真实响应主机,安装RPM包格式httpd服务,并启动服务。nmtui命令配置网卡信息,RS1的IP:192.168.100.2,RS2的IP:192.168.100.3,RIP和DIP在同一网段,虚拟机网卡和DIP同时匹配值为VMnet2模式,且两台RS服务器主机网关指向DIP:192.168.100.1

[root@localhost~]# yum install -y httpd
[root@localhost ~]# systemctl start httpd.service

注意:安装完成后在各httpd服务器上配置测试页面,/var/www/html/index.html.

[root@localhost ~]# nmtui # 配置方法同上,此处省略
… ...
[root@localhost ~]# systemctl start network.service
[root@localhost~]# ifconfig

LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)

4.测试所有主机是否能够通信
用ping命令测试各节点的通信,例如RIP1和VIP、DIP、RIP2之间是否能够通信

[root@localhost ~]# ping IPADDR

5.VS主机:核心转发和安装ipvsadm
(1)安装ipvsadm组件

[root@localhost ~]# yum install -y ipvsadm

(2)启动网卡间核心转发功能

[root@localhost ~]# sysctl -w net.ipv4.ip_forward=1
[root@localhost~]# cat /proc/sys/net/ipv4/ip_forward

LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)

6.VS主机:定义配置lvs-nat服务(此处采用rr算法)
(1)定义ipvsadm负载均衡集群规则,并查看
此处定义DIP是以-s指定为rr算法进行轮询调度,-m指定模式为lvs-nat,配置命令如下:

[root@localhost~]# ipvsadm -A -t 172.16.249.57:80 -s rr
[root@localhost~]# ipvsadm -a -t 172.16.249.57:80 -r 192.168.100.2:80 -m
[root@localhost~]# ipvsadm -a -t 172.16.249.57:80 -r 192.168.100.3:80 -m
[root@localhost~]# ipvsadm -L -n

LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)

(2)Client客户机测试
在客户端主机上使用curl命令对VIP发起请求,负载均衡服务器会将请求按照rr算法依次将请求调度给不同的主机进行处理,依次请求给分发给192.168.100.2和192.168.100.3主机响应。

[root@localhost~]# curl http://172.16.249.57

LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)

7.VS主机:定义配置lvs-nat服务(此处采用wrr算法)
(1)定义ipvsadm负载均衡集群规则,并查看
此处将在上面lvs-nat的rr的基础上进行修改,改成wrr加权轮询算法;将192.168.100.2的权重设置为1,192.168.100.3的权重设置为3。

[root@localhost~]# ipvsadm -E -t 172.16.249.57:80 -s wrr
[root@localhost~]# ipvsadm -e -t 172.16.249.57:80 -r 192.168.100.2 -w 1 -m
[root@localhost~]# ipvsadm -e -t 172.16.249.57:80 -r 192.168.100.3 -w 1 -m
[root@localhost~]# ipvsadm -L -n

LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)

(2)Client客户机测试
在客户端主机用curl发起请求,负载均衡主机VS会将其按照权重大小转发给各个主机,四个请求有三个发给了192.168.100.3请求响应,一个发给了192.168.100.2主机处理。并以此算法做轮询负载请求

[root@localhost~]# curl http://172.16.249.57

LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)

lvs-dr模型构建

1.lvs-dr模型示意图
三台主机为虚拟机CentOS 7,每台主机仅有一块网卡,且使用桥接方式都指向外部网络的网关172.16.100.1
LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)

2.配置VS和RS服务器的VIP
此处的VIP均已别名的形式配置在往卡上,VS是配置在对外通信的DIP的网卡上;RS配置在lo本地回环网卡
注意:此时配置的VIP的子网掩码必须为255.255.255.255,广播地址为自己本身

VS:[root@localhost~]# ifconfig eno16777736:0 172.16.50.50 netmask 255.255.255.255 broadcast172.16.50.50 up
RS:[root@localhost~]# ifconfig lo:0 172.16.50.50 netmask 255.255.255.255broadcast 172.16.50.50 up

3.RS服务器上配置路由

[root@localhost~]# route add -host 172.16.50.50 dev lo:0

LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)

4.RS服务器配置APR内核参数修改

[root@localhost~]# ll /proc/sys/net/ipv4/conf

LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)
(1)ARP响应行为和ARP解析行为内核参数:
1)arp_annouce定义通告级别
0:默认级别,将本地的任何接口上的配置的地址都在网络中通告
1:尽量避免向本主机上的其他网卡进行网络通信,特殊情况下其他接口也可以
2:总是使用最佳网络地址接口(仅使用定义的网卡接口在同网络通信)
2)arp_ignore定义响应级别(0-8九个级别),响应时忽略方式
0:都全都响应
1:只对从本接口进入的请求响应,且本接口地址是个网络地址
… …
注释:一般使用arp_annouce=2,arp_ignore=1

(2)配置各RS主机参数
注意:all必须配置、eno16777736(本地)和lo两个可以同时全部配置或者配置其中一个
RealServer内核参数:

#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#echo 1 > /proc/sys/net/ipv4/conf/INTERFACE/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/INTERFACE/arp_announce

注意:INTERFACE为你的物理接口;此处网卡接口指的是eno16777736和lo
LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)

5.VS主机:定义配置lvs-dr模式(此处采用rr算法)
(1)配置查看

[root@localhost~]# ipvsadm -A -t 172.16.50.50:80 -s rr
[root@localhost~]# ipvsadm -a -t 172.16.50.50:80 -r 172.16.200.10 -g
[root@localhost~]# ipvsadm -a -t 172.16.50.50:80 -r 172.16.200.11 -g
[root@localhost~]# ipvsadm -L -n

LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)

(2)测试

[root@localhost~]# curl http://172.16.50.50

因为基于rr算法调度,依次分发给RS主机

通过防火墙标记来定义lvs

1.FWM防火墙标记功能
防火墙标记可以实现多个集群服务绑定为同一个,实现统一调度;将共享一组RS的集群服务统一进行定义
FWM基于iptables的mangle表实现防护墙标记功能,定义标记做策略路由

2.FWM定义集群的方式
(1)在director上netfilter的mangle表的PREROUTING定义用于"打标"的规则

[root@localhost~]#iptables -t mangle -A PREROUTING -d $vip -p $protocol --dport $port -j MARK--set-mark #

$vip:VIP地址
$protocol:协议
$port:协议端口

(2)基于FWM定义集群服务:

[root@localhost~]#ipvsadm -A -f # -s scheduler

3.实例演示

[root@localhost~]# iptables -t mangle -A PREROUTING -d 172.16.50.50 -p tcp --dport 80 -j MARK--set-mark 5
[root@localhost~]# ipvsadm -A -f 5 -s rr
[root@localhost~]# ipvsadm -a -f 5 -r 172.16.200.10 -g
[root@localhost~]# ipvsadm -a -f 5 -r 172.16.200.11 -g

LVS负载均衡集群服务搭建详解(二)LVS负载均衡集群服务搭建详解(二)

LVS持久连接功能:lvs persistence

1.lvs persistence功能
无论ipvs使用何种scheduler,其都能够实现在指定时间范围内始终将来自同一个ip地址的请求发往同一个RS;实现方式和lvs调度的十种算法无关,通过lvs持久连接模板(hash表)实现,当超过自定义的可持节连接时长候再根据LVS算法本身进行调度。
ipvsadm命令中-p选项实现,在-p后不指定具体数字(单位:秒),默认为300,到时候会自动延长2分钟,对于web本身就是15秒

2.模式
(1)每端口持久(PPC)
客户端对同一服务端口发起请求,会基于该服务的端口实现请求在一段时间内对同一RS服务器持久连接;
例如:有两台主机做为RS服务器做http和hssh的两种服务的集群,仅http做每端口持久,Client请求会实现绑定在,但是22号端口请求不会绑定在同一台RS
(2)每客户端持久(PCC):定义tcp或udp协议的0号端口为集群服务端口
director会将用户的任何请求都识别为集群服务,并向RS进行调度;同一客户端的请求任何端口都发往同一台第一次选定的RS服务器
(3)每防火墙标记持久(PFWMC)
将两个或两个以上服务通过防火墙打标绑定在一起,这些服务的请求实现同时定向与同一台RS服务器,服务绑定同一RS
实例:
lvs-dr模式下以rr算法绑定http和https服务

[root@localhost~]# iptables -t mangle -A PREROUTING -d 172.16.100.9 -p tcp --dport 80 -j MARK--set-mark 99
[root@localhost~]# iptables -t mangle -A PREROUTING -d 172.16.100.9 -p tcp --dport 443 -j MARK--set-mark 99
[root@localhost~]# ipvsadm -A -f 99 -s rr -p
[root@localhost~]# ipvsadm -a -f 99 -r 172.16.100.68 -g
[root@localhost~]# ipvsadm -a -f 99 -r 172.16.100.69 -g

附录:LVS-DR类型RS脚本示例

#!/bin/bash
#
vip=172.16.50.50
interface="lo:0"
case$1 in
start)
echo1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig$interface $vip broadcast $vip netmask 255.255.255.255 up
routeadd -host $vip dev $interface
;;
stop)
echo0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo0 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig$interface down
;;
status)
ififconfig lo:0 |grep $vip &> /dev/null; then
echo"ipvs is running."
else
echo"ipvs is stopped."
fi
;;
*)
echo"Usage: `basename $0` {start|stop|status}"
exit1
esac

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/

本文转载自:http://www.linuxprobe.com/lvs-load-balancing-cluster-service-2.html

共有 人打赏支持
linuxprobe16
粉丝 8
博文 696
码字总数 133617
作品 0
河东
《Linux云计算从入门到精通》系列实战笔记全放送

为了方便Linux云计算爱好者的学习查看,马哥Linx云计算团队特别整理了《Linux云计算从入门到精通》年度重磅大放送,囊括了整个学习过程的学习精华,内容全部由马哥Linux云计算学员撰写,欢迎...

898009427 ⋅ 2017/11/21 ⋅ 0

Keepalived安装与配置(代码详解)

Keepalived安装与配置 标签:lvs ha keepalived ipvs 负载均衡 一、简介 Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层、第4层和第7层交换...

rshare ⋅ 2017/11/03 ⋅ 0

linu实现负载均衡集群的-LVS-nat模式

一.集群,负载均衡概述 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心...

腿快抖断了 ⋅ 2017/11/04 ⋅ 0

《大型网站技术实践》借助LVS+Keepalived实现负载均衡

一、负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧   当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群...

passionfly ⋅ 2015/09/04 ⋅ 0

服务器集群技术如日中天 借助LVS+Keepalived实现负载均衡

一、负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以...

swearyd457 ⋅ 2015/08/17 ⋅ 0

LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法)

-------------------LVS专题------------------------ LVS原理详解及部署之一:ARP原理准备 LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) LVS原理详解及部署之三:手动部署...

蓝狐乐队 ⋅ 2016/07/24 ⋅ 0

红帽集群套件RHCS

一、什么是RHCS   RHCS是RedHatClusterSuite的缩写,也就是红帽子集群套件,RHCS是一个能够提供高可用性、高可靠性、负载均衡、存储共享且经济廉价的集群工具集合,它将集群系统中三大集群...

鱼在天上游 ⋅ 2014/05/01 ⋅ 0

负载均衡详解

面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如 (Go,Scala)等,当单机容量达到极限时,我们需要考虑业...

一贱书生 ⋅ 2016/11/10 ⋅ 0

lvs和keeplived的工作原理详解

一、lvs的工作原理 使用集群的技术和liunx的操作系统实现一个高性能、高可用的服务器。可伸缩性、可靠性、很好的管理性。 特点:可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(...

lampit凌宇 ⋅ 2017/06/23 ⋅ 0

Keepalived配置文件详解

Keepalived的配置非常简单,仅仅需要一个配置文件即可完成HA cluster和lvs服务节点监控功能,Keepalived的安装已经在上面章节进行了介绍,在通过Keepalived搭建高可用的LVS集群实例中,主、备...

90xa ⋅ 2015/12/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

关于“幂等”操作

一个幂等(idempotent)操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同. 开发中, 我们经常考虑幂等操作的场景有“接口调用”、“MQ消费”、“自动任务”等 接口调用, 可能出现...

零二一七 ⋅ 23分钟前 ⋅ 0

Dubbo服务服务暴露之ProxyFactory Invoker

Dubbo服务暴露过程中有涉及到调用ProxyFactory 中方法获取Invoker对象的过程,现在我们来深究下源码,来看下这个过程是在做些什么,返回的Invoker 对象是什么,我们来看一下代码的切入点: ...

哲别0 ⋅ 37分钟前 ⋅ 0

GP两种连接方式性能测试

GP两种连接方式性能测试 Pivotal import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class GPQueryStrin......

仔仔1993 ⋅ 41分钟前 ⋅ 0

jsonrpc-4j代码解析

解析文件 AutoJsonRpcServiceImplExporter JsonServiceExporter AutoJsonRpcServiceImplExporter 路径:com.googlecode.jsonrpc4j.spring.AutoJsonRpcServiceImplExporter AutoJsonRpcServi......

郭恩洲_OSC博客 ⋅ 今天 ⋅ 0

百度搜索

from selenium import webdriver import time brower=webdriver.Firefox() brower.get('http://www.baidu.com') input=brower.find_element_by_id('kw') input.send_keys('中南大学') time.s......

南桥北木 ⋅ 今天 ⋅ 0

tomcat 日志记录器

1、日志记录器是记录消息的组件 日志记录器需要与某个servlet 容器相关联 2、Logger 接口 共定义了5种日志级别:FATAL、ERROR、WARNING、INFORMATION、DEBUGGER setVerbosity 设置级别 setC...

职业搬砖20年 ⋅ 今天 ⋅ 0

Thrift RPC实战(三) Thrift序列化机制

1.Thrift基础架构 Thrift是一个客户端和服务端的架构体系,数据通过socket传输; 具有自己内部定义的传输协议规范(TProtocol)和传输数据标准(TTransports); 通过IDL脚本对传输数据的数据结构...

lemonLove ⋅ 今天 ⋅ 0

网站建设就要像2018世界杯的俄罗斯队大杀四方[图]

今天心情不错,因为昨天晚上观看了世界杯比赛,尤其是对俄罗斯队的大杀四方感到十分霸气侧漏啊,因此我联想到了自己的博客网站,我的博客是去年年底上线的,一直想建设一个关于读书和读后感作...

原创小博客 ⋅ 今天 ⋅ 0

linux 信号机制

signal(SIGPIPE, SIG_IGN); TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端只是收到FIN包. 按照TCP协...

xxdd ⋅ 今天 ⋅ 0

my.cnf, my-small.cnf, my-medium.cnf, my-large.cnf

1. my-small.cnf # Example MySQL config file for small systems.## This is for a system with little memory (<= 64M) where MySQL is only used# from time to time and it's importa......

周云台 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部