实现基于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,调度方式为wrripvsadm -A -t 172.17.1.6:80 -s wrr② 配置web服务后端real server 为nat工作方式 权重为1ipvsadm -a -t 172.17.1.6:80 -r 192.168.30.107:80 -m -w 1ipvsadm -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 nginxsystemctl start php-mysqlsystemctl start mariadb② 把网关指向directoryroute 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 uproute add -host 172.17.100.100 dev eth0:0 给网卡别名指向网关 ② ipvsadm 策略配置开启一个基于80端口的虚拟服务,调度方式为wrripvsadm -A -t 172.17.100.100:80 -s wrr配置web服务后端real server 为DR工作方式 权重为1ipvsadm -a -t 172.17.100.100:80 -r 172.17.22.22:80 -g -w 1ipvsadm -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_ignoreecho "2" > /proc/sys/net/ipv4/conf/lo/arp_announce忽略ARP广播echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/all/arp_announce

注意:关闭arp应答

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

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

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

vim /etc/sysctl.confnet.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2sysctl -p 读一下,使其生效

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

systemctl start nginxsystemctl start php-mysqlsystemctl start mariadb

5、效果验证

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

在RS01 上vim ../test.htmlreal server 1在RS01 上vim ../test.htmlreal server 1

② 打开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 -gipvsadm -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.crtmake nginx2.crtmake nginx3.crt

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

cp nginx{1,2,3}* /etc/nginx/ssl/openssl rsa -in nginx.key -out nginx.keyopenssl rsa -in nginx2.key -out nginx2.keyopenssl rsa -in nginx3.key -out nginx3.key

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

mkdir /app/website{1,2,3}echo website1 > /app/website1/index.htmlecho website1 > /app/website2/index.htmlecho website1 > /app/website3/index.html

4、测试访问,成功

小米的虚拟服务器怎么弄,手把手教你实现一个小米电商网站!相关推荐

  1. 手把手教你搭建一个属于自己的网站

    ​ 其实去年就写过一篇,当时写的很简短,算是基础的基础,今天就再来一起分享下网站建设方面的知识.看过之前我写的那篇的可以直接从基础篇备案看起. ps:以下内容为了便于理解,部分是本人自己理解总结,非官 ...

  2. 【新手建站教学】如何使用成本更低的虚拟主机实现快速建站?手把手教你搭建一个属于自己的网站。

    本篇文章教大家如何使用成本更低的虚拟主机去搭建一个网站. 虚拟主机价格远低于服务器,所以选择虚拟主机建站是个非常不错的选择. 虚拟主机就是一台服务器分出来的小空间,一台虚拟机只能建一个网站,一台服务器 ...

  3. samp服务器信息获取,手把手教你写一个简单的服务器

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 //第八步,玩家杀人得分得金钱,死亡扣分扣金钱 public OnPlayerDeath(playerid, killerid, reason)//玩家被 ...

  4. 这10个功能模块,手把手教你从零设计电商系统

    导读:电商业务与我们的生活息息相关,大家可能对电商多少也有一些了解,事实上,即使是一个最小化的电商系统,也依然是非常复杂的. 所以,我们先花一点时间,一起以一个创业公司的CTO的视角,设计一个最小化的 ...

  5. 手把手教你SSM搭建Easymall电商项目 (二)

    SSM搭建Easymall电商项目 (二) 目录 SSM搭建Easymall电商项目 (二) 一.Easymall需求代码实现 1.测试类测试请求地址路径IndexController.java    ...

  6. 手把手教你用 SQL 实现电商产品用户分析

    作者介绍 @吃饭第一名的 Claire 美国德克萨斯大学奥斯汀分校商学院硕士: 美国某物流公司数据分析师: 负责数据收集.清理.分析.建模.可视化等: 美剧重度爱好者,坚信美食能解决大部分问题的终极吃 ...

  7. 第五十八期:从0到1 手把手教你建一个区块链

    近期的区块链重回热点,如果你想深入了解区块链,那就来看一下本文,手把手教你构建一个自己的区块链. 作者:Captain编译 近期的区块链重回热点,如果你想深入了解区块链,那就来看一下本文,手把手教你构 ...

  8. 物联网全栈教程--手把手教你开发一个智能浇花器

    下面来说一下课程的安排,本教程可以分为三大章节,30个小章节,在1-10章节,手把手讲解了如何实现一个定时/实时控制的浇花器,可以对浇花器电量进行显示,可以进行定时设置,以及实时控制,低功耗模式等等, ...

  9. 手把手教你搭建一个属于自己的Ghost博客

    介绍 Ghost 是基于 Node.js 的开源博客平台,由前 WordPress UI 部门主管 John O'Nolan 和 WordPress 高级工程师(女) Hannah Wolfe 创立, ...

最新文章

  1. python教程课后答案-python程序设计教程课后答案
  2. [python] 安装numpy+scipy+matlotlib+scikit-learn及问题解决
  3. 数据结构链表例程_如何掌握RxJava例程的四个结构
  4. 零基础学习前端:学习路线、学习计划、实战项目和面试题简历分享。
  5. node.js入门及安装
  6. 系统启动 之 Linux系统启动概述(1)
  7. 天池客流预测–GBDT
  8. 不混淆 android jni,JNI 防混淆 Android proguard
  9. JDK API在线文档
  10. 【Python计算检验值】一元线性回归拟合,t值与p值,显著性检验
  11. 视频贴片广告有哪些形式,视频贴片广告展示形式如何?
  12. 一花一世界,在微服务中定义边界
  13. ORACLE使用dbv工具检验数据文件是否有坏块
  14. rational rose 2007安装破解全过程
  15. PSRAM 伪静态随机存取内存
  16. css美观文本框_如何为美观和用户友好的文本使用类型
  17. 我悟出了公众号取名的套路
  18. contiki 参考
  19. 补码、反码、原码介绍以及相互转换
  20. 如何恢复红米手机数据

热门文章

  1. 关于JAVA对接支付宝开发文档错误总结
  2. 提高社群活跃度的5个方法
  3. JS小数位toFixed向下取整如何阻止自动进位?
  4. AsyncIO –可以完全完成Python的未来!
  5. ios 退出程序通知后台_iOS11系统后台自动关闭程序怎么处理
  6. 第8章-SpringCloud之一统天下(微服务)
  7. 论腾讯QQ校友的生存空间
  8. Python中的取整、取余运算
  9. 海豚播放器 ffmpeg 编译之经历
  10. Java注解@JsonFormat