keepalived+nginx实现高可用

本文详细介绍了如何使用Keepalived实现Nginx服务的高可用性,包括环境搭建、软件安装、配置步骤及测试过程,确保在服务器故障时能自动切换,提高系统的稳定性和可靠性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

一、keepalived简介

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

二、实验前期准备

       

VIPIP端口主从
192.168.148.120192.168.148.12888
192.168.148.12988

软件:1、Redhat 6.7两台,ip地址分别为192.168.148.128、192.168.148.129

           2、keepalived-1.2.18.tar.gz

           3、nginx-1.13.10.tar.gz

三、安装NGINX

首先需要安装编译 Nginx 所需的依赖包

# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel

1、下载nginx包并分别上传上传到两台linux主机上/usr/local/src目录下

2、解压并编译安装        

# cd /usr/local/src/
# tar -zxvf nginx-1.13.0.tar.gz
# cd nginx-1.13.0
# ./configure --prefix=/usr/local/nginx
# make && make install

3、 配置nginx       

# vim /usr/local/nginx/conf/nginx.com
server {
        listen       88;#修改监听端口为88
        server_name  localhost;
}

4、修改nginx欢迎页面标题,以便区分

# vim /usr/local/nginx/html/index.html

            

5、 关闭防火墙,并测试是否安装成功

# service iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]

​
# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

​

  6、相关命令

# /usr/local/nginx/sbin/nginx                     #启动
# /usr/local/nginx/sbin/nginx -s reload           #重启
# /usr/local/nginx/sbin/nginx -s stop             #关闭
# /usr/local/nginx/sbin/nginx -t                  #检测配置文件语法是否有错误

7、 分别查看两个主机的页面

     

四、keepalived安装与配置

1、下载解压并安装

# cd /usr/local/src
# tar -zxvf keepalived-1.2.18.tar.gz
# cd keepalived-1.2.18
# ./configure --prefix=/usr/local/keepalived
# make && make install

2、将keepalived安装成系统服务方便管理

# mkdir /etc/keepalived
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

3、节点配置

编写一个脚本来检测nginx服务是否开启,如果没开启就自动杀掉keepalived。

#!/bin/bash 
A=`ps -C  nginx --no-header |wc -l`    #其中-C参数是指定执行指令的名称,并列出该指令的进程的状况
if [ $A -eq 0 ];
   then
    systemctl stop keepalived.service
  fi

 3.1 主节点--MASTER

# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
	## keepalived 自带的邮件提醒需要开启 sendmail 服务。 建议用独立的监控或第三方 SMTP
	router_id liuyazhuang133 ## 标识本节点的字条串,通常为 hostname
} 
vrrp_script chk_nginx {
	script "/etc/keepalived/nginx_check.sh"
	interval 2               #每两秒检测一次
	weight -20
}
## 定义虚拟路由, VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
	state MASTER ## 主节点为 MASTER, 对应的备份节点为 BACKUP
	interface eth0 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同, 我的是 eth0
	virtual_router_id 33 ## 虚拟路由的 ID 号, 两个节点设置必须一样, 可选 IP 最后一段使用, 相同的 VRID 为一个组,他将决定多播的 MAC 地址
	mcast_src_ip 192.168.148.128 ## 本机 IP 地址
	priority 100 ## 节点优先级, 值范围 0-254, MASTER 要比 BACKUP 高
	nopreempt ## 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
	advert_int 1 ## 组播信息发送间隔,两个节点设置必须一样, 默认 1s
	## 设置验证信息,两个节点必须一致
	authentication {
		auth_type PASS
		auth_pass 1111 ## 真实生产,按需求对应该过来
	}
 track_script {
		chk_nginx
	}
	# 虚拟 IP 池, 两个节点设置必须一样
	virtual_ipaddress {
		192.168.148.120 ## 虚拟 ip,可以定义多个
	}
}

 3.2 从节点--BACKUP

# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
	router_id liuyazhuang134
}
vrrp_instance VI_1 {
	state BACKUP  #从节点为BACKUP
	interface eth1
	virtual_router_id 33  #两个节点必须保持一致
	mcast_src_ip 192.168.50.134 #本机ip
	priority 90  #优先级,主节点要高于从节点
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	
	virtual_ipaddress {
		192.168.148.120  #虚拟地址
	}
}

4、启动keepalived

#service keepalived on

5、keepalived+nginx高可用测试

  两台主机都启动nginx和keepalived,浏览器地址栏输入192.168.148.120(虚拟ip),可以看到

关闭主节点的keepalived和nginx,浏览器地址栏输入192.168.148.120(虚拟ip),可以看到

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值