ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

nginx学习(三、keepalived高可用)

2020-04-03 16:56:43  阅读:350  来源: 互联网

标签:script etc 可用 keepalived nginx vrrp master


介绍

keepalived是基于VRRP协议来实现的高可用方案,VRRP协议(Virtual Router Redundancy Protocol)即虚拟路由冗余协议,将多台功能相同的路由器组成一个路由组,在组里会有一个master和多个backup,对外看来仿佛是一个虚拟路由器,拥有一个虚拟IP(VIP),占有这个IP的master响应和转发IP的数据包。master会向其他的backup路由器发送数据包,如果在超时时间内backup没有收到数据包则认为master宕机了,就通过优先级选举出来一个backup作为master来保证路由的高可用。

安装部署

安装环境

yum install -y gcc

yum install -y openssl openssl-devel

yum install -y libnl libnl-devel

yum install -y libnfnetlink-devel

解压keepalived

tar -zxvf keepalived-2.0.20.tar.gz

检查安装环境并指定安装路径

cd  keepalived-2.0.20

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

编译

make && make install

开机启动

因为没有用默认安装,需自行移动文件

mkdir /etc/keepalived

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

cp /usr/local/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/rc.d/init.d/keepalived

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

启动服务

systemctl start keepalived

查看日志

这里启动可能会报错,因为配置文件有问题,可以在/var/log/message里面查看日志

设置开机启动

systemctl enable keepalived

取消开机启动

systemctl disable keepalived

配置文件

/etc/keepalived/keepalived.conf

! Configuration File for keepalived

# 全局配置 删掉了邮箱部分暂时用不到
global_defs {
   # 负载均衡唯一标识,其实就是一个标识,我这里用的是IP
   router_id 10.32.16.195
   # 健康检查的用户组
   script_user root
   # 想要执行健康检查的脚本,必须加上这个配置,不然没权限
   enable_script_security
   # 默认是不跳过检查。检查收到的VRRP通告中的所有地址可能会比较耗时,设置此命令的意思是,如果通告与接收的上一个通告来自相同的master路由器,则不执行检查(跳过检查)。
   # vrrp_skip_check_adv_addr
   # 严格遵守VRRP协议。下列情况将会阻止启动Keepalived:1. 没有VIP地址。2. 单播邻居。3. 在VRRP版本2中有IPv6地址。
   # vrrp_strict
}

# vrrp配置
# 1.vrrp_script 定时执行脚本
vrrp_script nginx_check {
    # 执行脚本路径
    script "/etc/keepalived/nginx_check.sh"
    # 执行间隔之间默认1S
    interval 1
    # 超时时间为失败
    timeout 10
    # 优先级(-254~254)默认2
    weight -20
}

# 2.vrrp_instance 节点信息
vrrp_instance VI_1 {
    # 指定节点的处所状态MASTER | BACKUP
    state MASTER
    # 网卡信息 ip address查看网卡信息
    interface ens33
    # 让master和backup在同一个虚拟路由里,id必须相同
    virtual_router_id 51
    # 优先级 谁高谁将成为master
    priority 100
    # 设置为不抢占。默认是抢占的,当高优先级的机器恢复后,会抢占低优先级的机器成为MASTER,而不抢占,则允许低优先级的机器继续成为MASTER,即使高优先级的机器已经上线。如果要使用这个功能,则初始化状态必须为BACKUP。
    # nopreempt
    # 指定发送vrrp通告的时间间隔1S
    advert_int 1
    authentication {
        # 认证方式 PASS(简单密码认证,推荐) | AH(IPSEC认证,不推荐)
        auth_type PASS
        # 密码最多8位
        auth_pass 1111
    }
    # 指定VIP地址,可虚拟多个VIP地址
    virtual_ipaddress {
        10.32.16.200
    }
    track_script {
        nginx_check
    }
}

# 本来后面还有virtual_server等配置,一般用在超大型LVS中,这里不介绍

/etc/keepalived/check_nginx.sh(这里将文件权限改为755,不知道为什么777报错)

#!/bin/bash
run=`ps -C nginx --no-header | wc -l`
if [ $run -eq 0 ]
then
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
sleep 3
if [ `ps -C nginx --no-header | wc -l` ]
then
killall keepalived
fi
fi

集群配置

将195的节点定为master,196的节点定义为backup

启动两台服务器的keepalived,可以看到nginx也跟着启动了,在nginx80调整页面做个标记以便测试。

 

 

 

 而我们通过keepalived虚拟了一个VIP的地址是10.32.16.200,我们访问这个VIP地址

 

 我们看到通过访问这个虚拟IP可以访问到我们196的nginx,这样集群就建立成功了。

这里可以把195的keepalived关闭看看效果:

systemctl stop keepalived

 

 可见当196的服务挂掉之后,就切换到了195,这样就实现了nginx的高可用。

标签:script,etc,可用,keepalived,nginx,vrrp,master
来源: https://www.cnblogs.com/Unlimited-Blade-Works/p/12617581.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有