千家信息网

怎么在keepalived中使用nginx实现高可用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这期内容当中小编将会给大家带来有关怎么在keepalived中使用nginx实现高可用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.keepalived介绍ke
千家信息网最后更新 2026年11月03日怎么在keepalived中使用nginx实现高可用

这期内容当中小编将会给大家带来有关怎么在keepalived中使用nginx实现高可用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1.keepalived介绍

keepalived最初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了实现高可用的VRRP功能。keepalived除了能够管理LVS软件外,还能支持其他服务的高可用解决方案。

keepalived通过VRRP协议实现高可用功能的。VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。VRRP出现的目的就是为了解决静态路由单点故障问题,它能保证当个别节点宕机时,整个网络可以不间断地运行。

2.keepalived高可用故障转移原理

keepalived高可用服务之间的故障转移,是通过VRRP来实现的。在keepalived服务工作时,主Master节点会不断地向备节点发送(多播的方式)心跳消息,用来告诉备Backup节点自己还活着。

  当主节点发生故障时,无法给备节点发送心跳消息,如果备节点无法继续检测到来自主节点的心跳。就会调用自身的接管程序,接管主节点的IP资源和服务。当主节点恢复时,备节点又会释放主节点故障时自身接管的IP资源和服务,恢复到原来的备用角色

3.安装nginx

3.1.主节点(192.168.80.22)

3.1.1.安装编译工具和库文件

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

3.1.2.安装pcre

#进入目录cd /usr/local/develop/anginx#上传安装文件并解压tar -zxvf pcre-8.38.tar.gz#进入安装目录cd pcre-8.38#检查配置./configure#编译、安装make && make install#查看pcre版本pcre-config --version

3.1.3.安装nginx

#进入目录cd /usr/local/develop/anginx#上传安装文件,并解压tar -zxvf nginx-1.8.1.tar.gz#进入安装目录cd nginx-1.8.1#检查配置./configure --prefix=/usr/local/develop/anginx/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/develop/anginx/pcre-8.38#编译安装make && make install#查看nginx版本 /usr/local/develop/anginx/webserver/nginx/sbin/nginx -v--------------------------------------------------------[root@hadoop02 webserver]# /usr/local/develop/anginx/webserver/nginx/sbin/nginx -vnginx version: nginx/1.8.1#配置nginx(检查)/usr/local/develop/anginx/webserver/nginx/sbin/nginx -t#nginx管理命令/usr/local/develop/anginx/webserver/nginx/sbin/nginx       # 启动 Nginx/usr/local/develop/anginx/webserver/nginx/sbin/nginx -s stop       # 停止 Nginx/usr/local/develop/anginx/webserver/nginx/sbin/nginx -s reload      # 重新载入配置文件/usr/local/develop/anginx/webserver/nginx/sbin/nginx -s reopen      # 重启 Nginx

3.1.4.nginx基础配置

vi nginx.conf#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;pid    logs/nginx.pid;events {  worker_connections 1024;}http {  include    mime.types;  default_type application/octet-stream;  log_format main '$remote_addr - $remote_user [$time_local] "$request" '           '$status $body_bytes_sent "$http_referer" '           '"$http_user_agent" "$http_x_forwarded_for"';  access_log logs/access.log main;  sendfile    on;  #tcp_nopush   on;  #keepalive_timeout 0;  keepalive_timeout 65;  #gzip on;    #添加tomcat列表,真实应用服务器都放在这  upstream tomcat_pool{    #server tomcat地址:端口号 weight表示权值,权值越大,被分配的几率越大;    server 192.168.80.22:8080 weight=4 max_fails=2 fail_timeout=30s;    server 192.168.80.22:8081 weight=4 max_fails=2 fail_timeout=30s;      }  server {    listen    80;    server_name tomcat_pool;    #charset koi8-r;    #access_log logs/host.access.log main;    location / {      #root  html;      #index index.html index.htm;      proxy_pass http://tomcat_pool;  #转向tomcat处理      proxy_set_header  Host       $host;      proxy_set_header  X-Real-IP    $remote_addr;      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;    }    #error_page 404       /404.html;    # redirect server error pages to the static page /50x.html    #    error_page  500 502 503 504 /50x.html;    location = /50x.html {      root  html;    }}

3.2.备节点(192.168.80.21)

说明:安装方式同nginx主节点。

4.安装keepalived

4.1.主节点(192.168.80.22)

#安装keepalivedyum install keepalived -y#启动keepalived服务/etc/init.d/keepalived start-------------------------------------------[root@hadoop02 anginx]# /etc/init.d/keepalived start正在启动 keepalived:                   [确定][root@hadoop02 anginx]# ps -ef |grep keepalivedroot   15723   1 0 00:59 ?    00:00:00 /usr/sbin/keepalived -Droot   15724 15723 0 00:59 ?    00:00:00 /usr/sbin/keepalived -Droot   15725 15723 0 00:59 ?    00:00:00 /usr/sbin/keepalived -Droot   15731 15622 0 00:59 pts/1  00:00:00 grep keepalived[root@hadoop02 anginx]##设置开机自启动echo "/etc/init.d/keepalived start" >>/etc/rc.local#关闭keepalived服务/etc/init.d/keepalived stop#编辑keepalived配置文件vi /etc/keepalived/keepalived.conf-----------------------------------------------------------! Configuration File for keepalivedglobal_defs {  notification_email {   acassen@firewall.loc   failover@firewall.loc   sysadmin@firewall.loc  }  notification_email_from Alexandre.Cassen@firewall.loc  smtp_server 192.168.200.1  smtp_connect_timeout 30  router_id lb01}vrrp_instance VI_1 {  state MASTER  interface eth2  virtual_router_id 55  priority 150  advert_int 1  authentication {    auth_type PASS    auth_pass server123  }  virtual_ipaddress {    192.168.80.100 dev eth2 label eth2:1  }}...........................................................

关于配置说明:

  • 【router_id】 是路由标识,在一个局域网里面应该是唯一的

    • 【vrrp_instance VI_1】{...}这是一个VRRP实例,里面定义了keepalived的主备状态、接口、优先级、认证和IP信息

    • 【state】 定义了VRRP的角色

    • 【interface】定义使用的接口,这里我的服务器用的网卡都是eth2

    • 【virtual_router_id】是虚拟路由ID标识,一组的keepalived配置中主备都是设置一致

    • 【priority】是优先级,数字越大,优先级越大,

    • 【auth_type】是认证方式

    • 【auth_pass】是认证的密码

  • 【virtual_ipaddress】 {...}定义虚拟IP地址,可以配置多个IP地址,这里我定义为192.168.80.100,绑定了eth2的网络接口,虚拟接口eth2:1

4.2.备节点(192.168.80.21)

#安装keepalivedyum install keepalived -y#启动keepalived服务/etc/init.d/keepalived start-------------------------------------------[root@hadoop02 anginx]# /etc/init.d/keepalived start正在启动 keepalived:                   [确定][root@hadoop02 anginx]# ps -ef |grep keepalivedroot   15723   1 0 00:59 ?    00:00:00 /usr/sbin/keepalived -Droot   15724 15723 0 00:59 ?    00:00:00 /usr/sbin/keepalived -Droot   15725 15723 0 00:59 ?    00:00:00 /usr/sbin/keepalived -Droot   15731 15622 0 00:59 pts/1  00:00:00 grep keepalived[root@hadoop02 anginx]##设置开机自启动echo "/etc/init.d/keepalived start" >>/etc/rc.local#关闭keepalived服务/etc/init.d/keepalived stop#编辑keepalived配置文件vi /etc/keepalived/keepalived.conf-----------------------------------------------------------------! Configuration File for keepalivedglobal_defs {  notification_email {   acassen@firewall.loc   failover@firewall.loc   sysadmin@firewall.loc  }  notification_email_from Alexandre.Cassen@firewall.loc  smtp_server 192.168.200.1  smtp_connect_timeout 30  router_id lb02}vrrp_instance VI_1 {  state BACKUP  interface eth2  virtual_router_id 55  priority 100  advert_int 1  authentication {    auth_type PASS    auth_pass server123  }  virtual_ipaddress {    192.168.80.100 dev eth2 label eth2:1  }}.............................................................

5.测试

5.1.启动主备节点的keepalived服务

#在节点一执行(192.168.80.22)/etc/init.d/keepalived start-------------------------------------[root@hadoop02 anginx]# ps -ef |grep keepalivedroot   15788   1 0 01:09 ?    00:00:00 /usr/sbin/keepalived -Droot   15790 15788 0 01:09 ?    00:00:00 /usr/sbin/keepalived -Droot   15791 15788 0 01:09 ?    00:00:00 /usr/sbin/keepalived -Droot   15807 15622 0 01:33 pts/1  00:00:00 grep keepalived[root@hadoop02 anginx]##在节点二执行(192.168.80.21)/etc/init.d/keepalived start---------------------------------------[root@hadoop01 ~]# ps -ef |grep keepalivedroot   11542   1 0 01:30 ?    00:00:00 /usr/sbin/keepalived -Droot   11544 11542 0 01:30 ?    00:00:00 /usr/sbin/keepalived -Droot   11545 11542 0 01:30 ?    00:00:00 /usr/sbin/keepalived -Droot   11550 11512 0 01:33 pts/1  00:00:00 grep keepalived[root@hadoop01 ~]#

5.2.通过虚ip访问服务

http://192.168.80.100/session-redis-demo/

5.3.停止主节点keepalived服务

#在节点一执行(192.168.80.22)/etc/init.d/keepalived stop#观察备节点变化ip addr-------------------------------------------[root@hadoop01 ~]# ip addr1: lo:  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 forever2: eth2:  mtu 1500 qdisc pfifo_fast state UP qlen 1000  link/ether 00:50:56:38:e5:46 brd ff:ff:ff:ff:ff:ff  inet 192.168.80.21/24 brd 192.168.80.255 scope global eth2  inet 192.168.80.100/32 scope global eth2:1  inet6 fe80::250:56ff:fe38:e546/64 scope link     valid_lft forever preferred_lft forever[root@hadoop01 ~]#

5.4.继续通过虚ip访问服务

http://192.168.80.100/session-redis-demo/

6.keepalived+nginx整合

说明:编写nginx守护脚本,如果nginx服务出现故障,则停止当前节点的keepalived服务。自动切换到备用节点。

6.1.编写nginx守护脚本

vi nginx_check.sh--------------------------------------#!/bin/bashwhile truedoif [ $(netstat -tlnp|grep nginx|wc -l) -ne 1 ]then  /etc/init.d/keepalived stopfisleep 2done#给脚本授权chmod u+x nginx_check.sh#执行脚本nohup /usr/local/develop/anginx/shell/nginx_check.sh &

6.2.停止主节点nginx服务

#停止主节点nginx服务/usr/local/develop/anginx/webserver/nginx/sbin/nginx -s stop#查找进程[root@hadoop02 ~]# ps -ef |grep nginxroot   15915   1 0 01:51 ?    00:00:00 /bin/bash /usr/local/develop/anginx/shell/nginx_check.shroot   16516 15753 0 01:54 pts/5  00:00:00 grep nginx[root@hadoop02 ~]##观察备用节点变化【服务正常】ip addr--------------------------------------[root@hadoop01 shell]# ip addr1: lo:  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 forever2: eth2:  mtu 1500 qdisc pfifo_fast state UP qlen 1000  link/ether 00:50:56:38:e5:46 brd ff:ff:ff:ff:ff:ff  inet 192.168.80.21/24 brd 192.168.80.255 scope global eth2  inet 192.168.80.100/32 scope global eth2:1  inet6 fe80::250:56ff:fe38:e546/64 scope link     valid_lft forever preferred_lft forever[root@hadoop01 shell]##再次重新启动主节点nginx和keepalived服务/usr/local/develop/anginx/webserver/nginx/sbin/nginx/etc/init.d/keepalived start

上述就是小编为大家分享的怎么在keepalived中使用nginx实现高可用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

节点 服务 配置 故障 文件 接口 目录 脚本 路由 优先级 地址 方式 备用 检查 管理 编译 认证 内容 功能 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网加科技 科技金融是不是互联网金融 腾讯阿里互联网科技 互联网科技公司发展 唐信互联网科技 大连 齐家互联网科技有限公司 深圳前海聚择互联网科技有限公司 互联网科技热点资讯 互联网对科技的发展 翼展科技 首家互联网医院 深圳艾果互联网通讯科技 山东星卡互联网科技有限公司官网 21世纪互联网科技成就 四川互联网展示科技馆设计 普陀区互联网教育科技管理办法 国产互联网科技公司 互联网科技收购价值 恒生科技指数 中概互联网 互联网科技大会大佬 株洲百竞科技的互联网营销顾问 南京欣网互联网络科技 广州淘业互联网络科技 北京互联网络科技有限公司 天下捷融互联网科技 互联网还是高科技吗 湖北码尼互联网科技有限公司电话 互联网科技如何创业 智帮互联网科技公司最近动向 互联网金融运营模式中的金融科技 盐城市攀科互联网科技有限公司
0