zoukankan      html  css  js  c++  java
  • Linux搭建Keepalived

    这里如果我们的机器192.168.1.100 出现故障了呢?

    那么怎么使用192.168.1.111上的Nginx进行转发呢?

    怎么设置主机和备机呢? 如果主机死了怎么进行故障移除呢? 

    如果主机从不可用到可用状态又怎么进行恢复添加呢?

    这些功能都是可以通过Keepalived来进行设置的.

    第一步:在线安装keepalived中间件
    sudo yum install -y keepalived

    有时候需要先卸载再安装

    sudo yum -y remove keepalived
    第二步:配置 keepalived

    (1)服务器 (1)上 keepalived 配置

    $ vim /etc/keepalived/keepalived.conf
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            172.28.23.100
        }
    }

    简单的解释下参数:

    eth0是网卡,有些是eth33,可以通过ifconfig命令进行查看;
    priority 是用来标记主从服务器的,priority 101表示主服务器,priority 100表示从服务器;
    virtual_ipaddress表示虚拟ip的地址
    

    (2)服务器 (2)上 keepalived 配置

    $ vim /etc/keepalived/keepalived.conf
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 99
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            172.28.23.100
        }
    }
    

    这两个配置文件差别就在priority 101与priority 100,分别表示主从关系。

    第三步: 启动 keepalived 服务
    systemctl start keepalived.service
    systemctl enable keepalived.service
    第四步:查看IP地址信息

    服务器 (1)上IP地址信息

    ip addr show eth0

    得出输出:

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether fa:16:3e:ab:d2:19 brd ff:ff:ff:ff:ff:ff
        inet 172.28.23.73/24 brd 172.28.23.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet 172.28.23.100/32 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 2001:fecc:0:623::9/64 scope global 
           valid_lft forever preferred_lft forever
        inet6 fe80::f816:3eff:feab:d219/64 scope link 
           valid_lft forever preferred_lft forever

    其中可以看到 172.28.23.100/32 scope global eth0,说明现在host1是作为虚拟IP的master来运行的。

    服务器 (2)上 IP 地址信息

    $ ip addr show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether fa:16:3e:95:87:6b brd ff:ff:ff:ff:ff:ff
        inet 172.28.23.96/24 brd 172.28.23.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 2001:fecc:0:623::a/64 scope global 
           valid_lft forever preferred_lft forever
        inet6 fe80::f816:3eff:fe95:876b/64 scope link 
           valid_lft forever preferred_lft forever

    此时host2上ip地址信息中不包含虚拟IP “172.28.23.100” 信息。

    第五步:验证 IP 地址 Failover

    现在手动停止host1上的 keepalived 服务

    systemctl start keepalived.service
    ip addr show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether fa:16:3e:ab:d2:19 brd ff:ff:ff:ff:ff:ff
        inet 172.28.23.73/24 brd 172.28.23.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 2001:fecc:0:623::9/64 scope global 
           valid_lft forever preferred_lft forever
        inet6 fe80::f816:3eff:feab:d219/64 scope link 
           valid_lft forever preferred_lft forever

    此时host1上ip地址信息中不包含虚拟IP “172.28.23.100” 信息。

    接着在host2上面先停止在开启keepalived服务

    systemctl stop keepalived.service
    systemctl start keepalived.service

    再次查询host2的IP的信息

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether fa:16:3e:95:87:6b brd ff:ff:ff:ff:ff:ff
        inet 172.28.23.96/24 brd 172.28.23.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet 172.28.23.100/32 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 2001:fecc:0:623::a/64 scope global 
           valid_lft forever preferred_lft forever
        inet6 fe80::f816:3eff:fe95:876b/64 scope link 
           valid_lft forever preferred_lft forever

    现在可以看到 host2 上 ip 地址信息中已经包含虚拟IP “172.28.23.100” 信息了。
    此时如果再把 host1 上的 keepalived 服务启动,会发现虚拟IP “172.28.23.100” 又重新绑定到 host1 上了。

    如何添加ipv6地址类型为虚拟IP(vip)
    思路是一样的,在确认好服务器支撑ipv6的情况下,将vip换成ipv6格式的地址就行,若是服务器不支持ipv6,则可以根据教程来添加ipv6支持!
    如将172.28.23.100改成2001:fecc:0:622::a/64
    首先:重新修改服务器(1)上的keepalived.conf文件
    vim /etc/keepalived/keepalived.conf
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 101
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            2001:fecc:0:622::a/64 #ipv6地址
        }
    }

    重启keepalived服务

    systemctl restart keepalived.service

    再次查看IP信息

    ip addr show eth0

    得出输出:

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether fa:16:3e:ab:d2:19 brd ff:ff:ff:ff:ff:ff
        inet 172.28.23.73/24 brd 172.28.23.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 2001:fecc:0:622::a/64 scope global nodad  #虚拟的ipv6地址
           valid_lft forever preferred_lft forever
        inet6 2001:fecc:0:623::9/64 scope global 
           valid_lft forever preferred_lft forever
        inet6 fe80::f816:3eff:feab:d219/64 scope link 
           valid_lft forever preferred_lft forever
  • 相关阅读:
    自定义类型中结构体、枚举等,结构体内存对齐相关要点总结
    可变参数模拟printf()函数实现一个my_print()函数以及调用可变参数需注意的陷阱
    一些关于memcpy memmove函数的区别,和模拟实现
    浅谈 数组指针 指针数组 函数指针 函数指针数组... 以及它们之间区别。
    C语 三子棋小游戏
    5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
    stm32移植ds18b20时出现的问题
    自己实现strcmp
    C语言新手写扫雷攻略3
    C语言新手写扫雷攻略2
  • 原文地址:https://www.cnblogs.com/2839888494xw/p/15185051.html
Copyright © 2011-2022 走看看