keepalived+nginx 模型示例

原理为:

调度器 利用 keepalived 保持高可用性,实现对系统的监控和VIP 的floating

NGINX 利用upstream模块进行调度

关键点:

keepalived 对NGINX 状态的监控: //利用配置文件中设定的脚本对调度器的nginx 进程的监控

实验步骤:

基于上一篇LVS-DR架构来做,具体LVS-DR架构请参考上一篇

  • 先设置主备单VIP 式LVS架构
    • 调度器分别安装nginx

      #yum install nginx -y

    • 修改配置文件,填加反代设置 /etc/nginx/nginx.conf

      upstream websrvs{

      server 172.18.48.63:80 ;

      server 172.18.48.64:80 ;

      server 127.0.0.1:80 backup;

      }

      注:这里是最基本的配置

      location / {

      proxy_pass http://websrvs;

      }

    • 配置keepalived 配置文件

      订制监控脚本:

      vrrp_script nginxstatus {

      script “kill -0 nginx && exit 0 || exit 1”

      interval 1

      weight -5

      }

      调用脚本:

      track_script {

      nginxstatus

      }

    • 启动 nginx 和 keepalived 服务

      service nginx start

      service keepalived start

    • 测试链接:
      • keepalived+nginx 模型示例
      • 循环链接测试

        keepalived+nginx 模型示例

  • 现在构建双主模型 // 即再次配置一套keepalived
    • 备调度器设置

    keepalived+nginx 模型示例

    从调度器设置

    keepalived+nginx 模型示例

    重新启动keepalived

    #service keepalived restart

    VIP分布:

    keepalived+nginx 模型示例

    keepalived+nginx 模型示例

    测试链接:

    keepalived+nginx 模型示例

  • 现在停掉一个调度器中的nginx服务:
    • VIP地址 已经转移;再次链接实验
    • keepalived+nginx 模型示例
    • 再次链接: //成功
    • keepalived+nginx 模型示例

    • 现在测验nginx 的调度算法为ip_hash 时,VIP Floating 会不会带来影响:

      预想应该不会受影响,nginx 的哈希算法不变的话就不会变

      • keepalived+nginx 模型示例
      • 注: ip_hash 不能于backup 共存,
      • 官方说明:

        If one of the servers needs to be temporarily removed, it should be marked with the down parameter in order to preserve the current hashing of client IP addresses.

      • 重启服务:

        service nginx restart

      • 链接测试:

        双调度器都在线时:

        keepalived+nginx 模型示例

      • 停掉149 的nginx 服务时:

        keepalived+nginx 模型示例

        测试链接:

        keepalived+nginx 模型示例

      • 149 nginx 服务重启后:
        • keepalived+nginx 模型示例

        • keepalived+nginx 模型示例
      • 测试链接:

        keepalived+nginx 模型示例

      • 148测试也没有变化:

    思考题

    nginx使用ip_hash或hash $request_uri算法时,故障切换后,同一个客户端是否依然能关联至此前绑定的upstream server;

    答:由于hash 时nginx 根据预定的算法进行的计算,所以只要IP和请求资源不变,被调度的地址就不会变

原创文章,作者:zhoulz,如若转载,请注明出处:http://www.178linux.com/75428

(0)
zhoulzzhoulz
上一篇 2017-05-13 21:30
下一篇 2017-05-13 21:40

相关推荐

  • CentOS系统启动流程

        Linux系统的组成部分   1、动态视角:内核+根文件系统  2、静态视角:磁盘分区+文件 Linux运行中的系统环境   1、用户空间:应用程序(进程或线程)  2、内核空间:内核代码(系统调用) 内核设计流派:   *单内核设计:把所有功能集成于同一个程序,如:Linux  *微内核设计:每种功能使用一个单独的子系统实现,如…

    Linux干货 2016-12-30
  • dd工具

    dd     dd命令:convert and copy a file     用法:        ddif=/PATH/FROM/SRC of=/PATH/TO/DEST       &…

    Linux干货 2016-09-02
  • sed简介

    sed是什么 sed是linux文本处理工具三剑客(grep,sed,awk)之一,用来处理文本的流编辑工具。主要用来编辑一个或多个文件,简化重复操作文件。 sed的工作原理和相关概念 sed是行处理的模式,针对文件内容从上往下一行一行地读取。每行的操作步骤如下示意图: sed的语法格式 sed [OPTION]… 'script' …

    Linux干货 2016-10-09
  • IO模型——进程工作的方式

    I/O模型 模型:阻塞型、非阻塞型、复用型、信号驱动型、异步 同步/异步: 关注消息通知机制      消息通知:          同步:等待对方返回消息       &nbsp…

    Linux干货 2016-10-25
  • grep 整理

    grep: Linux上文本处理三剑客 grep:文本过滤(模式:pattern)工具;  grep: Global search REgular expression and Print out the line. 作用:文本搜索工具,根据用户指定的“模式”…

    Linux干货 2016-10-09
  • shell精讲

    shell精讲 shell变量        定义变量时,变量名不加美元符号($,PHP语言中变量需要) 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z)。 中间不能有空格,可以使用下划线(_)。 不能使…

    Linux干货 2016-08-21