一、Keepalived 简介

(1) Keepalived 能实现高可用也能实现负载均衡,Keepalived 是通过 VRRP 协议 ( Virtual Router Redundancy Protocol ) 来实现高可用的
(2) Keepalived 有三个模块,core 模块是核心模块,负责主进程的启动 、维护及配置的加载和解析,check 模块负责健康检查,vrrp 模块用来实现 VRRP 协议
(3) 在 VRRP 协议里,会将多台功能相同的服务器组成一个小组 ( 通常是一台 master 和一台 backup 角色 ) ,master 会通过组播的形式向各个 backup 发送 VRRP 协议的数据包,当 backup 收不到 master 发来的 VRRP 数据包时,就会认为 master 宕机了,此时就需要根据各个 backup 的优先级来决定谁成为新的 master

二、实验环境

1. 准备两台机器 ( CentOS 7 ) ,一台作为 master ( 192.168.119.130 ),一台作为 backup ( 192.168.119.134 ),设置 vip ( Virtual IP ) 为 192.168.119.132
2. 两台机器上都安装 Keepalived 和 Nginx,Keepalived 用来实现高可用,Nginx 作为服务,当检测到 master 上的 Nginx 服务不可用之后,backup 接替 master 的工作

三、master 配置

[root@localhost ~]$ yum install -y nginx                # 安装 Nginx
[root@localhost ~]$ yum install -y keepalived # 安装 Keepalived
[root@localhost ~]$ iptables -F # 关闭 iptables(只是为了做实验方便,在实际中应自行修改)
[root@localhost ~]$ setenforce 0 # 关闭 SELinux(只是为了做实验方便,在实际中应自行修改)
[root@localhost ~]$ systemctl stop firewalld.service # 关闭 firewall(只是为了做实验方便,在实际中应自行修改)
[root@localhost ~]$ vim /etc/keepalived/keepalived.conf    # 编辑Keepalived配置文件,替换为如下内容
global_defs { # 全局配置
notification_email { # 定义邮箱,当高可用出现问题时给指定的邮箱发邮件
panzekai@37.com
}
notification_email_from root@linux.com # 定义发件人,可以使用第三方邮件来发送(如163邮箱,qq邮箱等)
smtp_server 127.0.0.1 # 指定smtp服务器地址
smtp_connect_timeout 30 # 指定smtp连接超时时间
router_id LVS_DEVEL # 指定运行keepalived机器的一个标识
} vrrp_script chk_nginx {
script "/usr/local/sbin/check_nginx.sh" # 定义一个监控脚本,监控nginx服务是否正常运行(检测脚本需要自行添加)
interval 3 # 每隔3秒钟执行一遍检测脚本
} vrrp_instance VI_1 { # 定义一个高可用实例,可以定义多个实例,对多个服务部署高可用
state MASTER # 指定本机的角色
interface ens33 # master会通过组播的形式向各个backup发送VRRP协议的数据包,这里定义使用哪个网卡来发组播
virtual_router_id 51 # VIP(虚拟IP)的标识ID,相同的ID属于同个组
priority 100 # ID的优先级,当master宕机了,此时就需要根据各个backup的优先级来决定谁成为新的master
advert_int 1 # 指定master与backup之间的检查间隔,默认是1s
authentication { # 指定master与backup之间认证的方式,两者的密码配置要一致
auth_type PASS
auth_pass ec9cd31a611f64b5
}
virtual_ipaddress { # 指定VIP(虚拟IP)地址,master与backup定义要一致
192.168.119.132
} track_script { # 指定在实例中要引用的脚本
check_nginx
} }
[root@localhost ~]$ vim /usr/local/sbin/check_nginx.sh    # 根据上面的配置定义监控脚本
#!/bin/bash
d=`date --date today +%Y%m%d_%H:%M:%S` # 时间变量,用于记录日志
n=`ps -C nginx --no-heading|wc -l` # 计算nginx进程数量
if [ $n -eq "" ]; then # 如果进程为0,则启动nginx,并且再次检测nginx进程数量,
/etc/init.d/nginx start # 如果还为0,说明nginx无法启动,此时需要关闭keepalived
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "" ]; then
echo "$d nginx down, keepalived will stop" >> /var/log/check_nginx.log
systemctl stop keepalived
fi
fi
[root@localhost ~]$ chmod 755 /usr/local/sbin/check_nginx.sh    # 增加执行权限
[root@localhost ~]$ systemctl start keepalived.service # 启动keepalived

四、backup 配置

[root@localhost ~]$ yum install -y nginx                # 安装 Nginx
[root@localhost ~]$ yum install -y keepalived # 安装 Keepalived
[root@localhost ~]$ iptables -F # 关闭 iptables(只是为了做实验方便,在实际中应自行修改)
[root@localhost ~]$ setenforce 0 # 关闭 SELinux(只是为了做实验方便,在实际中应自行修改)
[root@localhost ~]$ systemctl stop firewalld.service # 关闭 firewall(只是为了做实验方便,在实际中应自行修改)
[root@localhost ~]$ vim /etc/keepalived/keepalived.conf    # 编辑Keepalived配置文件,替换为如下内容
global_defs {
notification_email {
panzekai@37.com
}
notification_email_from root@linux.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
} vrrp_script chk_nginx {
script "/usr/local/sbin/check_nginx.sh"
interval 3
} vrrp_instance VI_1 {
state BACKUP # 指定角色为BACKUP
interface ens33
virtual_router_id 51 # 指定VIP,要与master相同
priority 90 # 指定ID的优先级,要比master小
advert_int 1
authentication {
auth_type PASS
auth_pass ec9cd31a611f64b5
}
virtual_ipaddress { # 指定VIP(虚拟IP)地址,master与backup定义要一致
192.168.119.132
} track_script { # 指定在实例中要引用的脚本
check_nginx
} }
[root@localhost ~]$ vim /usr/local/sbin/check_nginx.sh    # 根据上面的配置定义监控脚本
#!/bin/bash
d=`date --date today +%Y%m%d_%H:%M:%S` # 时间变量,用于记录日志
n=`ps -C nginx --no-heading|wc -l` # 计算nginx进程数量
if [ $n -eq "" ]; then # 如果进程为0,则启动nginx,并且再次检测nginx进程数量,
/etc/init.d/nginx start # 如果还为0,说明nginx无法启动,此时需要关闭keepalived
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "" ]; then
echo "$d nginx down, keepalived will stop" >> /var/log/check_nginx.log
systemctl stop keepalived
fi
fi
[root@localhost ~]$ chmod 755 /usr/local/sbin/check_nginx.sh    # 增加执行权限
[root@localhost ~]$ systemctl start keepalived.service # 启动keepalived

五、测试

(1) 直接访问 VIP ( 192.168.119.132 ) 看是否能访问成功
(2) 关闭 master 上的 keepalived 服务看是否能访问成功 ( 日志在 /var/log/messages 查看 )

Keepalived 配置高可用集群的更多相关文章

  1. 集群相关、用keepalived配置高可用集群

    1.集群相关 2.keepalived相关 3.用keepalived配置高可用集群 安装:yum install keepalived -y   高可用,主要是针对于服务器硬件或服务器上的应用服务而 ...

  2. Linux centosVMware 集群介绍、keepalived介绍、用keepalived配置高可用集群

    一.集群介绍 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 实现高可用的开源软件有:heartbeat. ...

  3. 集群介绍 keepalived介绍 用keepalived配置高可用集群

    集群介绍 • 根据功能划分为两大类:高可用和负载均衡 • 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 • 实现高可用的开源软件有:heartb ...

  4. Linux集群介绍、keepalived介绍及配置高可用集群

    7月3日任务 18.1 集群介绍18.2 keepalived介绍18.3/18.4/18.5 用keepalived配置高可用集群扩展heartbeat和keepalived比较http://blo ...

  5. LVS+Keepalived实现高可用集群

    LVS+Keepalived实现高可用集群来源: ChinaUnix博客 日期: 2009.07.21 14:49 (共有条评论) 我要评论 操作系统平台:CentOS5.2软件:LVS+keepal ...

  6. Nginx(四):Keepalived+Nginx 高可用集群

    Keepalived+Nginx 高可用集群 (主从模式) 集群架构图 安装keepalived [root@localhost ~]# yum install -y keepalived 查看状态 ...

  7. rabbitmq+ keepalived+haproxy高可用集群详细命令

    公司要用rabbitmq研究了两周,特把 rabbitmq 高可用的研究成果备下 后续会更新封装的类库 安装erlang wget http://www.gelou.me/yum/erlang-18. ...

  8. rabbitmq+haproxy+keepalived实现高可用集群搭建

    项目需要搭建rabbitmq的高可用集群,最近在学习搭建过程,在这里记录下可以跟大家一起互相交流(这里只是记录了学习之后自己的搭建过程,许多原理的东西没有细说). 搭建环境 CentOS7 64位 R ...

  9. Keepalived+Nginx高可用集群

    Keepalived简介 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替 ...

随机推荐

  1. JNI编程实现(Windows)

    上一篇介绍了Linux平台的JNI编程方法,Windows平台的JNI本地调用基本类似,区别就是制作的动态库不同,Linux平台是*.so,Windows平台是*.dll.其中,Windows平台的函 ...

  2. Java中的ReentrantLock和synchronized两种锁定机制

    原文:http://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html 多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之 ...

  3. Windows2003配置集群详解

    原文: http://blog.csdn.net/xunyn/article/details/7388900 集群是在一组计算机上运行相同的软件并虚拟成一台主机系统为客户端与应用提供服务:计算机通过缆 ...

  4. ZegGraph属性含义

    一.主要内容概念 属性名称 属性值.作用 MasterPane 一个类对象管理多个GraphPane来源于PaneBase.使用MasterPane类都是可选的,GraphPane类可以直接用于一个单 ...

  5. Go语言之高级篇beego框架之controller调用model

    一.controller调用model 开发规范,就该把对数据库的操作写在model文件夹中. 示例: views/main.go package main import ( _ "web/ ...

  6. Android四大组件应用系列——使用ContentProvider实现跨进程通讯

    一.问题描述 如何在Android中实现不同应用之间的通讯(既跨进程进行调用)?Android提供了多种实现方式,使我们可以实现跨进程访问Activity.通过ContentProvider跨进程访问 ...

  7. 【T01】理解面向连接和无连接协议之间的区别

    1.面向连接和无连接指的是协议,本质区别在于:对于无连接协议来说,每个分组的处理都独立于其他的分组. 而对于面向连接的协议,协议实现维护了当前分组与后继分组有关的状态信息. 2.无连接就是指udp,分 ...

  8. Linux使用过程中常见问题及其解决方法

    “我不怕问题的出现,相反,我喜欢问题,因为我知道这是一种成长............” 1,ubuntu中文输入法的安装:  今天重装了英文版的ubuntu,而发现中文输入法并没有自动安装好,于是搜了 ...

  9. MVC项目实践,在三层架构下实现SportsStore-11,使用Knockout实现增删改查

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

  10. Wifiner for Mac(WiFi 状况分析工具)破解版安装

    1.软件简介    Wifiner 是 macOS 系统上一款 Wifi 分析工具,仅需几次点击即可对您的 Wi-Fi 网络连接进行分析和故障排除.扫描您的 Wi-Fi 网络,获取包含交互式彩色编码热 ...