keepalived的简介,使用keepalived搭建高可用nginx【nginx】(二)

导读:本篇文章讲解 keepalived的简介,使用keepalived搭建高可用nginx【nginx】(二),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1 高可用nginx规划图

在这里插入图片描述

2 克隆nginx2(安装配置nginx)并测试

直接使用nginx1克隆出nginx2

1) 克隆,修改IP,修改主机名称,重启,xshell连接
         参考前面教程
2)启动nginx,并测试     
 启动nginx:
 /usr/local/nginx/sbin/nginx

测试:
http://192.168.170.12/qy148-loadbalance/ssm_exception_demo_20220412/dept/queryByParam
vim /usr/local/nginx/conf/nginx.conf 去掉了ip_hash 去掉了权重

3 keepalived简介

https://www.keepalived.org/
Keepalived的作用是检测服务器(目前保活的是nginx,可以保活其他软件)的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
Keepalived 是一个用 C 语言编写的路由软件。这个项目的主要目标是为 Linux 系统和基于 Linux 的基础设施提供简单而强大的负载平衡和高可用性设施 。底层基于VRRP( Virtual Router Redundancy Protocol,简称VRRP)协议编写。VRRP作用:它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱。

4 安装配置keepalived 保活nginx

1.4.1 安装
为了安装方便使用yum在线安装,不从官网下载安装包。
在nginx1和nginx2上都安装:
yum install -y keepalived
1.4.2 配置
1)主机master配置
vim /etc/keepalived/keepalived.conf
小写dG 从开头删除到文件末尾,点i进入编辑模式,复制下面内容:

global_defs {
   notification_email {
     test@qq.com
   }
   notification_email_from test@qq.com   #发送通知邮件时邮件源地址是谁
   smtp_server 127.0.0.1
   smtp_connect_timeout 30 #连接smtp连接超时时间
   router_id LVS_DEVEL  #机器标识
}
#用来做健康检查的,当时检查失败时会将vrrp_instance的priority减少相应的值。
  vrrp_script chk_http_port {
           script "/usr/checknginx.sh"       #监控脚本
           interval 2                                         #监控脚本检测周期秒
           weight  10                                          #意思是如果script中的指令执行失败,那么相应的vrrp_instance的优先级会减少10个点。
        }
vrrp_instance VI_1 {
    state MASTER #backup机器配置为BACKUP
    interface eth0     #绑定的网卡名称
    virtual_router_id  51  #必须与backup机器配置相同
    priority 100  #优先级,要比backup机器高至少50
    advert_int 1 #检查间隔,默认1秒 VRRP心跳包的发送周期,单位为s
    authentication {
        auth_type PASS  #授权类型,必须与backup相同
        auth_pass 1111   #授权密码,必须与backup相同
    } 
    virtual_ipaddress {
        192.168.23.220    #虚拟ip地址,必须与backup相同
    }
    track_script {
                   chk_http_port
    } 
  
}
    :12  脚本位置   :18 网卡名称     :27   虚拟IP  (注意一定要和自己的网段对应,后面IP随便写)    
 2)备机backup配置
小写dG   从开头删除到文件末尾,点i进入编辑模式,复制下面内容:
global_defs {
   notification_email {
     test@qq.com
   }
   notification_email_from test@qq.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL_BAK
}
  vrrp_script chk_http_port {
           script "/usr/checknginx.sh"       #监控脚本
           interval 2                                         #监控脚本检测周期
           weight -10                                          #意思是如果script中的指令执行失败,那么相应的vrrp_instance的优先级会减少10个点。
        }
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 50
    advert_int 1
     authentication {
        auth_type PASS  #授权类型,必须与backup相同
        auth_pass 1111   #授权密码,必须与backup相同
    } 
    virtual_ipaddress {
        192.168.23.220    #虚拟ip地址,必须与backup相同
    }
   track_script {
                   chk_http_port
    } 
    nopreempt   #不抢占IP,即当keepalived发生切换后,只能配置在BACKUP上 ,
                                                        #这样避免来回切换带来的系统开销,同时也避免了IP切换带来的系统不稳定性
}

:11 脚本位置 :17 网卡名称 :27 虚拟IP (注意一定要和自己的网段对应,后面IP随便写,两台配置虚拟IP要一致)

3)编写检查nginx是否正常运行脚本(主备都需要有)
vim /etc/keepalived/checknginx.sh

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

chmod u+x /etc/keepalived/checknginx.sh

5 自动故障切换测试

确保nginx在启动(在nginx1和nginx2上都执行):
ps -ef|grep nginx |grep -v grep

/usr/local/nginx/sbin/nginx

两边都使用轮询,测试:

http://192.168.170.11/qy148-loadbalance/ssm_exception_demo_20220412/dept/queryByParam
http://192.168.170.12/qy148-loadbalance/ssm_exception_demo_20220412/dept/queryByParam

启动keepalived(在nginx1和nginx2上都启动):
service keepalived status

service keepalived start

service keepalived status

通过虚拟IP测试:

http://192.168.170.168/qy148-loadbalance/ssm_exception_demo_20220412/dept/queryByParam

6 知识点总结

vim /usr/local/nginx/conf/nginx.conf
ctrl+z 退出,就会出现.swp文件

当遇到某一个文件非法退出,或者多他人编辑时,都可能出现.swp .swo 多个交换文件。
每次编辑文件时会出现下面错误:
在这里插入图片描述

ls -a /该文件目录 可以看到隐藏文件 .swp .swo 等等
删除文件
rm -rf /usr/local/nginx/conf/.nginx.conf.sw*
再次编辑,就正常了
vim /usr/local/nginx/conf/nginx.conf

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/75456.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!