博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx+keepalived高可用及双主模式
阅读量:7083 次
发布时间:2019-06-28

本文共 5553 字,大约阅读时间需要 18 分钟。

原文地址:http://blog.csdn.net/lexang1/article/details/52386909

 

高可用有2中方式。

1、Nginx+keepalived 主从配置

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

2、Nginx+keepalived 双主配置

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

 

1、Nginx+keepalived 主从配置

1.环境如下

lb-01:192.168.96.130  nginx+keepalived-masterlb-02:192.168.96.131  nginx+keepalived-backupVIP:192.168.75.135

 

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

upstream myServer{            server 192.168.96.130:8080;            server 192.168.96.131:8080;          }      server {            listen       80;            server_name  localhost;                #charset koi8-r;                #access_log  logs/host.access.log  main;                location / {               proxy_pass  http://myServer;              }      

nginx结合keepalived高可用

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

分别在2台机子上安装keepalived

# yum install keepalived -y

查看keepalived版本

keepalived -vKeepalived v1.2.13 (11/20,2015)

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

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

global_defs {     notification_email {       acassen@firewall.loc       failover@firewall.loc       sysadmin@firewall.loc     }     notification_email_from Alexandre.Cassen@firewall.loc     smtp_server 192.168.200.1     smtp_connect_timeout 30     router_id LVS_DEVEL  }    vrrp_script chk_http_port {       script "/usr/local/src/check_nginx_pid.sh"       interval 2      #(检测脚本执行的间隔)       weight 2    }    vrrp_instance VI_1 {      state MASTER   # 备份服务器上将 MASTER 改为 BACKUP        interface eno16777736  //网卡      virtual_router_id 51   # 主、备机的virtual_router_id必须相同      priority 100     # 主、备机取不同的优先级,主机值较大,备份机值较小      advert_int 1      authentication {          auth_type PASS          auth_pass 1111      }      virtual_ipaddress {          192.168.96.138  // VRRP H虚拟地址      }  }  

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

global_defs {     notification_email {       acassen@firewall.loc       failover@firewall.loc       sysadmin@firewall.loc     }     notification_email_from Alexandre.Cassen@firewall.loc     smtp_server 192.168.200.1     smtp_connect_timeout 30     router_id LVS_DEVEL  }    vrrp_script chk_http_port {       script "/usr/local/src/check_nginx_pid.sh"       interval 2      #(检测脚本执行的间隔)       weight 2    }    vrrp_instance VI_1 {      state BACKUP      interface eno16777736      virtual_router_id 51      priority 90      advert_int 1      authentication {          auth_type PASS          auth_pass 1111      }      virtual_ipaddress {          192.168.96.138      }  }

然后分别启动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配置文件内容如下

 

! Configuration File for keepalived    global_defs {     notification_email {       acassen@firewall.loc       failover@firewall.loc       sysadmin@firewall.loc     }     notification_email_from Alexandre.Cassen@firewall.loc     smtp_server 192.168.200.1     smtp_connect_timeout 30     router_id LVS_DEVEL  }    vrrp_script chk_http_port {       script "/usr/local/src/check_nginx_pid.sh"       interval 2      #(检测脚本执行的间隔)       weight 2    }    vrrp_instance VI_1 {      state MASTER      interface eno16777736      virtual_router_id 51      priority 100      advert_int 1      authentication {          auth_type PASS          auth_pass 1111      }      virtual_ipaddress {          192.168.96.138      }  }    vrrp_instance VI_2 {      state BACKUP      interface eno16777736      virtual_router_id 52      priority 90      advert_int 1      authentication {          auth_type PASS          auth_pass 1111      }      virtual_ipaddress {          192.168.96.139      }  }

131的keepalived配置文件内容如下

! Configuration File for keepalived    global_defs {     notification_email {       acassen@firewall.loc       failover@firewall.loc       sysadmin@firewall.loc     }     notification_email_from Alexandre.Cassen@firewall.loc     smtp_server 192.168.200.1     smtp_connect_timeout 30     router_id LVS_DEVEL  }    vrrp_script chk_http_port {       script "/usr/local/src/check_nginx_pid.sh"       interval 2      #(检测脚本执行的间隔)       weight 2    }    vrrp_instance VI_1 {      state BACKUP      interface eno16777736      virtual_router_id 51      priority 90      advert_int 1      authentication {          auth_type PASS          auth_pass 1111      }      virtual_ipaddress {          192.168.96.138      }  }      vrrp_instance VI_2 {      state MASTER      interface eno16777736      virtual_router_id 52      priority 100      advert_int 1      authentication {          auth_type PASS          auth_pass 1111      }      virtual_ipaddress {          192.168.96.139      }  }

分别启动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机器上了.

 

转载于:https://www.cnblogs.com/dyh004/p/8407025.html

你可能感兴趣的文章
mysql FullText全文索引的问题
查看>>
空格&nbsp在不同浏览器中显示距离不一致问题解决方法
查看>>
Dynamic CRM 2013学习笔记(八)过滤查找控件 (类似省市联动)
查看>>
iOS执行时与method swizzling
查看>>
SQL点滴21—几个有点偏的语句
查看>>
Android各种效果集合
查看>>
【转】Geary's C
查看>>
Linux中查看socket状态(转)
查看>>
public-private-protected-默认缺省 的区别
查看>>
React Native上手
查看>>
0919 - iPaste 上架 App Store
查看>>
iKcamp&掘金Podcast直播回顾(12月2号和9号的两场)
查看>>
Java简短知识点
查看>>
Hibernate第八篇【懒加载】
查看>>
[面试∙网络] TCP/IP(四):TCP 与 UDP 协议简介
查看>>
浅谈 Objective-C Associated Objects
查看>>
编程或者软件开发到底算不算知识?
查看>>
iOS UI绘制原理
查看>>
JavaScript 二进制的 AST
查看>>
自定义控件(三) 源码分析measure流程
查看>>