nginx+keepalived搭建高可用负载均衡(主备模式)
来源:互联网 发布:sql 求和带条件 编辑:程序博客网 时间:2024/05/29 11:36
原文地址,转载请注明出处:http://blog.csdn.net/qq_34021712/article/details/73438100 ©王赛超
前言
为什么要实现高可用呢?以前在搭建的时候只用了一台Nginx服务器,这样的话如果Nginx服务器宕机了,那么整个网站就会挂掉,所以要实现Nginx的高可用,一台挂掉还会有另一台顶上去,从而保证网站可以持续的提供服务。高可用分为以下两种方式:
1、Nginx+keepalived 主从配置这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠。
2、Nginx+keepalived 双主配置
这种方案,使用两个vip地址,前端使用2台机器,互为主备,同时有两台机器工作,当其中一台机器出现故障,两台机器的请求转移到一台机器负担,非常适合于当前架构环境。
环境说明
服务器名称版本安装的服务ip/vipNginx主服务器CentOS 7nginx+keepalived192.168.1.115/192.168.1.155Nginx从服务器CentOS 7nginx+keepalived192.168.1.120/192.168.1.155我这里并没有将tomcat集群配置进来,只是为了测试nginx和keepalive高可用,如果想要搞一套完整版的,参考下面的博客配置
Nginx配置负载均衡见:http://blog.csdn.net/qq_34021712/article/details/68927676
Nginx配置动静分离见:http://blog.csdn.net/qq_34021712/article/details/68928650
主备模式搭建
第一步:安装keepalived依赖的包yum install gcc openssl-devel libnl3-devel popt-devel iptables-devel libnfnetlink-devel net-snmp-devel -y第二步:编译安装keepalived
将keepalived的安装包 上传到/usr/local/software 目录下cd /usr/local/softwaretar -zxvf keepalived-1.3.5.tar.gzcd keepalived-1.3.5./configure --prefix=/usr/local/keepalivedmake && make install第三步:将 keepalived 安装成 Linux 系统服务
安装完成之后, 需要做一些工作复制默认配置文件到 默认路径mkdir /etc/keepalivedcp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/cp /usr/local/keepalived/sbin/keepalived /usr/sbin/cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/cd /usr/local/software/keepalived-1.3.5cp ./keepalived/etc/init.d/keepalived /etc/init.d/chmod 755 /etc/init.d/keepalived第四步:编写nginx检测脚本
vi /etc/keepalived/nginx_check.sh内容如下:#!/bin/bashA=`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 fifi赋予执行权限chmod +x /etc/keepalived/nginx_check.sh第五步:修改keepalived的Master配置文件(192.168.1.115)
vi /etc/keepalived/keepalived.conf内容如下:! Configuration File for keepalived # 全局配置,配置收件人 global_defs { notification_email { ##通知机制,收件人 820518302@qq.com } notification_email_from keepalived@domain.com ####发件人 smtp_server 192.168.1.115 ##发件服务器 smtp_connect_timeout 30 ##服务器连接超时时间 router_id LVS_DEVEL ##路由器标志 } # 集群资源监控,组合track_script进行 vrrp_script check_haproxy { script "/etc/keepalived/nginx_check.sh" #检测 nginx 状态的脚本路径interval 2 #检测时间间隔weight -20 #条件成立 权重减20} vrrp_instance HAPROXY_HA { # 设置当前主机为主节点,如果是备用节点,则设置为BACKUP state MASTER # 指定HA监测网络接口,可以用ifconfig查看来决定设置哪一个 interface eno16777736 # 虚拟路由标识,同一个VRRP实例要使用同一个标识,主备机 virtual_router_id 80 # 因为当前环境中VRRP组播有问题,改为使用单播发送VRRP报文 如果VRRP组播没问题,以下这块的内容可以注释掉。# 这个地方需要关注,之前未做此设置,结果主备节点互相不能发现,因此主备节点都升级成了MASTER,并且绑定了VIP # 主节点时,内容为: #unicast_src_ip 192.168.1.115 # unicast_peer { # 192.168.1.120 #} # 设置优先级,确保主节点的优先级高过备用节点priority 100 # 用于设定主备节点间同步检查时间间隔 advert_int 2 # 设置高可用集群中不抢占功能,在主机down后,从机接管,当主机重新恢复后,设置此功能,备机将继续提供服务,从而避免因切换导致的隐患 nopreempt # 设置主备节点间的通信验证类型及密码,同一个VRRP实例中需一致 authentication { auth_type PASS auth_pass 1234 } # 集群资源监控,组合vrrp_script进行 track_script { check_haproxy } # 设置虚拟IP地址,当keepalived状态切换为MASTER时,此IP会自动添加到系统中 # 当状态切换到BACKUP时,此IP会自动从系统中删除 # 可以通过命令ip add查看切换后的状态 virtual_ipaddress { 192.168.1.155 #虚拟ip配置完之后就用它访问 } }
注意:如果是主备模式,要配置nopreempt
第六步:修改keepalived的BACKUP配置文件(192.168.1.120)! Configuration File for keepalived # 全局配置,配置收件人 global_defs { notification_email { ##通知机制,收件人 820518302@qq.com } notification_email_from keepalived@domain.com ####发件人 smtp_server 192.168.1.120 ##发件服务器 smtp_connect_timeout 30 ##服务器连接超时时间 router_id LVS_DEVEL ##路由器标志 } # 集群资源监控,组合track_script进行 vrrp_script check_haproxy { script "/etc/keepalived/nginx_check.sh" #检测 nginx 状态的脚本路径interval 2 #检测时间间隔weight -20 #条件成立 权重减20}vrrp_instance HAPROXY_HA { # 设置当前主机为主节点,如果是备用节点,则设置为BACKUP state BACKUP # 指定HA监测网络接口,可以用ifconfig查看来决定设置哪一个 interface eno16777736 # 虚拟路由标识,同一个VRRP实例要使用同一个标识,主备机 virtual_router_id 80 # 因为当前环境中VRRP组播有问题,改为使用单播发送VRRP报文 如果VRRP组播没问题,以下这块的内容可以注释掉。# 这个地方需要关注,之前未做此设置,结果主备节点互相不能发现,因此主备节点都升级成了MASTER,并且绑定了VIP # 主节点时,内容为: #unicast_src_ip 192.168.1.120 # unicast_peer { # 192.168.1.115 #} # 设置优先级,确保主节点的优先级高过备用节点priority 90 # 用于设定主备节点间同步检查时间间隔 advert_int 2 # 设置主备节点间的通信验证类型及密码,同一个VRRP实例中需一致 authentication { auth_type PASS auth_pass 1234 } # 集群资源监控,组合vrrp_script进行 track_script { check_haproxy } # 设置虚拟IP地址,当keepalived状态切换为MASTER时,此IP会自动添加到系统中 # 当状态切换到BACKUP时,此IP会自动从系统中删除 # 可以通过命令ip add查看切换后的状态 virtual_ipaddress { 192.168.1.155 #虚拟ip配置完之后就用它访问 } }
测试高可用
第一步:启动nginx和keepalived服务启动nginx:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf启动keepalived:keepalived启动之后,使用ip addr(centos6之前版本使用 ifconfig) 其中一台服务器会出现虚拟ip绑定到网卡
第二步:通过虚拟ip访问服务
通过虚拟ip访问服务,会跳转到nginx的服务上。
第三步:杀掉192.168.1.120上的keepalived再次访问服务
注意:杀掉nginx是不行的,因为上面的脚本 是检测到nginx宕机 会重启nginx的
第四步:再次访问服务
会发现虚拟ip 从192.168.1.120上取消了,重新绑定到192.168.1.115上了
阅读全文
1 0
- nginx+keepalived搭建高可用负载均衡(主备模式)
- nginx+keepalived搭建高可用负载均衡(双主模式)
- keepalived+nginx搭建高可用and负载均衡集群
- Nginx+Keepalived高可用负载均衡服务器搭建
- Nginx+Keepalived搭建高可用负载均衡集群
- 搭建 Keepalived + Nginx + Tomcat 的高可用负载均衡架构
- nginx+keepalived 高可用负载均衡
- nginx+keepalived实现高可用负载均衡
- nginx+keepalived 高可用负载均衡
- Keepalived+Nginx实现负载均衡高可用
- Nginx-keepalived高可用负载均衡
- nginx+keepalived负载均衡之高可用
- Keepalived+Nginx实现负载均衡高可用
- Keepalived+Nginx实现负载均衡高可用
- Keepalived + nginx实现高可用负载均衡
- Nginx+keepalived 实现负载均衡,高可用
- Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)
- 双机热备Nginx+Keepalived搭建HA高可用负载均衡环境
- 虚拟地址空间以及编译模式
- springmvc
- 在ROS中使用OpenCV进行简单的图象处理--原理篇
- JZOJ 1751. Span
- wait()和waitpid()的理解
- nginx+keepalived搭建高可用负载均衡(主备模式)
- Request和Reponse请求乱码问题
- [Docker]1.VirtualBox中使用Docker Machine管理主机
- Java开发中的23种设计模式详解----建造者模式
- Android中使用自定义样式和主题
- 动态规划
- Ajax调用servlet无反应?理理思路,找找错误.
- Neuroph studio 入门教程
- 一步一步实现自己的GAN