首页 > 应用开发 > Java > LVS+Keepalived+Nginx高可用实现
本文搭建LVS+Keepalived+Nignx高可用,搭建之前,先看下以下几种方案架设示意图的演进。
起初是一个Nginx服务器,但是当Nginx挂掉后,用户就直接访问不了网站,进而演进第二种方案。
这个方案通过Keepalived解决了Nginx主节点挂掉后,从节点的Nginx会启用,实现了双机主备,这样虽然解决了第一种方案的弊端,但是高迸发场景下,一个Nginx承受不住,无论有多少从节点,还是会挂掉,从而演进第三种方案。
通过LVS+Keepalived+Nginx,搭建了Nginx集群,对于LVS使用DR模式,请求转发响应不通过LVS,直接通过Nginx响应给用户,这样LVS负载就更高了,从而提高性能,下面以方案三搭建LVS+Keepalived+Nginx高可用
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。
使用集群技术和Linux操作系统实现一个高性能、高可用的服务器. 很好的可伸缩性(Scalability) 很好的可靠性(Reliability) 很好的可管理性(Manageability)
可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
准备4台虚拟机(CentOS 7),用于测试使用
| 主机 | IP | 作用 |
|---|---|---|
| 主机1 | 192.168.232.130 | Nginx1 |
| 主机2 | 192.168.232.131 | Nginx2 |
| 主机3 | 192.168.232.132 | Keepalived Master |
| 主机4 | 192.168.232.133 | Keepalived Backup |
| 无 | 192.168.232.150 | 虚拟IP(VIP) |
在 192.168.232.130和 192.168.232.131主机上安装Nginx; 在 192.168.232.132和 192.168.232.133主机上安装Keepalived
一定要先安装依赖环境,如果下面安装的过程中遇到一些错误信息,按照提示安装以下依赖
在 192.168.232.130和 192.168.232.131主机上安装Nginx,将下载好的Nginx上传到Linux系统,然后解压
编译之前,先创建nginx临时目录,如果不创建,在启动nginx的过程中会报错
在nginx目录中,输入如下命令配置,目的是为了创建makefile文件
然后之行以下命令,进行编译安装
进入nginx安装目录下的sbin
打开浏览器,访问虚拟机所处内网ip即可打开nginx默认页面,此时表示已经安装成功。
注意事项:虚拟机安装需要关闭防火墙,否则访问不
在 192.168.232.132和 192.168.232.133主机上安装Keepalived,将下载好的Keepalived安装包上传到Linux系统,然后解压
配置keepalived
然后之行以下命令,进行编译安装
然后到keepalived安装目录
为了方便启动,将Keepalived注册到Linux系统,进入到解压的keepalived目录(注意:这里是一开始解压的目录,不是keepalived安装目录)
用于查看lvs转发及代理情况的工具,只需要在 192.168.232.132和 192.168.232.133上安装即可
进入到/etc/sysconfig/network-scripts
拷贝一份ifcfg-lo命名为ifcfg-lo:1
修改里面配置文件
重启网络,就会看到lo下面多个虚拟IP
配置ARP
添加以下配置
刷新文件
添加一个host,去接收报文交给lo:1处理
配置MASTER,进入192.168.232.132服务器
修改配置内容
保存退出,重启keepalived服务
配置BACKUP,进入192.168.232.133服务器
修改配置内容
保存退出,重启keepalived服务
查看当前配置的虚拟服务和各个RS的权重
查看当前ipvs模块中记录的连接
通过访问
192.168.232.150,可以正常显示以下两张图
停用主Keepalived
停用前,主keepalived的VIP还在
停用后,VIP出现在从keepalived上
此时通过
192.168.232.150可以正常访问,当把主Keepalived重启启动后,VIP重新回到主Keepalived
测试停用nginx1
停用前两台nginx存在
停用nginx1,发现只有一个192.168.232.131的ip,挂掉的服务已经被移除,此时再去访问只能访问192.168.232.131的nginx
绝大多数公司到这一步基本就能解决接入层高可用、扩展性、负载均衡的问题了。假设LVS每秒能处理10w的请求,一天也只能处理80亿的请求(10w秒吞吐量*8w秒),那万一系统的日PV超过80亿怎么办呢?这里补充说明下,可以使用DNS轮询,搭建多个虚拟IP(VIP),每个VIP的配置都和上面的配置一样,这样通过DNS去解析多个VIP,就可以达到更高的负载能力。
一直想整理出一份完美的面试宝典,但是时间上一直腾不开,这套 一千多道面试题宝典,结合今年金三银四各种大厂面试题,以及 GitHub 上 star 数超 30K+ 的文档整理出来的,我上传以后,毫无意外的短短半个小时点赞量就达到了 13k,说实话还是有点不可思议的。
内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、SpringBoot、SpringCloud、RabbitMQ、Kafka、Linux等技术栈(485页)
内容涵盖:Java基础、JVM、高并发、多线程、分布式、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat、数据库、云计算等
由于篇幅限制,详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
需要的小伙伴,可以一键三连,下方获取免费领取方式!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70000438/viewspace-2782269/ ,如需转载,请注明出处,否则将追究法律责任。