项目实战2—实现基于LVS负载均衡集群的电商网站架构
负载均衡集群企业级应用实战-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负载均衡集群的电商网站架构的更多相关文章
- 实现基于LVS负载均衡集群的电商网站架构
背景 上一期我们搭建了小米网站,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢,面对此场景,单纯靠单台LNMP的架构已经无法 ...
- 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群
高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...
- LVS之2---基于LVS负载均衡集群架构
LVS之2---基于LVS负载均衡集群架构实现 目录 LVS之2---基于LVS负载均衡集群架构实现 ipvsadm software package Options 常用命令 保存及重载规则 内存映 ...
- LVS负载均衡集群服务搭建详解(二)
lvs-nat模型构建 1.lvs-nat模型示意图 本次构建的lvs-nat模型的示意图如下,其中所有的服务器和测试客户端均使用VMware虚拟机模拟,所使用的CentOS 7 VS内核都支持ipv ...
- LVS负载均衡集群服务搭建详解(一)
LVS概述 1.LVS:Linux Virtual Server 四层交换(路由):根据请求报文的目标IP和目标PORT将其转发至后端主机集群中的某台服务器(根据调度算法): 不能够实现应用层的负载均 ...
- LVS负载均衡集群
回顾-Nginx反向代理型负载 负载均衡(load balance)集群,提供了一种廉价.有效.透明的方法,来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用 ...
- Linux 笔记 - 第十八章 Linux 集群之(二)LVS 负载均衡集群
一.前言 Linux 集群从功能上可以分为两大类:高可用集群和负载均衡集群.上一篇已经讲解了 HA 高可用集群,此节讲解负载均衡集群. 负载均衡集群(Load Balance Cluseter,简称 ...
- LVS负载均衡集群--DR模式部署
目录: 一.LVS-DR数据包流向分析 二.DR 模式的特点 三.LVS-DR中的ARP问题 四.DR模式 LVS负载均衡群集部署 一.LVS-DR数据包流向分析 1.为方便进行原理分析,将clien ...
- LVS负载均衡集群--NAT模式部署
目录: 一.企业群集应用概述 二.负载均衡群集架构 三.负载均衡群集工作模式分析 四.关于LVS虚拟服务器 五.NAT模式 LVS负载均衡群集部署 一.企业群集应用概述 1.群集的含义 Cluster ...
随机推荐
- select下拉框左右变换
效果图: 使用jQuery插件---multiselect2side做法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...
- HTML的Tomcat
修改D:\software\apache-tomcat-8.0.44\webapps\ROOT\WEB-INF\web.xml: <?xml version="1.0" en ...
- 解决jenkins shell执行sonar-scanner提示命令存在的问题
通过jenkins的以下三个方式去执行sonar-scanner,抛如下错误. Send files or execute commands over SSH before the build sta ...
- 欣赏<沉默的大多数>——王小波
君特·格拉斯在<铁皮鼓>里,写了一个不肯长大的人.小奥斯卡发现周围的世界太过荒诞,就暗下决心要永远做小孩子.在冥冥之中,有一种力量成全了他的决心,所以他就成了个侏儒.这个故事太过神奇,但很 ...
- Notes : <Hands-on ML with Sklearn & TF> Chapter 7
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- java实现四则运算
http://blog.csdn.net/lip009/article/details/7768258 我之前找到的一个大神写的?还没看懂
- CentOS MariaDB 安装和配置
sudo vi /etc/yum.repos.d/mariadb.repo # MariaDB 10.1 CentOS repository list - created 2017-03-23 13: ...
- 利用Python+163邮箱授权码发送带附件的邮件
背景 前段时间写了个自动爬虫的脚本,定时在阿里云服务器上执行,会从某个网站上爬取链接保存到txt文本中,但是脚本不够完善,我需要爬虫完毕之后通过邮件把附件给我发送过来,之前写过一个<利用Pyth ...
- poj3660 cow contest
这题主要是传递闭包 题意: n头牛,m次测试,假设a牛赢过b牛,那么说明a牛的能力比b牛强,问你根据输入的m次测试结果,最多能确定多少条牛的排名 大题的思路: 对于 k 牛,比他强的有x头牛,比他弱的 ...
- LeetCode刷题:第一题 两数之和
从今天开始刷LeetCode 第一题:两数之和 题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种 ...