实验环境:

RS1:rip(172.16.125.7),安装httpd软件包;

RS2:rip(172.16.125.8),安装httpd软件包;

director1(7-1.lcs.com):vip(172.16.125.100),dip(172.16.125.5),安装nginx、keepalived软件包。

director2(7-2.lcs.com):vip(172.16.125.110),dip(172.16.125.6),安装nginx、keepalived软件包。

首先关闭所有节点上iptables和selinux,同时进行时间同步。

使用双主模型实现nginx的高可用:

(1)在两台keepalived高可用主机上安装keepalived和nginx软件包,并提供配置文件。

a.首先使用时间同步,保证节点上的时间是同步的。

b.首先使用nginx反向代理实现后台RS上的web服务的负载均衡,在nginx的主配置文件(/etc/nginx/nginx.conf)中,进行修改。

在http段中添加upstream,将后端两台RS加入到该upstream中。

upstream myblancer {server 172.16.125.7:80;server 172.16.125.8:80;}

在server段中location /{}中加入代理,实现负载均衡调度。

location / {proxy_pass http://myblancer;}

c.进行检测,是否实现了后端RS的轮询调度。

(2)上述说明已经通过nginx的反向代理实现了http服务的负载均衡。在此处就可以开始配置keepalived的主配置文件,实现对nginx的高可用。详细配置文件如下:

keepalived的配置文件1:

global_defs {notification_email {root@localhostfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL
}
vrrp_script chk_nginx { script "killall -0 nginx &> /dev/null"interval 1weight -20
}vrrp_instance VI_1 {state MASTERinterface eno16777736virtual_router_id 100priority 100advert_int 1authentication {auth_type PASSauth_pass 100}virtual_ipaddress {172.16.125.100/16 dev eno16777736 label eno16777736:0}track_script {chk_nginx  }
}vrrp_instance VI_2 {state BACKUPinterface eno16777736virtual_router_id 110priority 90advert_int 1authentication {auth_type PASSauth_pass 110}virtual_ipaddress {172.16.125.110/16 dev eno16777736 label eno16777736:1}track_script {chk_nginx}
}

keepalived配置文件2:

global_defs {notification_email {root@localhostfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL
}
vrrp_script chk_nginx {script "killall -0 nginx &> /dev/null"interval 1weight -20
}
vrrp_instance VI_1 {state BACKUPinterface eno16777736virtual_router_id 100priority 90advert_int 1authentication {auth_type PASSauth_pass 100}virtual_ipaddress {172.16.125.100/16 dev eno16777736 label eno16777736:0}track_script {chk_nginx}
}vrrp_instance VI_2 {state MASTERinterface eno16777736virtual_router_id 110priority 100advert_int 1authentication {auth_type PASSauth_pass 110}virtual_ipaddress {172.16.125.110/16 dev eno16777736 label eno16777736:1}track_script {chk_nginx}
}

使用如下这个脚本检测nginx服务的状态,如果nginx服务发生了问题,那么在该服务器上的vip会自动流动到另一台高可用服务器上。使用下边这个脚本要保证高可用服务器上有killall命令,该命令是由psmisc软件包提供

vrrp_script chk_nginx {script "killall -0 nginx &> /dev/null"interval 1weight -20
}

通过这一步的keepalived的配置,keepalived服务已经配置完成,那么在这两台director上启动keepalived和nginx服务。

a.查看两台director上vip是否已经添加成功。

b.分别访问vip(172.16.125.100)和vip(172.16.125.110)。

c.在director1上关闭nginx服务,检测到vip已经消失,转移到director2上。

转载于:https://blog.51cto.com/angrybird/1706598

keepalived实现nginx的高可用(双主模型)相关推荐

  1. 基于heartbeat v1配置mysql和httpd的高可用双主模型

    一.配置高可用集群的前提:(以两节点的heartbeat为例) ⑴时间必须保持同步 ⑵节点之间必须用名称互相通信 建议使用/etc/hosts,而不要用DNS 集群中使用的主机名为`uname -n` ...

  2. 主nginx linux,Linux-实现双主模型的nginx的高可用

    1 [root@234c17 ~]# for i in {1..4};do curl www.a.com;curl www.b.com;sleep 1;done 2 234.57 3 234.77 4 ...

  3. keepalived(haproxy高可用、haproxy高可用双主、lvs+keepalived)

    LAN客户端判定哪个路由器应该为其到达目标主机的下一跳网关的方式有动态及静态决策两种方式,其中,常见的动态路由发现方式有如下几种: 1.Proxy ARP -- 客户端使用ARP协议获取其想要到达的目 ...

  4. keepalived实现nginx的高可用

    前言: 优化Nginx_proxy代理可能出现单点故障的情况,通过keepalived得方式来完成nginx_proxy服务器之间的高可用,因为keepalived的工作机制是通过心跳线来检测服务器之 ...

  5. nginx实现请求的负载均衡 + keepalived实现nginx的高可用

    前言 使用集群是网站解决高并发.海量数据问题的常用手段.当一台服务器的处理能力.存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求.这种 ...

  6. mysql双主故障自动切换_MySQL主库高可用 -- 双主单活故障自动切换方案

    前言:(PS:前言是后来修改本文时加的)对于这篇文章,有博友提出了一些疑问和见解, 有了博友的关注,也促使我想把这套东西做的更实用.更安全.后来又经过思考,对脚本中一些条件和行为做了些改变.经过几次修 ...

  7. Nginx实现高可用的工作原理

    Nginx变成了程序的入口,必须先访问Nginx. 所以要保证Nginx的高可用: 通过keepalived保证Nginx的高可用: 检查服务器的健康状态 keepalived的工作原理 不停地询问服 ...

  8. 构建高可用LVS + keepalived+httpd和双主模型的keepalived方案

    ↑构建高可用LVS + keepalived+httpd和双主模型的keepalived方案↑ 标签:web服务器 拓扑图 模型 检测 软件 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始 ...

  9. keepalived + haproxy 实现web 双主模型的高可用负载均衡--转

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xz159065974.blog.51cto.com/8618592/140581 ...

最新文章

  1. neo4j设置节点或者边的显示,包括颜色、属性、大小
  2. 360竞价开户推广,让营销更聪明!
  3. 推荐 干掉垃圾流氓插件得批处理文件和注册表文件
  4. lisp 车位块自动编号_CAD如何生成自动编号
  5. [百度百科]英语状语
  6. 苹果公司最新系统内嵌致黑客的打油诗
  7. 决策树(四):使用决策树预测隐形眼镜类型
  8. SpringCloud核心组件概述(五大神兽)
  9. html调用一言api,纯 JavaScript 实现网站一言功能
  10. Handler原理(自己实现Handler)
  11. css input 如何去掉点击后出现的边框
  12. 智慧公寓管理系统解决方案
  13. MDIO总线+88E1111调试笔记
  14. 8086CPU相关汇编语言的简单概述
  15. 3.Python-复杂数据类型之列表、元组
  16. [网络安全自学篇] 七十三.WannaCry勒索病毒复现及分析(四)蠕虫传播机制全网源码详细解读
  17. Linux Shell 批量运行语句
  18. 2022年中国31省份GDP增长目标及GDP目标“稳增长”路线分析[图]
  19. 学会python之后可以做哪些兼职?
  20. BAT54C做电源保护使用电路及理解

热门文章

  1. 常见的CSS和HTML面试题
  2. 下午回来才后知百密于一疏忽
  3. 李安的电影梦by李安
  4. java面试题-----------静态代码块和代码块和构造方法执行顺序
  5. 数据库技术基础:数据库管理系统的功能介绍笔记
  6. 程序人生:什么是“对用户友好”
  7. linux rsync 带密码,Linux配置ssh无密码验证,rsync
  8. opensll、libcurl库安装的使用,树莓派CSI摄像头的配置,树莓派调用智能API平台实现人脸识别、树莓派配置中文环境
  9. 笔记本软件页面分辨率低_笔记本最容易忽略的屏幕 有几个参数一定要知道
  10. python2.面向对象.学生管理