day12 keepalived高可用
day12 keepalived高可用
一、高可用介绍
1、什么是高可用
部署在整个集群中的一个高可用软件,作用是创建一个VIP(虚拟IP),在整个集群中有且只有一个机器上生成VIP,当这台机器出现问题时,Keepalive将自动将VIP切换至其他的某一台服务器上
2、常用工具
软件通常使用Keepalived # 私网用的
keepalived软件是基于VRRP协议实现的,VRRP虚拟路由冗余协议,主要用于解决单点故障问题
3、Keepalived核心概念
1.如何确定谁是主节点谁是备节点(选举投票,优先级)
2.如果Master故障,Backup自动接管,那么Master恢复后会夺权吗(抢占试、非抢占式)
3.如果两台服务器都认为自己是Master会出现什么问题(脑裂)
二、Keepalived搭建(私网)
1、实现VIP,解决web服务器的单点故障
1、实现VIP,解决web服务器的单点故障
1)部署Keepalived
在所有的需要流量的机器上部署keepalived。
[root@web01 ~]# yum install keepalived -y
2)添加vip设置
[root@lb01 ~]# vim /etc/keepalived/keepalived.conf
[root@lb01 ~]# systemctl restart keepalived
-----------------------------------------------------------------------------------------------------
#全局配置
global_defs {
#全局配置
global_defs {
#身份识别(全局唯一,布在哪台机器就是哪台机器名字)
router_id lb01
}
# 配置VRRP协议
vrrp_instance VI_1 {
# 状态,MASTER和BACKUP(这里仅仅是一个标记,真正确认VIP的是权重)
state MASTER
# 绑定网卡,一定要和下方所指的eth0在同一个网段
interface eth0
# 虚拟路由标示,可以理解为分组,必须在同一组别(一个集群),keepalved才能互相探测
virtual_router_id 50
# 优先级(数字越大,权重越大)
priority 100
# 监测心跳间隔时间,每1s探测一次,keepalivd宕机马上就可以切换
advert_int 1
# 配置认证
authentication {
# 认证类型,密码认证
auth_type PASS
# 认证的密码
auth_pass 111111111
}
# 设置VIP,eth0的网段
virtual_ipaddress {
# 虚拟的VIP地址,网段内选个ip
192.168.15.3
}
}
-----------------------------------------------------------------------------------------------------
2、抢占式和非抢占式
1.两个节点的state都必须配置为BACKUP
2.两个节点都必须加上配置 nopreempt
3.其中一个节点的优先级必须要高于另外一个节点的优先级。
两台服务器都角色状态启用nopreempt后,必须修改角色状态统一为BACKUP,唯一的区分就是优先级。
配置:[root@lb01 ~]# vim /etc/keepalived/keepalived.conf
state BACKUP
# 开启非抢占式
nopreempt
(1).抢占式:当一台负载均衡的keepalived服务掉线时,vip会自定切换至另一台负载均衡,当中存在时间差延迟,系统可能会报错而当那台负载均衡恢复keepalived时,会自动切换回去,又会有延迟,也有可能会报错。
(2).非抢占式:当一台负载均衡的keepalived服务掉线时,vip会自定切换至另一台负载均衡,而当那台负载均衡恢复keepalived时,不自动切换回来。
(3).总结: 当一台负载均衡的keepalived掉线时,进行自动切换。而当一台负载均衡恢复keepalived时,自动跳转的就是抢占式,不自动跳转的就是非抢占式,一般来说非抢占式不容易报错,建议开启非抢占式
3、高可用时如果出现脑裂问题时怎么解决
1、什么是脑裂问题?
由于其他代理网站服务的启动失败,导致不能访问web。可是由于keepalived又正常运行着,但是却不能跳转vip至其他备用负载均衡服务器,导致访问一直失败。
2、如何解决脑裂问题?
可以通过一个脚本进行判断
1)、编写脚本
[root@lb01 keepalived]# vim check.sh
[root@lb01 keepalived]# chmod +x check.sh
#!/bin/bash
# 通过判断进程服务里面有没有nginx进程,来知晓nginx是否正常启动
ps -aux | grep [n]ginx
if [ $? -ne 0 ];then
systemctl restart nginx
sleep 3;
ps -aux | grep [n]ginx
if [ $? -ne 0];then
systemctl stop keepalived
fi
fi
2)、把脚本放在keepalived配置里面(放入全局块)
[root@lb01 keepalived]# vim /etc/keepalived/keepalived.conf
-----------------------------------------------------------------------------------------------------
vrrp_script check_nginx {
# 指定脚本路径
script "/etc/keepalived/check.sh"
# 每5秒钟执行一次
interval 5
}
# 调用计划文本(配置在vrrp_instance 模块里)
track_script {
check_nginx
}
三、动静分离
动静分离介绍
1、什么是动静分离
(1)动态资源(jsp、ftl、thymeleaf)与静态资源(js、css、img)分开部署。
(2)动静分离,通过中间件将动态请求和静态请求进行分离;
2、为什么做动静分离
(1)如果我们静态资源与动态资源存放在同一台服务器上面,当静态资源不断增多的时候,我们的服务器访问是扛不住,因为静态资源消耗过多的带宽,导致静态资源无法访问或者访问非常的慢。
(2)通过中间件将动态请求和静态请求分离,可以减少不必要的请求消耗,同时能减少请求的延时。
1、location的五种策略
= 完全匹配
* 匹配以什么字符开头
~ 正则匹配(区分大小写)
~* 正则匹配(不区分大小写)
/ 匹配所有内容
优先级:
= > * > ~ = ~* > /
案例:访问中国象棋的某一张图片,用动静分离
[root@web01 conf.d]# vim jiao.conf
server {
server_name jiao.test.com
listen 80;
# 代理是html文件
location /{
root /usr/share/nginx/jiaoben1765;
index index.html;
}
# 给图片一个单独目录
location ~* \.(png|gif|jpg|jpeg|mp3|mp4)$ {
root /usr/share/nginx/jiaoben1765;
}
}
2、四种重定向策略
1、nginx的重定向策略
nginx配置rewrite:
Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程
多用于:地址转换、协议转换
rewrite : 重写URL地址
格式:
rewrite [匹配内容] [从定向到的内容] [重定向规则];
2、四种重定向策略
组1:
last 本条规则匹配完成后,停止匹配,不再匹配后面的规则
break 本条规则匹配完成后,停止匹配,不再匹配后面的规则
区别:
last 是在Nginx内部(也就是配置里面)按照重定向的规则重新访问一遍
break 是在Nginx内部按照重定向的规则去对应的目录,也就是server下root所指定的站点根目录下去访问,所以break找的是目录里面的内容,而不是在配置里面找重定向的内容。
组2:
redirect 返回302临时重定向,地址栏会显示跳转后的地址
permanent 返回301永久重定向,地址栏会显示跳转后的地址
区别:
临时重定向浏览器不记录缓存
永久重定向浏览器是会记录缓存,再一次访问将不走Nginx服务端,直接在浏览器端跳转。
案例1:要求访问192.168.15.8,临时重定向到百度
1、编辑配置文件
[root@web01 conf.d]# vim jiao.conf
server {
server_name jiao.test.com
listen 80;
location /{
rewrite (.*) https://www.baidu.com redirect;
}
}
2、测试
浏览器测试:192.168.15.7
Request URL: http://192.168.15.7/ # 首先访问的是ip7
Request Method: GET
Status Code: 302 Moved Temporarily # 临时重定向到百度
Remote Address: 192.168.15.7:80
案例2:要求访问192.168.15.8,永久重定向到百度
1、编辑配置文件
[root@web01 conf.d]# vim jiao.conf
server {
server_name jiao.test.com
listen 80;
location /{
rewrite (.*) https://www.baidu.com permanent;
}
}
2、测试
浏览器测试:192.168.15.7
Request URL: http://192.168.15.7/ # 首先访问的是ip7
Request Method: GET
Status Code: 302 Moved Temporarily # 临时重定向到百度
Remote Address: 192.168.15.7:80
案例3:要求访问192.168.15.8/last,重定向到192.168.15.8/test
1、编辑配置文件
[root@web01 conf.d]# vim jiao.conf
server {
server_name jiao.test.com
listen 80;
charset utf-8;
location = /last {
rewrite (.*) /test last;
}
location = /break {
rewrite (.*) /test break;
}
location = /test {
default_type text/html;
return 200 "test";
}
location /{
default_type text/html;
return 200 "默认";
}
}
2、测试
浏览器测试:192.168.15.7/last /break
案例4:要求访问192.168.15.8/break,重定向到192.168.15.8下面的test目录。
1、编辑配置文件
[root@web01 conf.d]# vim jiao.conf
server {
server_name jiao.test.com
listen 80;
charset utf-8;
location = /last {
rewrite (.*) /test last;
}
location = /break {
rewrite (.*) /test break;
}
#==========》运行至/break模块,然后根据rewrite里面的break规则重定向页面至/test, 注意此时不是在nginx内部查找/test了!!,而是从server下root所指定的目 录下面去找test目录,若test文件夹里有内容,则显示,无内容则报 404 NotFound
location = /test {
default_type text/html;
return 200 "test";
}
location /{
default_type text/html;
return 200 "默认";
}
}
2、测试
浏览器测试:192.168.15.7/last /break
day12 keepalived高可用的更多相关文章
- Nginx反向代理,负载均衡,redis session共享,keepalived高可用
相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...
- keepalived高可用
keepalived介绍 Keepalived是一个基于vrrp协议的高可用方案,vrrp协议的软件实现,原生设计的目的为了高可用ipvs服务. 1. vrrp协议 VRRP是一种容错协议,它通过把几 ...
- 测试LVS+Keepalived高可用负载均衡集群
测试LVS+Keepalived高可用负载均衡集群 1. 启动LVS高可用集群服务 此时查看Keepalived服务的系统日志信息如下: [root@localhost ~]# tail -f /va ...
- Keepalived高可用集群介绍
1.Keepalived服务介绍 Keepalived起初是专为LVS设计的,专门用来监控LVS集群系统中各个服务节点的状态,后来又加入了VRRP的功能,因此除了配合LVS服务外,也可以为其他服务(n ...
- LVS+Keepalived高可用负载均衡集群架构实验-01
一.为什么要使用负载均衡技术? 1.系统高可用性 2. 系统可扩展性 3. 负载均衡能力 LVS+keepalived能很好的实现以上的要求,LVS提供负载均衡,keepalived提供健康检查, ...
- 实现基于Keepalived高可用集群网站架构的多种方法
实现基于Keepalived高可用集群网站架构 随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,目前业务已经通过集群LVS架构可做到随时拓展,后端节点已 ...
- 十一.keepalived高可用服务实践部署
期中集群架构-第十一章-keepalived高可用集群章节======================================================================0 ...
- keepalived高可用简介与配置
keepalived简介 keepalived介绍 Keepalived 软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP ...
- nginx+keepalived高可用及双主模式
高可用有2中方式. 1.Nginx+keepalived 主从配置 这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候, ...
随机推荐
- c++中virtual 虚函数
转载: https://www.cnblogs.com/weiyouqing/p/7544988.html 在面向对象的C++语言中,虚函数(virtual function)是一个非常重要的概念. ...
- hdu 5055 Bob and math problem (很简单贪心)
给N个数字(0-9),让你组成一个数. 要求:1.这个数是奇数 2.这个数没有前导0 问这个数最大是多少. 思路&解法: N个数字从大到小排序,将最小的奇数与最后一位交换,把剩下前N-1位从大 ...
- 新手使用python以及pycharm看过来
前言 随着互联网时代的进步,人类与计算机之前的沟通交流越来越便捷,自此交流的媒介--编程语言吸引力更多的人学习,今天我们就来谈谈当前市面上最火的编程语言 1.文件的概念 什么是文件夹.文件 其实是操作 ...
- 第40篇-JNIEnv和JavaVM
下面介绍2个与JNI机制相关的类型JNIEnv和JavaVM. 1.JNIEnv JNIEnv一般是是由虚拟机传入,而且与线程相关的变量,也就说线程A不能使用线程B的JNIEnv.而作为一个结构体,它 ...
- K8S发布策略,无损发布
大家好,相信大部分公司都已经使用K8S进行容器管理和编排了,但是关于K8S的发布策略,还有很多同学不太清楚,通过这篇文章的介绍,相信大家对目前K8S的发布情况有一个概括的认识.总结下来,共有如下几种: ...
- ORACLE,mysql中替换like的函数
数据库中存储了海量的数据,当查询时使用like,速度明显变慢.我在做项目时,发现使用内部函数INSTR,代替传统的LIKE方式查询,并且速度更快. INSTR()函数返回字符串中子字符串第一次出现的位 ...
- 1组-Alpha冲刺-4/6
一.基本情况 队名:震震带着六菜鸟 组长博客:https://www.cnblogs.com/Klein-Wang/p/15553196.html 小组人数:7人 二.冲刺概况汇报 王业震 过去两天完 ...
- 90-95年CPU功耗感知调度研究
最近读了三篇1990-1995年的通过调度来降低cpu能耗的文章[1] [2] [3],简单总结一下该年代单核CPU功耗感知的调度策略. Motivation 随着便携式设备逐渐兴起,人们对降低其功耗 ...
- 如何看待 SAE 在2014 年 3 月 24 日发生的的大面积宕机事故?
3 月 24 日晚间大约 23 点左右,新浪云 SAE 一处核心机柜掉电,导致 SAE 平台下大量应用无法正常访问,并在 10 小时后才陆续修复.这次事故暴露 SAE 的哪些缺陷?SAE 运维人员又是 ...
- 【华为昇腾】 序言:从昇腾AI软硬件平台聊起
2021年是很值得纪念的一年,从上半年开始跟随导师编写有关华为昇腾软件栈CANN的教材,一年的时间反复迭代 终于快要出版了. 这一系列博客可以视作我从编者的角度,重新梳理的全书思路.明年入职商汤之后要 ...