博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx+keepalived 高可用主从配置
阅读量:6097 次
发布时间:2019-06-20

本文共 4156 字,大约阅读时间需要 13 分钟。

权重一、系统环境及软件版本

  CentOS 6.6 x64

  keepalived-1.2.18.tar.gz
  nginx-1.6.2.tar.gz

  主服务器:192.168.38.64

  从服务器:192.168.38.66

  VIP : 192.168.38.100

二、nginx安装 (主从安装一致)

1.安装依赖环境

  yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel

2.上传nginx到  opt 目录

3.解压安装

  # tar -zxvf nginx-1.6.2.tar.gz

  # cd nginx-1.6.2

  # ./configure --prefix=/opt/nginx    (prefix=/opt/nginx   这个指定的是 nginx目录)
  # make && make install

4.修改 nginx监听端口 及 index.html

  # vi /opt/nginx/conf/nginx.conf

  

  vi /opt/nginx/html/index.html

  

  5. nginx 启动及常用命令

  配置测试:      /opt/nginx/sbin/nginx -t    出现如下界面说明配置没问题

  

  启动 :  /opt/nginx/sbin/nginx

  重启 :  /opt/nginx/sbin/nginx  -s reload

  停止  :  /opt/nginx/sbin/nginx -s stop

6.开机启动 nginx

  vi /etc/rc.local

  加入:   /opt/nginx/sbin/nginx 

 7.修改防火墙开放端口

  vi /etc/sysconfig/iptables

  添加 :  -A INPUT -p tcp -m state --state NEW -m tcp --dport  8888 -j ACCEPT

  重启防火墙   :    service iptables restart

8.问题

  启动 nginx遇到的问题  

  

  vi /etc/ld.so.conf

  添加:   /opt/nginx/lib/

9.nginx的负载均衡

  nginx的负载均衡主要是 由upstream 这一模块完成

  修改 nginx的配置文件

  vi /data/nginx/conf/nginx.conf

  添加如下内容:(web_pools 这个名称可变)

  upstream web_pools {    

        server 10.0.6.108:7080 weight=1; 
        server 10.0.0.85:8980 weight=1; 
  }

  将server节点下的location节点中的proxy_pass配置为:http:// + upstream名称即可

  结果如下:

  

  其中  weight是权重    backup是备用服务器 ,只有其它服务器宕机后,备用服务器才会启动。

 三、keepalived 安装

1.keepalived上传到 opt目录下

 2.解压 安装  

   tar -zxvf keepalived-1.2.18.tar.gz

  cd keepalived-1.2.18
  ./configure --prefix=/opt/keepalived
  make && make install

3.将 keepalived 安装成 linux服务

   cp /opt/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

   cp /opt/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
   ln -s /opt/sbin/keepalived /usr/sbin/
   ln -s /opt/keepalived/sbin/keepalived /sbin/

 4.设置 keepalived 服务开机启动

   chkconfig keepalived on

5.修改 Keepalived 配置文件

  vi /etc/keepalived/keepalived.conf 

  ! Configuration File for keepalived   (!、#都是注释)

  global_defs {  #全局配置

  notification_email {
    acassen@firewall.loc
    failover@firewall.loc
    sysadmin@firewall.loc
  }
  notification_email_from Alexandre.Cassen@firewall.loc
  smtp_server 192.168.200.1
  smtp_connect_timeout 30
  router_id LVS_01     #这个配置要唯一
  } 

  vrrp_script chk_nginx {

    script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
    interval 2 ## 检测时间间隔
    weight -20 ## 如果条件成立,权重-20
  } 

  vrrp_instance VI_1 {   #实例  VI_1 名字可以随意  但是不建议修改

    state MASTER   # 主服务器 MASTER     从服务器 BACKUP
    interface em1     #  em1 网卡
    virtual_router_id 51    # virtual_router_id  主备要一致
    priority 100    # 优先级  数字越大 优先级越高    priority 的值 主服务器要大于 从服务器
    advert_int 1   #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒 
    authentication {   # 主从通信 验证类型及密码  
      auth_type PASS  #设置vrrp验证类型,主要有PASS和AH两种
      auth_pass 1111  #设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
    } 

    ## 将 track_script 块加入 instance 配置块

    track_script {
      chk_nginx ## 执行 Nginx 监控的服务
    }

    virtual_ipaddress { 

    192.168.38.100/24    #VRRP HA 虚拟地址 如果有多个VIP,继续换行填写
    }
  } 

6.编写 Nginx 状态检测脚本

  vi /etc/keepalived/nginx_check.sh

  内容如下:

  #!/bin/bash

  A=`ps -C nginx –no-header |wc -l`

  if [ $A -eq 0 ];then
    /opt/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then

      killall keepalived

    fi
  fi

  保存后,给脚本赋执行权限:

   chmod +x /etc/keepalived/nginx_check.sh

7.注意点: Keepalived主从配置文件不同点

  a.router_id  不一致

  b.state  主服务器是 MASTER ,从服务器是  BACKUP

  c.priority   主服务器 大于 从服务器

8.keepalived 命令

  启动 : service keepalived start

  停止: service keepalived stop

  重启: service keepalived restart

9.注意的问题

  a.vip没绑定成功

    解决方案:

    ip addr   查看  本地ip所在网卡的名称 ,然后修改 配置文件

    

 

    vi /etc/keepalived/keepalived.conf  

     

    保存后   service keepalived restart  重启  keepalived服务即可

10.测试

  启动主从nginx和keepalived 服务

  主从服务器分别:    ip add | grep 192.168.38.100 

  在 192.168.38.64 可看到 

  

  同时 在 192.168.38.66

  

  当杀死 主服务器上的 keepalived 则 从服务器 

  

  当再次启动 主服务器上的 keepalived则结果主服务器上有结果,从服务器上没结果。

        当杀死 nginx后,keepalived则会自动启动 nginx服务

11. keepalived 脑裂 ( ip add | grep 192.168.38.100     在主从都有结果)

  解决方案:防火墙问题

  iptables -I INPUT 4 -p vrrp -j ACCEPT   

  service iptables save

  service iptables restart

    

 

转载于:https://www.cnblogs.com/liulangzhizi/p/7050260.html

你可能感兴趣的文章
UnrealEngine4.5 BluePrint初始化中遇到编译警告的解决办法
查看>>
User implements HttpSessionBindingListener
查看>>
抽象工厂方法
查看>>
ubuntu apt-get 安装 lnmp
查看>>
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
jquery的冒泡和默认行为
查看>>
Check failed: error == cudaSuccess (7 vs. 0) too many resources requested for launch
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>
前端学习之正则表达式
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>
AndroidStudio中导入SlidingMenu报错解决方案
查看>>
http://www.blogjava.net/pdw2009/archive/2007/10/08/151180.html
查看>>
hadoop(6)---mapred-site.xml 详解以及常用配置。
查看>>
修改GRUB2背景图片
查看>>
Ajax异步
查看>>