当前位置: 首页>移动开发>正文

keeplive haproxy 安装 我想安装keep

下载Keepalive

官网地址:https://www.keepalived.org/download.html

只有linux版本,windows和macOS就不要挣扎了,我之前强行在macOS上搞了一下午,最终还是失败了。我菜。

选择自己需要的版本进行下载

$ wget -c https://www.keepalived.org/software/keepalived-2.2.4.tar.gz

需要编译,所以就地解压

$ tar zxvf keepalived-2.2.4.tar.gz 
cd keepalived-2.2.4

安装依赖包/Deepin/Debian/Ubuntu相同

apt-get install pkg-config curl gcc autoconf automake libssl-dev libnl-3-dev \
    libnl-genl-3-dev libsnmp-dev libnl-route-3-dev libnfnetlink-dev libipset-dev \
    iptables-dev libsnmp-dev

编译与安装keepalive

进入解压目录,找到configure

./configure --prefix=/usr/local/keepalived

–prefix=/usr/local/keepalived 这里是指定安装目录,可以省略

安装后看是否报错,报错可根据错误提示进行依赖安装等。

make && make install

这里建议分开执行,因为多数make install 需要超管权限,

sudo make install

这里基本的编译安装完毕

$ ls /usr/local/keepalived/
bin/  etc/  sbin/  share/

配置keepalive

cat /etc/keepalived/keepalived.conf

机器一:

global_defs {     
    router_id bird01     #标识信息
}

vrrp_instance VI_1 {
    state MASTER
    priority 150                      #优先级
    interface eth0                    #绑定的网卡
    virtual_router_id 50              #同一个虚拟的路由
    advert_int 1                      #心跳的间隔时间
    authentication {
        auth_type PASS      #两个主机之间的密语
        auth_pass 1234          #心跳密码
}
    virtual_ipaddress {
        10.110.10.3     #虚拟IP地址(可以绑定多个虚拟IP地址)
    }
}

机器二:

global_defs {
    router_id bird02
}

vrrp_instance VI_1 {
    state BACKUP
    priority 100
    interface eth0
    virtual_router_id 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        10.110.10.3         #虚拟IP地址
    }
}

这里设置的是一主一备,两个的优先级主是150,备是100,虚拟VIP为10.110.10.3

启动keepalive

$ systemctl start keepalive

设置启动脚本

ln -s /etc/init.d/keepalived.init /etc/rc2.d/S99keepalived

测试keepalive地址漂移

$ ip a

查看有没有我们设置的虚拟IP,然后可以使用抓包工具查看protocol中会显示VRRP

keepalive高可用抢占式和非抢占式

(1)默认配置为抢占式:
master挂掉,backup上台,master重新启动则讲IP抢占过去。
(2)非抢占式配置:
两台均为backup,在优先级上做区分,如master挂掉,backup上台,则backup变成master,master变为backup。
a.两个节点的state均为backup(官方建议)
b.两个节点都在vrrp_instance中添加nopreempt
c.其中一个节点的优先级要高于另外一个节点
两台服务器角色都启用了nopreempt后,必须修改角色状态统一为backup,唯一的区别就是优先级不同。

主:

vrrp_instance VI_1 {
        state BACKUP
        priority 150
        nopreempt    
    }

备:

vrrp_instance VI_1 {
        state BACKUP
        priority 100
        nopreempt
    }

keepalive脑裂

主要出现脑裂的场景是:两台机器都存活,但是无法检测到对方的心跳信息,各自都认为对方已经宕机。

配合nginx使用的时候,需要编写脚本检测nginx的状态是否正确,如果不正常进行重拉或者其他策略

www$ cat  /server/scripts/check_nginx.sh
#!/bin/sh
nginxpid=$(ps -C nginx --no-header|wc -l)
#1.判断Nginx是否存活,如果不存活则尝试启动Nginx
if [ $nginxpid -eq 0 ];then
    systemctl start nginx
    sleep 3
    #2.等待3秒后再次获取一次Nginx状态
    nginxpid=$(ps -C nginx --no-header|wc -l) 
    #3.再次进行判断, 如Nginx还不存活则停止Keepalived,让地址进行漂移,并退出脚本  
    if [ $nginxpid -eq 0 ];then
        systemctl stop keepalived
   fi
fi
[root@bird01 ~]# chmod +x /server/scripts/check_nginx.sh

keepalive配置文件:

$ cat /etc/keepalived/keepalived.conf
global_defs {     
    router_id bird01   
}

#定义脚本所在的位置,以及执行时间
vrrp_script  check_nginx {
    script "/server/scripts/check_nginx.sh"
    interval 5
}


vrrp_instance VI_1 {
    state BACKUP
    priority 150
    nopreempt
    interface eth0
    virtual_router_id 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
}
    virtual_ipaddress {
        10.110.10.3
    }

    #调用脚本
    track_script {
        check_nginx
    }
}



https://www.xamrdz.com/mobile/4s61962606.html

相关文章: