百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

5分钟动手操作,掌握keepalive

off999 2025-01-11 16:03 16 浏览 0 评论

实验目的

配置keepalived,掌握基本的配置方法,并模拟主节点宕机、恢复操作。

实验拓扑

实验步骤

编写docker-compose文件

version: '3'

services:
  nginx-master:
    image: nginx:alpine
    container_name: nginx-master
    ports:
      - "8081:80"
    networks:
      vrrp-net:
        ipv4_address: 192.168.8.10
    volumes:
      - ./html/index-master.html:/usr/share/nginx/html/index.html

  keepalived-master:
    image: osixia/keepalived:2.0.20
    container_name: keepalived-master
    depends_on:
      - nginx-master
    network_mode: "service:nginx-master"
    cap_add:
      - NET_ADMIN
    volumes:
      - ./keepalived-master.conf:/usr/local/etc/keepalived/keepalived.conf
      - ./check_nginx.sh:/usr/local/bin/check_nginx.sh

  nginx-backup:
    image: nginx:alpine
    container_name: nginx-backup
    ports:
      - "8082:80"
    networks:
      vrrp-net:
        ipv4_address: 192.168.8.11
    volumes:
      - ./html/index-backup.html:/usr/share/nginx/html/index.html

  keepalived-backup:
    image: osixia/keepalived:2.0.20
    container_name: keepalived-backup
    depends_on:
      - nginx-backup
    network_mode: "service:nginx-backup"
    cap_add:
      - NET_ADMIN
    volumes:
      - ./keepalived-backup.conf:/usr/local/etc/keepalived/keepalived.conf
      - ./check_nginx.sh:/usr/local/bin/check_nginx.sh

  proxy:
    image: haproxy:1.7-alpine
    ports:
      - 8000:6301
    volumes:
      - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
    networks:
      - vrrp-net
  observer:
    image: alpine
    container_name: observer
    networks:
      vrrp-net:
        ipv4_address: 192.168.8.12
    depends_on:
      - keepalived-master
      - keepalived-backup
    command: >
      /bin/sh -c "apk add --no-cache curl;
        while true; do
          echo 'Checking VIP...';
          curl -s http://192.168.8.100;
          sleep 2;
        done"

networks:
  vrrp-net:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.8.0/24

主节点配置文件

keepalived-master.conf

vrrp_script chk_nginx {
    script "/usr/local/bin/check_nginx.sh"
    interval 2    # 每2秒检查一次
    weight -10    # 检查失败时降低优先级
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1 
    preempt #启用抢占机制,恢复后重新做主
    unicast_src_ip 192.168.8.10
    unicast_peer {
        192.168.8.11
    }
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.8.100
    }
    track_script {
        chk_nginx
    }
}

从节点配置文件

vrrp_script chk_nginx {
    script "/usr/local/bin/check_nginx.sh"
    interval 2    # 每2秒检查一次
    weight -10    # 检查失败时降低优先级
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    unicast_src_ip 192.168.8.11
    unicast_peer {
        192.168.8.10
    }
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.8.100
    }
    track_script {
        chk_nginx
    }
}

Nginx检测脚本

check_nginx.sh

#!/bin/sh
if curl -s http://localhost:80 > /dev/null; then
    exit 0
else
    exit 1
fi

Nginx主页配置

为方便展示效果,将nginx 主备两个节点显示内容进行区分。设置不同的主页内容。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Keepalived Nginx Master</title>
</head>
<body>
    <h1>Master</h1>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Keepalived Nginx Backup</title>
</head>
<body>
    <h1>Backup</h1>
</body>
</html>

VIP查看配置

使用haproxy配置下对vip的代理,方便在浏览器中直接访问VIP地址,查看确认当前nginx服务节点。

global
    log 127.0.0.1 local0
    maxconn 4096
    daemon
    nbproc 4

defaults
    log 127.0.0.1 local3
    mode http
    option dontlognull
    option redispatch
    retries 2
    maxconn 2000
    balance roundrobin
    timeout connect 5000ms
    timeout client 5000ms
    timeout server 5000ms

frontend main
    bind *:6301
    default_backend webserver

backend webserver
    server ngxin_master 192.168.8.100:80 check inter 2000 rise 2 fall 5

启动docker-compose服务

执行docker-compose up -d 命令,启动服务.

可执行docker-compose logs -f 命令观察日志,出现类似下图类似日志,说明启动成功。

确认启动成功

此时访问http://127.0.0.1:8000,应该访问到主节点

模拟关闭master节点

将nginx-master节点关闭,查看http://127.0.0.1:8000输出内容。

为方便操作执行,编写关闭及恢复脚本。

docker stop nginx-master
sleep 2
sh showip.sh
echo "master ip info "
docker exec -it nginx-master ip addr show
echo ""
echo ""
echo ""

echo "backup ip info "
docker exec -it nginx-backup ip addr show

sh showip.sh 执行效果如下,注意观察192.168.8.100的绑定关系。默认是在主节点。

docker start nginx-master
docker restart keepalived-master
sleep 2
sh showip.sh

准备好脚本后,执行sh stop-master.sh

输出内容形如下图:

此时访问http://127.0.0.1:8000

可以看到此时已切换到nginx备机上了。

执行sh showip.sh可以看到,192.168.8.100这个vip已经转义到备机上了。

模拟恢复master节点

当故障解除后,需要恢复master节点,执行sh start-master.sh

输出如下内容:

此时再次访问http://127.0.0.1:8000

可以看到,我们的VIP的服务内容重新回到主节点。

执行sh showip.sh看下我们的虚IP的绑定情况。

此时虚IP已经重新回到了主节点上。

相关推荐

win7重装系统方法(win7系统重装详细步骤)

步骤1、打开云骑士装机大师,点击一键装机下的【立即重装】,检测完毕后点击【下一步】;步骤2、选择windows7下的旗舰版32位,点击【下一步】,自行选择或取消推荐的软件,点击【下一步】;步骤3、备份...

电脑桌面啥都没有了怎么回事

1、如果我们桌面上什么东西都没有,可以先打开任务管理器,然后顶级左上方的文件,随后新建任务,在打开的界面中输入explorer,点击确认之后,等个几秒钟左右就可以看见桌面上的图标了。  2、另一个方法...

如何将电脑恢复出厂设置win7

1.首先我们打开电脑找到“计算机”点击打开。2.进入页面然后我们点击“Windows7(C:)”打开C盘。3.我们在C盘界面找到Windows7并点击打开。4.进入到Win7文件夹中找到并双击“Sys...

u盘存在但是读不出来(u盘显示有内容但读不出来怎么办)

u盘能识别,不能读取可能是你关闭了u盘自动读取,取消后即可。步骤:1、在电脑桌面右键点击“计算机”,在出现的菜单中选择“管理”选项2、在弹出的计算机管理窗口,依次打开“计算机管理-服务和应用程序-服务...

win8家庭中文版下载(windows家庭中文版下载)

可以按照以下步骤在Win8上下载和安装Word:1.通过微软官网下载购买,或者通过MicrosoftStore应用商店进行购买和下载。2.下载完成后,打开文件夹,双击setup进行安装。3.安...

教大家强制退出苹果id账号(教大家强制退出苹果id账号ipad)

1.首先将手机强制关机,并在电脑端安装iTunes并打开。2.用数据线将手机与电脑连接起来,长按手机电源键。3.当出现苹果标志时不要松开电源键,接着按Home键。4.直到屏幕黑屏,松开电源键。5.继续...

惠普官网驱动下载官网(惠普驱动官方)

在惠普官网下载系统驱动方法如下访问HP官网:www.hp.com找到支持与驱动页面(通常在顶部导航栏的支持或下载中)输入你的HP产品的序列号或选择产品类型和型号选择你的操作系统,然后下载相关的驱动。安...

电脑公司取名字大全(电脑行业公司取名)

动感网络IT狂人行鱼雷IT网PC宝宝网外有鱼超导技术网PC技术网加点分吧,不然想不出太多,呵呵绿苑计算机协会绿色代表生命,有起航的意义,苑是一个范畴,有地域的意思,是给你们一片天地的意思...

系统一键重装win7(win7一键重装系统win10)
  • 系统一键重装win7(win7一键重装系统win10)
  • 系统一键重装win7(win7一键重装系统win10)
  • 系统一键重装win7(win7一键重装系统win10)
  • 系统一键重装win7(win7一键重装系统win10)
如何卸载显卡驱动(主板驱动)
  • 如何卸载显卡驱动(主板驱动)
  • 如何卸载显卡驱动(主板驱动)
  • 如何卸载显卡驱动(主板驱动)
  • 如何卸载显卡驱动(主板驱动)
wifi怎么设置网速快(手机测wifi网速怎么测)

wifi加速设置方法步骤如下。1设置网速:浏览器中输入终端地址,输入账号和密码。找到连接设备数目并进行更改,找到信道宽度,选择更快的网速。2提高WiFi网速:进入设置中心,点击WLAN选项。点击高级设...

华硕驱动软件叫什么(华硕自带驱动管理软件)

q-installer驱动啥意思?华硕q-installer驱动能让用户更加方便地管理各种文件。将会同时显示4个Windows资源管理器的窗口,这样能让用户更加简单地对文件进行一些操作,例如复制,粘贴...

懂行的人建议买华为还是惠普电脑

华为电脑好。华为笔记本电脑主打的就是轻薄,质感,多屏协同生态,面向商务人群和学生党。目前在售的机型并不多,但每一台机子本身都不错,不过因为被制裁的缘故,定价过高,性价比打折扣。惠普笔记本好,惠普除了家...

如何把win系统换成安卓(怎么把系统改为win10)

方法/步骤分步:1首先点击打开酷安应用市场;2点击打开位于屏幕右下方的“应用游戏”选项;3选择想要下载的软件或者游戏app,点击进入;4选择“下载”按钮,点击开始下载;5APP下载完成后,系统会自动跳...

win7摄像头软件哪个好(win7摄像头软件ecap)
  • win7摄像头软件哪个好(win7摄像头软件ecap)
  • win7摄像头软件哪个好(win7摄像头软件ecap)
  • win7摄像头软件哪个好(win7摄像头软件ecap)
  • win7摄像头软件哪个好(win7摄像头软件ecap)

取消回复欢迎 发表评论: