当前位置 主页 > 服务器问题 > Linux/apache问题 >

Linux利用keepalived实现lvs的高可用性方法

栏目:Linux/apache问题 时间:2018-12-20 09:22

  LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。这篇文章主要介绍了Linux利用keepalived实现lvs的高可用性 ,需要的朋友可以参考下
  lvs+keepalived是什么?
  keepalived工作原理
  keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。 keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
  LVS简介
  LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR),十种调度算法。
  本文重点给大家介绍Linux利用keepalived实现lvs的高可用性的操作方法,感兴趣的朋友参考下吧。
  单主模型IPVS示例
  配置keepalive
  高可用的ipvs集群示例:修改keepalived配置文件
  修改主机:192.168.234.27的keepalived配置文件
  [root@234c27 ——]# vim /etc/keepalived/keepalived.conf
  ! Configuration File for keepalived
  global_defs {
  notification_email {
  root@localhost //接受邮件地址
  }
  notification_email_from keepalived@localhost //发送邮件地址
  smtp_server 127.0.0.1 //发送邮件服务器IP
  smtp_connect_timeout 30 //邮件连接超时时长
  router_id kptwo //路由id
  vrrp _mcast_group4 234.10.10.10 //指定vrrp协议的多播地址
  }
  vrrp_instance VI_1 { //vrrp协议的
  state MASTER //lvs的MASTER服务器
  interface ens37 //
  virtual_router_id 50 //虚拟路由
  priority 100 //权重为100.越大越先
  advert_int 1 //发送组博包的间隔
  authentication { //验证
  auth_type PASS //方式为pass( 明文)
  auth_pass 1111 //密码
  }
  virtual_ipaddress { //keepalived虚拟ip
  10.0.0.100/24
  }
  }
  virtual_server 10.0.0.100 80 {
  delay_loop 6 //检查后端服务器的时间间隔
  lb_algo wrr //定义调度方法
  lb_kind DR //集群的类型
  #persistence_timeout 50 //持久连接时长
  protocol TCP //服务协议,仅支持TCP
  real_server 192.168.234.47 80 { //后端real_server服务器地址
  weight 1 //权重
  HTTP_GET { //应用层检测
  url {
  path / //定义要监控的URL
  status_code 200 //判断上述检测机制为健康状态的响应码
  }
  connect_timeout 3 //连接请求的超时时长
  nb_get_retry 3 //重试次数
  delay_before_retry 3 //重试之前的延迟时长
  }
  }
  real_server 192.168.234.57 80 {
  weight 2
  HTTP_GET {
  url {
  path /
  status_code 200
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
  修改主机:192.168.234.37的keepalived配置文件
  [root@234c37 ——]# vim /etc/keepalived/keepalived.conf
  ! Configuration File for keepalived
  global_defs {
  notification_email {
  root@localhost
  }
  notification_email_from keepalived@localhost
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id kptwo
  vrrp _mcast_group4 234.10.10.10
  }
  vrrp_instance VI_1 {
  state BACKUP
  interface ens37
  virtual_router_id 50
  priority 80
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 1111
  }
  virtual_ipaddress {
  10.0.0.100/24
  }
  }
  virtual_server 10.0.0.100 80 {
  delay_loop 6
  lb_algo wrr
  lb_kind DR
  #persistence_timeout 50
  protocol TCP
  sorry_server 127.0.0.1:80
  real_server 192.168.234.47 80 {
  weight 1
  HTTP_GET {
  url {
  path /
  status_code 200
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  real_server 192.168.234.57 80 {
  weight 2
  HTTP_GET {
  url {
  path /
  status_code 200
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
  查看keepalived
  [root@234c37 ——]# systemctl status keepalived
  ● keepalived.service - LVS and VRRP High Availability Monitor
  Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
  Active: inactive (dead)
  …………
  [root@234c37 ——]# ipvsadm -Ln
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port   Forward Weight ActiveConn InActConn
  //暂无ipvsadm
  启动服务
  [root@234c27 keepalived]# systemctl start keepalived.service
  [root@234c27 keepalived]# systemctl status keepalived.service
  ● keepalived.service - LVS and VRRP High Availability Monitor
  Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
  Active: active (running) since Fri 2018-08-31 20:30:02 CST; 12s ago
  Process: 9657 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
  Main PID: 9658 (keepalived)
  ………………
  [root@234c27 keepalived]# ipvsadm -Ln
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port   Forward Weight ActiveConn InActConn
  TCP 10.0.0.100:80 wrr
  -> 192.168.234.47:80   Route 1  0   0
  -> 192.168.234.57:80   Route 2  0   0
  //启动服务lvs vs已配置好
  后端real_server准备
  增加ip在网卡上 修改限制arp通告及应答级别 rs1 rs2都做,网关并指向路由
  ip a a 10.0.0.100/32 dev ens37
  echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
  echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
  route add default gw 192.168.234.17
  安装httpd服务 写好网页文件
  启动服务
  image
  多主模型IPVS示例
  配置keepalive
  高可用的ipvs集群示例:修改keepalived配置文件
  修改主机:192.168.234.27的keepalived配置文件
  [root@234c27 keepalived]# vim /etc/keepalived/keepalived.conf
  global_defs {
  notification_email {
  root@localhost
  }
  notification_email_from keepalived@localhost
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id kpone
  vrrp _mcast_group4 234.10.10.10
  }
  vrrp_instance VI_1 {
  state MASTER
  interface ens37
  virtual_router_id 50
  priority 100
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 1111
  }
  virtual_ipaddress {
  10.0.0.100/24
  }
  }
  vrrp_instance VI_2 {
  state BACKUP
  interface ens37
  virtual_router_id 51
  priority 80
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 2222
  }
  virtual_ipaddress {
  10.0.0.200/24
  }
  }
  virtual_server 10.0.0.100 80 {
  delay_loop 6
  lb_algo wrr
  lb_kind DR
  #persistence_timeout 50
  protocol TCP
  #sorry_server 127.0.0.1:80
  real_server 192.168.234.47 80 {
  weight 1
  HTTP_GET {
  url {
  path /
  status_code 200
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
  virtual_server 10.0.0.200 80 {
  delay_loop 6
  lb_algo wrr
  lb_kind DR
  #persistence_timeout 50
  protocol TCP
  #sorry_server 127.0.0.1:80
  real_server 192.168.234.57 80 {
  weight 1
  HTTP_GET {
  url {
  path /
  status_code 200
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
  修改主机:192.168.234.37的keepalived配置文件
  [root@234c37 ——]# vim /etc/keepalived/keepalived.conf
  ! Configuration File for keepalived
  global_defs {
  notification_email {
  root@localhost
  }
  notification_email_from keepalived@localhost
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id kptwo
  vrrp _mcast_group4 234.10.10.10
  }
  vrrp_instance VI_1 {
  state BACKUP
  interface ens37
  virtual_router_id 50
  priority 80
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 1111
  }
  virtual_ipaddress {
  10.0.0.100/24
  }
  }
  vrrp_instance VI_2 {
  state MASTER
  interface ens37
  virtual_router_id 51
  priority 100
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 2222
  }
  virtual_ipaddress {
  10.0.0.200/24
  }
  }
  virtual_server 10.0.0.100 80 {
  delay_loop 6
  lb_algo wrr
  lb_kind DR
  #persistence_timeout 50
  protocol TCP
  #sorry_server 127.0.0.1:80
  real_server 192.168.234.47 80 {
  weight 1
  HTTP_GET {
  url {
  path /
  status_code 200
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
  virtual_server 10.0.0.200 80 {
  delay_loop 6
  lb_algo wrr
  lb_kind DR
  #persistence_timeout 50
  protocol TCP
  #sorry_server 127.0.0.1:80
  real_server 192.168.234.57 80 {
  weight 1
  HTTP_GET {
  url {
  path /
  status_code 200
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
  让10.0.0.100的ip优先分配至192.168.234.47 192.168.234.57备用
  让10.0.0.200的ip优先分配至192.168.234.57 192.168.234.47备用
  后端real_server准备
  修改192.168.234.57的vip为10.0.0.200/32
  [root@234c27 keepalived]# ipvsadm -Ln
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port      Forward Weight ActiveConn InActConn
  TCP 10.0.0.100:80 wrr
  -> 192.168.234.47:80      Route  1   0     0
  TCP 10.0.0.200:80 wrr
  -> 192.168.234.57:80      Route  1   0     0
  现在宕掉一个lvs
  [root@234c27 keepalived]# systemctl stop keepalived.service
  [root@234c27 keepalived]# ipvsadm -Ln
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port      Forward Weight ActiveConn InActConn
  依然提供服务
  image6
  [root@234c37 ——]# ipvsadm -Ln
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port      Forward Weight ActiveConn InActConn
  TCP 10.0.0.100:80 wrr
  -> 192.168.234.47:80      Route  1   0     21
  TCP 10.0.0.200:80 wrr
  -> 192.168.234.57:80      Route  1   0     39
  后一个实现基于前一个的基础上修改来的
  假设要实现sorry_server
  1.把rs服务都停掉。然后在lvs上安装apache或者nginx服务
  2.将keepalived配置文件中的
  virtual_server 10.0.0.200 80 {
  delay_loop 6
  lb_algo wrr
  lb_kind DR
  #persistence_timeout 50
  protocol TCP
  #sorry_server 127.0.0.1:80 //这一行来修改 写出服务出错之后的页面
  real_server 192.168.234.57 80 {
  weight 1
  HTTP_GET {
  url {
  path /
  status_code 200
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
缩小 缩小 缩小 缩小
IIS7整站下载工具 IIS7批量查询排名 IIS7远程桌面连接工具 iis7-iis网站批量管理 iis7批量替换工具 IIS7服务器专用下载工具 IIS7日志分析工具 IIS7批量PING,服务器批量添加网卡IP小工具 IIS7远程同步备份工具
IIS7网站监控 站群批量SEO查询 批量获取排名域名 批量关键词排名查询 模拟各种蜘蛛 批量友情链接监测 批量检测死链 搜索引擎大全 批量查询外链
批量查询网站标题 批量查询KeyWords 批量查询描述 批量查询网站IP 批量百度收录查询 批量查询百度日收录 批量查询百度周收录 批量查询百度月收录 批量查询360总收录 批量查询360日收录 批量查询网站年龄 批量查询360PC权重 批量查询爱站移动权重 批量查询站长移动权重 批量查询360移动权重 批量查询神马权重 批量查询谷歌PR 批量查询搜狗PR 批量查询百度反链 批量查询爱站首页反链 批量查询爱站内页反链 批量查询百度快照 批量查询搜狗快照 批量icp备案查询 批量网站ip地址查询 批量查询导出链接 批量查询百度V认证 批量查询百度安全 批量查询站长PC权重 批量查询爱站PC权重 批量查询搜狗总收录 站长资源大全 IIS7-cms大全 IIS7站群大全 IIS7虚拟空间大全 IIS7服务器大全 IIS7-VPS大全