zoukankan      html  css  js  c++  java
  • keepalived配置主从备份

    keepalived是一个用于做双机热备(HA)的软件,常和haproxy联合起来做热备+负载均衡,达到高可用。

    运行原理

    keepalived通过选举(看服务器设置的权重)挑选出一台热备服务器做MASTER机器,MASTER机器会被分配到一个指定的虚拟ip,外部程序可通过该ip访问这台服务器,如果这台服务器出现故障(断网,重启,或者本机器上的keepalived crash等),keepalived会从其他的备份机器上重选(还是看服务器设置的权重)一台机器做MASTER并分配同样的虚拟IP,充当前一台MASTER的角色。

    选举策略

    选举策略是根据VRRP协议,完全按照权重大小,权重最大(0~255)的是MASTER机器,下面几种情况会触发选举

    1. keepalived启动的时候

    2. master服务器出现故障(断网,重启,或者本机器上的keepalived crash等,而本机器上其他应用程序crash不算)

    3. 有新的备份服务器加入且权重最大

    配置实例

    服务器两台,两台机器要通局域网,虚拟IP会被设置在他们共有的局域网内,不通的话两台机器各设置各的虚拟IP

    192.168.1.41     Ubuntu 10.04.1 LTS (32位)

    192.168.1.135   Red Hat Enterprise Linux Server release 6.1 (Santiago)(64位)

    下载源码安装,两台服务器都要安装和配置

    注意可能需要安装popt库

    ubuntu

    sudo apt-get install libpopt-dev

    redhat

    sudo yum install popt-devel.x86_64

    解压安装

    tar -zxvf keepalived-1.2.2.tar.gz
    cd keepalived-1.2.2
    ./configure --prefix=/usr/local/keepalived 
    make
    make install

    下面这几步不是必须的,但是为了方便以后的操作建议做了

    cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
    cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
    cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

    为keepalived创建配置文件存放路径

    mkdir -p /etc/keepalived/

    打开配置文件

    emacs  /etc/keepalived/keepalived.conf

    下面是每台服务器上的配置文件,配置项完全一样,配置的值按在本机的具体情况,我这里就贴redhat的

    global_defs
    {
        notification_email
        {
            baifanmvp@163.com
        }
        notification_email_from baifanmvp@163.com
        smtp_server 127.0.0.1
        stmp_connect_timeout 30
        router_id lnmp_node1
    }
    
    vrrp_instance lnmp {
        state MASTER
        interface em1
        virtual_router_id 100
        priority 170
        advert_int 5
        track_interface {
            em1
        }
    
        authentication {
            auth_type PASS
            auth_pass 123456
        }
        virtual_ipaddress {
            192.168.1.200
        }
    }
    • global_defs: 全局配置标识,表面下面的区域{}是全局配置

    • notification_email: 里面填邮箱地址,如果keepalived在发生诸如切换操作时会的发邮件到配置上的邮箱,邮件地址可以多个,每行一个
    • notification_email_from:表示发送通知邮件时邮件源地址是谁
    • smtp_server:表示发送email时使用的smtp服务器地址,可以填127.0.0.1
    • smtp_connect_timeout:连接smtp超时时间
    • vrrp_instance:各服务器上实例配置域,这里按本服务器的具体情况填值
    • state:本实例启动状态,MASTER/SLAVE,不管填MASTER/SLAVE,最终还是要看本机器的权重。
    • interface:实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的,这里按本机情况而定
    • virtual_router_id:这里设置VRID,如果两台机器是同一个备份组,设置一样
    • priority:设置本节点的优先级,优先级高的为master,不能超过255
    • advert_int:组播信息发送间隔,同一个备份组两个机器设置必须一样,默认是1S
    • authentication:验证域,同组的机器auth_type(验证类型)和auth_pass(验证密码)必须一样
    • virtual_ipaddress:VIP,为master机器设置的虚拟地址,和实例绑定的网卡(interface)设置到一个网段

    配置好了就可以直接启动了

    ubuntu下启动

    /usr/local/keepalived/sbin/keepalived

    redhat下可以按照ubuntu的启动方式,也可以按照下面这样启动

    sudo /etc/init.d/keepalived restart

    启动好以后可以用 ip a 命令看虚拟IP的绑定情况,我的配置是192.168.1.135上的权重高,所以VIP绑定到135上面

    (ape2!1076)~(h135:135)ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 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: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
        link/ether d4:ae:52:6c:74:69 brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.135/24 brd 192.168.1.255 scope global em1
        inet 192.168.1.200/32 scope global em1
        inet6 fe80::d6ae:52ff:fe6c:7469/64 scope link 

    这时候就可以用192.168.1.200这个IP访问135这台机器了

    出现的问题记录:

    1. 在配好主从备份之后,发现虚拟IP能ping通,但是访问虚拟IP对应机器上的服务(不是apache或者mysql之类的公用软件)却不成功,这是因为要访问的服务绑定了主机上的一个实体IP不是INADDR_ANY地址,所以连接不上。

    2.记得设置防火墙和关闭selinux策略

    关闭selinux

    vi /etc/sysconfig/selinux
    修改:
    SELINUX=disabled
    #setenforce 0

    配置iptables,添加VRRP通讯支持

    iptables -A INPUT -d 224.0.0.18 -j ACCEPT
  • 相关阅读:
    【leetcode】1365. How Many Numbers Are Smaller Than the Current Number
    【leetcode】1363. Largest Multiple of Three
    【leetcode】1362. Closest Divisors
    【leetcode】1361. Validate Binary Tree Nodes
    【leetcode】1360. Number of Days Between Two Dates
    【leetcode】1359. Count All Valid Pickup and Delivery Options
    【leetcode】1357. Apply Discount Every n Orders
    【leetcode】1356. Sort Integers by The Number of 1 Bits
    ISE应用入门的一些问题
    DDR的型号问题
  • 原文地址:https://www.cnblogs.com/hdflzh/p/4057098.html
Copyright © 2011-2022 走看看