高可用有2中方式。

1、Nginx+keepalived 主从配置

这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠。

2、Nginx+keepalived 双主配置

这种方案,使用两个vip地址,前端使用2台机器,互为主备,同时有两台机器工作,当其中一台机器出现故障,两台机器的请求转移到一台机器负担,非常适合于当前架构环境。

1、Nginx+keepalived 主从配置

1.环境如下

lb-01:192.168.96.130  nginx+keepalived-master
lb-02:192.168.96.131  nginx+keepalived-backup
VIP:192.168.75.135
 

nginx+tomcat负载均衡集群参照 nginx+tomcat负载均衡集群参照

两台机器都要安装nginx 配置文件相同

  1. <span style="font-size:18px;">upstream myServer{
  2. server 192.168.96.130:8080;
  3. server 192.168.96.131:8080;
  4. }
  5. server {
  6. listen       80;
  7. server_name  localhost;
  8. #charset koi8-r;
  9. #access_log  logs/host.access.log  main;
  10. location / {
  11. proxy_pass  http://myServer;
  12. }
  13. </span>

nginx结合keepalived高可用

为什么使用keepalived呢?使用keepalived就用来做高可用的,提供虚拟VIP

分别在2台机子上安装keepalived

# yum install keepalived -y

查看keepalived版本

# keepalived -v
Keepalived v1.2.13 (11/20,2015)

关于2台keepalived配置文件/etc/keepalived

在130master keepalived配置文件内容如下

  1. <span style="font-size:18px;">global_defs {
  2. notification_email {
  3. acassen@firewall.loc
  4. failover@firewall.loc
  5. sysadmin@firewall.loc
  6. }
  7. notification_email_from Alexandre.Cassen@firewall.loc
  8. smtp_server 192.168.200.1
  9. smtp_connect_timeout 30
  10. router_id LVS_DEVEL
  11. }
  12. vrrp_script chk_http_port {
  13. script "/usr/local/src/check_nginx_pid.sh"
  14. interval 2      #(检测脚本执行的间隔)
  15. weight 2
  16. }
  17. vrrp_instance VI_1 {
  18. state MASTER   # 备份服务器上将 MASTER 改为 BACKUP
  19. interface eno16777736  //网卡
  20. virtual_router_id 51   # 主、备机的virtual_router_id必须相同
  21. priority 100     # 主、备机取不同的优先级,主机值较大,备份机值较小
  22. advert_int 1
  23. authentication {
  24. auth_type PASS
  25. auth_pass 1111
  26. }
  27. virtual_ipaddress {
  28. 192.168.96.138  // VRRP H虚拟地址
  29. }
  30. }
  31. </span>

在131-backup keepalived配置文件内容如下

  1. <span style="font-size:18px;">global_defs {
  2. notification_email {
  3. acassen@firewall.loc
  4. failover@firewall.loc
  5. sysadmin@firewall.loc
  6. }
  7. notification_email_from Alexandre.Cassen@firewall.loc
  8. smtp_server 192.168.200.1
  9. smtp_connect_timeout 30
  10. router_id LVS_DEVEL
  11. }
  12. vrrp_script chk_http_port {
  13. script "/usr/local/src/check_nginx_pid.sh"
  14. interval 2      #(检测脚本执行的间隔)
  15. weight 2
  16. }
  17. vrrp_instance VI_1 {
  18. state BACKUP
  19. interface eno16777736
  20. virtual_router_id 51
  21. priority 90
  22. advert_int 1
  23. authentication {
  24. auth_type PASS
  25. auth_pass 1111
  26. }
  27. virtual_ipaddress {
  28. 192.168.96.138
  29. }
  30. }</span>

然后分别启动2台keepalived服务

[root@lb-01 ~]# systemctl start keepalived.service

[root@lb-02 ~]# systemctl start keepalived.service

查看虚拟VIP

130-master机器查看

从上面可以看到虚拟VIP地址192.168.96.138

131-backup机器查看

从上面可以看到没有虚拟VIP地址

测试访问虚拟VIP

打开浏览器访问 

此时虚拟VIP可以轮询访问了

模拟故障

把130-master nginx和keepalived停止查看是否还能正常提供服务

[root@lb-01 sbin]# ./nginx -s stop
[root@lb-01 sbin]# systemctl stop keepalived.service

此时虚拟VIP已经不再master上了

客户端打开浏览器访问是否正常访问

130nginx和keepalived挂了也不影响服务

查看131backup机器VIP情况

此时虚拟VIP 已经在131机器上

那么如何实现nginx+keepalived双主模式呢?

1.其实只是需要更改下keepalived配置文件即可,配置文件实例如下

增加新的VIP192.168.96.139,192.168.75.138是130机器上主虚拟VIP,192.168.96.139是131机器上主虚拟VIP

130的keepalived配置文件内容如下

  1. ! Configuration File for keepalived
  2. global_defs {
  3. notification_email {
  4. acassen@firewall.loc
  5. failover@firewall.loc
  6. sysadmin@firewall.loc
  7. }
  8. notification_email_from Alexandre.Cassen@firewall.loc
  9. smtp_server 192.168.200.1
  10. smtp_connect_timeout 30
  11. router_id LVS_DEVEL
  12. }
  13. vrrp_script chk_http_port {
  14. script "/usr/local/src/check_nginx_pid.sh"
  15. interval 2      #(检测脚本执行的间隔)
  16. weight 2
  17. }
  18. vrrp_instance VI_1 {
  19. state MASTER
  20. interface eno16777736
  21. virtual_router_id 51
  22. priority 100
  23. advert_int 1
  24. authentication {
  25. auth_type PASS
  26. auth_pass 1111
  27. }
  28. virtual_ipaddress {
  29. 192.168.96.138
  30. }
  31. }
  32. vrrp_instance VI_2 {
  33. state BACKUP
  34. interface eno16777736
  35. virtual_router_id 52
  36. priority 90
  37. advert_int 1
  38. authentication {
  39. auth_type PASS
  40. auth_pass 1111
  41. }
  42. virtual_ipaddress {
  43. 192.168.96.139
  44. }
  45. }

131的keepalived配置文件内容如下

  1. ! Configuration File for keepalived
  2. global_defs {
  3. notification_email {
  4. acassen@firewall.loc
  5. failover@firewall.loc
  6. sysadmin@firewall.loc
  7. }
  8. notification_email_from Alexandre.Cassen@firewall.loc
  9. smtp_server 192.168.200.1
  10. smtp_connect_timeout 30
  11. router_id LVS_DEVEL
  12. }
  13. vrrp_script chk_http_port {
  14. script "/usr/local/src/check_nginx_pid.sh"
  15. interval 2      #(检测脚本执行的间隔)
  16. weight 2
  17. }
  18. vrrp_instance VI_1 {
  19. state BACKUP
  20. interface eno16777736
  21. virtual_router_id 51
  22. priority 90
  23. advert_int 1
  24. authentication {
  25. auth_type PASS
  26. auth_pass 1111
  27. }
  28. virtual_ipaddress {
  29. 192.168.96.138
  30. }
  31. }
  32. vrrp_instance VI_2 {
  33. state MASTER
  34. interface eno16777736
  35. virtual_router_id 52
  36. priority 100
  37. advert_int 1
  38. authentication {
  39. auth_type PASS
  40. auth_pass 1111
  41. }
  42. virtual_ipaddress {
  43. 192.168.96.139
  44. }
  45. }

分别启动2台lb上nginx和keepalived服务

[root@lb-01 sbin]# ./nginx
[root@lb-01 sbin]# systemctl start keepalived.service

130查看虚拟ip

131查看虚拟ip

客户端测试访问虚拟VIP

访问虚拟VIP:192.168.96.138结果如下

访问虚拟VIP:192.168.96.139结果如下

模拟故障

把130服务停止

查看130虚拟VIP是否存在结果如下

没了

测试访问虚拟VIP**

从上面结果可以看到,即使130机器发生了故障也不影响使用,这样也利用131资源了

此时查看一下131虚拟ip结果情况如下

注:此时虚拟VIP地址都已经在lb-02机器上了

 

nginx+keepalived高可用及双主模式的更多相关文章

  1. nginx+keepalived高可用及双主模式【h】

    高可用有2中方式. 1.Nginx+keepalived 主从配置 这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候, ...

  2. Nginx知多少系列之(十四)Linux下.NET Core项目Nginx+Keepalived高可用(主从模式)

    目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.负载均衡策略 8.加权轮询(round rob ...

  3. Nginx+keepalived(高可用双主模式)

    Nginx+keepalived(高可用双主模式) tips:前面已经介绍了nginx+keepalived高可用主从模式,今天补充下高可用的双主模式,均可以作为主机使用 server1:192.16 ...

  4. Nginx+keepalived(高可用主备模式)

    Nginx+keepalived(高可用主备模式) 环境:centos6.7 准备:两台服务器(虚拟机).两台应用(Tomcat).Nginx.keepalived server1:192.168.2 ...

  5. Centos7+nginx+keepalived集群及双主架构案例

    目录简介 一.简介 二.部署nginx+keepalived 集群 三.部署nginx+keepalived双主架构 四.高可用之调用辅助脚本进行资源监控,并根据监控的结果状态实现动态调整 一.简介 ...

  6. Nginx入门篇(七)之Nginx+keepalived高可用集群

    一.keepalived介绍 keepalived软件最开始是转为负载均衡软件LVS而设计,用来管理和监控LVS集群系统中各个服务节点的状态,后来又加入了可实现高可用的VRRP功能.所以Keepali ...

  7. Nginx+Keepalived高可用集群应用实践

    Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令 ...

  8. 使用Ansible实现nginx+keepalived高可用负载均衡自动化部署

    本篇文章记录通过Ansible自动化部署nginx的负载均衡高可用,前端代理使用nginx+keepalived,端web server使用3台nginx用于负载效果的体现,结构图如下: 部署前准备工 ...

  9. nginx+keepalived 高可用方案

    nginx+keepalived 高可用方案 准备工作 192.168.157.11 192.168.157.12 安装nginx 跟新yum源文件 rpm -ivh http://nginx.org ...

随机推荐

  1. [PHP]算法-旋转数组的最小值的PHP实现

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组 ...

  2. 月薪15k的测试员需要学习什么技术?

    想了很久,决定还是要写一篇这样的文章出来,月薪15k的测试员需要学习什么技术?我觉得测试想要月薪15k并不难,只要做到我说的这几点肯定是可以的! 克服懒惰 我觉得,越是聪明的人越是觉得自己“懒惰”.大 ...

  3. Spring,SpringMvc配置常见的坑,注解的使用注意事项,applicationContext.xml和spring.mvc.xml配置注意事项,spring中的事务失效,事务不回滚原因

    1.Spring中的applicationContext.xml配置错误导致的异常 异常信息: org.apache.ibatis.binding.BindingException: Invalid ...

  4. JavaScript是如何工作的:Service Worker的生命周期及使用场景

    摘要: 理解Service Worker. 原文:JavaScript 是如何工作的:Service Worker 的生命周期及使用场景 作者:前端小智 Fundebug经授权转载,版权归原作者所有. ...

  5. js 返回小数点后几位

    function fmoney(s, n) //s:传入的float数字 ,n:希望返回小数点几位 { n = n > 0 && n <= 20 ? n : 2; s = ...

  6. python实现简单的计算器功能

    如想实现一个计算器的功能,输入格式为字符串,不能运用python里面的内置方法,出去简单的加减乘除,设计一个相对高级的计算器: a = '1 - 2 * ( ( 6 0 -3 0 +(-40/5) * ...

  7. 关于Object数组强转成Integer数组的问题:Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;

    一.当把Object数组,强转的具体的Integer数组时,会报错. 代码如下: //数组强转报错演示 Object[] numbers = {1,2,3}; Integer[] ints = (In ...

  8. 改变RadioButton的文字位置以及距离

    在默认情况下,RadioButton的 文字位置和文字的距离是不变的,为了可以改变它,我们可以用以下的方法. 1.改变文字的位置 android:button="@null" // ...

  9. Android为TV端助力 handler ,message消息发送方式

    1.Message msg =  Message.obtain(mainHandler) msg.obj=obj;//添加你需要附加上去的内容 msg.what = what;//what消息处理的类 ...

  10. 杨学明老师推出全新课程--《敏捷开发&IPD和敏捷开发结合的实践》

    课时:13小时(2天) 敏捷开发&IPD和敏捷开发结合的实践 讲  师:杨学明 [课程背景] 集成产品开发(IPD).集成能力成熟度模型(CMMI).敏捷开发(Agile Developmen ...