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实现集群的全部内容讲解。

相关推荐
Hellc00719 分钟前
Nginx 高级 CC 与 DDoS 防御策略指南
运维·nginx·ddos
小皮侠2 小时前
nginx的使用
java·运维·服务器·前端·git·nginx·github
梁bk8 小时前
[Nginx]反向代理和负载均衡
运维·nginx·负载均衡
绝不偷吃16 小时前
FastDFS分布式储存
linux·nginx
java1234_小锋18 小时前
解释一下NGINX的反向代理和正向代理的区别?
运维·nginx
PanZonghui1 天前
Centos项目部署之Nginx 的安装与卸载
linux·nginx
charlee442 天前
nginx部署发布Vite项目
nginx·性能优化·https·部署·vite
CRMEB定制开发2 天前
【实战】CRMEB Pro 企业版安装教程(附 Nginx 反向代理配置 + 常见问题解决)
nginx·商城系统·微信商城·crmeb
孙克旭_2 天前
day045-nginx跳转功能补充与https
linux·运维·nginx·https
博同学3 天前
Nginx + ELK + Grafana 全球访问热力图
nginx·elk·grafana