• keepalived 服务高可用(简约版)


    本文基于centos 7记述如何使用keepalived

    背景

    为生产环境准备一台备机是极其必要的,防止主机宕掉无服务可用的情况出现。但是同一局域网内每台主机都分配了一个唯一IP,这些IP既然相互不同,那么服务请求的时候岂不是要切换IP地址?其实大可不必,我们不妨设想一下,如果有一个虚拟IP,可以动态地分配到能够提供服务的机器上:一台宕机,当前宕机的机器绑定的虚拟IP立马绑定到另一台主机上继续提供服务,岂不是完美解决了这一问题!keepalived就是为此而生的。

    安装

    我准备了2台主机(192.168.0.100,192.168.0.101)暂定虚拟IP:192.168.0.145,都部署了一模一样的nginx服务,现在安装keepalived,两台主机都执行以下命令

    yum install -y keepalived
    

    如果出现缺包的情况,可以尝试安装yum install -y openssl-devel(我安装时出的问题,这里仅供参考)

    配置

    进入/etc/keepalived/目录,找到文件keepalived.conf,删除里面的数据,主机填入配置

    ! Configuration File for keepalived
    
    global_defs {
       router_id master # 机器名(自定义)
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface enp0s3
        # 虚拟路由ID,粗略学习的话,主备不用改这个值
        virtual_router_id 51
        # 顶替服务的权重,值越大权重越高
        priority 100 
        # 通告频率,单位为秒
        advert_int 1
        # 通信认证机制(主备配置中此项必须相同)
        authentication {
            auth_type PASS # 组名(同一组的机器才能共享virtual IP)
            auth_pass 1111 # 组密码
        }
        # 虚拟IP
        virtual_ipaddress {
            192.168.0.145
        }
    }
    

    备机填入配置

    ! Configuration File for keepalived
    global_defs {
       router_id slave 
    }
    
    vrrp_instance VI_1 {
        state BACKUP 
        interface enp0s3
        virtual_router_id 51
        priority 90
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.0.145
        }
    }
    

    两台都配置完成后,正常保存即可。

    启动

    主备机都执行以下命令

    systemctl start keepalived
    

    查看状态

    systemctl status keepalived
    

    打印结果如下证明启动成功

    [root@localhost ~]# systemctl status keepalived
    ● keepalived.service - LVS and VRRP High Availability Monitor
       Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor                                                                                 preset: disabled)
       Active: active (running) since Wed 2024-06-26 09:40:21 EDT; 25min ago
      Process: 2777 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited,                                                                                 status=0/SUCCESS)
     Main PID: 2778 (keepalived)
       CGroup: /system.slice/keepalived.service
               ├─2778 /usr/sbin/keepalived -D
               ├─2779 /usr/sbin/keepalived -D
               └─2780 /usr/sbin/keepalived -D
    

    验证

    现在你用ip addr命令查看一下主机的IP地址,以下是我的打印,IP145已经绑定到这台主机上了,反观备机执行ip addr,就不会有IP145

    [root@localhost ~]# ip addr
    1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: enp0s3:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:74:40:4c brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.100/24 brd 192.168.0.255 scope global noprefixroute enp0s3
           valid_lft forever preferred_lft forever
        inet 192.168.0.145/32 scope global enp0s3
           valid_lft forever preferred_lft forever
        inet6 fe80::ea55:5c05:1f91:3173/64 scope link noprefixroute
           valid_lft forever preferred_lft forever
    

    现在,你用一台电脑访问虚拟IP,看看nginx是否能够代理到对应的服务上,如果可以成功访问服务,那么进入下一步:主机reboot -f重启,然后马上去备机上再次执行ip addr,看看145是不是跑到备机上了,如果是,证明成功了

  • 相关阅读:
    Oracle基础知识和常用操作
    云原生之容器化:Docker三剑客之Docker Compose
    计算机毕业设计java毕业设计项目基于ssm maven健身房俱乐部管理系统
    锚框_的标定
    Android APP稳定性测试工具Fastbot
    「面试必会」这应该是最有深度的TCP三次握手、四次挥手细节讲解
    Oracle检查点队列–实例崩溃恢复原理剖析
    什么是数字货币、数字金融 和区块链?
    Qt如何保证控件调用时候的线程安全
    推荐模型复现(四):多任务模型ESMM、MMOE
  • 原文地址:https://blog.csdn.net/qq_35215728/article/details/139999851