ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

keepalived

2021-04-13 16:03:46  阅读:319  来源: 互联网

标签:goodboy 10.0 www bbs keepalived curl com


高可用—keepalived

什么是高可用?

简单的来讲,高可用就是通过设计减少系统不能提供服务的时间。

Keepalived软件主要是通过VRRP协议实现高可用功能的。(提供故障切换和健康检查)

Keepalived 是一种基于 VRRP 协议的热备方式,能很好的完成服务器之间的故障切换,解决了单点故障的问题,每台热备组可以有多台服务器,最常用的还是双机热备(根据虚拟 IP 的漂移来实现),可适用于各种应用服务.

VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。

高可用部署服务过程

准备环境:

Web01:yum install –y nginx  10.0.0.7

Web02:yum install –y nginx   10.0.0.8

Web03: yum install –y nginx    10.0.0.9

Lb01:yum install –y nginx ,yum install –y keepalived  10.0.0.5

Lb02: yum install –y nginx ,yum install –y keepalived  10.0.0.6

 

第一个里程:确认后端节点是否可以正常访问

    web01 web02 web03

    curl -H host:www.goodboy.com 10.0.0.7

    curl -H host:www. goodboy.com 10.0.0.8

    curl -H host:www. goodboy.com 10.0.0.9

   

    第二个里程:确认负载均衡服务配置

    curl -H hosts:www. goodboy.com  10.0.0.5

    curl -H hosts:www. goodboy.com  10.0.0.6

   

    第三个里程:需要负载均衡服务器部署安装keepalived

    yum install -y keepalived

PS:确认系统epel源是否更新成功

第四个里程:编写高可用配置文件

Lb01配置

global_defs {                   --- 全局配置信息

    router_id lb01             --- 标记主机身份信息 lb01

   }

 

vrrp_instance test {              --- vrrp冗余功能配置

    state MASTER              --- 规划确认主机角色身份

    interface eth0              --- 虚拟IP地址在哪个网卡上生成

    virtual_router_id 51           --- 定义路由组播标号

    priority 100                  --- 定义网站服务优先级

    advert_int 1                --- 组播发送间隔时间

    authentication {              --- 开启网站认证功能

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {                  --- 定义虚拟IP地址  

       10.0.0.3

    }

}

 

Lb02上配置

global_defs {                   --- 全局配置信息

    router_id lb02              --- 标记主机身份信息 lb02

   }

 

vrrp_instance test {              --- vrrp冗余功能配置

    state BACKUP              --- 规划确认主机角色身份

    interface eth0              --- 虚拟IP地址在哪个网卡上生成

    virtual_router_id 51           --- 定义路由组播标号

    priority 50                  --- 定义网站服务优先级

    advert_int 1                --- 组播发送间隔时间

    authentication {              --- 开启网站认证功能

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {                  --- 定义虚拟IP地址  

       10.0.0.3

    }

}

PS:确认vip地址是否和域名建立解析

        www.goodboy.com ~  10.0.0.3

强调:主和备keepalived配置主要有3个地方不一致

    ① router_id xxx

    ② state BACKUP/MASTER

    ③ priority xxx

什么是脑裂?

在HA集群系统中,节点a和节点b是通过心跳线来感知对方的存活状态,当节点a出现异常时,节点b就会接管a的资源,以此类推,当节点b出现异常时,节点a就会接管b的资源。但是,当网络出现故障时,导致2个节点都出现了故障,那么双方就会认为对方都出现了异常开始互相接管对方的资源,那么脑裂的问题就出现了。

如何解决脑裂?

参考网址:https://www.cnblogs.com/fatzi/p/13358993.html

解决方案:

利用监控软件进行监控管理  zabbix

利用编写监控脚本文件      shell -- 实现监控监本编写/实现自动化管理服务/实现服务菜单管理

编写脚本:

当监控备服务器上出现vip地址报警

#!/bin/bash

ip a s eth0|grep "10.0.0.3" &>/dev/null

if [ $? -eq 0 ]

then

   echo "出现脑裂问题,请及时排查";

fi

监控服务状态信息

nginx负载均衡服务活着,keepalived服务存活就有意义

nginx负载均衡服务死去,keepalived服务就没有存在意义

如何释放主服务器上流量资源:

1) 当nginx服务出现问题,直接关闭keepalived服务

#!/bin/bash

Netstat –lntup |grep 80 &> /dev/null

if [ $? -ne 0 ]

then

    systemctl stop keepalived

fi

第二个里程:可以将脚本信息加载到高可用配置文件中

global_defs {

    router_id lb01

   }

vrrp_script check_web {

       script "/server/scripts/web_check.sh"

       interval 1

       weight 10

}

 

vrrp_instance test {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 60

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        10.0.0.3

    }

    track_script {

      check_web

   }

}

第三个里程:设置脚本权限并重启keepalived服务进行测试

    chmod +x  /server/scripts/web_check.sh

    systemctl restart keepalived

2)当nginx服务出现问题,将keepalived资源进行转移  利用weight参数功能

    nginx 自动恢复机制 +  keepalived自动恢复机制

lb01 主服务器

    nginx服务活着时候,keepalived优先级高于备服务器

    nginx服务宕掉时候,keepalived优先级降低 

weight 值为正数:

    条件:

    监控脚本执行成功=返回值为0   优先级+weight

    监控脚本执行失败=返回值非0   默认优先级

weight 值为负数:

    条件:

    监控脚本执行成功=返回值为0   默认优先级

    监控脚本执行失败=返回值非0   优先级+weight

主服务器上:

当nginx服务停止时,脚本执行失败  weight设置为负数   优先级+weight < 备服务优先级

当nginx服务恢复时,脚本执行成功  weight设置为负数   默认优先级 > 备服务优先级

#!/bin/bash

netstat -lntup|grep 80 &>/dev/null

if [ $? -ne 0 ]

then

    exit 1

else

    exit 0

fi

 

global_defs {

    router_id lb01

   }

vrrp_script check_web {

       script "/server/scripts/web_check.sh"

       interval 1

       weight -20

}

 

vrrp_instance test {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 60

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        10.0.0.3

    }

    track_script {

      check_web

   }

}

 

负载均衡双主配置过程

出现双主配置,主要是缓解主服务压力(负载均衡服务器lb01)

双主==实现互为主备

实现过程:

规划:

www.goodboy.com  --- lb01 10.0.0.5(vip10.0.0.3) --- web01/02/03

bbs.goodboy.com  --- lb02 10.0.0.6(vip10.0.0.4) --- web01/02/03

   

    第一个里程:配置集群节点信息并测试

    lb01 -- web01-03  www网站/bbs网站

    [root@lb01 scripts]# curl -H host:www. goodboy.com 10.0.0.7

    www 10.0.0.7

    [root@lb01 scripts]# curl -H host: www. goodboy.com 10.0.0.8

    www 10.0.0.8

    [root@lb01 scripts]# curl -H host: www. goodboy.com 10.0.0.9

    www 10.0.0.9

    [root@lb01 scripts]# curl -H host:bbs.goodboy.com 10.0.0.7

    bbs 10.0.0.7

    [root@lb01 scripts]# curl -H host: bbs.goodboy.com 10.0.0.8

    bbs 10.0.0.8

    [root@lb01 scripts]# curl -H host: bbs.goodboy.com 10.0.0.9

    bbs 10.0.0.9

   

    lb02 -- web01-03  bbs网站/www网站

    [root@lb02 scripts]# curl -H host: www. goodboy.com 10.0.0.7

    www 10.0.0.7

    [root@lb02 scripts]# curl -H host: www. goodboy.com 10.0.0.8

    www 10.0.0.8

    [root@lb02 scripts]# curl -H host: www. goodboy.com 10.0.0.9

    www 10.0.0.9

    [root@lb02 scripts]# curl -H host: bbs.goodboy.com 10.0.0.7

    bbs 10.0.0.7

    [root@lb02 scripts]# curl -H host: bbs.goodboy.com 10.0.0.8

    bbs 10.0.0.8

    [root@lb02 scripts]# curl -H host: bbs.goodboy.com 10.0.0.9

    bbs 10.0.0.9

   

    第二个里程:确认负载均衡服务负载情况

    [root@web01 ~]# curl -H host: www. goodboy.com 10.0.0.5

    www 10.0.0.7

    [root@web01 ~]# curl -H host: www. goodboy.com 10.0.0.5

    www 10.0.0.8

    [root@web01 ~]# curl -H host: www. goodboy.com 10.0.0.5

    www 10.0.0.9

    [root@web01 ~]# curl -H host: bbs.goodboy.com 10.0.0.5

    bbs 10.0.0.7

    [root@web01 ~]# curl -H host: bbs.goodboy.com 10.0.0.5

    bbs 10.0.0.8

    [root@web01 ~]# curl -H host: bbs.goodboy.com 10.0.0.5

    bbs 10.0.0.9

   

    [root@web01 ~]# curl -H host: bbs.goodboy.com 10.0.0.6

    bbs 10.0.0.7

    [root@web01 ~]# curl -H host: bbs.goodboy.com 10.0.0.6

    bbs 10.0.0.8

    [root@web01 ~]# curl -H host: bbs.goodboy.com 10.0.0.6

    bbs 10.0.0.9

    [root@web01 ~]# curl -H host: www. goodboy.com 10.0.0.6

    www 10.0.0.7

    [root@web01 ~]# curl -H host: www. goodboy.com 10.0.0.6

    www 10.0.0.8

    [root@web01 ~]# curl -H host: www. goodboy.com 10.0.0.6

    www 10.0.0.9

   

    第三个里程:编写keepalived配置文件

    lb01  www主  bbs备

    global_defs {

    router_id lb01

   }

 

vrrp_instance www {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        10.0.0.3

    }

}

vrrp_instance bbs {

    state BACKUP

    interface eth0

    virtual_router_id 52

    priority 50

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        10.0.0.4

    }

}

    lb02  www备  bbs主

    global_defs {

    router_id lb02

   }

 

vrrp_instance www {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 50

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

       10.0.0.3

    }

}

vrrp_instance bbs {

    state MASTER

    interface eth0

    virtual_router_id 52

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

       10.0.0.4

    }

}第四个里程:配置dns解析与测试

 

 

标签:goodboy,10.0,www,bbs,keepalived,curl,com
来源: https://www.cnblogs.com/olddriver-t/p/14653667.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有