学习nginx (六 ) 配合keepalived实现单机高可用

版权声明:转载的话 请标明出处 https://blog.csdn.net/qq_28198181/article/details/88171574

学习的一些简单操作进行记录,需要配合keepalived对nginx实现单机高可用

学习的网址:https://www.majiaxueyuan.com/uc/play/40

nginx 下载地址:http://nginx.org/en/download.html

keepalived下载地址:https://download.csdn.net/download/qq_28198181/10997081

 

目录

1.停止nginx

2.安装keepalived

3.加载系统服务

4.配置keepalived

5.启动keepalived

6.测试查看


1.停止nginx

如果nginx正在运行 先将其停掉

kill -QUIT pid

#或者

./nginx -s stop

2.安装keepalived

将压缩包上传

我是上传到usr/local/src目录

然后解压keepalived

tar -zxvf keepalived-1.2.18.tar.gz

解压完毕后

configure make  make install

注意路径

先进入 文件夹

cd keepalived-1.2.18/

运行配置

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

接着make && make install

make && make install

接着我们进入/usr/local/keepalived查看

3.加载系统服务

将keepalived安装成Linux系统服务,因为没有使用keepalived的默认安装路径(默认路径:/usr/local),安装完成之后,需要做一些修改工作将keepalived安装成Linux系统服务,因为没有使用keepalived的默认安装路径(默认路径:/usr/local),安装完成之后,需要做一些修改工作:

1.创建文件夹

mkdir mkdir /etc/keepalived

2.拷贝配置文件

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

3.拷贝脚本文件

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/sbin/keepalived /usr/sbin/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/  #报错文件已经存在 ,可以不管

截图:

可以通过命令启动测试一下安装成功没

service keepalived start

service keepalived stop

注意:

如果启动失败的情况下处理方法

cd /usr/sbin/  

rm -rf keepalived   

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

然后启动测试

4.配置keepalived

keepalived 安装好后 需要修改配置文件 让其去自动检测ngxinx 的状态,当ngixn 断开后 能够自动重启

这里需要两个文件 keepalived.conf 和 一个脚本文件nginx_check.sh

以下是keepalived.conf的文件内容:

lobal_defs {
   router_id bhz005 ##标识节点的字符串,通常为hostname
}
vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务 
interval 2   #检测时间间隔
weight -20  #如果条件成立的话,则权重 -20
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
    state MASTER   #来决定主从BACKUP
    interface ens33  # 绑定虚拟 IP 的网络接口,根据自己的机器填写
    virtual_router_id 1229 # 虚拟路由的 ID 号,节点设置必须一样
    mcast_src_ip 192.168.174.141 #填写本机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.174.141# 虚拟ip,这里配置自己的IP地址
    }
}

需要注意的是有以下几个点:

1.script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务

这个是脚本的路径一定要一致

2. interface eno16777736 # 绑定虚拟 IP 的网络接口,根据自己的机器填写

这个是需要根据自己的服务器配置的网络接口来看的,具体方法如下:

进入上面显示的目录地址:

cd /etc/sysconfig/network-scripts/

然后查看

ls

显示的ifcfg-ens33  侯曼的ens33就是网络接口

这里可以填写

 interface ens33 # 绑定虚拟 IP 的网络接口,根据自己的机器填写

3.cast_src_ip 192.168.174.141 #填写本机ip

这里填写本机的ip地址

virtual_ipaddress {
        192.168.174.141# 虚拟ip,这里配置自己的IP地址
    }

这里一致。

keepalived.conf文件以上

脚本文件nginx_check.sh

#!/bin/bash
A=`ps -C nginx –no-header |wc -l` # 查看nginx的pid 赋值给A
if [ $A -eq 0 ];then              # 如果A为0 说明没有运行
    /usr/local/nginx/sbin/nginx   # 启动nginx
    sleep 2                       # 休眠两秒
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then # 如果还是未运行 
        killall keepalived        # 杀死所有的keepalived
    fi
fi

将修改好的两个文件放置到/etc/keepalived下

5.启动keepalived

service keepalived start

当前nginx我们之前关了 现在再看看

已经启动了

6.测试查看

我们在网页上访问下nginx(我关闭了防火墙的哦)

说明是正常访问的,现在我将nginx手动停掉

然后再访问也能访问

看下后台

nginx的pid进行了变化

说明是重新启动了的

以上是nginx+keepalived 单机高可用

猜你喜欢

转载自blog.csdn.net/qq_28198181/article/details/88171574