搭建Keepalived+Nginx高可用负载均衡服务器
一、服务器搭建策略
单机模式: 只有一台应用服务器,组成一个单机模式
优点:简单方便(搭建、运营、维护)
缺点:不能出故障(停电、断网、系统崩溃、硬件老化、性能瓶颈)
应用场景:小型项目(几十个人)
集群(cluster)模式:
有一个应用服务器集群(cluster),由很多应用服务器组成一个集群
二、服务器三高
高可用: 服务器能否能24*365不间断提供服务,服务器容灾性高
高并发: 同一时间上,服务器能够同时容纳的用户连接数
高性能: 服务器处理用户请求的速度,服务器的计算能力
三、服务器升级
纵向升级(对单台服务器做配置提升):
eg:换更强的cpu,加大内存和磁盘,加大网络带宽……
横向升级(堆服务器的数量):
节约成本,很廉价的机器都可以推入到集群(更受欢迎)
四、如何解决负载均衡高可用问题?
做备份
当主负载均衡服务器没有问题时,处于备用;当其出现问题时,备用服务器能够第一时间内顶替主负载均衡服务器的位置
难点:备份很容易,但是ip地址如何快速切换?
五、Keepalived实现备用机无缝顶替主机的原理:
多台nginx-----keepalived集群
keepalived集群中至少有两台机器
两台:一主一从
三台:一主二从…以此类推
为keepalived集群设置一个唯一的虚拟IP,虚拟IP默认会与master机器绑定在一起
即master机器将会有两个ip地址,一个是自己的源ip,一个是keepalived给的虚拟IP地址
非抢占模式下:
当master机器出现故障时,keepalived第一时间收回虚拟IP地址并分配给slave机器,此时相当于slave机器升级为master机器,此时用户只需要记住keepalived的虚拟IP地址即可
若master机器恢复正常,则不会被分配虚拟IP地址,直到slave机器出现故障后,master才会被分配虚拟IP地址
六、搭建Keepalived+Nginx高可用负载均衡服务器
1、设置keepalived负载均衡服务器
准备2台Nginx (一主一从),分别安装keepalived
yum -y install keepalived
查看网卡名字
打开配置文件
vim etc/keepalived/keepalived.conf
找到第19行
设置一主一从,设置对应优先级(主>备),设置虚拟IP
删除这两行, 否则虚拟IP会绑定失败
13 vrrp_skip_check_adv_addr14 vrrp_strict
启动keepalived, 得到虚拟IP地址
systemctl start keepalived
重启
systemctl restart keepalived
停止, 则会收回虚拟IP地址
systemctl stop keepalived
2、让keepalived监视nginx运行状态
在/etc/keepalived目录中编写一个可执行的脚本check_nginx.sh让keepalived监视nginx运行状态
#!/bin/bashA=`ps -C nginx --no-header |wc -l` if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenexit 1elseexit 0fielseexit 0fi
检查nginx是否已经启动(ps任务管理器中是否有nginx进程)
IF nginx已经启动,keepalived认为当前机器没有问题,exit 0
IF nginx未启动,keepalived尝试去启动nginx
IF 能够启动成功nginx,keepalived认为当前机器没有问题,exit 0
IF 不能启动成功nginx,keepalived认为当前机器有问题,exit 1
此时nginx不需要我们自己启动,交给keepalived帮助我们去启动它
直接执行脚本显示权限不够
需要授予权限,绿色代表有执行权限
在执行执行check_nginx.sh脚本之前,nginx未启动
在执行check_nginx.sh脚本之后,则nginx已经被启动了
打开keepalived.conf
16 vrrp_script check_nginx { #定义一个策略,策略名为"check_nginx"17 script "/etc/keepalived/check_nginx.sh" #执行一次/etc/keepalived/check_nginx.sh脚本文件18 interval 1 #每隔1秒钟19 weight -20 #如果发现nginx启动失败了,将当前的机器的priority-2020 }21 vrrp_instance VI_1 {22 state MASTER23 interface ens3324 virtual_router_id 5125 priority 10026 advert_int 127 authentication {28 auth_type PASS29 auth_pass 111130 }31 track_script { #指定keepalived跟踪策略为 "check_nginx"32 check_nginx33 }34 virtual_ipaddress {35 192.168.20.10036 }37 }
先同时启动nginx
check_nginx.sh
再同时启动keepalived 虚拟IP默认在MASTER机器
systemctl stop keepalived
systemctl start keepalived
七、设置nginx和tomcat开机自动启动
nginx启动命令
/usr/local/nginx/sbin/nginx
./nginx # ./代表从当前目录找nginx
nginx停止命令
/usr/local/nginx/sbin/nginx -s quit
./nginx -s quit
tomcat启动命令
/usr/local/tomcat/bin/startup.sh
./startup.sh
tomcat停止命令
/usr/local/tomcat/bin/shutdown.sh
./shutdown.sh
设置nginx和tomcat开机自动启动要告诉操作系统nginx启动命令在哪,tomcat启动命令在哪
1、设置可以在任何目录中使用 systemctl [操作] nginx 来操作 nginx 程序
创建nginx.service服务文件/lib/systemd/system/nginx.service
cd /lib/systemd/system //存放由操作系统管理的启动程序
vim nginx.service //创建一个nginx服务文件
写入以下内容
[Unit]
Description=nginx
After=network.target[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true[Install]
WantedBy=multi-user.target
创建好这个服务文件后,启动nginx就可以在任何目录中使用
systemctl [操作] nginx.service/nginx
systemctl stop nginx #停止
systemctl restart nginx #重启
systemctl status nginx #状态
systemctl enable nginx #允许开机自动启动
systemctl disable nginx #禁止开机自动启动(默认)
2、设置可以在任何目录中使用 systemctl [操作] tomcat 来操作 tomcat 程序
创建tomcat.service服务文件/lib/systemd/system/tomcat.service
cd /lib/systemd/system //存放由操作系统管理的启动程序
vim tomcat.service //创建一个tomcat服务文件
写入以下内容
[Unit]
Description=Apache Tomcat 8
After=syslog.target network.target[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true[Install]
WantedBy=multi-user.target
创建好这个服务文件后,启动tomcat就可以在任何目录中使用
systemctl [操作] tomcat.service/tomcat
systemctl stop tomcat #停止
systemctl restart tomcat #重启
systemctl status tomcat #状态
systemctl enable tomcat #允许开机自动启动
systemctl disable tomcat #禁止开机自动启动(默认)
八、yum是什么?
全称 Yellow dog Updater,Modified 是一个RedHat和Fedora在Centos系统中创建的软件安装包管理器
在 /etc/yum.repos.d 这个目录中有yum源文件
eg: Centos-Base.repo 文件中有很多mirror地址,即yum的远程仓库地址
yum search 搜索软件安装包名
yum -y install 安装软件安装包名
注:使用yum指令需要联网
九、为什么keepalived (双机热备服务)可以直接使用systemctl 操作 keepalived?
因为 keepalived 是使用yum -y install keepalived进行安装的程序,使用yum安装程序,会自动帮你安装好程序和写程序的服务文件/lib/systemd/system/keepalived.service,而nginx、tomcat是我们自己手动下载安装包进行安装的程序
为什么network (网卡服务)可以直接使用systemctl 操作 network?
为什么firewalld (防火墙服务)可以直接使用systemctl 操作 firewalld?
systemctl stop firewalld 关闭防火墙 = 开放了所有的端口 ≠ 外界可以从任意端口进入系统(还要看是否有服务程序正在监听该端口)
防火墙这种服务的关闭并不是永久关闭,开机后会自动启动(默认)
搭建Keepalived+Nginx高可用负载均衡服务器相关推荐
- Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群
一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...
- LVS+Keepalived实现高可用负载均衡
本文来说下如何使用LVS+Keepalived 实现高可用负载均衡 文章目录 概述 LVS与Keepalived 相关术语 本文小结 概述 在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的.此时 ...
- LVS(DR)+keepalived实现高可用负载均衡
一.lvs+keepalived 1.lvs LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将 ...
- LVS+Keepalived 实现高可用负载均衡
一.Keepalived介绍 keepalived是在Linux系统下的一个轻量级的高可用解决方案,是使用C语言编写的,在 Keepalived 中实现了一组检查器,可以根据服务集群中服务器的健康状态 ...
- Linux下部署lvs+keepalived实现高可用负载均衡
lvs+keepalived是什么? keepalived工作原理 keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障. keepalive ...
- haproxy负载均衡_基于mycat+haproxy+keepalived搭建mysql数据库高可用负载均衡
概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...
- IPVS-DR+keepalived实现高可用负载均衡集群
IPVS-DR+keepalived高可用负载均衡集群方案前端的负载调度器采用双机热备方式,Keepalived主要用来监测RealServer的健康状态以及主负载均衡器和备份负载均衡器之间的故障转移 ...
- 使用LVS和Keepalived搭建高可用负载均衡服务器集群
目录 1.什么是LVS和Keepalived 2.负载均衡服务器集群示例环境搭建及安装配置 2.1.环境网络拓扑结构 2.2.安装ipvsadm软件 2.3.安装keepalived 2.4.配置网络 ...
- 利用LVS+Keepalived 实现高性能高可用负载均衡服务器
作者:NetSeek [url]http://www.linuxtone.org[/url](IT运维专家网|集群架构|性能调优) 欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 ...
最新文章
- css animation动画完成后隐藏_如何使用CSS实现旋转地球动画效果
- 删除linux系统中的ifcfg-eth0.bak
- Java JDBC数据库 之 DBUtil 封装类
- 国睿驰120gb固态硬盘测试软件,系统盘首选 国睿驰120GB固态硬盘测试
- aptio setup utility怎么设置u盘启动_CentOS 7下载及系统U盘制作
- 关于Android定制Launcher
- java计数器策略模式_java设计模式(二十一)--策略模式
- appconfig文件中的配置节
- 内推 | 无人驾驶~小马智行Pony.ai 2020
- eclipse自动为变量生成Get/Set函数
- java导出word文档_PHPWord导出word文档
- socket编程:SO_REUSEADDR例解
- python的post请求中加参数_Python+Post请求中涉及到多个参数data方法的应用
- 从图书馆进入网络刷题练习与考试平台
- YV12 and NV12
- Markdown文本编辑器公式编辑在线工具
- [Spring实战系列](2)Maven创建Spring-HelloWorld项目
- android N编译
- php幸运扭蛋机抽奖程序源码
- 如何在Kubernetes中部署nginx
热门文章
- 如何更改图片分辨率?在线修改分辨率的方法分享
- host key for (ip地址) has changed and you have requested strict checking
- AlphaZero称王!DeepMind AI制霸三大棋类游戏
- 期刊中的单盲双盲评审
- C语言scanf函数用法详细解释!
- 图卷积神经网络1-谱域图卷积:拉普拉斯变换到谱域图卷积
- 接口自动化测试实战之pytest框架+allure讲解
- 怒怼某些自媒体培训机构,吃相不要太难看了!!!
- 拯救者r9000p自带win11好不好?
- css中首字母下沉_CSS首字母大而精美的首字下沉