• 【Web】Keepalived+Nginx 实现高可用集群


    什么是Keepalived  

      Keepalived是用C语言编写的路由软件。该项目的主要目标是为Linux系统和基于Linux的基础结构提供负载均衡和高可用性的简单而强大的功能。 负载平衡框架依赖于提供第4层负载平衡的著名且广泛使用的Linux虚拟服务器(IPVS)内核模块。Keepalived实现了一组检查器,以根据其运行状况动态,自适应地维护和管理负载平衡的服务器池。另一方面,VRRP实现了高可用性 协议。VRRP是路由器故障转移的基础砖。此外,Keepalived还实现了一组VRRP有限状态机的挂钩,从而提供了低级和高速协议交互。为了提供最快的网络故障检测,Keepalived实施BFD协议。VRRP状态转换可以考虑BFD提示来驱动快速状态转换。Keepalived框架可以独立使用,也可以一起使用以提供弹性基础架构。

      Keepalived是免费软件;您可以根据自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它

      官网:https://www.keepalived.org/

    Keepalived+Nginx 高可用集群(主从模式)

      架构图

      

      服务器准备

        准备2台服务器172.18.0.3(主)、172.18.0.2(备),系统CentOS

        一个虚拟IP:172.18.0.80(自己网络内,未被其他主机占用IP即可)

     Nginx安装

      1、分别在2台服务器上安装nginx,参考【Web】Nginx下载与安装

      2、修改172.18.0.3(主)上nginx的主页内容,内容如下:

    1 Master nginx
    2 172.18.0.3

        172.18.0.2(备)上nginx内容如下:

    1 Master nginx
    2 172.18.0.2

      3、测试

        1)启动nginx

        2)分别访问地址:http://172.18.0.3,http://172.18.0.2

    Keepalived安装

      1、安装命令: yum install keepalived -y

      2、修改keepalived的配置文件(/etc/keepalived/keepalived.conf)

        命令:vim /etc/keepalived/keepalived.conf

        172.18.0.3(主)上keepalived的配置如下:

     1 # 全局定义块
     2 global_defs {
     3    router_id LVS_DEVEL
     4 }
     5 
     6 vrrp_script chk_nginx {
     7   # 检查脚本路径
     8   script "/etc/keepalived/nginx_check.sh"
     9   # 检查脚步执行的间隔,单位秒
    10   interval 2 
    11   # 权限,成功+2
    12   weight 2
    13 }
    14 
    15 vrrp_instance VI_1 {
    16     ## 主节点为 MASTER, 对应的备份节点为 BACKUP
    17     state MASTER
    18     ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同,一般是eth0 我的是 eth1
    19     interface eth1
    20     # 主、备机的virtual_router_id 必须相同
    21     virtual_router_id 51
    22     # 主、备机不同的优先级,主机值大,备份机较小
    23     priority 100
    24     ## 组播信息发送间隔,两个节点设置必须一样, 默认 1s
    25     advert_int 1
    26     ## 设置验证信息,两个节点必须一致
    27     authentication {
    28         auth_type PASS
    29         auth_pass 1111
    30     }
    31     ## 将 track_script 块加入 instance 配置块
    32     track_script {
    33         ## 执行 Nginx 监控的服务
    34         chk_nginx
    35     }
    36     # 虚拟 IP 池, 两个节点设置必须一样
    37     virtual_ipaddress {
    38         # VRRP H虚拟地址
    39         172.17.0.80
    40     }
    41 }

        172.18.0.2(备)上keepalived的配置,只有如下2个地方不一样,其他都一样

    1 vrrp_instance VI_1 {
    2     ## 主节点为 MASTER, 对应的备份节点为 BACKUP
    3     state BACKUP
    4     ...
    5     priority 50
    6     ...
    7 }

      3、编写nginx检查脚本

        命令:vim /etc/keepalived/nginx_check.sh

        检测nginx进程是否存在,不存在就关闭keepalived应用

    1 #!/bin/bash
    2 if [ `ps -C nginx --no-header |wc -l` -lt 2 ];then
    3     killall keepalived
    4 fi

      4、给nginx检查脚本授权

        命令:chmod +x /etc/keepalived/nginx_check.sh

      5、分别启动2台服务器上的keepalived

        启动命令:systemctl start keepalived

        加入开机启动命令:systemctl enable keepalived

        停止命令:systemctl stop keepalived

      6、使用命令查看keepalived是否启动 

        命令:ps -ef|grep keepalived

        

      7、分别查看主备2台服务器的ip信息

        命令:ip a

        172.18.0.3(主),如下可以看到已经绑定了虚拟IP(172.18.0.80)

        

        172.18.0.2(备),未绑定虚拟IP

        

    高可用测试

      1、使用命令,访问虚拟IP(172.18.0.80)

        命令:curl 172.18.0.80,效果如下:

        

        可以看到访问的是172.18.0.3(主)服务器上的Nginx

      2、关闭172.18.0.3(主)服务器上的Nginx

        再次用命令,访问虚拟IP(172.18.0.80),效果如下:

        

        可以看到请求已转到172.18.0.2(备)服务器上的Nginx

      3、分别查看主备2台服务器的ip信息,命令:ip a

        

        可以看到172.18.0.3(主)服务器已经没有绑定虚拟IP,而172.18.0.2(备)绑定了虚拟IP

      4、再次启动172.18.0.3(主)服务器上的Nginx 和 Keepalived

        再次用命令,访问虚拟IP(172.18.0.80),发现请求已转到172.18.0.3(主)服务器上

      总结:以上 Keepalived + Nginx 已实现vip漂移高可用

      

  • 相关阅读:
    EasyHook库系列使用教程之四钩子的启动与停止
    inputclean插件的使用方法
    机器学习(十三)——机器学习中的矩阵方法(3)病态矩阵、协同过滤的ALS算法(1)
    <LeetCode OJ> 204. Count Primes
    leetcode 235: Lowest Common Ancestor of a Binary Search Tree
    数据结构经常使用算法
    调侃物联网开源框架,我们什么时候也来开源一个?
    字符编码简单介绍
    PriorityQueue ,ArrayList , 数组排序
    从struts2.1开始Convention零配置
  • 原文地址:https://www.cnblogs.com/h--d/p/12884462.html
Copyright © 2020-2023  润新知