Nginx负载均衡 - keepalived

2024-08-22 21:38
文章标签 nginx 负载 均衡 keepalived

本文主要是介绍Nginx负载均衡 - keepalived,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

常用的负载均衡

1.HTTP重定向

http请求进行转移,在web开发中我们经常会用它来完成自动跳转,比如用户登陆成功过后跳转到相应的管理页面,这种重定向完全由Http定义,并且由Http代理和web服务器共同实现。
备注:http重定向具备了请求转移和自动跳转的本领,所以除了满足应用程序需要的自动跳转之外,它还可以用于实现负载均衡,以达到web扩展的目的。

2.DNS负载均衡 (轮询机制)

DNS 负责提供域名解析服务,当我们访问某个站点时,实际上首先需要通过该站点域名的DNS服务器来获取域名指向的IP地址,在这个过程中,DNS服务器便充当了负载均衡调度器(也称均衡器),它就像前面提到的重定向转移策略一样,将用户的请求分散到多台服务器上,但是它的实现机制完全不同

3.反向代理负载均衡

反向代理服务器的核心工作便是转发HTTP请求,因此它工作在HTTP层面,也就是TCP七层结构中的应用层(第七层),所以基于反向代理的负载均衡也称为七层负载均衡,实现它并不困难,目前几乎所有主流的web服务器都热衷于支持基于反向代理的负载均衡。

4.IP负载均衡

事实上,在数据链路层(第二层)、网络层(第三层)以及传输层(四层)都可以实现不同机制的负载均衡,但有所不同的是,这些负载均衡调度器的工作必须由linux内核来王城,因为我们希望网络数据包在从内核进入缓冲区进入进程用户地址空间之前,尽早的被转发到其他的实际服务器上,而linux中位于内核的NetfilterIPVS可以解决问题,而用户空间的应用程序对此却束手无策。另一方面,也正是因为可以调度器工作在应用层一下,这些负载均衡系统可以支持更多的网络服务器协议

一般做法会使用DNS负载均衡(DNS轮训机制)+nginx负载均衡


开始部署负载均衡  -  首先部署Master服务器


1.下载keepalived

wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
tar zxf keepalived-1.2.7.tar.gz

2.安装依赖包

yum -y install gcc pcre-devel zlib-devel openssl-devel
yum -y install popt-devel

3.执行keepalived中的configure文件

cd keepalived-1.2.7
./configure
make
make install

4.迁移文件

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

5.加入启动服务 使得开机自启动

echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.localecho "/etc/init.d/keepalived start" >> /etc/rc.local

6.配置Nginx

http {include       mime.types;default_type  application/octet-stream;sendfile        on;upstream opslinux.com {ip_hash;server 192.168.1.249:80server 192.168.1.250:80server 192.168.1.251:80}server {listen       80;location / {proxy_pass http://opslinux.com;}
}

7.配置keepalived.conf文件

vi /etc/keepalived/keepalived.conf

global_defs {router_id NGINX_UPSTEAM 
}#实例
vrrp_instance VI_1 {state MASTER          	#主服务 interface eth0	     	#网卡接口名称virtual_router_id 51	#虚拟路由idpriority 100			#优先级advert_int 1			authentication {auth_type PASSauth_pass 1111}
#虚拟 ipvirtual_ipaddress {192.168.0.100}
}

8.开启keepalived :

service keepalived start

9.查看虚拟IP是否绑定在服务器上

ip add

10.监控nginx状态

  • 最简单的做法是监控NginX进程,更靠谱的做法是检查NginX端口,最靠谱的做法是检查多个url能否获取到页面。
如何尝试恢复服务
  • 如果发现NginX不正常,重启之。等待3秒再次校验,仍然失败则不再尝试。
  • 根据上述策略很容易写出监控脚本。这里使用nmap检查nginx端口来判断nginx的状态,记得要首先安装nmap。监控脚本如下:
#!/bin/bash
# check nginx server status
NGINX=/usr/local/nginx/sbin/nginx
PORT=8080nmap localhost -p $PORT | grep "$PORT/tcp open"
#echo $?
if [ $? -ne 0 ];then$NGINX -s stop$NGINXsleep 3nmap localhost -p $PORT | grep "$PORT/tcp open"[ $? -ne 0 ] && /etc/init.d/keepalived stop
fi

不要忘了设置脚本的执行权限,否则不起作用。

11.在keepalived.conf中新增下列代码

vrrp_script chk_http_port { script "/opt/chk_nginx.sh"interval 1weight -2
}track_script {chk_http_port
}

12.为了避免 keepalived 在启动之前 nginx没有启动

所有我们要在 /etc/init.d/keepalived的 start中 先启动nginx

start() {/usr/local/nginx/sbin/nginxsleep 3echo -n $"Starting $prog: "daemon keepalived ${KEEPALIVED_OPTIONS}RETVAL=$?echo[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
}

备注:此处需要关闭ip防火墙 否则会造成nginx通信问题,导致多台主机认为自己是master,虚拟ip绑定在每个主机上

命令:service iptables stop

这样我们的master服务就部署完毕了,接着我们开始部署backup服务器【backup的部署与master的部署很相似,本来要分开成两篇的。。。】


1.下载keepalived

wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
tar zxf keepalived-1.2.7.tar.gz

2.安装依赖包

yum -y install gcc pcre-devel zlib-devel openssl-devel
yum -y install popt-devel

3.执行keepalived中的configure文件

cd keepalived-1.2.7
./configure
make
make install

4.迁移文件

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

5.配置keepalived.conf文件

vi /etc/keepalived/keepalived.conf

global_defs {router_id NGINX_DEVEL
}#实例
vrrp_instance VI_1 {state BACKUP        	#主服务 interface eth0	     	#网卡接口名称virtual_router_id 51	#虚拟路由idpriority 99		#优先级advert_int 1			authentication {auth_type PASSauth_pass 1111}
#虚拟 ipvirtual_ipaddress {192.168.0.100}
}

若有多台主机则需要添加MASTER服务器中的 8,9,10,11,12,的操作要在其他的backup服务器中添加






这篇关于Nginx负载均衡 - keepalived的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097465

相关文章

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

Nginx 413修改上传文件大小限制的方法详解

《Nginx413修改上传文件大小限制的方法详解》在使用Nginx作为Web服务器时,有时会遇到客户端尝试上传大文件时返回​​413RequestEntityTooLarge​​... 目录1. 理解 ​​413 Request Entity Too Large​​ 错误2. 修改 Nginx 配置2.1

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

NGINX 配置内网访问的实现步骤

《NGINX配置内网访问的实现步骤》本文主要介绍了NGINX配置内网访问的实现步骤,Nginx的geo模块限制域名访问权限,仅允许内网/办公室IP访问,具有一定的参考价值,感兴趣的可以了解一下... 目录需求1. geo 模块配置2. 访问控制判断3. 错误页面配置4. 一个完整的配置参考文档需求我们有一