运维学习————nginx3-keepalived及高可用nginx集群

目录

一、高可用nginx规划图

二、克隆一个nginx  

启动测试

​编辑 三、keepalived简介

四、安装配置keepalived保活nginx 

4.1、安装

​编辑 4.2、配置

4.2.1、主机配置(nginx1(主)配置)

 4.2.2、从机配置(nginx2(主)配置)

 4.2.3、编写检查nginx是否正常运行脚本(主备都需要有)

4.3、自动故障切换测试 

 故障切换测试


一、高可用nginx规划图

二、克隆一个nginx  

直接利用之前的nginx服务克隆一个,不用在搭建nginx了,并用远程连接链接

启动测试

 /usr/local/nginx/sbin/nginx

因为是克隆的,所以直接访问ip+端口,和之前负载均衡的访问一样

http://192.168.37.184:8088/index.jsp

 三、keepalived简介

Keepalived的作用是检测服务器(目前保活的是nginx,可以保活其他软件)的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

      Keepalived 是一个用 C 语言编写的路由软件。这个项目的主要目标是为 Linux 系统和基于 Linux 的基础设施提供简单而强大的负载平衡和高可用性设施 。底层基于VRRP( Virtual Router Redundancy Protocol,简称VRRP)协议编写。VRRP作用:它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱

四、安装配置keepalived保活nginx 

4.1、安装

为了安装方便使用yum在线安装,不从官网下载安装包。

在nginx1和nginx2上都安装:

    yum  install  -y   keepalived

 4.2、配置

4.2.1、主机配置(nginx1(主)配置)

vim /etc/keepalived/keepalived.conf

使用下面的conf替换原先的 

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

! Configuration File for keepalived

global_defs {
   #唤醒邮箱配置
   notification_email {
     test@qq.com
   }
   notification_email_from test@qq.com
   smtp_server 127.0.0.1
   #配置邮件服务器链接超时时间
   smtp_connect_timeout 30
   #当前机子的字符串id
   router_id LVS_DEVEL
}

#vrrp脚本  名称必须和实例中的属性track_script中的值一致
vrrp_script track_nginx{
    #配置脚本路径
    script "/root/shell-script-dir/checknginx.sh"        
    #调用脚本的间隔时间 ,单位是秒
    interval  2
    #权重  调整优先级的权重  如果说执行脚本保活nginx失败  ,就会把优先级数值减去对应的权重
    weight 10

}

#vrrp的实例
vrrp_instance VI_1 {
  #服务器状态 
    state MASTER
    当前实例绑定的网卡接口
    interface ens33
  #虚拟路由id  主备必须相同
    virtual_router_id 51
  #取值 优先级 1-255    
    priority 100
  #主备心跳间隔时间 单位 s
    advert_int 1
  #认证  主备切换时  进行认证  主备必须相同
    authentication {
        auth_type PASS
        auth_pass 1111
    }
  #虚拟ip 配置LVS=IPVS  keepalived虚拟出来的ip  以后对外公布是虚拟ip
    virtual_ipaddress {
	#虚拟IP 必须和要保活的软件所在的主机的ip的网段一致
        192.168.37.37
    }
  #追踪脚本 
    track_script{
      track_nginx
    }
}

 4.2.2、从机配置(nginx2(从)配置)

! Configuration File for keepalived

global_defs {
   #唤醒邮箱配置
   notification_email {
     test@qq.com
   }
   notification_email_from test@qq.com
   smtp_server 127.0.0.1
   #配置邮件服务器链接超时时间
   smtp_connect_timeout 30
   #当前机子的字符串id
   router_id LVS_DEVEL_BAK
}

#vrrp脚本  名称必须和实例中的属性track_script中的值一致
vrrp_script track_nginx{
    #配置脚本路径
    script "/root/shell-script-dir/checknginx.sh"        
    #调用脚本的间隔时间 ,单位是秒
    interval  2
    #权重  调整优先级的权重  如果说执行脚本保活nginx失败  ,就会把优先级数值减去对应的权重
    weight -10

}

#vrrp的实例
vrrp_instance VI_1 {
  #服务器状态 
    state BACKUP
    当前实例绑定的网卡接口
    interface ens33
  #虚拟路由id  主备必须相同
    virtual_router_id 51
  #取值 优先级 1-255    
    priority 50
  #主备心跳间隔时间 单位 s
    advert_int 1
  #认证  主备切换时  进行认证  主备必须相同
    authentication {
        auth_type PASS
        auth_pass 1111
    }
  #虚拟ip 配置LVS=IPVS  keepalived虚拟出来的ip  以后对外公布是虚拟ip
    virtual_ipaddress {
	#虚拟IP 必须和要保活的软件所在的主机的ip的网段一致
        192.168.37.37
    }
  #追踪脚本 
    track_script{
      track_nginx
    }
}

 4.2.3、编写检查nginx是否正常运行脚本(主备都需要有)

vim /root/shell-script-dir/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  /root/shell-script-dir/checknginx.sh

这里脚本里使用了killall,killall 不可用,可用安装psmisc包解决

yum install psmisc  -y

4.3、自动故障切换测试 

确保nginx在启动(在nginx1和nginx2上都执行)

ps -ef|grep nginx |grep -v grep

  启动, 两边都使用轮询

/usr/local/nginx/sbin/nginx

使用nginx1和nginx2分别访问

http://192.168.37.183:8088/index.jsp

http://192.168.37.184:8088/index.jsp

如果不是按照轮询的方式请求,可以尝试重启nginx

/usr/local/nginx/sbin/nginx -s reload

启动keepalived(在nginx1和nginx2上都启动)

  service keepalived  status

  service keepalived  start

  service keepalived  status

通过虚拟IP测试

http://192.168.37.37:8088/index.jsp

 故障切换测试

windows环境下,cmd窗口执行以下指令

arp -a 192.168.37.37   这里的ip是虚拟ip

然后 去linux环境下nginx1中执行

ip a

 

说明当前请求在nginx1上 

在windows,cmd窗口中执行

ping -t 192.168.170.168

可以ping通

在nginx1 上杀死keepalived

   killall keepalived

   service keepalived stop  停止不了keepalived   

    当杀死进程后  ping -t  会出现短暂超时,又正常

再次使用 arp -a  192.168.170.168

 就会发现切换到nginx2上了 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值