负载均衡

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

最简单的配置:

一台负载均衡服务器 两台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不通则自身有问题

最新文章

  1. SharePoint Permission Extension
  2. Select Option
  3. 189. Rotate Array
  4. 如何设置通过ip访问数据库
  5. 初涉JavaScript模式 (13) : 代码复用 【上】
  6. g++ 编译c文件
  7. ArrayList ConcurrentModificationException
  8. Awesome CLI
  9. web.xml配置说明
  10. H3C交换机限制子网之间的相互访问
  11. 转载: 一、linux cpu、内存、IO、网络的测试工具
  12. 20155335俞昆 《java程序设计》第八周总结
  13. noip模拟【ping】
  14. js 回调函数理解与应用
  15. angularJs入门篇-hello world 开头
  16. [Aaronyang] 写给自己的WPF4.5 笔记5[数据绑定三巴掌1/3]
  17. Android Studio - 如何停止logcat不断滚动信息?
  18. EUI组件之DataGroup
  19. awk编程基础
  20. Could not find gradle wrapper within android sdk

热门文章

  1. Adobe After Effects 2017-14.0安装教程
  2. nodejs 路径
  3. 简化布隆过滤器——BitMap
  4. JavaScript概念总结:作用域、闭包、对象与原型链
  5. Function.prototyoe.call.apply
  6. php实现ppt转图片,php调用com组件问题
  7. Java通过jxl解析Excel文件入库,及日期格式处理方式 (附源代码)
  8. CSS3 @keyframes 规则
  9. MySQL数据库web维护客户端管理工具
  10. 2017-06-22初识python