book
  • 关于
  • golang
    • 代码片段
  • LANMP
    • 安装
    • Linux
      • 源码编译
      • Linux基本操作命令
      • Linux网络相关命令
      • Crontab 计划任务
    • Nginx
      • 安装
      • 负载均衡
      • 负载均衡分配方式
      • 高可用
    • MySQL
      • 安装
      • 高可用
    • PHP
      • PHP内核
      • 代码段
      • Laravel
    • Swoole
      • easyswoole
        • 安装
    • 设计模式
  • 操作系统和网络
    • 计算机网络
      • IP协议
      • TCP协议
      • UDP协议
      • HTTP协议
      • HTTPS协议
      • HTTP2协议
      • HTTP1 HTTP2的区别
      • Websocket
      • 域名解析
      • Http压测工具 wrk
  • 工具
    • 版本控制
      • git
    • gitbook
      • 配置和插件
      • 插件
      • gitlab + gitbook
    • jenkins
      • 安装
      • 自动部署
    • Elasticsearch
    • go-mysql-elasticsearch
  • Python
    • Python基础
      • list 和 tuple
      • dict 和 set
    • Python爬虫
      • 爬取elasticsearch英文文档
    • 第三方包
      • Scoop
  • 运维
    • 运维
      • Logrotate
      • 服务器记录操作日志
    • 安全
    • Shell
    • VMWare
  • Java
    • Java基础
  • 前端
    • npmjs
由 GitBook 提供支持
在本页
  • 环境
  • 安装
  1. LANMP
  2. Nginx

高可用

上一页负载均衡分配方式下一页MySQL

最后更新于2年前

机器上安装了 nginx, 没有安装的

环境

  • CenntOS 7

  • Nginx-1.14.2

  • keepalived-1.4.5

VIP
IP
节点名称
主从

10.113.2.88

10.113.2.82

node-3

master

10.113.2.88

10.113.2.83

node-4

backup

安装

以下操作每个节点都要执行

一、安装基础依赖包

yum -y install libnl libnl-devel libnfnetlink-devel psmisc

二、 安装keepalived

以下步骤可以创建一个 keepalived.sh 脚本,然后复制以下内容,执行脚本即可一键执行

wget http://www.keepalived.org/software/keepalived-1.4.5.tar.gz

tar -zxf keepalived-1.4.5.tar.gz

cd keepalived-1.4.5

./configure --prefix=/usr/local/keepalived

make && make install

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

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

mkdir /etc/keepalived/

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

echo "/etc/init.d/keepalived start" >> /etc/rc.local

chmod +x /etc/rc.d/init.d/keepalived

chkconfig keepalived on

三、配置

先备份配置文件

cp /etc/keepalived/keepalived.conf cp /etc/keepalived/keepalived.conf.bak

修改配置文件 keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id node-3
}

vrrp_script check_nginx
{
    script "/etc/keepalived/check_nginx.sh"
    interval 2   # 2s执行一次
}

vrrp_instance VI_1 {
    state MASTER     # 从节点改成 BACKUP
    interface ens18    # 绑定的网卡
    virtual_router_id 66   # 同一实例下virtual_router_id要相同
    priority 100     # master 的权重要高于 backup
    advert_int 1     # 主从心跳检测时间,单位s
    authentication { 
        auth_type PASS
        auth_pass 1111 
    }
    virtual_ipaddress {
        10.113.2.88    # 设置VIP,可以多个,一行一个
    }
    track_script {
         check_nginx  # vrrp_script 一定要写在前面,不然不会执行,踩过坑
    }
}

check_nginx.sh

#!/bin/bash -x

ACTIVE=`ps -C nginx --no-header | wc -l`
if [ $ACTIVE -eq 0 ]; then
     /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ]; then
        killall keepalived
        exit 1
    else
        exit 0
    fi
else
    exit 0
fi

四、 启动服务

systemctl restart keepalived

传送门