1:简介

它是一个基于VRRP协议来实现的WEB服务高可用方案,可以利用其来避免单点故障。一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

2:下载keepalived

wget http://www.keepalived.org/software/keepalived-1.4.0.tar.gz
tar zxf keepalived-1.4.0.tar.gz
cd keepalived-1.4.0/
./configure --sysconf=/etc --with-kernel-dir=/usr/lib/modules/3.10.0-514.26.2.el7.x86_64/

出现警告:

*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.

yum -y install libnl libnl-devel

安装完以后重新执行configure

这次出现错误:

configure: error: libnfnetlink headers missing

yum install -y libnfnetlink-devel

重新编译完成后如下

安装

make && make install

至此安装完成

Keepalive 基础HA功能演示

环境部署说明

主机名

主机ip地址

集群角色

集群服务

虚拟IP地址

Master

192.168.1.189

Master(主节点)

HTTPD

192.168.1.200

Backup

192.168.1.226

Backup(备用节点)

HTTPD

1、下载并编译安装

yum install gcc openssl-devel libnl libnl-devel libnfnetlink-devel -y

wget http://www.keepalived.org/software/keepalived-1.4.0.tar.gz

tar zxf keepalived-1.4.0.tar.gz

cd keepalived-1.4.0/

./configure --sysconf=/etc --with-kernel-dir=/usr/lib/modules/3.10.0-693.11.1.el7.x86_64/

make && make install

#--sysconf 指定配置文件路径  --with-kernel-dir 指定内核

2、修改配置文件(master)

vim / etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {                       #全局配置notification_email {               #邮件通知acassen@firewall.loc              #多个收件人邮箱failover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.loc          #发件人邮箱smtp_server 192.168.200.1                  # SMTP_SERVER smtp_connect_timeout 30                     # 连接超时时间  router_id LVS_DEVEL                         # specify the name of the LVS director  本地有效#vrrp_skip_check_adv_addr #vrrp_strict#vrrp_garp_interval 0#vrrp_gna_interval 0
}
vrrp_script check_httpd {                     # 定义一个检查方法  对集群中的资源进行监控script "/etc/keepalived/check_httpd.sh"  # 一个脚本检查方法interval 2                           # 检查间隔 second}vrrp_instance VI_1 {           # VRRP 实例 实例名state MASTER                # master 模式interface enp0s3              # 绑定接口virtual_router_id 80         # 虚拟路由标识, 同一实例下 相同IDpriority 100                 # 优先级 越大越优advert_int 2                 # master 和 backup 之间检查时间间隔authentication {             auth_type PASS            # 认证类型  PASS /  AH  auth_pass 5211           # 密码, master 和 backup 必须相同}notify_master "/etc/keepalived/master.sh"     # 当成为主模式时候, 执行的脚本notify_backup "/etc/keepalived/backup.sh"     # 当成为 备模式时候, 执行脚本notify_fault "/etc/keepalived/fault.sh"       # 当成为 fault 模式, 执行脚本track_script {                       # 跟踪脚本check_httpd                      # 脚本名}virtual_ipaddress {                 # VIP192.168.1.200/24 dev enp0s3         }
}

Backup配置文件在master 配置文件上修改2处

state BACKUP
priority 80

脚本

[root@master keepalived]# cat check_httpd.sh
#!/bin/bash
killall -0 httpd[root@master keepalived]# cat master.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-test.log
echo "[master]" >> $LOGFILE
date >> $LOGFILE[root@master keepalived]# cat backup.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-test.log
echo "[Backup]" >> $LOGFILE
date >> $LOGFILE[root@master keepalived]# cat fault.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-test.log
echo "[Fault]" >> $LOGFILE
date >> $LOGFILE

开放防火墙端口

firewalld-cmd --zero=public --permanent --add-port=80/tcp
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface enp0s8 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --reload

测试结果

cat /var/log/keepalived-test.log  观察主备切换结果

cat /var/log/messages  查看主备切换日志  11:42:27 秒检测到http服务停止, 28秒主vrrp进入fault state ,29秒备vrrp进入 master state. ping包测试丢一个包。

 

转载于:https://www.cnblogs.com/blogscc/p/8250486.html

源码编译安装keepalived相关推荐

  1. mono和monodevelop源码编译安装

    之所以用源码编译的方式安装mono和monodevelop,是因为通过yum安装的mono不是最新版本,而且monodevelop不能建 asp.net MVC3的工程. 而且通过源码安装,可以进一步 ...

  2. mac通过tree源码编译安装tree

    通过tree源码编译安装  下载源码:curl -O ftp://mama.indstate.edu/linux/tree/tree-1.6.0.tgz  解压源码:tar xzvf tree-1.6 ...

  3. 源码编译安装percona-xtrabackup-2.3.2

    一.系统包需求 rpm -q libaio-devel libgpg-error-devel libgcrypt-devel autoconf automake libidn-devel libcur ...

  4. 如何在ARM开发板上从源码编译安装OpenCV和OpenCV contrib

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文主要介绍如何在ARM开发板上从源码编译安装OpenCV和OpenCV contrib. OpenC ...

  5. 烂泥:mysql5.5数据库cmake源码编译安装

    本文首发于烂泥行天下. 以前也写过一篇有关mysql5.0源码编译的文章,该文章为<烂泥:mysql5.0数据库源码编译安装>.但是MySQL自5.5版本以后,就开始使用cmake 编译工 ...

  6. mysql5.7 cmake源码编译安装

    mysql5.7 cmake源码编译安装, -----该文章的知识点是一个大牛总结的,我这里只是加工了一下,非原创文章. 搜狐开源镜像站:http://mirrors.sohu.com/ 网易开源镜像 ...

  7. Splunk安装和配置及源码编译安装SVN

    Splunk安装和配置 http://my.oschina.net/tuyang/blog/189159 http://my.oschina.net/longniao/blog/82766 http: ...

  8. php 7.0 编译安装mysql_源码编译安装php7.0.5

    源码编译安装php7.0.5 源码包下载地址 安装epel扩展yum源 [root@xuegod63 ~]# yum clean all [root@xuegod63 ~]# yum list 注:R ...

  9. linux7安装haproxy,Centos7 源码编译安装haproxy

    Centos7 源码编译安装haproxy 操作环境: 一台haproxy主机地址为:192.168.80.100 两台web服务器地址分别为:192.168.80.102 192.168.80.10 ...

最新文章

  1. 别做喷子,多去钻研!
  2. 学完python基础知识之后可以做些什么-学完Python基础知识后,你真的会python吗?...
  3. VxWorks中信号量实现任务间通信与同步机制分析
  4. php长脚本,长PHP脚本运行多次
  5. InstallShield与Visual Studio
  6. 安卓上为什么不能用system.io.file读取streammingAssets目录下的文件
  7. 计算机考研文章精选[转载]
  8. linux vi如何输入井号,为什么我可以使用井号(#)来破坏vim用户功能命名规则
  9. 2021年中国电子签名行业研究报告
  10. django.db.utils.OperationalError: (1050, “Table ‘表名‘ already exists)解决方法
  11. 一个优秀的Android应用从建项目开始
  12. 为什么写网页用php,php能写网页吗
  13. 如何快速实现直播美颜功能 - 接入美颜SDK详解
  14. C语言获取键盘方向键的键值
  15. “创宇ADS”获公安部颁发《计算机信息系统安全专用产品销售许可证》!
  16. 错误 '800a03ea'
  17. 重读《由C#风潮想起的-给初学编程者的忠告》有感 (转载)
  18. C#毕业设计——基于C#+asp.net+sqlserver的中学图书馆系统设计与实现(毕业论文+程序源码)——图书馆系统
  19. [转载]informix onbar规复饬令用法
  20. SAP SD模块常用事务码 Tcode

热门文章

  1. bootstrapSwitch bootstrap 的开关组件扩展
  2. [c++]常对象的特点
  3. [汇编学习笔记][第十六章直接定址表]
  4. 微信支付 支付成功后不跳转 ecshop微信支付 如下操作即可
  5. 淘宝TFS文件系统配置
  6. DebugDiag调试工具
  7. 搞懂 mismatch dep signature
  8. Android中关于Volley的使用(二)加载Json数据
  9. android 颜色选择类
  10. Android中如何提取和生成mp4文件