专栏首页简单的日记linux下keepalived的安装

linux下keepalived的安装

1.下载安安装 keepalived yum update glib*

wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
#安装
tar -xzvf keepalived
cd keepalived 
#编译
./configure -prefix=/usr/local/keepalived

make && make install

2.keepalived相关文件的配置

    $ cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/  # 启动脚本
    $ cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
    $ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
    $ mkdir -p /etc/keepalived/
    $ cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

3.修改/etc/keepalived/keepalived.conf文件

#全局定义模块
! Configuration File for keepalived

#邮件配置 --不建议使用
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc #邮件报警,可以不设置,后期nagios统一监控。
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL  #此处注意router_id为负载均衡标识,在局域网内应该是唯一的。
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

 #VRRP实例定义块

vrrp_instance VI_1 {
    state MASTER #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态。
    interface eth0
        lvs_sync_daemon_inteface eth0  #这个默认没有,相当于心跳线接口,DR模式用的和上面的接口一样,也可以用机器上的其他网卡eth1,用来防止脑裂。
    virtual_router_id 51 #虚拟路由标识,同一个vrrp_instance的MASTER和BACKUP的vitrual_router_id 是一致的。
    priority 100  #优先级,同一个vrrp_instance的MASTER优先级必须比BACKUP高。
    advert_int 1 #MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒。
    authentication {
        auth_type PASS  #验证authentication。包含验证类型和验证密码。类型主要有PASS、AH 两种,通常使用的类型为PASS,\
        auth_pass 1111   据说AH 使用时有问题。验证密码为明文,同一vrrp 实例MASTER 与BACKUP 使用相同的密码才能正常通信。
    }
    virtual_ipaddress { #虚拟ip地址,可以有多个地址,每个地址占一行,不需要子网掩码,同时这个ip 必须与我们在lvs 客户端设定的vip 相一致!
        192.168.200.100
        192.168.200.101
        192.168.200.102
    }
    #使用自定义脚本校验服务可用性 如haproxy、nginx等
    track_script {
      chk_http_port            #调用脚本check_haproxy.sh检查haproxy是否存活
    }
}
## 自定义脚本---可选1 自定义校验服务状态
vrrp_script chk_http_port {
    script"/etc/keepalived/scripts/check_haproxy.sh"
    interval 2
    weight 2
}
 
#虚拟服务器定义块---可选2 使用给予tcp的服务检查服务状态

virtual_server 192.168.200.100 443 {   #虚拟IP,来源与上面的虚拟IP地址,后面加空格加端口号
    delay_loop 6  #健康检查间隔,单位为秒
    lb_algo rr    #负载均衡调度算法,一般用wrr、rr、wlc
    lb_kind NAT   #负载均衡转发规则。一般包括DR,NAT,TUN 3种。
    persistence_timeout 50 #会话保持时间,会话保持,就是把用户请求转发给同一个服务器,不然刚在1上提交完帐号密码,就跳转到另一台服务器2上了。
    protocol TCP  #转发协议,有TCP和UDP两种,一般用TCP,没用过UDP。

    real_server 192.168.201.100 80 { #真实服务器,包括IP和端口号
        weight 1  #权重,数值越大,权重越高 
        TCP_CHECK {  #通过tcpcheck判断RealServer的健康状态
            connect_timeout 3 #连接超时时间
            nb_get_retry 3 #重连次数
            delay_before_retry 3 #重连时间间隔
            connect_port 80  #检测端口
        }
    }
}

chk_http_port 脚本配置

#!/bin/bash
STARTHAPROXY="/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg"
STOPKEEPALIVED="/etc/init.d/keepalived stop"
LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"
echo "[check_haproxy status]" >> $LOGFILE
A=`ps-C haproxy --no-header |wc-l`
echo "[check_haproxy status]" >> $LOGFILE
date >> $LOGFILE
if [ $A -eq 0 ];then
echo $STARTHAPROXY >> $LOGFILE
$STARTHAPROXY >> $LOGFILE  2>&1
sleep5
fi
if [ `ps -C haproxy --no-header |wc-l` -eq 0 ];then
exit 0
else
exit 1
fi

校验nginx是否存活

#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
    /usr/local/nginx/sbin/nginx
    sleep 2
    counter=$(ps -C nginx --no-heading|wc -l)
    if [ "${counter}" = "0" ]; then
        /etc/init.d/keepalived stop
    fi
fi

4. 启动 service keepalived star |stop| restart

判断ip是否绑定成功

[root@localhost nginx]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:b7:8c:9e brd ff:ff:ff:ff:ff:ff
    inet 192.168.5.136/24 brd 192.168.5.255 scope global eth1
    inet 192.168.5.100/32 scope global eth1  #此处标识 已经绑定成功
    inet6 fe80::20c:29ff:feb7:8c9e/64 scope link 
       valid_lft forever preferred_lft forever
[root@localhost nginx]# 

5.注意问题

可能会碰到vip不起作用的问题 请查看防火墙和selinux配置

vi /etc/sysctl.conf
#修改
net.ipv4.ip_forward = 1
开启IP转发功能

net.ipv4.ip_nonlocal_bind = 1
开启允许绑定非本机的IP

检查iptables和selinux的设置情况

service iptables stop

setenforce 0

setenforce: SELinux is disabled

如果非要开启iptables的话,需要作些设定

iptables -I INPUT -i eth1 -d 224.0.0.0/8 -j ACCEPT

service iptables save

keepalived使用224.0.0.18作为Master和Backup健康检查的通信IP\

iptables -I INPUT -i eth0 -d 224.0.0.0/8 -p vrrp -j ACCEPT
iptables -I OUTPUT -o eth0 -d 224.0.0.0/8 -p vrrp -j ACCEPT
service iptables save

vi /etc/sysconfig/iptables

-A INPUT -p vrrp -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp -d 虚拟服务ip --dport 80 -j REDIRECT

关于keepalived执行后日志狂刷IPVS: Can't initialize ipvs: Protocol not available的问题

前些日子安装给虚拟机安装了keepalived+lvs,达到了高可用的负载均衡,但是今天再启用的时候发现keepalived不正常,通过 /var/log/messages 查看系统日志发现狂刷IPVS: Can't initialize ipvs: Protocol not available。很纠结,于是上网查,发现有的人也出现了类似这样的问题,原因是ip_vs模块系统默认没有自动加载,可以通过lsmod | grep ip_vs 命令查看一下,如果没有任何输出则表示ip_vs模块并没有被内核加载,那必须手动加载一下:modprobe ip_vsmodprobe ip_vs_wrr,然后再查看系统日志发现keepalived已经正常工作了。如果要让系统开机加载此模块的话得讲刚才那两句话写到/etc/rc.local文件中,这样开机就能自动加载了。。

脑裂:https://www.cnblogs.com/cheyunhua/p/8717743.html

tcpdump -i eth0|grep VRRP

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • centos7下 firewalld防火墙 使用的命令

    用户1499526
  • 安全论坛 资料备份

    用户1499526
  • oracle 批量清空数据中的数据

    如果执行不成功,直接使用 dbms_output.put_line 输出所需的sql再统一执行

    用户1499526
  • Nginx(八)-- Nginx+keepalived实现高可用

    keepalived下载地址:http://download.csdn.net/detail/u010821757/9892484

    码农小胖哥
  • CentOS7 下 keepalived 的安装和配置

    安装前准备: yum -y install gcc gcc-c++ autoconf automake make  yum -y install zlib zl...

    庞小明
  • Keepalived+Nginx高可用架构配置

    互联网金融打杂
  • Nginx+keepalived高可用配置实战(内附彩蛋)

    如果实际生产环境中当keeplived主的服务器nginx服务宕机,但是主又有VIP,这时就出现无法访问的现象,因此可以做如下的配置,使得这种情况可自已切换

    民工哥
  • Keepalived实现对web服务的高可用

    Keepalived is a routing software written in C.

    用户6641876
  • KeepAlived双主模式高可用集群

    一、keepalived简介 keepalived是vrrp协议的实现,原生设计目的是为了高可用ipvs服务,keepalived能够配置文件中的定义生成ipv...

    小小科
  • Nginx + Keepalived使用文档

    下载keepalived地址:http://www.keepalived.org/download.html

    HUC思梦

扫码关注云+社区

领取腾讯云代金券