负载均衡集群企业级应用实战-LVS

实现基于LVS负载均衡集群的电商网站架构

  背景:随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢,面对此场景,单纯靠单台LNMP的架构已经无法承载更多的用户访问,此时需要用负载均衡技术,对网站容量进行扩充,来解决承载的问题。scale out? scale up?

总项目流程图,详见 http://www.cnblogs.com/along21/p/8000812.html

LVS详解和相关代码段含义详见 http://www.cnblogs.com/along21/p/7784394.html

实现基于LVS负载均衡集群的电商网站架构

前景:随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢,面对此场景,单纯靠单台LNMP的架构已经无法承载更多的用户访问,此时需要用负载均衡技术,对网站容量进行扩充,来解决承载的问题。scale out? scale up?

实验前准备:

1、ipvsadm

yum install ipvsadm -y #在LVS-server安装lvs管理软件

程序包:ipvsadm(LVS管理工具)

Unit File: ipvsadm.service

主程序:/usr/sbin/ipvsadm

规则保存工具:/usr/sbin/ipvsadm-save

规则重载工具:/usr/sbin/ipvsadm-restore

配置文件:/etc/sysconfig/ipvsadm-config

2、grep -i -C 10 "ipvs" /boot/config-VERSION-RELEASE.x86_64 查看内核是否支持IPVS

3、iptables -F && setenforing 清空防火墙策略,关闭selinux

实战一:LVS的NAT模式实现负载均衡

实战架构图:

1、环境准备:

机器名称

IP配置

服务角色

备注

lvs-server

VIP:172.17.1.6

DIP:192.168.30.106

负载均衡器

开启路由功能

(VIP桥接、DIP仅主机)

rs01

RIP:192.168.30.107

后端服务器

网关指向DIP(仅主机)

rs02

RIP:192.168.30.7

后端服务器

网关指向DIP(仅主机)

注意:确保rs 在一个网段,且只有一个网段

2、在directory 负载均衡器上

yum -y install ipvsadm

① 开启一个基于80端口的虚拟服务vip,调度方式为wrr

ipvsadm -A -t 172.17.1.6:80 -s wrr

② 配置web服务后端real server  为nat工作方式  权重为1

ipvsadm -a -t 172.17.1.6:80 -r 192.168.30.107:80 -m -w 1

ipvsadm -a -t 172.17.1.6:80 -r 192.168.30.7:80 -m -w 1

③ 修改内核配置,开启路由转发

vim /etc/sysctl.conf 该一行

net.ipv4.ip_forward = 1

sysctl -p 读一些,使其生效

3、在两台real server 上设置

① 开启实现准备好的web网页服务

systemctl start nginx

systemctl start php-mysql

systemctl start mariadb

② 把网关指向directory

route add default gw 192.168.30.106

4、自己的windows 做客户端,通过vip 172.17.1.6访问web服务,调度成功

实战二:LVS的DR 模式实现负载均衡

实战架构图:

1、环境准备

机器名称

IP配置

服务角色

lvs-server

VIP:172.17.100.100

负载均衡器

rs01

RIP:172.17.1.7

后端服务器

rs02

RIP:172.17.22.22

后端服务器

注意:lvs-server 和rs 要在一个网段,rs只有一个网段

2、在lvs-server 上设置

① 配置VIP到本地网卡别名,广播只自己响应

ifconfig eth0:0 172.17.100.100 broadcast 172.17.100.100 netmask 255.255.255.255 up

route add -host 172.17.100.100 dev eth0:0 给网卡别名指向网关

② ipvsadm 策略配置

开启一个基于80端口的虚拟服务,调度方式为wrr

ipvsadm -A -t 172.17.100.100:80 -s wrr

配置web服务后端real server  为DR工作方式  权重为1

ipvsadm -a -t 172.17.100.100:80 -r 172.17.22.22:80 -g -w 1

ipvsadm -a -t 172.17.100.100:80 -r 172.17.1.6:80 -g -w 1

3、real server 上配置

配置VIP到本地回环网卡lo上,并只广播自己

ifconfig lo:0 172.17.100.100 broadcast 172.17.100.100 netmask 255.255.255.255 up

配置本地回环网卡路由

route add -host 172.17.100.100 lo:0

② 使RS "闭嘴"

echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

忽略ARP广播

echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

注意:关闭arp应答

1:仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应

2:必须避免将接口信息向非本网络进行通告

③ 想永久生效,可以写到配置文件中

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

sysctl -p 读一下,使其生效

4、开启实现准备好的web网页服务

systemctl start nginx

systemctl start php-mysql

systemctl start mariadb

5、效果验证

① 可分别在rs1和rs2建立2个不同内容,统一路径的test.html测试文件,测试负载均衡功能

在RS01 上vim ../test.html

real server 1

在RS02 上vim ../test.html

real server 2

② 打开http://172.17.1.6/ ,并在director上用ipvsadm -L -n观察访问连接

③ 用另外一台测试机,用ab压力测试工具,测试经过负载均衡后的服务器容量

实战三:实现80、443端口都可访问服务,且LVS实现持久连接

1、环境准备

机器名称

IP配置

服务角色

lvs-server

VIP:172.17.100.100

负载均衡器

rs01

RIP:172.17.1.7

后端服务器

rs02

RIP:172.17.22.22

后端服务器

2、在vs 上设置:

① 在iptables 打上标记,把80端口标记为99

iptables -t mangle -A PREROUTING -d 172.17.100.100 -p tcp --dport 80 -j MARK --set-mark 99

在iptables打上标记,把443端口标记为99

iptables -t mangle -A PREROUTING -d 172.17.100.100-p tcp --dport 443 -j MARK --set-mark 99

② 在lvs上建立基于99号标记的虚拟服务

ipvsadm -A -f 99 -s rr -p

设置后端服务地址,用DR模式

ipvsadm -a -f 99 -r 172.17.1.7 -g

ipvsadm -a -f 99 -r 172.17.22.22 -g

解析:-p 就是持久连接

3、在rs 准备好了的web服务,开启80、443端口

关于ssl 443加密的代码,具体实现下实验四

4、测试,自己windows 做客户端,访问 http://172.17.1.6/

访问 http://172.17.1.6/

实验四:实现ssl 加密

(1)一个物理服务器设置一个https

1、创建存放证书的目录

mkdir /etc/nginx/ssl

2、自签名证书

cd /etc/pki/tls/certs/

make nginx.crt

openssl rsa -in nginx.key -out nginx2.key 因为刚私钥被加密了,为了后边方便,解密

3、把证书和私钥cp 到nginx存放证书目录

cp nginx.crt nginx2.key /etc/nginx/ssl/

cd /etc/nginx/ssl/

mv nginx2.key nginx.key 把名字改回来

4、修改配置文件,加一段server

server {

listen 443 ssl;

server_name www.along.com;

ssl on;

ssl_certificate /etc/nginx/ssl/nginx.crt;

ssl_certificate_key /etc/nginx/ssl/nginx.key;

ssl_session_cache shared:sslcache:20m;

ssl_session_timeout 10m;

}

5、测试,网页打开 https://192.168.30.7/

windows 信任证书

(2)因为nginx 强大,可以实现多个虚拟主机基于不同的FQDN 实现ssl加密,httpd不能实现

一个物理服务器设置多个https

1、生成3个证书和私钥

make nginx.crt

make nginx2.crt

make nginx3.crt

2、把证书和私钥cp 到nginx存放证书目录,并解开私钥的加密

cp nginx{1,2,3}* /etc/nginx/ssl/

openssl rsa -in nginx.key -out nginx.key

openssl rsa -in nginx2.key -out nginx2.key

openssl rsa -in nginx3.key -out nginx3.key

3、创建各自对应的访问网页

mkdir /app/website{1,2,3}

echo website1 > /app/website1/index.html

echo website1 > /app/website2/index.html

echo website1 > /app/website3/index.html

4、测试访问,成功

项目实战2—实现基于LVS负载均衡集群的电商网站架构的更多相关文章

  1. 实现基于LVS负载均衡集群的电商网站架构

    背景 上一期我们搭建了小米网站,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢,面对此场景,单纯靠单台LNMP的架构已经无法 ...

  2. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  3. LVS之2---基于LVS负载均衡集群架构

    LVS之2---基于LVS负载均衡集群架构实现 目录 LVS之2---基于LVS负载均衡集群架构实现 ipvsadm software package Options 常用命令 保存及重载规则 内存映 ...

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

    lvs-nat模型构建 1.lvs-nat模型示意图 本次构建的lvs-nat模型的示意图如下,其中所有的服务器和测试客户端均使用VMware虚拟机模拟,所使用的CentOS 7 VS内核都支持ipv ...

  5. LVS负载均衡集群服务搭建详解(一)

    LVS概述 1.LVS:Linux Virtual Server 四层交换(路由):根据请求报文的目标IP和目标PORT将其转发至后端主机集群中的某台服务器(根据调度算法): 不能够实现应用层的负载均 ...

  6. LVS负载均衡集群

    回顾-Nginx反向代理型负载 负载均衡(load balance)集群,提供了一种廉价.有效.透明的方法,来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用 ...

  7. Linux 笔记 - 第十八章 Linux 集群之(二)LVS 负载均衡集群

    一.前言 Linux 集群从功能上可以分为两大类:高可用集群和负载均衡集群.上一篇已经讲解了 HA 高可用集群,此节讲解负载均衡集群. 负载均衡集群(Load Balance Cluseter,简称 ...

  8. LVS负载均衡集群--DR模式部署

    目录: 一.LVS-DR数据包流向分析 二.DR 模式的特点 三.LVS-DR中的ARP问题 四.DR模式 LVS负载均衡群集部署 一.LVS-DR数据包流向分析 1.为方便进行原理分析,将clien ...

  9. LVS负载均衡集群--NAT模式部署

    目录: 一.企业群集应用概述 二.负载均衡群集架构 三.负载均衡群集工作模式分析 四.关于LVS虚拟服务器 五.NAT模式 LVS负载均衡群集部署 一.企业群集应用概述 1.群集的含义 Cluster ...

随机推荐

  1. 让Spring Boot项目启动时可以根据自定义配置决定初始化哪些Bean

    让Spring Boot项目启动时可以根据自定义配置决定初始化哪些Bean 问题描述 实现思路 思路一 [不符合要求] 思路二[满足要求] 思路三[未试验] 问题描述 目前我工作环境下,后端主要的框架 ...

  2. Unity编辑器扩展-Custom List, displaying data your way

    本文转自http://catlikecoding.com/unity/tutorials/editor/custom-list/ Custom List, displaying data your w ...

  3. JSP 前端的一些应用

    Ext标签库 一.Ext.VeiwPort 代表整个浏览器显示区域,该对象渲染到页面的body 区域,并会随着浏览器显示区域的大小自动改变,一个页面中只能有一个ViewPort 实例. <scr ...

  4. mac下crontab定时任务使用

    这篇文章的作用 BREAK TIME 本地pc配置定时任务,开机后每隔一小时执行一次,open这个页面,休息半分钟 cron创建备忘 首先创建定时任务 crontab -e 0 */ * * * op ...

  5. ExtJS中listener方法和handler方法的区别

    listener方法和handler方法的区别在文档中的说明的太玄乎了,看不懂 listeners监听能够对一个click Event事件添加任意多个的事件响应处理函数 而handler处理只能够通过 ...

  6. prime distance on a tree(点分治+fft)

    最裸的点分治+fft,调了好久,太菜了.... #include<iostream> #include<cstring> #include<cstdio> #inc ...

  7. flask-文件上传

    flask文件上传 流程 1. 上传的文件request.files拿取 2. 可以通过WTForms表单验证 3. 通过secure_filename (from werkzeug.utils im ...

  8. shell丢弃信息

        1>/dev/null 2>&1 或 >/dev/null 2>&1 的含义及注意事项 > 表示重定向到哪 1表示stdout标准输出,输出到屏幕 ...

  9. spring 装配

    spring 3种装配方式: 支持混合配置:不管使用JavaConfig还是使用XML进行装配,通常都会创建一个根配置(root configuration), 这个配置会将两个或更多的装配类和/或X ...

  10. 隔壁小孩都要知道的Drupal配置

    i春秋作家:Arizona 原文来自:隔壁小孩都要知道的Drupal配置 隔壁小孩都要知道的Drupal配置 Drupal是一个开源的PHP内容管理系统,具有相当复杂的架构.它还具有强大的安全模型.感 ...