高可用有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机器上了

keepalived主从及双主配置的更多相关文章

  1. MySQL Replication, 主从和双主配置

    MySQL Replication, 主从和双主配置 MySQL的Replication是一种多个MySQL的数据库做主从同步的方案,特点是异步,广泛用在各种对MySQL有更高性能,更高可靠性要求的场 ...

  2. mysql主从之双主配置

    mysql双主配置 mysql双主其实就是互相同步,互为主从 任意一台都能够执行插入动作 生产环境用得非常少,因为还是担心数据一致的问题 生产环境一般来说主从已经够用 172.19.132.121的配 ...

  3. MySQL复制:主从和双主配置

    对比Replication和Cluster 应用层中间件的负载均衡 异步的复制过程 MySQL官方使用Replication场景

  4. ssdb主从及双主模型配置和简单管理

    ssdb主从及双主模型配置和简单管理 levelDB是一个key->value 的数据存储库,其只能在本地保存数据,支持持久化,并且支持保存非常大的数据,单机redis在保存较大数据的时候数十G ...

  5. Keepalived LVS-DR单网络双活双主配置模式

    Keepalived LVS-DR单网络双活双主配置模式 Linux就该这么学 今天 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.LV ...

  6. keepalived+mysql实现双主高可用

    环境: DB1:centos6.8.mysql5.5.192.168.2.204  hostname:bogon DB2:centos6.8.mysql5.5.192.168.2.205  hostn ...

  7. nginx+keepalived实现nginx双主高可用的负载均衡

    http://kling.blog.51cto.com/3320545/1253474 一.前言: 在互联网上面,网站为用户提供原始的内容访问,同时为用户提供交互操作.提供稳定可靠的服务,可以给用户带 ...

  8. MYSQL 双主配置

    MYSQL1. 版本号:5.7.243. 部署方式:双主部署,两台机器即是主又是备 ,双向拷贝,可以同时写入.4. 安装部署路径: a) /home/softb) 配置路径 /etc/my.cnfc) ...

  9. 通过keepalived搭建MySQL双主模式的高可用集群系统

    1. 配置MySQL双主模式 1.修改my.cnf配置文件 默认情况下,MySQL的配置文件是/etc/my.cnf,在配置文件的[mysqld]段添加如下内容: server-id=1 log-bi ...

随机推荐

  1. JS模块化编程(四)--require应用

    获取&使用require.js 下载最新版的Require.JS.下载之后,把它放在项目的脚本文件夹下,比如 js 文件夹下,项目结构看上去应该是: 要充分使用Require.JS,将html ...

  2. 【Python】web.py-简单轻量级网页框架python

    简单轻量级网页框架python web.py的安装 python 3.x中安装web.py 最近决定从python2.7转移到3.x上工作. 使用数据库的时候,依然选用了之前比较感兴趣的web.py ...

  3. [wx]自然数学规律

    有趣的数学规律 椭圆 双曲线 抛物线都叫圆锥曲线 它们跟圆锥有着怎样的关系? 他们都是圆锥与平面在不同姿势下交配的产物. 参考 椭圆 抛物线 小结 e: 离线率 P: 任意一点 F: 焦点 准线: 一 ...

  4. Ubuntu16.04 安装 “宋体,微软雅黑,Consolas雅黑混合版编程字体” 等 Windows 7 下的字体

    Windows平台下,“宋体”.“微软雅黑”.“Courier New(编程字体)”用的比较多,看的也习惯了.那如何在 Ubuntu下也安装这些字体呢? 操作步骤如下: 第一步:从 Windows 7 ...

  5. 支持向量机(SVM)、支持向量回归(SVR)

    1.支持向量机( SVM )是一种比较好的实现了结构风险最小化思想的方法.它的机器学习策略是结构风险最小化原则 为了最小化期望风险,应同时最小化经验风险和置信范围) 支持向量机方法的基本思想: ( 1 ...

  6. SpringMyBatisDay03

    1.Spring MVC 1)什么是Spring MVC Spring MVC是Spring框架中一个模块,实现MVC结构,便于简单,快速开发MVC结构的WEB应用,Spring MVC提供的API封 ...

  7. matlab 怎么建立结构体数组?

    https://zhidao.baidu.com/question/537198107.html 怎么定义一个结构体数组,使数组的每个元素是一个结构体变量.像这样:a=(1,2)a(1)=struct ...

  8. SQL Server 公用表表达式(CTE)实现递归的方法

    公用表表达式简介: 公用表表达式 (CTE) 可以认为是在单个 SELECT.INSERT.UPDATE.DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集.CTE 与派生表类 ...

  9. Perl实战(一)

    在Perl中,我们可以通过uc,lc,\U,\L来修改变量的值.其中uc,\U可以将变量中的字母全部转换为大写. lc,\L可以将变量中的字母全部转换为小写. $big = "\U$var& ...

  10. fafu 1411

    想了好久都没想到怎么去判断当分类dp的时候大于或者等于要求的 值时应该怎么半 后来经过停了 qlx的想法 然后就 敲了出来 这题说的是 一个整数 分解成几个素数的和  按这个数的含有的最大素数 进行排 ...