nginx结合keepalived实现高可用的完整步骤

 更新时间:2019年12月15日 09:11:45   作者:小小学生爱读书  
这篇文章主要给大家介绍了关于nginx结合keepalived实现高可用的完整步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用nginx具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

为了满足系统的高可用,一般都需要搭建集群。当主机挂掉的时候,我们的系统还可以继续提供服务。当我们使用nginx作为反向代理和动静分离服务器的时候,也是如此。实现系统的高可用性,是我们程序员关注的重点。本文介绍了nginx结合keepalived实现主从模式搭建高可用集群。

前提知识

本文不作过多的nginx相关配置介绍,默认读者已经了解nginx的相关知识。

keepalived的介绍

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

系统架构图

实现步骤

1.环境配置

1.1 安装nginx

安装相关依赖

yum install pcre-devel zlib zlib-devel openssl openssl-devel

上传解压压缩包

tar zxvf nginx-1.12.2.tar.gz

创建目录,检测配置

mkdir -p /usr/local/nginx
./configure --prefix=/usr/local/nginx

预编译和安装

make && make install

启动、停止相关命令

cd /usr/local/nginx/sbin/
./nginx
./nginx -s stop
./nginx -s start

1.2 安装keepalived

yum install -y keepalived

2.主机配置

修改keepalived配置文件

vim /etc/keepalived/keepalived.conf

修改的内容如下

#新增的配置
vrrp_script chk_http_port {
 script "/shell/nginx_check.sh" #脚本地址
 interval 2 #检测脚本执行的间隔
 weight 2 #比重
}

vrrp_instance VI_1 {
 state MASTER #主服务器为MASTER,从服务器为BACKUP
 interface eth0 #网卡
 virtual_router_id 51 #主、备机的virtual_router_id必须相同
 priority 100 #主、备机不同的优先级,主机优先级较大,备机值较小,默认是100
 advert_int 1
 authentication {
  auth_type PASS
  auth_pass 1111
 }
 #虚拟IP地址
 virtual_ipaddress {
  192.168.126.88
 }
}

创建编写脚本文件

mkdir /shell/nginx_check.sh
vim /shell/nginx_check.sh

脚本文件内容如下

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

3.从机配置

修改keepalived配置文件

vrrp_instance VI_1 {
  state BACKUP #主服务器为MASTER,从服务器为BACKUP
  interface eth0 #网卡
  virtual_router_id 51 #主、备机的virtual_router_id必须相同
  priority 50 #主、备机不同的优先级,主机优先级较大,备机值较小
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 1111
  }
  #虚拟IP地址
  virtual_ipaddress {
    192.168.126.88
  }
}

4.启动服务

启动

service keepalived start

查看虚拟IP地址

ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
  inet6 ::1/128 scope host 
    valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  link/ether 00:0c:29:4f:31:ce brd ff:ff:ff:ff:ff:ff
  inet 192.168.126.100/24 brd 192.168.126.255 scope global eth0
  inet 192.168.126.88/32 scope global eth0
  inet6 fe80::20c:29ff:fe4f:31ce/64 scope link 
    valid_lft forever preferred_lft forever

5.关闭防火墙测试

关闭防火墙

service iptables stop
#查看防火墙是否开机自启动
chkconfig --list | grep iptables
chkconfig iptables off

登陆虚拟IP地址查看

http://192.168.126.88/

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • nginx中域名、目录的301重定向配置示例

    nginx中域名、目录的301重定向配置示例

    这篇文章主要介绍了nginx中域名、目录的301重定向配置示例,分为域名和域名间的跳转,目录跳转等,需要的朋友可以参考下
    2014-07-07
  • Nginx配置系统服务&设置环境变量方式

    Nginx配置系统服务&设置环境变量方式

    本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx,并通过设置环境变量可以简化执行其他命令的操作步骤
    2025-03-03
  • nginx日志打印请求头信息示例详解

    nginx日志打印请求头信息示例详解

    这篇文章主要介绍了nginx日志打印请求头信息的相关资料,文章介绍了如何在Nginx中打印请求头中的自定义字段,并解决由于下划线导致的字段无法正确打印的问题,需要的朋友可以参考下
    2024-11-11
  • 解析prometheus+grafana监控nginx的方法

    解析prometheus+grafana监控nginx的方法

    ​在prometheus需要向ngxin中打入探针,通过探针获取ngxin信息,并通过接口输出。下文将讲述如何监控ngxin,感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • 手把手教你利用Nginx搭建属于自己的服务器

    手把手教你利用Nginx搭建属于自己的服务器

    最近总是想搭建自己的网站,奈何皮夹里空空如也,服务器也租不起,更别说域名了,于是我就寻思能否自己搭建个服务器,还不要钱呢,本文就来手把手教你如何实现吧
    2023-08-08
  • Nginx设置HTTPS监听的具体步骤

    Nginx设置HTTPS监听的具体步骤

    这篇文章主要介绍了Nginx设置HTTPS监听的具体步骤,在 Nginx 上设置 HTTPS 证书,并将所有 HTTP 请求重定向到 HTTPS,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2024-12-12
  • nginx限流及配置管理实战记录

    nginx限流及配置管理实战记录

    流量限制(rate-limiting)是Nginx中一个非常实用,却经常被错误理解和错误配置的功能,下面这篇文章主要给大家介绍了关于nginx限流及配置管理的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • nginx ip黑名单动态封禁的例子

    nginx ip黑名单动态封禁的例子

    今天小编就为大家分享一篇nginx ip黑名单动态封禁的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Nginx中的location路径映射问题

    Nginx中的location路径映射问题

    这篇文章主要介绍了Nginx中的location路径映射问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • nginx HTTP模块配置常用指令

    nginx HTTP模块配置常用指令

    这篇文章主要介绍了nginx HTTP模块在配置文件中常用的指令,详解了每个指令的含义、语法和注意事项等,需要的朋友可以参考下
    2014-03-03

最新评论