首页 > 系统相关 >Linux搭建nginx+keepalived 高可用(主备+双主模式)

Linux搭建nginx+keepalived 高可用(主备+双主模式)

时间:2024-11-26 15:33:36浏览次数:10  
标签:script etc keepalived nginx 主备 usr local

keepalived简介

反向代理及负载均衡参考:nginx反向代理与负载均衡
当你了解会搭建nginx负载均衡后,需要考虑nginx这台服务器的安全性啦,如果只有一台,这台nginx一出问题,web就会无法访问的情况,所以为了应对这种情况,就需要两台nginx做主备服务器。
nginx+keepalived如下图所示

 在nginx服务安装keepalived

如何配置
1、需要的环境
两台 Linux 并各自安装 Nginx 和 keepalived

2、配置高可用的准备工作
(1)需要两台服务器 192.168.17.129 、192.168.17.131
(2)在两台服务器安装 Nginx
(3)在两台服务器安装 keepalived

安装基础依赖包

yum install -y gcc openssl-devel libnl libnl-devel libnfnetlink-devel net-tools vim

两台服务器都安装 keepalived

yum install keepalived –y
#在官网下载最新版
wget https://www.keepalived.org/software/keepalived-2.2.2.tar.gz
#解压到指定目录,并重命名
tar -zxvf keepalived-2.2.2.tar.gz
mv keepalived-2.2.2 /usr/local/keepalived
#进入目录编译安装
cd /usr/local/keepalived/
./configure
make && make install

#复制相关文件到系统中
mkdir /etc/keepalived
cp /usr/local/keepalived/keepalived/etc/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/sbin/keepalived /usr/sbin/

#启动测试
/etc/init.d/keepalived start

  

完成高可用配置(主从配置)

基础三个模块,global_defs全局模块,vrrp_instance配置vip模块,vrrp_script 脚本模块,用来检测nginx服务

  • global_defs模块参数
notification_email : keepalived在发生诸如切换操作时需要发送email通知地址,后面的 smtp_server 相比也都知道是邮件服务器地址。也可以通过其它方式报警,毕竟邮件不是实时通知的。
router_id : 机器标识,通常可设为hostname。故障发生时,邮件通知会用到。

  

  • vrrp_instance模块参数
state : 指定instance(Initial)的初始状态, MASTER 或者BACKUP,不是唯一性的,跟后面的优先级priority参数有关。
interface : 实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的,(注意自己系统,我的默认是ens33,有的是eth0)
mcast_src_ip : 发送多播数据包时的源IP地址,这里注意了,这里实际上就是在那个地址上发送VRRP通告,这个非常重要,一定要选择稳定的网卡端口来发送,这里相当于heartbeat的心跳端口,如果没有设置那么就用默认的绑定的网卡的IP,也就是interface指定的IP地址
virtual_router_id : 这里设置VRID,这里非常重要,相同的VRID为一个组,他将决定多播的MAC地址
priority: 设置本节点的优先级,优先级高的为master(1-255)
advert_int : 检查间隔,默认为1秒。这就是VRRP的定时器,MASTER每隔这样一个时间间隔,就会发送一个advertisement报文以通知组内其他路由器自己工作正常
authentication : 定义认证方式和密码,主从必须一样
virtual_ipaddress : 这里设置的就是VIP,也就是虚拟IP地址,他随着state的变化而增加删除,当state为master的时候就添加,当state为backup的时候删除,这里主要是有优先级来决定的,和state设置的值没有多大关系,这里可以设置多个IP地址
track_script: 引用VRRP脚本,即在 vrrp_script 部分指定的名字。定期运行它们来改变优先级,并最终引发主备切换。

  

  • vrrp_script模块参数

告诉 keepalived 在什么情况下切换,所以尤为重要。可以有多个 vrrp_script

script : 自己写的检测脚本。也可以是一行命令如killall -0 nginx
interval 2: 每2s检测一次
weight -5 : 检测失败(脚本返回非0)则优先级 -5
fall 2: 检测连续 2 次失败才算确定是真失败。会用weight减少优先级(1-255之间)
rise 1 : 检测 1 次成功就算成功。但不修改优先级

  

修改/etc/keepalived/keepalivec.conf 配置文件

global_defs {
	 notification_email {
		 acassen@firewall.loc
		 failover@firewall.loc
		 sysadmin@firewall.loc
	 }
	 notification_email_from Alexandre.Cassen@firewall.loc
	 smtp_server 192.168.17.129
	 smtp_connect_timeout 30
	 # 通过它,可以访问到主机,在hosts文件中,要做映射关系,类似于 127.0.0.1 LVS_DEVEL
	 router_id LVS_DEVEL  
}

vrrp_script chk_http_port {
	 script "/usr/local/src/nginx_check.sh"	 # 执行脚本所在的位置
	 interval 2 	#检测脚本执行的间隔,单位秒,每个2秒执行一次脚本
	 weight 2
}
	
vrrp_instance VI_1 {
	 state MASTER	 # 备份服务器上将 MASTER 改为 BACKUP
	 interface ens33	 # 绑定的网卡
	 virtual_router_id 51	 # 主、备机的 virtual_router_id 必须相同
	 priority 90 	# 主、备机取不同的优先级,主机值较大,备份机值较小
	 advert_int 1 	#每隔一秒发送一次心跳,确保从服务器是否还活着
	 authentication {		# 心跳检测需要的密码
		 auth_type PASS
		 auth_pass 1111
 	}
	 virtual_ipaddress {
	 192.168.17.50 	# VRRP H 虚拟地址
	 }
   track_script {
    check_nginx
   } }

在/usr/local/src 添加检测脚本,检查Nginx是否还活着 

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

把两台服务器上 nginx 和 keepalived 启动 

启动 nginx:	./nginx
启动 keepalived:	systemctl start keepalived.service

可以使用ipconfig,查看虚拟Ip的绑定

 最终测试

在浏览器地址栏输入 虚拟 ip 地址 192.168.17.50

 

 把主服务器上的(192.168.17.129)Nginx 和 keepalived 停止,再输入 192.168.17.50,依旧可以访问Nginx

 

 

标签:script,etc,keepalived,nginx,主备,usr,local
From: https://www.cnblogs.com/boye169/p/18570294

相关文章

  • nginx安装及负载均衡配置
    下载http://nginx.org/en/download.html nginx的负载均衡策略轮询(默认)每个请求按照请求时间顺序分配到不同的后端服务器,如果后端服务器挂了,则自动剔除。此策略还可以设置:权重,指定轮询的频率,weight和访问率成正比,用于后端服务器性能不均匀的情况。ip_hash客户端ip地址被用......
  • docker安装nginx
    拉取镜像dockerpullnginx启动容器dockerrun--namedocker-nginx\-v/root/docker/nginx/logs:/var/log/nginx\-v/root/docker/nginx/html:/usr/share/nginx/html\-d-p80:80nginx修改nginx配置进入容器内部dockerexec-itdocker-nginx/bin/bash容器......
  • Docker - nginxWebUI部署
    nginxWebUI是一款图形化管理nginx配置得工具,可以使用网页来快速配置nginx的各项功能,包括http协议转发,tcp协议转发,反向代理,负载均衡,静态html服务器,ssl证书自动申请、续签、配置等,配置好后可一建生成nginx.conf文件,同时可控制nginx使用此文件进行启动与重载,完成......
  • 11 Nginx搭建(2)
    一、安装#安装nginx,要支持http2需要nginx在1.9.5以上、openssl在1.0.2及以上#如果openssl版本在1.0.2以下,需要安装源码包openssl、并在nginx的configure中写--with-openssl选项#下载openssl:https://www.openssl.org/source/-----------------------#查看系统的openssl......
  • 什么是keepalived
    Keepalived是一款用于提高网络服务可用性和可靠性的Linux工具,常用于构建高可用性架构。其主要功能是通过虚拟路由冗余协议(VRRP)实现故障转移,确保服务的持续运行,避免单点故障。Keepalived主要用于以下场景:1. 高可用性(HA):Keepalived可以配合LVS(LinuxVirtualServe......
  • nginx的安装
    1.源安装和包管理工具安装2.如何检查自己有没有安装nginxnginx-v查看nginx版本systemctlstatusnginx查看服务状态安装sudo命令切换到root的几种方式su-exityuminstallsudo安装sudo centos中nginx不在默认仓库中,所以需要epel仓库但是这样有两个仓库,怎么切换sudo命令的作......
  • keepalived双机热备方案实现Nginx高可用
    问题描述只用一台Nginx做反向代理,如果这台Nginx出现故障(比如宕机),则服务不可用。以下给出keepalived双机热备方案实现Nginx高可用的方法。先介绍几个概念:高可用高可用(HighAvailability)是指系统或服务能够在面对硬件故障、软件崩溃、网络问题等各种故障情况下,仍然保持......
  • 蓝易云 - opengauss高可用之主备分开搭建教程。
    在部署OpenGauss高可用环境时,主备分开搭建是一种常见的实践方法。下面是一个教程,演示了如何分开搭建OpenGauss主备服务器的过程。确保服务器环境准备就绪:在主备服务器上安装操作系统和必要的依赖项,确保网络连接正常。下载并安装OpenGauss软件:从OpenGauss官方网站下载适合你......
  • 【服务器知识】nginx不够,那我们就试试openresty
    文章目录概述OpenResty的核心特性包括:OpenResty的工作原理:如何使用OpenResty:OpenResty勾子函数......
  • 全面了解 NGINX 的负载均衡算法
    NGINX提供多种负载均衡方法,以应对不同的流量分发需求。常用的算法包括:最少连接、最短时间、通用哈希、随机算法和IP哈希。这些负载均衡算法都通过独立指令来定义,每种算法都有其独特的应用场景。以下负载均衡方法(IP哈希除外)适用于HTTP、TCP和UDP上游池:轮询轮询(Ro......