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

[经验分享] 前端httpd+keepalived加后端heartbeat+nfs+drbd实现httpd服务的高效应用及资源统一管理

[复制链接]

尚未签到

发表于 2018-12-31 07:03:43 | 显示全部楼层 |阅读模式
  本文四台机器:Centos6.0
  lv1、lv2两台机器做httpd的前端,使用keepalived做高可用;虚拟出一个vip供client访问。
  node1、node2应用drbd技术实现文件镜像存储,虚拟出一个vip做nfsserver_ip供httpd服务,方便配置,资料的统一管理;
  涉及应用技术;httpd、keepalived、drbd、nfs、heartbeat

  如图:

  

  lv1: 192.168.182.130
  lv2: 192.168.182.129     VIP:192.168.182.200 该vip供client访问

  node1:192.168.182.133
  node2:192.168.182.134  VIP:192.168.182.150  该VIP充当nfsserver进行挂载  

  首先关闭了selinux、iptables;当然真实环境并非如此,我们进行分别配置即可

  一、开始配置,lv1、lv2;进行测试前端是否正常
  1、分别执行:yum install -y httpd ipvsadm keepalived
  为了分别出lv1、lv2的页面区别,分别在页面标识lv1、lv2


  2、接下来配置keepalived;
  lv1:上配置
  vim /etc/keepalived/keepalived.conf
  ! Configuration File for keepalived

global_defs {
   notification_email {
     coffee_lanshan@sina.com
   }
   notification_email_from admin@example.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LV_ha
}

vrrp_instance httpd {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.182.200
    }
}

virtual_server 192.168.182.200 80 {
    delay_loop 2
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP

    real_server 192.168.182.130 80 {
        weight 3
    notify_down    /var/www/httpd.sh
    TCP_CHECK {
    connect_timeout    3
    nb_get_retry    3
    delay_before_retry    3
    connect_port 80
        }
    }
}
lv2:配置
  vim /etc/keepalived/keepalived.conf
  ! Configuration File for keepalived

global_defs {
   notification_email {
     coffee_lanshan@sina.com
   }
   notification_email_from admin@example.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LV_ha
}

vrrp_instance httpd {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.182.200
    }
}

virtual_server 192.168.182.200 80 {
    delay_loop 2
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP

    real_server 192.168.182.129 80 {
        weight 3
    notify_down    /var/www/httpd.sh
    TCP_CHECK {
    connect_timeout    3
    nb_get_retry    3
    delay_before_retry    3
    connect_port 80
        }
    }
}
分别在lv1、lv2创建httpd.sh
  vim /var/www/httpd.sh
  #!/bin/sh
pkill    keepalived
  #####
  chmod +x httpd.sh
  现在为此测试上面的是否正常,是否正常转移


  发现现在是lv1在提供服务,在vrrp中也可以看到( priority 100);
  现在在lv1停掉httpd



  现在发现是lv2在提供服务,现在当你启动lv1上的httpd和keepalived的服务后,httpd会自动切换会lv1上;这里不演示了;
  二:现在开始node1、node2配置drbd+heartbeat+nfs并进行测试;
  1、配置hosts,安装drbd、heartbeat、nfs
  1>、node1、node2:

  vim hosts
  192.168.182.133    node1
192.168.182.134    node2
  2>、drbd安装
  yum -y install gcc kernel-devel kernel-headers flex
  wget http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz
  tar zxvf drbd-8.4.3.tar.gz
    cd drbd-8.4.3
    ./configure --prefix=/usr/local/drbd --with-km
    make KDIR=/usr/src/kernels/2.6.32-71.el6.i686/
   make install
    mkdir -p /usr/local/drbd/var/run/drbd
     cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d
     chkconfig --add drbd
     chkconfig drbd on
     cd drbd
     cp drbd.ko /lib/modules/`uname -r`/kernel/lib/
     depmod
     modprobe drbd
  确定加载了drbd模块

  到此两台机器的drbd安装完毕;开始config
  首先需要在node1、node2;fdisk新增的disk(这里我新增了一个8G的disk来做drbd),切记不可格式化

  node1:
  cd /usr/local/drbd/etc/drbd.d
  mv global_common.conf global_common.conf.bak
  vim global_common.conf
  global    {
    usage-count    yes;  #是否参加DRBD使用者统计,默认yes
    }
    common    {
    net    {
       protocol    C;  #使用drbd的第三种同步协议,表示收到远程主机的写入确认后,则认为写入完成.
    }
    }
  vim r0.res
  resource    r0    {
        on node1    {   #每个主机的说明以on开头,后面是hostname
        device    /dev/drbd1;   #drbd设备名
        disk    /dev/sdb1;  #/dev/drbd1使用的磁盘分区是/dev/sdb1。
        address    192.168.182.133:7789;    #设置DRBD的监听端口,用于与另一台主机通信。
        meta-disk    internal;
    }
        on node2    {
        device    /dev/drbd1;
        disk    /dev/sdb1;
        address    192.168.182.134:7789;
        meta-disk    internal;
    }
}
  将上面这个配置文件分别复制到两台主机的/etc/drbd.d目录下。
  2、 启动DRBD
  在两个节点执行
在启动DRBD之前,你需要分别在两台主机的sdb1分区上,创建供DRBD记录信息的数据块.分别在两台主机上执行:
[root@Centos ~]# drbdadm create-md r0 或者执行drbdadm create-md all
[root@Centos ~]# drbdadm create-md r0
在两个节点启动服务
[root@Centos ~]#/etc/init.d/drbd start
[root@Centos ~]#/etc/init.d/drbd start
最好同时启动
在任意节点查看节点状态

  对输出的含义解释如下:
ro表示角色信息,第一次启动drbd时,两个drbd节点默认都处于Secondary状态,
ds是磁盘状态信息,“Inconsistent/Inconsisten”,即为“不一致/不一致”状态,表示两个节点的磁盘数据处于不一致状态。“UpToDate/UpToDate”。即为“实时/实时”状态了。
Ns表示网络发送的数据包信息。
Dw是磁盘写信息
Dr是磁盘读信息
  设置主节点
由于默认没有主次节点之分,因而需要设置两个主机的主次节点,选择需要设置为主节点的主机,然后执行如下命令:
  drbdsetup /dev/drbd1 primary --o
  第一次执行完此命令后,在后面如果需要设置哪个是主节点时,就可以使用另外一个命令:
  drbdadm primary r0或者drbdadm primary all
  执行此命令后,开始同步两台机器对应磁盘的数据

  从输出可知:
    “ro状态现在变为“Primary/Secondary”,“ds”状态也变为“UpToDate/Inconsistent”,也就是“实时/不一致”状态,现在数据正在主备两个主机的磁盘间进行同步,且同步进度为8.4%,同步速度每秒10M左右。
等待片刻,再次查看同步状态,输出如下:


  可以看到同步完成了,并且“ds“状态也变为“UpToDate/UpToDate”了。即为“实时/实时”状态了。
  格式化disk
  mkfs.ext4 /dev/drbd1

  接下了就可以mount 使用了

  3、安装heartbeat、nfs
  yum install heartbeat nfs libnet -y
  cp /usr/share/doc/heartbeat-3.0.4/authkeys ha.cf haresources /etc/ha.d/
  1、node1配置ha.cf
  logfile    /var/log/ha-log
  logfacility    local0
  keepalive 2
  deadtime 30
  warntime 10
  initdead 120
  udpport    694
  ucast eth0 192.168.182.134
  auto_failback off
  node node1
node node2
  ping 192.168.182.2
  respawn root /usr/lib/heartbeat/ipfail
  ++++++++++++++++++++++++++++++++
  node2的ha.cf和上面一样,只是ucast eth0 192.168.182.133(对方IP)
  配置/etc/ha.d/authkeys
  auth 2
#1 crc
2 sha1 heartbeat
#3 md5 Hello!
  node2同上

  配置/etc/ha.d/haresources

  node1 IPaddr::192.168.182.150/24/eth0 drbddisk::r0 Filesystem::/dev/drbd1::/mnt::ext4 nfs
  node2同上
  chmod 600 authkeys
  node2同上
  cp /usr/local/drbd/etc/ha.d/resource.d/drbddisk /etc/ha.d/resource.d/
  node2同上

  启动heartbeat
  /etc/init.d/heartbeat start
  现在为止:你会发现node1上网卡

  将node1上heartbeat关闭:你会发现node2

  自动挂载,drbd状态自动切换,vip自动漂移全部正常
  分别在node1、node2上配置nfs共享目录
  [root@node2 ~]# vim /etc/exports

/root/data      *(rw)
  [root@node2 ~]# exportfs -r
[root@node2 ~]# exportfs -u
/root/data        

  4、接下来怎么在前面的两台lv上面挂载充当httpd服务的主目录;
  lv1、lv2:
  mount -t nfs 192.168.182.150:/root/data /var/www/html
  可以把这个写到fstab中,开机启动
  192.168.182.150:/root/data    /var/www/html    nfs    defaults    0    0
  5、接下来进行测试了:
  1>、我们在node1中的/root/data/ 中创建index.html;期中内容:node+heartbeat+test

  2>、现在我们将lv1宕机掉进行测试也是一样的,不影响
  3>、现在我们将node1宕掉,node间的服务会切换到node2,然后修改index.html的内容进行分别
  这里新增了two一个标识
  node1:/etc/init.d/heartbeat stop
  node2:
  [root@node2 data]# vim index.html

node+heartbeat+test two
  现在再访问vip

  一切正常!ok
  这样方便统一管理了资源,并且实现了可靠性;





运维网声明 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-657751-1-1.html 上篇帖子: nginx keepalived 搭建负载均衡 下篇帖子: centos7中keepalived原理及高可用(HA)详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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