zoukankan      html  css  js  c++  java
  • 源码编译安装keepalived

    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 keepalived
    
    global_defs {                       #全局配置
       notification_email {               #邮件通知
         acassen@firewall.loc              #多个收件人邮箱
         failover@firewall.loc
         sysadmin@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 # 虚拟路由标识, 同一实例下 相同ID priority 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 { # VIP 192.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包测试丢一个包。

     

     

  • 相关阅读:
    题目---结构体指针链表及迷宫问题
    题目---汉诺塔及AI代码及八皇后
    感想---如何去面试一个人?如何有效学习及提问的智慧。
    题目---统计学生成绩及一帮一及考试座位号
    题目---处理字符四题及预习题
    题目---改大写及自动售货机及删除指定元素
    第七周作业
    第六周作业
    第五周作业
    第四周作业
  • 原文地址:https://www.cnblogs.com/blogscc/p/8250486.html
Copyright © 2011-2022 走看看