1.什么是高可用,为什么要设计高可用?

两台机器启动着相同的业务系统,当有一台机器宕机,另外一台服务器能快速的接管,对于访问的用户是无感知的。

减少系统不能提供服务的时间。

2.高可用使用什么工具来实现? 是硬件还是软件?

软件: keepalived------》》》硬件服务器

3.keepalived如何实现高可用

通过vrrp协议实现<<---------->>虚拟路由冗余协议.

4.vrrp诞生的过程以及vrrp的原理

VRRP原理介绍

5.keepalived高可用使用场景

Keepalived高可用使用场景

6.keepalived高可用核心概念总结?

keepalived高可用总结

7.keepalived高可用安装与配置?

环境准备:
10.0.0.5------->lb01
10.0.0.6------->lb02 1.安装【两台机器都装】
yum install keepalived -y 2.配置 ( master backup )
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id lb01
} vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 50
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3
}
} [root@lb02 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id lb02
} vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 50
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3
}
} 3.启动
[root@lb01 ~]# systemctl start keepalived
[root@lb01 ~]# systemctl enable keepalived 4.验证
[root@lb01 ~]# ip addr|grep 10.0.0.3

8.keepalived高可用地址漂移测试

1.抓包看看



10.0.0.3 发送 组播数据包--->

2.抓包查看arp缓存表 --->

9.keepalived高可用抢占式与非抢占式

1.master故障--->backup顶上--->master恢复--->backup   			抢占式   默认
2.master故障--->backup顶上--->master恢复--->backup继续工作 非抢占式 1、两个节点的state都必须配置为BACKUP(官方建议)
2、两个节点都在vrrp_instance中添加nopreempt参数
3、其中一个节点的优先级必须要高于另外一个节点的优先级。
两台服务器都角色状态启用nopreempt后,必须修改角色状态统一为BACKUP,唯一的区分就是优先级。 1.抢占: 硬件配置不一
2.非抢占: 硬件配置一致,业务不允许多次切换

10.keepalived高可用与Nginx集成

地址漂移实现高可用

nginx和keeplaived没有关系

nginx需要借助keeplaived VIP 地址漂移 实现 高可用.

11.如果Nginx宕机, 会导致用户请求失败, 但Keepalived并不会进行切换, 所以需要编写一个脚本检测Nginx的存活状态, 如果不存活则kill nginx和keepalived

1.判断nginx进程是否存在			ps aux|grep nginx|grep -v grep
2.判断nginx的端口是否存在 netstat -lntp|grep :80|wc -l
3.通过curl来模拟访问,判断访问结果是否ok curl -H Host:url.oldxu.com http://10.0.0.3 1.编写脚本
[root@lb01 ~]# mkdir /scripts
[root@lb01 ~]# vim /scripts/check_web.sh
#!/usr/bin/bash nginx_port=$(netstat -lntp|grep :80|wc -l)
if [ $nginx_port -ne 1 ];then systemctl start nginx &>/dev/null
rc=$?
sleep 3
if [ $rc -ne 0 ];then
systemctl stop keepalived
fi
fi
[root@lb01 ~]# chmod +x /scripts/check_web.sh 2.keeplaived调用该脚本
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id lb01
} 定义脚本名称,以及脚本所在的路径
vrrp_script check_web {
script "/scripts/check_web.sh"
interval 5
} vrrp_instance VI_1 {
state MASTER
#nopreempt
interface eth0
virtual_router_id 50
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3
} #调用脚本名称
track_script {
check_web
}
} 3.模拟nginx停止,检查nginx是否会被拉起
结果:nginx会被拉起 4.模拟nginx故障,检查keepalived的VIP是否会漂移至备节点
结果:nginx故障之后,keepalived也会跟着停止,这是会漂移至备节点lb02

11.keepalived高可用脑裂与故障解决

脑裂(split-brain),指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏。

对于无状态服务的HA,无所谓脑裂不脑裂;

但对有状态服务(比如MySQL)的HA,必须要严格防止脑裂。

(但有些生产环境下的系统按照无状态服务HA的那一套去配置有状态服务,结果可想而知...)

1.环境
master 10.0.0.3
backup 10.0.0.3 2.在备节点上编写检测脚本, 测试如果能ping通主并且备节点还有VIP的话则认为产生了脑列
[root@lb02 conf.d]# cat /scripts/check_spilt.sh
vip=10.0.0.3
master_ip=10.0.0.5 ping -c2 $master_ip &>/dev/null
if [ $? -eq 0 ];then
ip_check=$(ip addr | grep "$vip" | wc -l)
if [ $ip_check -eq 1 ];then
echo "脑列"
systemctl stop keepalived
fi
fi 2.调用脚本
[root@lb02 conf.d]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id lb02
} vrrp_script check_spilt {
script "/scripts/check_spilt.sh"
interval 3
} vrrp_instance VI_1 {
state BACKUP
nopreempt
interface eth0
virtual_router_id 50
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3
} track_script {
check_spilt
} }

12.keeplaived使用:

1.不能在公有云上使用
2.公有云要想实现负载均衡高可用-----> 购买的SLB 自带高可用
3.虚拟IP如何使用--->真实的硬件环境

13.总结:

1.介绍高可用.....

2.高可用实现工具keepalived

3.keepalived--->VRRP协议实现--->诞生-->

4.keepalived安装 配置 启动 测试地址漂移

5.nginx的高可用问题,nginx借助keeplaived地址漂移实现高可用

6.keepalived抢占和非抢占

7.keeplaived + nginx 实现高可用--->nginx故障-->强制杀死keepalived

8.keeplaived 脑裂 -->无状态服务没有影响 有状态的有影响

9.keeplaived使用场景 如何使用-->

----->>> 1.真实的硬件环境

----->>> 2.不能在公有云使用

10.lvs+keeplaived nginx+keeplaived haproxy+keeplaived

17.Linux高可用之Keepalived的更多相关文章

  1. Linux高可用之Keepalived

    1: 安装keepalived yum install -y keepalived ipvsadm 安装keepalived和LVS管理软件ipvsadm 主机与备机都需要安装 ######修改配置文 ...

  2. centos7.4安装高可用(haproxy+keepalived实现)kubernetes1.6.0集群(开启TLS认证)

    目录 目录 前言 集群详情 环境说明 安装前准备 提醒 一.创建TLS证书和秘钥 安装CFSSL 创建 CA (Certificate Authority) 创建 CA 配置文件 创建 CA 证书签名 ...

  3. 高可用软件Keepalived

    关于高可用软件Keepalived的使用及配置请参见:http://www.voidcn.com/blog/9124573/article/p-5990263.html

  4. 高可用之KeepAlived(2):keepalived+lvs

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  5. MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案

    第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...

  6. linux 高可用----keepalived+lvs

    什么是高可用? HA(high availability)即高可用性:就是在高可用集群中发生单点故障时,能够自动转移资源并切换服务,以保证服务一直在线的机制. LVS LVS:(linux virtu ...

  7. Linux下实现高可用软件-Keepalived基础知识梳理

    Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能.因此,Keepali ...

  8. Linux 高可用(HA)集群之keepalived详解

    http://freeloda.blog.51cto.com/2033581/1280962 大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用 ...

  9. Linux 高可用开源方案 Keepalived VS Heartbeat对比

    1)Keepalived使用更简单:从安装.配置.使用.维护等角度上对比,Keepalived都比Heartbeat要简单得多,尤其是Heartbeat2.1.4后拆分成3个子项目,安装.配置.使用都 ...

随机推荐

  1. Tomcat部署spring boot项目

    Tomcat部署spring boot项目   需要在启动类做修改

  2. JVM 内存区域大小参数设置

    JVM内存包括区域 Heap(堆区) New Generation(新生代) Eden 伊甸园 Survivor From Survivor To Old Generation(老年代) 方法区 Pe ...

  3. Android Adapter的一些记录

    一.摘要 An Adapter object acts as a bridge between an AdapterView and the underlying data for that view ...

  4. 记一次Burp Suite的使用实例

       下载完的Bur是这样的,双击jar即可 最右边的键一直按,傻瓜式         先将要抓包的网页打开,此次以上传图片为例     第一步当然是先下载Burp Suite之后打开,查看设置代理地 ...

  5. 跟文档学习next.js

    前言:Next.js 是一个轻量级的 React 服务端渲染应用框架. Next.js中文点击这里 Next.js中文站Github点击这里 新建文件夹安装它: npm install --save ...

  6. EJB生成代码后遇到transient错误

    启动服务的时候遇到这样的错误: 解决方案: 1.找到对应的模块的SesBean文件 2.去掉transient 3.重启服务即可

  7. .Net Core自动化部署系列(一):Jenkins + GitLab

    项目进行微服化改造后系统发布就变得愈为重要,因为持续集成导致部署变得越来越频繁,人工部署带来的一些问题日渐凸显,大家可能都有被系统部署线问题困扰过的经历. 本篇我们将会使用Jenkins+Gitlab ...

  8. 理解Android中的注解与反射

    反射 Java反射(Reflection)定义 Java反射机制是指在运行状态中 对于任意一个类,都能知道这个类的所有属性和方法:对于任何一个对象,都能够调用它的任何一个方法和属性: 这样动态获取新的 ...

  9. php企业微信获取员工userid以及打卡信息

    企业微信可以通过部门列表获取部门下的员工信息,从而获取到员工的userid //首先获取需要的access_token $access_token = json_decode($this->ge ...

  10. 浅析MVC Pattern

    一.前言 最近做CAD插件相关的工作,用到了一些模式,解决对应场景的问题. 比如插件的运行实例上使用Singleton.实例内部使用了MVC(Strategy and Observer ). 针对CA ...