Nginx与keepalived实现集群

提醒一下:下面实例讲解是在mac虚拟机里的Ubuntu系统演示的;

Nginx与keepalived实现集群实现的效果

两台服务器都安装Nginx与keepalived:

master服务器的ip(192.168.200.2)

backup服务器的ip(192.168.200.4)

将 master服务器Nginx与keepalived都停掉,在 backup服务器里的浏览器输入http://192.168.188.100,访问Nginx首页

备注:192.168.188.100是keepalived的虚拟ip

第一步:准备两台服务器,示例如下图所示

第二步:给两台服务器安装Nginx

  1. 在终端里输入: su root 切换到root用户角色方便后面输入指令执行操作,如果提示输入密码错误,退出,在终端里输入 sudo passwd 按回车键 输入密码,成功后再输入 su root 切换到root角色;
  2. 安装nginx.:终端里输入apt-get install nginx, 如果没有切换到root , 输入sudo apt-get install nginx
  3. 启动Nginx:终端里输入service nginx start
  4. 在浏览器里输入服务器的ip地址验证Nginx启动成功
    master服务器
    backup服务器

第三步:给两台服务器安装keepalived

  1. 在终端里输入:apt-get install keepalived,如果没有切换到root , 输入sudo apt-get install keepalived
  2. keepalived安装完之后切换到etc目录,在终端里输入:cd /etc,接着输入:ls,如下图所示,
  3. 切换到keepalived目录:cd keepalived, ls查看keepalived里的文件,如果里面没有keepalived.conf和check_nginx.sh文件,分别输入touch keepalived.conf,touch check_nginx.sh 即创建两个对应的文件。
  4. 编辑keepalived.conf:终端里输入:vi keepalived.conf
    提醒:如果没有vi指令,需要先安装vim, 在终端里输入apt-get install vim

    查看master服务器的网卡名称:输入ifconfig

master服务器的keepalived.conf 内容如下

bash 复制代码
global_defs {
   router_id LVS_MASTER  #名称标记为master,名字随便取
   vrrp_gna_interval 0
}

#加入周期性检测nginx服务脚本的相关配置
vrrp_script check_nginx{
    script "/etc/keepalived/check_nginx.sh" #心跳执行的脚本,检测nginx是否启动
    interval 2                           #(检测脚本执行的间隔,单位是秒)
}

vrrp_instance VI_1 {
    state MASTER #指定当前节点为master节点,只能有一个master,其余只能是backup
    interface ens33 #绑定此虚拟路由使用的网卡的名称,使用ifconfig或者ip addr查看
    virtual_router_id 99 #指定虚拟路由id,虚拟路由的唯一标识,范围是0-255,mater和backup节点需要指定一样的,相同id为一组
    priority 200 #指定当前结点的优先级,master节点要大于backup节点。
    advert_int 1 #指定发送VRRP通告的间隔,单位是秒
    virtual_ipaddress {
        192.168.188.100 #指定虚拟ip,自定义的虚拟ip
    }
	
	#添加跟踪(执行脚本)
    track_script{
        check_nginx
    }
}

编辑完keepalived.conf 内容,在终端里按住键盘shift+:(冒号)键,然后输入wq,即退出并保存
backup服务器的网卡名称

backup服务器的keepalived.conf 内容如下

bash 复制代码
global_defs {
   router_id LVS_BACKUP  #名称标记为BACKUP,只要不是MASTER,名字随便取
   vrrp_gna_interval 0
}

#加入周期性检测nginx服务脚本的相关配置
vrrp_script check_nginx{
    script "/etc/keepalived/check_nginx.sh" #心跳执行的脚本,检测nginx是否启动
    interval 2                           #(检测脚本执行的间隔,单位是秒)
}

vrrp_instance VI_1 {
    state BACKUP #指定当前节点为master节点,只能有一个master,其余只能是backup
    interface ens33 #绑定此虚拟路由使用的网卡的名称,使用ifconfig或者ip addr查看
    virtual_router_id 99 #指定虚拟路由id,虚拟路由的唯一标识,范围是0-255,mater和backup节点需要指定一样的,相同id为一组
    priority 199 #指定当前结点的优先级,master节点要大于backup节点。
    advert_int 1 #指定发送VRRP通告的间隔,单位是秒
    virtual_ipaddress {
        192.168.188.100 #指定虚拟ip,自定义的虚拟ip, 注意一定是和master的服务器里虚拟ip一样的
    }
	
	#添加跟踪(执行脚本)
    track_script{
        check_nginx
    }
}
  1. 两台服务器编辑check_nginx.sh:终端里输入:vi check_nginx.sh

check_nginx.sh内容

bash 复制代码
#!/bin/bash
#检测nginx是否启动了
A=`ps -C nginx --no-header |wc -l`        
if [ $A -eq 0 ];then    #如果nginx没有启动就启动nginx                        
      /root/ydy/nginx/sbin/nginx                #重启nginx,也可以使直接监听应用服务
      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移
              killall keepalived                    
      fi
fi

第四步:启动两台服务器的keepalived

在master服务器终端里输入service keepalived start

查看绑定的网卡

验证keepalived虚拟ip调用,在master服务器的浏览器输入http://192.168.188.100

第五步:关闭master服务器的Nginx和keepalived,在 backup服务器里的浏览器输入http://192.168.188.100,访问Nginx首页

  1. 在master服务器终端里输入service keepalived stop
  2. 在master服务器终端里输入service nginx stop
  3. 在 backup服务器里的浏览器输入http://192.168.188.100

以上就是Nginx与keepalived实现集群的全部内容讲解。

相关推荐
lpfasd12314 小时前
WinSW在Win7上失败真相-实测与修复
windows·nginx
lpfasd12317 小时前
nginx服务化五套方案原理解剖与选型
运维·nginx
ue星空17 小时前
ALS V4 中文拆解手册
运维·nginx
吴声子夜歌2 天前
Nginx应用与运维——Nginx集群负载与配置管理(二)
运维·nginx
cpolar技术支持2 天前
外网测试机的异常传不回内网?自托管 Sentry,用 cpolar 打通错误上报链路
python·nginx·docker·cpolar·sentry
吴声子夜歌2 天前
Nginx应用与运维——Nginx在Kubernetes中的应用(一)
运维·nginx·kubernetes
螺蛳粉 螺蛳粉2 天前
第一篇:Keepalived 高可用实战:VIP 漂移与 Nginx 主备切换完整指南
运维·nginx·负载均衡·keepalived·高可用
吴声子夜歌2 天前
Nginx应用与运维——Nginx在Kubernetes中的应用(三)
运维·nginx·kubernetes
吴声子夜歌2 天前
Nginx应用与运维——Nginx在Kubernetes中的应用(二)
运维·nginx·kubernetes
Wang's Blog2 天前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级
java·开发语言·nginx