设为首页 收藏本站
查看: 1067|回复: 0

[经验分享] LVS+Keepalived 实现 负载平衡,高可用性模拟实验(1)

[复制链接]

尚未签到

发表于 2019-1-1 07:05:29 | 显示全部楼层 |阅读模式
  LVS
  Linux vritual server是针对linux内核开发的一个负载均衡项目,lvs实际上是一个基于IP 的一个虚拟化应用。LVS想已成为Linux系统的一部分。默认编译为IP_VS模块,必要时可以调用。
  KeepAlived
  Keepalived是针对LVS的一款强大的辅助工具,主要用来提供故障切换和健检查功能,如判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。在非LVS群集环境中使用时Keepalived也可以作为热备软件使用。
  Keepalived采用VRRP(virtual router  redundancy  protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案-----由多台路由器组成一个热备组。通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主服务器提供服务,其他服务器处于冗余状态,若当前在线的服务器失败,其他服务器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。
  热备组内的每台服务器都可以成为主服务器,虚拟IP地址(VIP)可以在热备组内的服务器之间进行转移,所以也称为漂移IP地址,使用Keepalived时,漂移地址的实现不需要手动建立虚拟接口配置文件(如eth0:0),而是由Keepalived根据配置文件自动管理。
  下面是我实验的两个案例: (LVS-NAT+HA)和 (LVS-DR+HA)
  LVS-NAT+HA
  实验拓扑如下:(全是RHEL6 X32模拟)

  地址安排:
  主调度器: 外网ip 12.12.12.1 /24
  内网ip 192.168.1.1/24
  辅助调度器: 外网 ip 12.12.12.2/24
  内网ip 192.168.1.2/24
  VIP虚拟ip 12.12.12.10/24 (web服务) 192.168.1.254 (内网的网关)
  Web节点 1 : 192.168.1.3/24 gw 192.168.1.254
  Web节点2 :19.168.1.4/24 gw 192.168.1.254
  分析:
  ① 要实现LVS和keepalived实现的HA(高可用性)结合,需要安软ipvsadm 这个工具包来实现负载平衡以及安装keepalived实现高可用性,故障切换。
  ② 因为是LVS是NAT的工作模式,要解决防火墙以及路由转发的问题。
  ③ keepalived 是基于VRRP协议来工作的,所以要允许他们的通信。
  ④ keepalived 主配置文件的问题,文件中确定谁是主,谁是辅,以及VIP ,RIP。
  ⑤ LVS和Keepalived都是虚拟服务的一部分,要加载IP_VS模块。
  ⑥ web节点需链接vip网关,并提供web服务。
  步骤:
  先来解决第一步
  rpm 安装 ipvsadm-1.25-9.el6.i686.rpm

  源码安装keepalived 安装之前 必须先安装内核开发包kernel-devel以及openssl-devel、popt-devel等支持库 没有要安装

  进入解压目录
  ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-71.el6.i686/ 配置 建议安装到/ 目录下 不然不会自动添加到系统服务。

  make && make  安装
  安装后会生成以下的目录和文件
  Keepalived.conf 是主要配置文件

  并且配置 服务开机自动启动 chkconfig keepalived on

  配置防火墙 允许 80端口 和 目标地址是224.0.0.18的包 (224.0.0.18)是VRRP的通信地址  配置SNAT策略和允许源地址是80的转发包

  修改/etc/sysctl.conf 配置文件 实现转发功能
  把“net.ipv4.ip_forward = 0 ”的值给成1  启用转发

  sysctl -p 生效

  配置keepalived的主配置文件
  主配置文件由三部分组成, 注释文字以”!”符号开头。
  使用global_defs {……}区段指定全局参数。
  使用vrrp_instance  实例名称{……}区段指定VRRP热备参数。
  使用vritual_server  ip地址 {……}指定虚拟服务。
  主配置调度器的配置
  ! 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_1 #本服务器的ID号为 LVS_1 必须是唯一的
  }
  !###############定义内部网关实例################################
  vrrp_instance VI_1 { #开始定义VRRP实例 名称为VI_1 一组服务器的名称要一致
  stateMASTER #热备状态,MASTER表示主服务器;SLAVE表示备用服务器;当 有多台备用的服务器,热备状态改为 BACKUP,此状态是由 priority  的值来决定的,当前priority 的值小于备机的值,那么将会失MASTER  状态
  interface eth0 #检测承载VIP流量的网卡
  virtual_router_id 51   #虚拟路由器的ID号。主、辅机的 virtual_router_id 必须相同
  priority 100 #主机的优先级,数值越大优先能越高
  advert_int 1 #主备之间的通告间隔秒数(心跳频率)
  authentication { #认证信息,每个热备组保持一致
  auth_type PASS #认证类型,主备切换时的验证
  auth_pass 1111  #密码
  }
  virtual_ipaddress { #指定虚拟地址(VIP),可以有多个
  192.168.1.254 #HA 虚拟 ip,可加多个
  }
  }
  !#######################定义外网web服务实例#############################
  vrrp_instance VI_11 {
  state MASTER
  interface eth1
  virtual_router_id 51
  priority 100
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 1111
  }
  virtual_ipaddress {
  12.12.12.10
  }
  }
  !###############################定义网关虚拟地址######################
  virtual_server 192.168.1.254 { #虚拟服务器地址(VIP)
  delay_loop 6 #健康检查的间隔时间(秒),每隔 6 秒查询 realserver状态
  lb_algo rr #lvs 调度算法,这里使用轮询
  lb_kind NAT #lvs 负载均衡机制,这里使用NAT
  nat_mask 255.255.255.0 #虚拟ip的子网掩码
  !    persistence_timeout 50 #同一 IP 的连接 50 秒内被分配到同一台 realserver
  protocol TCP ##用 TCP 协议检查 realserver 状态
  real_server 192.168.1.1 { #第一个网关节点的地址
  weight 1 #节点的权重
  TCP_CHECK {  #健康检查方式
  connect_timeout 3 #故障重试秒数(即连接超时)
  nb_get_retry 3 #重试延迟(即重试次数)
  delay_before_retry 3 #重试间隔(秒)
  }
  }
  real_server 192.168.1.2 { #第二个网关节点的地址
  weight 1
  TCP_CHECK {
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
  !########################定义虚拟web地址 ##############################
  virtual_server 12.12.12.10 80 { #虚拟服务器地址(VIP)、端口
  delay_loop 6
  lb_algo rr
  lb_kind NAT
  nat_mask 255.255.255.0
  !persistence_timeout 50
  protocol TCP
  real_server 192.168.1.3 80 { #第一个web服务器
  weight 1
  TCP_CHECK {
  connect_port 80 #指定检测的端口
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  real_server 192.168.1.4 80 { #第二个服务器
  weight 1
  TCP_CHECK {
  connect_port 80
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  辅助负载调度器的配置和主的大致相同  担忧三点配置不能一样
  全局配置中的ID标识
  状态
  优先级  !注意这里一个VRRP 实例中有两个不一样 同理 两个VRRP实例中…… 自己算

  然后负加载 ip_vs模块   modprobe ip_vs
  注意从服务器重启后会失效

  启动keepalived服务

  好了 进度到一半了
  辅助调度器一样的配置 处理keepalived的主配置文件不同
  主调度器命令 ip address show dev 网卡名称 来查看端口监测的ip,主调度其中每个网卡应承载两个ip (VIP) 应为他是主 MASTER 优先级是100

  辅助调度器 是一个正常ip  没有负载 VIP

  为了测试keepalived能够正常实行故障切换 用ping + -t 命令检测 在ping的过程中断开主调度器的链接 然他不能和辅助调度器链接 VRRP 辅助调度器就认为主调度器down掉,边自动的成为主调度器 承载VIP的流量。Ping的过程中是 如下的效果

  RIP(web节点)的配置
  开启httpd服务
  防火墙允许
  网关指向VIP网关 也就是 192.168.1.254
  这里两台web服务器我用了 不同的内容html文档
  如果web节点down掉或出现问题
  主从调度器上将把他排除  用ipvsadm命令查不到他

  说明192.168.1.4这个web节点有问题 用TCP 协议检测他的80 端口
  配置正常后

  最后 测试页面如下
  请求被发送到web节点1

  请求被发送到web节点2

  主负载调度器查看
  ipvsadm  -lcn

  还算比较平衡
  LVS-DR +HA
  实验拓扑如下:
  主调度器:12.12.12.1/24
  辅助调度器: 12.12.12.2/24
  VIP:12.12.12.10/24
  Web01: 12.12.12.3/24
  Web02:12.12.12.4/24

  分析:
  思路基本一致
  ① 在主辅调度器上安装ipvsadm和keepalived软件
  ② 解决主辅调度器的连通性问题
  ③ ip_vs模块的应用
  ④ 配置文件配置
  ⑤ web节点的配置
  步骤:
  思路 ① ② ③ 就省去详细步骤了,参考LVS-NAT+HA或 链接 http://zhangyongli.blog.运维网.com/6691702/1288731
  来直接看看配置文件的不同。
  主负载调配器
  ! 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_1
  }
  !##########################VRRP实例#################################
  vrrp_instance VI_1 {
  state MASTER
  interface eth0
  virtual_router_id 51
  priority 100
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 1111
  }
  virtual_ipaddress {
  12.12.12.10
  }
  }
  !################################定义虚拟服务器####################
  virtual_server 12.12.12.10 80 {
  delay_loop 6
  lb_algo rr
  lb_kind DR #注意是DR
  !persistence_timeout 50
  protocol TCP
  real_server 12.12.12.3 80 { #第一个真实web
  weight 1
  TCP_CHECK {
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  real_server 12.12.12.4 80 { #第二个真实web
  weight 1
  TCP_CHECK {
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
  辅助调度服务器
  全局配置中  router_id 不同  vrrp实例中  状态不一样  优先级不一样
  Web节点的配置
  因为是LVS-DR模式
  所以 web客户端是独立向客户端回应响应包的 添加ifcf-etho:0文件
  内容如下

  DEVICE=lo:0 #设备名称
  IPADDR=12.12.12.10 #监听vip地址
  NETMASK=255.255.255.255 #主机路由
  注意sysctl.conf配置添加

  详细含义参考 http://zhangyongli.blog.运维网.com/6691702/1288731 文档尾部
  添加路由
  route  add  12.12.12.10 dev lo:0
  Web节点相同的配置
  然后测试;


  主负载调度器

  ip   addr   show   dev  echt0

  好了  大功告成!!!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-658076-1-1.html 上篇帖子: Centos6.4X64构建黄金组合LVS + Keepalived高可用负载均衡集群 下篇帖子: 转发--【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表