zoukankan      html  css  js  c++  java
  • keepalived 绑定vip做业务ip

    序言

    我开始工作的时候,管理几台跑在小型机上面的Oracle数据库,当时我的同事们总是会把一个词业务ip挂在嘴边。其实那时候我还不很明白什么叫做业务ip,也不明白与这个词相对应的一个词,叫虚拟ip。但是后来随着对业务逐渐的认识吧,知道了这个虚拟ip其实是给应用方使用的,而且可以通过虚拟ip的漂移来实现高可用。

    前言

    这篇文章其实很简单,就是使用开源软件keepalived来添加一个vip,模拟此过程。

    正文

    我们准备两台机:

    192.168.0.111 app1

    192.168.0.112 app2

    一个vip:

    192.168.0.113

    然后,分别给app1和app2安装keepalived,我这里直接用yum安装了,比较快。

    yum install -y keepalived
    

    然后,分别修改两台机的/etc/keepalived/keepalived.conf,将其改为:

    ​ app1:

    ! Configuration File for keepalived
    global_defs {
     router_id LVS_DEVEL
    }
    
    vrrp_instance VI_1 {
       state MASTER
       unicast_src_ip 192.168.0.111
       unicast_peer {
        192.168.0.112
       }
       interface eth0
       virtual_router_id 51
       priority 101
       authentication {
           auth_type PASS
           auth_pass 888888
       }
       virtual_ipaddress {
           192.168.0.113
       }
    }
    

    ​ app2:

    ! Configuration File for keepalived
    global_defs {
     router_id LVS_DEVEL
    }
    
    vrrp_instance VI_1 {
       state MASTER
       unicast_src_ip 192.168.0.112
       unicast_peer {
        192.168.0.111
       }
       interface eth0
       virtual_router_id 51
       priority 100
       authentication {
           auth_type PASS
           auth_pass 888888
       }
       virtual_ipaddress {
           192.168.0.113
       }
    }
    

    然后,分别启动两台机的keepalived和network服务。

    systemctl enable --now keepalived
    systemctl restart network
    

    然后就会发现,vip已经出现在app1上。

    这时,将app1关机, 然后会发现vip跑去了app2。

    再将app1开机,发现vip又回来了。

    后记:

    配置文件中,需要注意三点:

    1. 两台主机的unicast_src_ip为自身ip值,unicast_peer为对方ip值。
    2. 备机的priority值需要低于主机的priority值,且不能低太多,最好设置为5以内。
    3. 两台主机的vip应该设置为同一ip,且此ip不为其余主机占用,不会产生ip冲突。

    小结

    本文简单讲了一下keepalived的vip漂移设置方法,当然vip的玩法有很多,也可以对nginx、mysql、zabbix等应用进行vip设置,但是本文做为系列第一篇,就没讲那么多了,以后有空再填坑叭~

  • 相关阅读:
    linux 消息队列
    linux 共享内存
    多线程(八)~ThreadLocal、InheritableThreadLocal的使用
    多线程(四)~数据操作的原子性,使用原子性操作AutomicInteger替换非原子性的i++的操作
    多线程(五)~ wait/notify机制(等待/通知)
    多线程(六)~通过管道进行线程之间的通信:字节流、字符流
    多线程(二)~Thread类相关的API介绍
    多线程(三)~多线程中数据的可见性-volatile关键字
    多线程(一)~基础介绍,简单demo实现
    haproxy学习——安装(一)
  • 原文地址:https://www.cnblogs.com/young233/p/12663431.html
Copyright © 2011-2022 走看看