keepalived双主以及nginx+keepalived实现高可用
admin
2023-02-25 11:40:06
0

一、keepalive实现双主:
1.1实验准备
2台主机地址分别为:172.20.10.9,172.20.10.10,
vip1为172.20.10.10,vip2为172.20.10.11
1.2通知脚本:

[root@node5 /]# vim /etc/keepalived/notify.sh 
#!/bin/bash
contact='root@localhost'
notify() {
    local mailsubject="$(hostname) to be $1, vip floating"
    local mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
    echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
master)
    notify master
    ;;
backup) 
    notify backup
    ;;   
fault)    
    notify fault
    ;;  
*)
   echo "Usage: $(basename $0) {master|backup|fault}"
   exit 1
   ;;
esac

1.3配置node5为vip1地址的主节点,vip2地址的备节点

[root@node5 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
      root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id node5
   vrrp_mcast_group4 224.0.100.19
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.20.10.10/28 dev ens33 label ens33:0
    }
   notify_master "/etc/keepalived/notify.sh master"
   notify_backup "/etc/keepalived/notify.sh backup"
   notify_fault "/etc/keepalived/notify.sh fault"
}
vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 52
    priority 98
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.20.10.11/28 dev ens33 label ens33:1
    }
   notify_master "/etc/keepalived/notify.sh master"
   notify_backup "/etc/keepalived/notify.sh backup"
   notify_fault "/etc/keepalived/notify.sh fault"
}

1.4配置node6为vip1地址的备节点,vip2地址的主节点

[root@node6 ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   notification_email {
      root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id node5
   vrrp_mcast_group4 224.0.100.19
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 98
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.20.10.10/28 dev ens33 label ens33:0
    }
   notify_master "/etc/keepalived/notify.sh master"
   notify_backup "/etc/keepalived/notify.sh backup"
   notify_fault "/etc/keepalived/notify.sh fault"
}
vrrp_instance VI_2 {
    state MASTER
    interface ens33
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.20.10.11/28 dev ens33 label ens33:1
    }
   notify_master "/etc/keepalived/notify.sh master"
   notify_backup "/etc/keepalived/notify.sh backup"
   notify_fault "/etc/keepalived/notify.sh fault"
}

1.5验证:
(1)先开启node6节点的keepalived服务,查看IP地址,状态:
2个VIP地址都在node6节点上:
keepalived双主以及nginx+keepalived实现高可用
keepalived双主以及nginx+keepalived实现高可用

(2)再开启node5节点keepalived服务,查看IP地址和状态:
VIP1地址已经飘到了node5节点上了
keepalived双主以及nginx+keepalived实现高可用
keepalived双主以及nginx+keepalived实现高可用
二,Nginx+Keepalived实现站点高可用
2.1实验准备:
2台主机:node5地址为172.20.10.9,node6的节点为172.20.10.8
vip地址为172.20.10.10
2.2nginx配置
(1)node5节点

[root@node5 ~]# yum install nginx -y
[root@node5 /]# vim /usr/share/nginx/html/index.html 
node5 web page
[root@node5 ~]# systemctl  start nginx

(2)node6节点

[root@node6 /]# yum install -y  nginx
[root@node6 /]# vim /usr/share/nginx/html/index.html 
node6 web page
[root@node6 ~]# systemctl  start nginx

2.3配置node5为vip的主节点,配置检查nginx的监控脚本:

[root@node5 /]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
      root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id node5
   vrrp_mcast_group4 224.0.100.19
}
vrrp_script chk_nginx {
    script "/usr/bin/killall -0 nginx &&  exit 0 || exit 1 "
    interval 1
    weight -5
    fall 2
    rise 1
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.20.10.10/28 dev ens33 label ens33:0
    }
    track_script {
        chk_nginx
    }
    track_interface {
        ens33
    }
   notify_master "/etc/keepalived/notify.sh master"
   notify_backup "/etc/keepalived/notify.sh backup"
   notify_fault "/etc/keepalived/notify.sh fault"
}
[root@node5 keepalived]# systemctl  start   keepalived

2.4配置node6为vip的备节点,配置检查nginx的监控脚本:

[root@node6 /]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {
   notification_email {
      root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id node5
   vrrp_mcast_group4 224.0.100.19
}
vrrp_script chk_nginx {
    script "/usr/bin/killall -0 nginx &&  exit 0 || exit 1 "
    interval 1
    weight -5
    fall 2
    rise 1
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 98
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.20.10.10/28 dev ens33 label ens33:0
    }
    track_script {
        chk_nginx
    }
    track_interface {
        ens33
    }
   notify_master "/etc/keepalived/notify.sh master"
   notify_backup "/etc/keepalived/notify.sh backup"
   notify_fault "/etc/keepalived/notify.sh fault"
}
[root@node6 html]# systemctl  start   keepalived

3.验证:
3.1当服务都正常时,vip地址在node5节点上,测试访问172.20.10.10的情况:
keepalived双主以及nginx+keepalived实现高可用
keepalived双主以及nginx+keepalived实现高可用
3.2当down掉node5节点上nginx服务时,观察vip地址和其访问情况:
vip地址飘到node6节点上,curl172.20.10.10,则访问的时node6节点
keepalived双主以及nginx+keepalived实现高可用

keepalived双主以及nginx+keepalived实现高可用
3.3当恢复node5节点上nginx服务时,vip地址飘到node5节点上,访问172.20.10.10则是node5上nginx
keepalived双主以及nginx+keepalived实现高可用
keepalived双主以及nginx+keepalived实现高可用

相关内容

热门资讯

伊朗确认前往美国参加世界杯:将... 当地时间5月6日,伊朗国家足球队主教练在接受采访时表示,伊朗国家足球队将于美加墨世界杯开始前14天抵...
雷达、机库、营房、燃料库、飞机... 据《华盛顿邮报》5月6日报道,通过卫星影像分析发现,自2月28日战事爆发以来,伊朗空袭已在中东美军军...
从买买买到租租租,“租用一代”... “五一”假期还在路上,年轻人已经“租”起来了。 “租三天,不到300块钱。”五一放假前一周,清清已给...
【品牌】摩托罗拉大折叠屏新机定... 此前联想预热将于5月19日19点举行联想天禧AI一体多端全场景新品超能之夜活动,届时将带来多款新品,...
常州欣隽益取得接线端子用快速冲... 国家知识产权局信息显示,常州欣隽益科技有限公司取得一项名为“接线端子用快速冲切装置”的专利,授权公告...
美媒:特朗普在结束伊朗战争问题... 据“国会山”网站5月6日报道,周二晚间,美国总统特朗普突然宣布终止旨在打破伊朗对霍尔木兹海峡掌控的军...
和创硅材料取得熔融石英制品擦洗... 国家知识产权局信息显示,东海县和创硅材料有限公司取得一项名为“一种熔融石英制品的擦洗脱泥装置”的专利...
美商务部长再就爱泼斯坦案接受国... 5月6日,美国商务部长卢特尼克“自愿”就其与爱泼斯坦的关系接受美国国会众议院监督与政府改革委员会的问...
“五一”小长假黄金零售市场新变... 【大河财立方 记者 孙凯杰】 “五一”小长假,黄金价格出现一波短暂调整,线下黄金零售市场热度如何?5...
以军3周来首次袭击黎巴嫩首都 据以色列总理内塔尼亚胡和国防部长卡茨当地时间5月6日晚发表的联合声明,以军当天对黎巴嫩首都贝鲁特南郊...