项目实战02:LVS 实现负载均衡
目录
负载均衡集群企业级应用实战-LVS
实现基于LVS负载均衡集群的电商网站架构
背景:随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢,面对此场景,单纯靠单台LNMP的架构已经无法承载更多的用户访问,此时需要用负载均衡技术,对网站容量进行扩充,来解决承载的问题。scale out? scale up?
总项目流程图,详见http://www.cnblogs.com/along21/p/7435612.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
在RS01 上vim ../test.html
real 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 -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、测试访问,成功
项目实战02:LVS 实现负载均衡的更多相关文章
- 基于LVS的负载均衡实现
一 什么是负载均衡 负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器.FTP服务器.企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务 ...
- 搞懂分布式技术10:LVS实现负载均衡的原理与实践
搞懂分布式技术10:LVS实现负载均衡的原理与实践 浅析负载均衡及LVS实现 原创: fireflyc 写程序的康德 2017-09-19 负载均衡 负载均衡(Load Balance,缩写LB)是一 ...
- Keepalived+LVS+Nginx负载均衡之高可用
Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常 ...
- LVS+keepalived负载均衡
背景: 随着你的网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,你们又是创业型互联公司如何有效节约成本,节省不必要的浪费?同时实现商业硬件一样的高 ...
- Nginx/LVS/HAProxy 负载均衡软件的优缺点详解
Nginx/LVS/HAProxy 负载均衡软件的优缺点详解 Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验 ...
- LVS+nginx负载均衡知识点1
lvs+nginx负载均衡 1 学习目标 掌握什么是负载均衡及负载均衡的作用和意义. 了解lvs负载均衡的三种模式. 了解lvs-DR负载均衡部署方法. 掌握nginx实现负载均衡的方法. ...
- lvs+nginx负载均衡
1 学习目标 掌握什么是负载均衡及负载均衡的作用和意义. 了解lvs负载均衡的三种模式. 了解lvs-DR负载均衡部署方法. 掌握nginx实现负载均衡的方法. 掌握lvs+nginx负载 ...
- 总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解
总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解 PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使 ...
- Nginx/LVS/HAProxy负载均衡软件的优缺点详解【转】
转自 (总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解http://www.ha97.com/5646.html PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均 ...
- (总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解
Nginx/LVS/HAProxy负载均衡软件的优缺点详解 PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均 ...
随机推荐
- 【C++】C++中的引用与指针
想必大家对C++中的指针都有所了解,但是什么是引用呢?C++11标准引入了“引用”的新功能. 引用 引用(reference):给对象起了另外一个名字,引用类型引用(refers to)另外一种类型, ...
- html input 文本框 只能输入数字,包含输小数点.
<input type="text" id="source_tds" name="source_tds" value="&l ...
- MySQL遇到Deadlock found when trying to get lock,解决方案
最近遇到一个MYSQL update语句出现Deadlock found when trying to get lock的问题,分析一下原因. 什么情况下会出现Deadlock found when ...
- PHP-问题处理Fatal error: Uncaught Error: Call to undefined function mb_strlen()
1.问题 今天重新安装了ubuntu,PHP,MySQL,Apache,到测试CMS项目时发生一个错误: Fatal error: Uncaught Error: Call to undefined ...
- atitit 各分公司ceo cao行政经理职责.docx
1.1. 人员招募--分公司高层人员招募(每月招募四五人吧,每周一人平均) 1 1.2. 组织架构优化 1 1.3. 制度建设 健全并完善分公司内部管理机构设置,优化分公司业务管理流程: 1 1.4 ...
- Elasticsearch常用配置及性能参数[转]
cluster.name: estest 集群名称node.name: “testanya” 节点名称 node.master: false 是否主节点node.data: true 是否 ...
- vue2.0 项目搭建 和vue 2.0 electron 项目搭建
1.关于electron vue 项目的搭建 全局或者局部安装项目vue: 脚手架指令生成: npm install -g vue-cli vue init simulatedgreg/electro ...
- 刷机补丁包updater-script脚本
1.单刷补丁包 新建META-INF文件夹,新建txt文件命名为:updater-script新建system文件夹,在里面新建app文件夹,把你要单刷的apk放进app文件夹在updater-scr ...
- macos下golang 1.9配置
1.golang最新版本下载地址 https://golang.org/dl/ (下载与安装过程此处省略一万字) 注意,go1.9与以往版本安装不同,直接安装到/usr/local/go目录下,而/u ...
- SAP从入门到精通 知识体系
初步认识 SAP标准课程培训 详细信息点击: SAP从入门到精通课程 标准培训主要是基于SAP标准的课程架构,定期在SAP的培训中心面向广大SAP客户开设公开课.培训过程中会应用SAP标准的教材内容, ...