负载均衡

负载均衡的核心思想就是:请求分担

最简单的配置:

一台负载均衡服务器 两台webserver服务器

两台webserver服务器需要配置相同的服务器环境,设置相同的域名指向

负载均衡服务器需要修改nginx.conf配置文件

修改内容如下:

upstream www_server_pools{
    server 10.0.169.158 weight=2;#webserver服务器IP地址,权重
    server 10.0.169.160 weight=1;#webserver服务器IP地址,权重
    #ip_hash;每个服务器过来 固定访问一个服务器  可以解决session问题
    #fair;
    #hash $request_url
    #hash_method crc32; #每个请求按照逐一的书信不同的后端服务器  如果服务器down掉自动剔除
}
server{
  listen  80;
  server_name  www.91porn.com  91porn.com;
  location / {
    proxy_pass http://www_server_pools;#域名请求过来  自动查询连接池
    proxy_set_header Host $host; #把主机头发给轮询的主机
    proxy_set_header X-forward-For $remote_addr; #获取真实的IP地址
  }
}
 
server 主机端口 作用
weight 权重
max_fails=1 最大错误的尝试次数
fail_timeout=10s 错误请求超时时间
backup 找备用服务器

高可用负载均衡服务器配置方法:

配置两台负载均衡服务器

每台服务器上需要安装keepalived

修改keepalived配置文件  vim /etc/keepalived/keepalived.conf

 
#第一步删除第32行后的所有行(virtual_server 192.168.200.100 443)
#主负载服务器配置文件修改如下
global_defs {
  notification_email {
    17854284556@163.com #接受包含错误信息的邮件的邮箱
  }
  notification_email_from master@liangkun.com  #发送错误信息的邮件服务器
  smtp-server 10.0.169.1 #发送邮件服务器的IP
  smtp_connect_timeout 30  #连接超时时间
  router_id LVS_1 #表示服务器编号  这里不能一样
}
vrrp_instace VI_1 {  #VI_1  这里要相同  可以自定义
  state MASTER  #MASTER 主负载
  interface eth2  # 这里要看好你的网卡  
  virtual_router_id 160 #ip地址的最后一位  两台主机之间要一样
  priority 200 #权重
  advert_int 1 # 通信间隔时间  秒为单位
  autentication {
    auth_type PASS #认证
    auth_pass 1234 #密码
  }
  virtual_ipaddress {
    10.0.169.253 #阿里云会提供两个地址  一个内网 一个外网 ip 这时候 要写内网的IP
  }
}
#辅负载服务器配置文件修改如下
global_defs {
  notification_email {
    17854284556@163.com #接受包含错误信息的邮件的邮箱
  }
  notification_email_from master@liangkun.com  #发送错误信息的邮件服务器
  smtp-server 10.0.169.1 #发送邮件服务器的IP
  smtp_connect_timeout 30  #连接超时时间
  router_id LVS_2 #表示服务器编号  这里不能一样
}
vrrp_instace VI_1 {  #VI_1  这里要相同  可以自定义
  state BACKUIP  #MASTER 主负载  BACKUP 表示辅负载
  interface eth3  # 这里要看好你的网卡  本地服务器的网卡
  virtual_router_id 158 #ip地址的最后一位  两台主机之间要一样
  priority 150 #权重
  advert_int 1 # 通信间隔时间  秒为单位
  autentication {
    auth_type PASS #认证
    auth_pass 1234 #密码
  }
  virtual_ipaddress {
    10.0.169.253 #阿里云会提供两个地址  一个内网 一个外网 ip 这时候 要写内网的IP
  }
}
最后启动keepalived
service keepalived restart
ip addr
chkconfig --level keepalived 2345 on
 

裂脑问题

两台高可用的负载均衡服务器一个主 一个辅 两个服务器之间 检测不到对方的心跳 但是两台服务器都可以独立的正常工作 这样就可能出现一个问题  一个IP在两台服务器上同时存在 最严重的是两台主机占用一个IP地址 用户写入数据 可能会同时写入两个  容易导致两个服务器数据不同步  数据丢失  这个问题就叫做裂脑

一般出现的裂脑的原因:

  1. 两个服务器之间 心跳线路故障  导致无法通信

  2. 网卡驱动问题 以及IP配置问题

  3. 仲裁服务器  出现故障

  4. iptables  selinux 阻止了

  5. 心跳网卡的地址配置 错误

  6. virtual_ipaddress 配置不一致 导致 裂脑问题

解决方案:

  1. 同时使用串行线路和以太网链接 一条线路坏了 另一条启用  (串行线路距离较短)

  2. 如果检测到裂脑 强行关闭一个心跳节点

  3. 做好监控报警

  4. 引入第三方仲裁 也就是说 每个节点 必须判定自身的状态 如果自身能够ping同网关 则对方有问题 如果ping不通则自身有问题

web开发之负载均衡的简单架构的更多相关文章

  1. 基于node开发的web应用,负载均衡的简单实践

    集群(cluster)是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器. 负载均衡(Load Balance ...

  2. 浅谈web应用的负载均衡、集群、高可用(HA)解决方案(转)

    1.熟悉几个组件 1.1.apache     —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安 ...

  3. 实现基于Haproxy+Keepalived负载均衡高可用架构

    1.项目介绍: 上上期我们实现了keepalived主从高可用集群网站架构,随着公司业务的发展,公司负载均衡服务已经实现四层负载均衡,但业务的复杂程度提升,公司要求把mobile手机站点作为单独的服务 ...

  4. Azure 提供负载均衡(一)Azure Traffic Manager 为我们的Web项目提供负载均衡

    一,引言 上一篇讲到我们将自己的Net Core Web 项目部署到 Azure 的 Web App 的一项 pass 服务,假如随着项目的日益增长的访问量,之前部署到单节点的应用可能无法保证其稳定性 ...

  5. Azure Load Balancer(一) 为我们的Web项目提供负载均衡

    一,引言 上节,我们讲到使用 Azure Traffic Manager 为我们的 Demo 项目提供负载均衡,以及流量转发的功能.但是Azure 提供类似的功能的服务远远不止这一个,今天我们就来讲一 ...

  6. Azure Application Gateway(一)对后端 Web App 进行负载均衡

    一,引言 今天,我们学习一个新的知识点-----Azure Application Gateway,通过Azure 应用程序网关为我么后端的服务提供负载均衡的功能.我们再文章头中大概先了解一下什么是应 ...

  7. Nginx负载均衡配置简单配置方法

    http://www.jb51.net/article/121235.htm Nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至不同的Web服务器.下面通过 ...

  8. 高并发大流量专题---11、Web服务器的负载均衡

    高并发大流量专题---11.Web服务器的负载均衡 一.总结 一句话总结: 推荐使用nginx七层(应用层)负载均衡的实现:配置那是相当的简单 http{ upstream cluster{ serv ...

  9. LVS之2---基于LVS负载均衡集群架构

    LVS之2---基于LVS负载均衡集群架构实现 目录 LVS之2---基于LVS负载均衡集群架构实现 ipvsadm software package Options 常用命令 保存及重载规则 内存映 ...

随机推荐

  1. 【小练习04】HTML+CSS--医药健康小页面

    要求实现如下效果图: 代码演示 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  2. Python使用PyMysql操作数据库

    安装 pip install -U pymysql 连接数据库 连接数据库有两种不同的格式 直接使用参数 代码如下 import pymysql.cursors connection = pymysq ...

  3. html中p标签行间距的问题

    使用CSS行高样式line-height可以设置调整p行间距,但是同时会影响每行文字间的上下间距,所以使用line-height虽然可以用来设置html p 行距离间隔,但是不是很实用,一般line- ...

  4. 实现一个javascript手势库 -- base-gesture.js

    现在移动端这么普及呢,我们在手机上可以操作更多了.对于网页来说实现一些丰富的操作感觉也是非常有必要的,对吧(如果你仅仅需要click,,那就当我没说咯...)~~比如实现上下,左右滑动,点击之类的,加 ...

  5. iOS10 相关的隐私设置,

    最近下载了几个demo,总是一运行就崩,看了下崩溃日志,有几个是因为没在plist里设置因此权限,而现在iOS 10 开始对隐私权限更加严格, 如需使用隐私权限需要在工程的info.plist文件中声 ...

  6. mysql数据库和mongodb数据库的相关操作以及两个数据库的区别

    在docs命令中执行数据操作 MySQL数据库 先启动MySQL服务器  net start mysql 进入MySQL服务器MySQL -uroot -p(这里写你的数据库密码) (-P是从哪个端口 ...

  7. Java NIO 核心组件学习笔记

    背景知识 同步.异步.阻塞.非阻塞 首先,这几个概念非常容易搞混淆,但NIO中又有涉及,所以总结一下[1]. 同步:API调用返回时调用者就知道操作的结果如何了(实际读取/写入了多少字节). 异步:相 ...

  8. [leetcode-611-Valid Triangle Number]

    Given an array consists of non-negative integers, your task is to count the number of triplets chose ...

  9. 【知识整理】这可能是最好的RxJava 2.x 入门教程(五)

    这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(一) 这可能是最好的RxJava 2.x 入门教程(二) 这可能是最好的RxJava 2. ...

  10. Java 获取字符串Hash值

    Java 生成字符串的Hash值: /** * A hashing method that changes a string (like a URL) into a hash suitable for ...