nginx+keepalived高可用

nginx+keepalived高可用

一、准备安装包

1、如果机器本身有网络的话,可以直接执行:

yum -y install nginx keepalived

2、如果机器没有网络的话,可以登录有网的机器使用

① 下载nginx需要的依赖环境

repotrack nginx  ##提前创建一个目录:mkdir rpm-nginx

② 下载keepalived需要的依赖环境

repotrack keepalived  ##提前创建一个目录:mkdir rpm-keepalived

③ 将nginx的rpm包打包

tar -cvf rpm-nginx.tar.gz /rpm-nginx/

④ 将keepalived的rpm包打包

tar -cvf rpm-keepalived.tar.gz /rpm-keepalived/

将准备好的rpm-nginx.tar.gz和rpm-keepalived.tar.gz上传至需要部署高可用的机器即可。

二、准备环境

1、准备至少两台虚机,下文以192.168.190.151和192.168.190.152机器为例

机器IP

节点

CPU&内存

192.168.190.151

Master

2C4G

192.168.190.152

Worker

2C4G

2、关闭防火墙(主备机都需要关闭)

systemctl status firewalld

若关闭,则检查下一项,若开启,则需要执行如下命令

systemctl stop firewalld  ##临时关闭防火墙,

systemctl disable firewalld  ##永久关闭防火墙

三、详细步骤

1、如果机器有网:

yum -y install nginx keepalived

2、如果机器没网,将上传好的rpm包解压:

(PS:192.168.190.152机器上的操作和192.168.190.151机器上的操作一致),下文以192.168.190.151机器为例:

① 解压 nginx tar包

tar -xvf rpm-nginx.tar.gz  ##提前创建一个目录:mkdir nginx

② 解压 keepalived tar包

tar -xvf rpm-keepalived.tar.gz  ##提前创建一个目录:mkdir keepalived

③ 进入nginx和keepalived目录后分别执行:

rpm -Uvh --force --nodeps *.rpm

3、完成高可用配置:

一般情况下,无论是yum安装还是rpm安装,文件的目录都在/etc下。

① 备份:

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

② 配置conf文件

vi /etc/keepalived/keepalived.conf

内容(1192.168.190.151):

global_defs {

    notification_email {   # keepalived服务宕机异常出现的时候,发送通知邮件 可以是多个

      acassen@firewall.loc  #  收件人邮箱1

      failover@firewall.loc   #  收件人邮箱2

      sysadmin@firewall.loc   #  收件人邮箱3

    }

    notification_email_from Alexandre.Cassen@firewall.loc   #邮件发件人

    smtp_ server 192.168.190.151  #主服务器的ip地址。邮件服务器地址

    smtp_connect_timeout 30    # 超时时间

    router_id LVS_DEVEL    # 机器标识 局域网内唯一即可。 LVS_DEVEL这字段在/etc/hosts文件中看;通过它访问到主机

}

vrrp_script chk_http_ port {

    script "/usr/local/src/nginx_check.sh"   #检测脚本存放的路径

    interval 2   # 检测脚本执行的间隔,即检测脚本每隔2s会自动执行一次

    weight 2  #权重,如果这个脚本检测为真,服务器权重+2

}

vrrp_instance VI_1 {

    state MASTER    # 指定keepalived的角色,MASTER为主,BACKUP为备。备份服务器上需将MASTER 改为BACKUP

    interface ens33  # 通信端口 通过ip addr可以看到,根据自己的机器配置

    virtual_router_id 51 # vrrp实例id  keepalived集群的实例id必须一致,即主、备机的virtual_router_id必须相同

    priority 100         #优先级,数值越大,获取处理请求的优先级越高。主、备机取不同的优先级,主机值较大,备份机值较小

    advert_int 1    #心跳间隔,默认为1s。keepalived多机器集群 通过心跳检测当前服务器是否还正常工作,如果发送心跳没反应,备份服务器就会立刻接管;

    authentication {     # 服务器之间通信密码

        auth type PASS   #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信

        auth pass 1111

    }

    virtual_ipaddress { # 自定义虚拟IP。自定义的虚拟ip得根据真实ip设置。比如真实ip是192.168.91.138,那么虚拟ip可以设置为192.168.91.139~255,前面三个数得一致

        192.168.190.50 定义虚拟ip(VIP),可多设,每行一个

    }

}

内容(192.168.190.152):

global_defs {

    notification_email {

      acassen@firewall.loc

      failover@firewall.loc

      sysadmin@firewall.loc

    }

    notification_email_from Alexandre.Cassen@firewall.loc

    smtp_ server 192.168.190.152    #备份服务器的ip地址

    smtp_connect_timeout 30

    router_id LVS_DEVEL    # LVS_DEVEL这字段在/etc/hosts文件中看;通过它访问到主机

}

vrrp_script chk_http_ port {

    script "/usr/local/src/nginx_check.sh"   #检测脚本

    interval 2   # (检测脚本执行的间隔)2s

    weight 2  #权重,如果这个脚本检测为真,服务器权重+2

}

vrrp_instance VI_1 {

    state BACKUP    # 指定keepalived的角色,MASTER为主,BACKUP为备。备份服务器上需将MASTER 改为BACKUP

    interface ens33 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡

    virtual_router_id 51 # 虚拟路由编号,主、备机的virtual_router_id必须相同

    priority 90         #优先级,数值越大,获取处理请求的优先级越高。主、备机取不同的优先级,主机值较大,备份机值较小

    advert_int 1    # 检查间隔,默认为1s(vrrp组播周期秒数),每隔1s发送一次心跳

    authentication {     # 校验方式, 类型是密码,密码1111

        auth type PASS   #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信

        auth pass 1111

    }

    virtual_ipaddress { # 虛拟ip

        192.168.190.50 定义虚拟ip(VIP),可多设,每行一个

    }

}

③ 创建检查脚本

vi /usr/local/src/nginx_check.sh(PS:主备机都需要

内容:

#! /bin/bash

#检测nginx是否启动了

A=ps -C nginx -no-header | wc - 1

if [ $A -eq 0];then    #如果nginx没有启动就启动nginx

    /usr/sbin/nginx    #通过Nginx的启动脚本来重启nginx

    sleep 2

    if [ps -C nginx --no-header| wc -1 -eq 0 ];then   #如果nginx重启失败,则下面就会停掉keepalived服务,进行VIP转移

        killall keepalived

    fi

fi

上文中标红加粗部分为nginx的启动路径,如果不知道路径在哪儿,可以执行:

find / -name “*nginx*”,找到含有sbin目录的nginx

4、全部设置完成之后,分别在主备机上执行启动指令:

systemctl start nginx

systemctl start keepalived

5、验证

登录windows浏览器打开:192.168.190.151来访问nginx,如果主机上的nginx不宕机,无论刷新几次都是主机上的资源,现在在主机上执行:

systemctl stop nginx

systemctl stop keepalived

此时再访问192.168.190.151,如果能正常访问,即代表备机在此时工作了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CTSXWT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值