keepalived(1.4.2版本)+nginx实现高可用

keepalived(1.4.2版本)+nginx实现高可用

  1. 需要两台或者两台以上的服务器
    ip:192.168.198.51(主nginx)
    ip:192.168.198.52(从nginx)

  2. 两台服务器都需要安装nginx和keepalived
    安装nginx:
    https://blog.csdn.net/achi010/article/details/106392040? utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase
    安装keepalived:
    下载地址:http://www.keepalived.org/download.html
    tar xvf keepalived-1.4.2.tar.gz
    cd keepalived-1.4.2
    ./configure --prefix=/usr/local/keepalived
    make && make install

  3. 配置keepalived
    3.1:拷贝相关目录
    mkdir -p /usr/local/keepalived/var/run/
    vi /usr/local/keepalived/var/run/keepalived.pid
    mkdir /etc/keepalived
    cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
    cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
    cp /usr/local/src/keepalived-1.4.2/keepalived/etc/init.d/keepalived /etc/init.d/keepalived
    ln -s /usr/local/keepalived/sbin/keepalived /sbin/
    3.2:修改/etc/init.d/keepalived启动脚本
    vi /etc/init.d/keepalived
    #!/bin/sh
    #Startup script for the Keepalived daemon
    #processname: keepalived
    #pidfile: /usr/local/keepalived/run/keepalived.pid
    #config: /usr/local/keepalived/etc/keepalived/keepalived.conf
    #chkconfig: - 21 79
    #description: Start and stop Keepalived

    #Source function library
    ./etc/rc.d/init.d/functions

    #Source configuration file (we set KEEPALIVED_OPTIONS there)
    ./usr/local/keepalived/etc/sysconfig/keepalived
    keepalived=/usr/local/keepalived/sbin/keepalived
    keepalived_config=/usr/local/keepalived/etc/keepalived/keepalived.conf
    keepalived_pid=/usr/local/keepalived/var/run/keepalived.pid****这是主要添加的

RETVAL=0
prog=“keepalived”
start() {
echo -n $"Starting $prog: "
daemon $keepalived -f ${keepalived_config} K E E P A L I V E D O P T I O N S R E T V A L = {KEEPALIVED_OPTIONS} RETVAL= KEEPALIVEDOPTIONSRETVAL=?
echo
[ KaTeX parse error: Expected 'EOF', got '&' at position 16: RETVAL -eq 0 ] &̲& touch /var/lo…prog
}

  1. nginx重启脚本
    vi /etc/keepalived/nginx_check.sh
    #!/bin/bash
    A=ps -C nginx –no-header |wc -l
    if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx
    sleep 2
    if [ ps -C nginx --no-header |wc -l -eq 0 ];then
    killall keepalived
    fi
    fi

  2. 修改主keepalived.conf
    vi /etc/keepalived/keepalived.conf
    vrrp_script chk_nginx {
    script “/etc/keepalived/nginx_check.sh” #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
    interval 2 #检测时间间隔
    weight -20 #如果条件成立的话,则权重 -20
    }

    定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称

    vrrp_instance VI_1 {
    state MASTER #来决定主从
    interface ens33 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
    virtual_router_id 51 # 虚拟路由的 ID 号, 两个节点设置必须一样
    mcast_src_ip 192.168.168.51 #填写本机ip
    priority 100 # 节点优先级,主要比从节点优先级高
    nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
    advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
    authentication {
    auth_type PASS
    auth_pass 1111
    }

    将 track_script 块加入 instance 配置块

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

    virtual_ipaddress {
    192.168.198.100 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
    }
    }

  3. 修改从keepalived.conf
    vi /etc/keepalived/keepalived.conf
    vrrp_script chk_nginx {
    script “/etc/keepalived/nginx_check.sh” #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
    interval 2 #检测时间间隔
    weight -20 #如果条件成立的话,则权重 -20
    }

    定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称

    vrrp_instance VI_1 {
    state BACKUP #来决定主从
    interface ens33 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
    virtual_router_id 51 # 虚拟路由的 ID 号, 两个节点设置必须一样
    mcast_src_ip 192.168.168.52 #填写本机ip
    priority 90 # 节点优先级,主要比从节点优先级高
    nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
    advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
    authentication {
    auth_type PASS
    auth_pass 1111
    }

    将 track_script 块加入 instance 配置块

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

    virtual_ipaddress {
    192.168.198.100 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
    }
    }
    备注:keepalived.conf需要注释掉#vrrp_strict,不然无法ping通

  4. keepalived服务控制
    systemctl enable keepalived.service #设置开机自动启动 (centos7.0)
    systemctl disable keepalived.service #取消开机自动启动
    systemctl start keepalived.service #启动服务
    systemctl restart keepalived.service #重启服务
    systemctl stop keepalived.service #停止服务
    systemctl status keepalived.service #查看服务状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值