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

[经验分享] CentOS7.4—构建LVS+Keepalived高可用群集

[复制链接]

尚未签到

发表于 2018-4-19 12:05:27 | 显示全部楼层 |阅读模式
  LVS+Keepalived高可用群集
  目录
  第一部分  环境准备
  第二部分  使用Keepalived搭建双机热备
  第三部分  配置Web节点服务器
  第四部分  测试LVS+Keepalived高可用群集
  第一部分  环境准备
  一:调度器两台(双机热备)
  系统:Linux—CentOS 7.4
  IP地址:192.168.80.10(主)
  IP地址:192.168.80.20(备)
  二:Web服务器两台
  系统:Linux—CentOS 7.4
  IP地址:192.168.80.30(SERVER AA)
  IP地址:192.168.80.40(SERVER BB)
DSC0000.jpg

  三:客户端电脑一台:以win7为例,测试用
  IP地址:192.168.80.2
  第二部分  使用Keepalived搭建双机热备
  第一步:配置主调度器
[iyunv@dd01 ~]# modprobe ip_vs      //加载ip_vs模块

[iyunv@dd01 ~]# rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm    //安装管理软件ipvsadm

[iyunv@dd01 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel

  //安装编译工具与插件
[iyunv@dd01 ~]# tar xzvf keepalived-1.4.2.tar.gz      //解压keepalived安装包

[iyunv@dd01 ~]# cd keepalived-1.4.2/

[iyunv@dd01 keepalived-1.4.2]# ./configure --prefix=/       //配置

[iyunv@dd01 keepalived-1.4.2]# make && make install      //编译与安装

[iyunv@dd01 keepalived-1.4.2]# cp keepalived/etc/init.d/keepalived /etc/init.d/

  //加入系统管理服务
[iyunv@dd01 keepalived-1.4.2]# systemctl enable keepalived     //设置开机自启动

[iyunv@dd01 keepalived-1.4.2]# vi /etc/keepalived/keepalived.conf    //编辑配置文件

  ! Configuration File for keepalived
  global_defs {
  router_id LVS_01            //本服务器的名称
  }
  vrrp_instance VI_1 {            //定义VRRP热备实例
  state MASTER             //热备状态,MASTER表示主服务器,BACKUP表示从服务器
  interface ens33            //承载VIP地址的物理接口
  virtual_router_id 51        //虚拟路由器的ID号,每个热备组保持一致
  priority 110               //优先级,数值越大优先级越高
  advert_int 1               //通告间隔秒数(心跳频率)
  authentication {            //热备认证信息,每个热备组保持一致
  auth_type PASS        //认证类型
  auth_pass 6666        //密码字符串
  }
  virtual_ipaddress {          //指定漂移地址(VIP),可以有多个
  192.168.80.100
  }
  }
  virtual_server 192.168.80.100 80 {      //虚拟服务器地址(VIP)、端口
  delay_loop 6               //健康检查的间隔时间(秒)
  lb_algo rr                  //轮询(rr)调度算法
  lb_kind DR                 //直接路由(DR)群集工作模式
  persistence_timeout 60       //连接保持时间(秒)
  protocol TCP                //应用服务器采用的是TCP协议
  real_server 192.168.80.30 80 {         //第一个Web服务器节点的地址、端口
  weight 1                   //节点的权重
  TCP_CHECK {                //健康检查方式
  connect_port 80             //检查的目标端口
  connect_timeout 3           //连接超时(秒)
  nb_get_retry 3              //重试次数
  delay_before_retry 3          //重试间隔
  }
  }
  real_server 192.168.80.40 80 {           //第二个Web服务器节点的地址、端口
  weight 1
  TCP_CHECK {
  connect_port 80
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
  保存退出
[iyunv@dd01 keepalived-1.4.2]# service keepalived start

[iyunv@dd01 keepalived-1.4.2]# ip addr show dev ens33    //验证绑定了的虚拟地址

DSC0001.jpg

[iyunv@dd01 keepalived-1.4.2]# ipvsadm –L        //查看LVS虚拟服务器

DSC0002.jpg

[iyunv@dd01 keepalived-1.4.2]# tail -f /var/log/messages

DSC0003.jpg

  第二步:配置从调度器
[iyunv@dd02 ~]# modprobe ip_vs      //加载ip_vs模块

[iyunv@dd02 ~]# rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm    //安装管理软件ipvsadm

[iyunv@dd02 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel

[iyunv@dd02 ~]# tar xzvf keepalived-1.4.2.tar.gz

[iyunv@dd02 ~]cd keepalived-1.4.2/

[iyunv@dd02 keepalived-1.4.2]# ./configure --prefix=/

[iyunv@dd02 keepalived-1.4.2]# make && make install

[iyunv@dd02 keepalived-1.4.2]# cp keepalived/etc/init.d/keepalived /etc/init.d/

[iyunv@dd02 keepalived-1.4.2]# systemctl enable keepalived

[iyunv@dd02 keepalived-1.4.2]# vi /etc/keepalived/keepalived.conf

  ! Configuration File for keepalived
  global_defs {
  router_id LVS_02
  }
  vrrp_instance VI_1 {
  state BACKUP
  interface ens33
  virtual_router_id 51
  priority 105
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 6666
  }
  virtual_ipaddress {
  192.168.80.100
  }
  }
  virtual_server 192.168.80.100 80 {
  delay_loop 6
  lb_algo rr
  lb_kind DR
  persistence_timeout 60
  protocol TCP
  real_server 192.168.80.30 80 {
  weight 1
  TCP_CHECK {
  connect_port 80
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  real_server 192.168.80.40 80 {
  weight 1
  TCP_CHECK {
  connect_port 80
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
  }
  }
  }
  保存退出
[iyunv@dd02 keepalived-1.4.2]# service keepalived start

[iyunv@dd02 keepalived-1.4.2]# ipvsadm –L

DSC0004.jpg

  第三步:验证结果

  • dd01主服务器keepalived服务开启状态,验证dd02从服务器状态
    [iyunv@dd02 keepalived-1.4.2]# ip addr show dev ens33

    DSC0005.jpg

    [iyunv@dd02 keepalived-1.4.2]# tail -f /var/log/messages

    DSC0006.jpg

      //备机状态
  • 模拟主服务器故障,将dd01主服务器keepalived服务关闭,验证dd02从服务器状态
    [iyunv@dd01 keepalived-1.4.2]# systemctl stop keepalived

    DSC0007.jpg

      //备机自己切换到主机状态
    DSC0008.jpg

      //双机热备搭建完成
  第三部分  配置Web节点服务器
  第一步:配置SERVER AA服务器(192.168.80.30)

  • 配置http服务  //安装http服务
    [iyunv@aa ~]# yum install -y httpd

      //编辑主配置文件
    [iyunv@aa ~]# vi /etc/httpd/conf/httpd.conf

      ServerName aa       //将“#”号去掉,修改主机名
      保存退出
      //配置默认显示网页
    [iyunv@aa ~]# cd /var/www/html/

    [iyunv@aa html]# echo &quot;<h1>SERVER AA</h1>&quot; > index.html

    DSC0009.jpg

    [iyunv@aa html]# service httpd start       //重启http服务

      //win7验证http服务
      访问http://192.168.80.30
    DSC00010.jpg

  • 配置DR模式
    [iyunv@aa ~]# vi web.sh

      #!/bin/bash
      #haha
      ifconfig lo:0 192.168.80.100 broadcast 192.168.80.100 netmask 255.255.255.255 up
      route add -host 192.168.80.100 dev lo:0
      echo &quot;1&quot; >/proc/sys/net/ipv4/conf/lo/arp_ignore
      echo &quot;2&quot; >/proc/sys/net/ipv4/conf/lo/arp_announce
      echo &quot;1&quot; >/proc/sys/net/ipv4/conf/all/arp_ignore
      echo &quot;2&quot; >/proc/sys/net/ipv4/conf/all/arp_announce
      sysctl -p &>/dev/null
      保存退出
    [iyunv@aa ~]# sh web.sh     //执行脚本

    [iyunv@aa ~]# ifconfig       //查看虚拟接口

    DSC00011.jpg

  第二步:配置SERVER BB服务器(192.168.80.40)

  • 配置http服务  //安装http服务
    [iyunv@bb ~]# yum install -y httpd

      //编辑主配置文件
    [iyunv@bb ~]# vi /etc/httpd/conf/httpd.conf

      ServerName bb       //将“#”号去掉,修改主机名
      保存退出
      //配置默认显示网页
    [iyunv@bb ~]# cd /var/www/html/

    [iyunv@bb html]# echo &quot;<h1>SERVER BB</h1>&quot; > index.html

    DSC00012.jpg

    [iyunv@bb html]# service httpd start      //重启http服务

      //win7验证http服务
      访问http://192.168.80.40
    DSC00013.jpg

      ----------配置DR模式---------
    [iyunv@bb ~]# vi web.sh

      #!/bin/bash
      #hehe
      ifconfig lo:0 192.168.80.100 broadcast 192.168.80.100 netmask 255.255.255.255 up
      route add -host 192.168.80.100 dev lo:0
      echo &quot;1&quot; >/proc/sys/net/ipv4/conf/lo/arp_ignore
      echo &quot;2&quot; >/proc/sys/net/ipv4/conf/lo/arp_announce
      echo &quot;1&quot; >/proc/sys/net/ipv4/conf/all/arp_ignore
      echo &quot;2&quot; >/proc/sys/net/ipv4/conf/all/arp_announce
      sysctl -p &>/dev/null
      保存退出
    [iyunv@bb ~]# sh web.sh      //执行脚本

    [iyunv@bb ~]# ifconfig        //查看虚拟接口

    DSC00014.jpg

  第四部分  测试LVS+Keepalived高可用群集
  在客户端的浏览器中,能够通过LVS+Keepalived群集的漂移地址(192.168.80.100)正常访问web页面内容,则验证群集构建成功。

  •   验证两台Web服务器轮询工作
      Win7访问http://192.168.80.100
    DSC00015.jpg

      //由于设置了连接保持时间为60秒,一分钟后再重新访问该地址
    DSC00016.jpg

      //自动轮询交给另一台Web服务器
  •   模拟主调度器故障,验证结果
    [iyunv@dd01 keepalived-1.4.2]# systemctl stop keepalived

      //主调度器keepalived停止工作
    DSC00017.jpg

      //从调度器自动切换,继续工作
    DSC00018.jpg

      //win7访问http://192.168.80.100,查看结果
    DSC00019.jpg

      //一分钟后,重新访问http://192.168.80.100,查看结果
    DSC00020.jpg

      //双机热备已经起作用
  • 模拟Web服务器aa故障
    [iyunv@bb ~]# service httpd stop     //将bb服务器停止工作

    [iyunv@dd01 keepalived-1.4.2]# tail -f /var/log/messages

    DSC00021.jpg

      访问http://192.168.80.40
    DSC00022.jpg

      一分钟后,重新访问http://192.168.80.40
    DSC00023.jpg

      //无法访问,验证成功
    [iyunv@bb ~]# service httpd start    //恢复启动bb服务器

      //查看调度器日志:
    DSC00024.jpg

      //已成功将bb服务器加入到服务器池
  //LVS+Keepalived已成功搭建并测试完成

运维网声明 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-448929-1-1.html 上篇帖子: CentOS程序包管理、下 下篇帖子: CentOS 6.8 安装JDK1.7
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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