开发者社区> 余二五> 正文

heartbeat+lvs+ldirectord 集群

简介:
+关注继续查看

 第一,系统规划                        Heartbeat +LVS+Ldirectord

需要的源码包

     ipvsadm-1.24.tar.gz   heartbeat-2.0.7.tar.gz  libnet-1.1.2.1.tar.gz

      ipvsadm-1.24 需要linux 内核为2.6.18 ,同时也需要编译内核。

2.规划网络

   VIP  192.168.10.100

   HA1  192.168.10.10

        192.168.20.10

   HA2   192.168.10.20

         192.168.20.20

   RealServer1  192.168.10.1

   RealServer2  192.168.10.2

heartbeat节点上修改主机名

  #vim /etc/sysconfig/network

HOSTNAME= ha1 并保存,只有重启或者注销时时才生效

  #hostname  ha1 #立即生效

  # vim /etcsysconfig/network

HOSTNAME=ha2

  # hostname  ha2

heartbeat 节点上hosts 文件中添加如下

   192.168.10.10   ha1

   192.168.10.20  ha2

   192.168.20.10  ha010

   192.168.20.20  ha020

 

 

第二, 编译内核并让 linux-2.6.18.tar.gz

解压内核linux-2.6.18.tar.gz

 # tar xvf linux-2.6.18.tar.gz 

 #mv   linux-2.6.18  /usr/src/

因为linux系统默下是在寻找linux 目录所以创建连接

   #ln  -sv  linux-2.6.18   linux

3,拷贝/boot/config-2.6.18-164.el5 linux 目录下面

   #cp /boot/config-2.6.18-164.el5  /usr/src/linux/.config

编译内核

    如果以前编译过内核,并且想删除编译过的内核

    # make mrproper

编译内核的命为

      #make  menuconfig  或者make  xconfig  

选择内核支持IPvsadm

      Code maturity level options --->

[*] Prompt for development and/or incomplete code/drivers

Networking options --->

[*] Network packet filtering (replaces ipchains)

[ ] Network packet filtering debugging

...

IP: Netfilter Configuration --->

IP: Virtual Server Configuration --->

<M> virtual server support (EXPERIMENTAL)

[*] IP virtual server debugging

(12) IPVS connection table size (the Nth power of 2)

     --- IPVS scheduler

<M> round-robin scheduling

<M> weighted round-robin scheduling

<M> least-connection scheduling scheduling

<M> weighted least-connection scheduling

<M> locality-based least-connection scheduling

<M> locality-based least-connection with replication scheduling

<M> destination hashing scheduling

<M> source hashing scheduling

--- IPVS application helper

<M> FTP protocol helper

安装内核

     make bzImagemake modules  make modules_install  make install

编译完成后重启服务器,并选择启动编译后的内核,并查看编译后的内核是不是支持ipvsadm

#grep   ip_vs_init   /boot/System.map

第三.安装ipvsadm heartbeat

      安装ipvsadm

       # tar  -vfx    ipvsadm-1.24.tar.gz

       #cd   ipvsadm-1.24

       #./configure && make  &&make install

      安装libnet

        #tar xvf  libnet-1.1.2.1.tar.gz 

       #cd  libnet

       #./configure  && make && make install

     安装heartbeat

        #tar –xvf  heartbeat-2.0.7.tar.gz

        #cd  heartbeat-2.0.7.

        #./configure  && make && make install

        # cd  doc/

        #cp  authkeys   haresources   ha.cf  /etc/ha.d/

        #cd ../ldirectord/

        #cp  ldirectord.cf  /etc/ha.d

      修改 authkeys ,并修改权限

         #vim authkeys

            auth 1

1 crc 

          #chmod  0600 authkeys

      配置heartbeat主配置文件

         #vim  ha.cf

          debugfile /var/log/ha-debug # heartbeat的调试信息

logfile /var/log/ha-log    #hearbeat 的日志信息

logfacility local7

keepalive 2  #指明心态时间为2秒,即是每个两秒在eth1 放松一下广播

deadtime 30  #指定在三十秒内没有心跳信息,就立即切换服务

warntime 10  指明心跳延迟的时间为十秒,当十秒钟内备份机联系不上,即当前活动的服务器无心跳信号,就会在日志中写一个警告日志,但不会切换服务

nitdead 120   #网络启动的时间

udpport 694   #广播/单波通讯使用的udp端口

baud 19200    #使用串口的波特率,和serial以前使用

#mcast  eth1 192.168.20.10  如果采用组播通讯,该处设置组播通讯所使用的接口

ucast eth1 10.90.20.10 #master lvs ip   如果采用的是单波,该处设置其网络接口集群使用的IP地址  注意在该处的IP 地址为 Master 主配置文件中为Back eth1 的IP地址 ,Back 在该处的地址为Master eth1 的地址

auto_failback on    在主节点回复正常情况下,主动接管资源

node ha10 #master lvs hostname  主节点 该处的节点名必须和uname –n 相匹配

node ha20 #slave lvs hostname   辅助接点

respawn root /usr/lib/heartbeat/ipfail   #have to give a permission

apiauth ipfail gid=root uid=root

 

配置heartbeat的资源文件

     #vim  haresources  在其尾端添加

          Ha10  IPaddr:: 192.168.10.100  lvs  ldirectord

对应的分别是: 主节点   IPaddr:: 192.168.10.100 是虚拟Ip地址  lvs 是用来启动lvs 的脚本,ldirecord 是监听主节点和这是服务器的资源配置文件

 

配置ldirectord.cf

     checktimeout=20   #ldirectord 等待健康检查执行完毕的等待时间,如果在设置时间内没有完成检查,ldirectord 则会从ipvs 表中删除真实服务器

    checkinterval=60  #ldirectord 在两个检查之间的时间间隔

fallback=127.0.0.1:80  #当所有的真实服务器宕机时,所有的访问都放松的本主机上的apache服务上

autoreload=yes   #自动读取配置文件

logfile="/var/log/ldirectord.log" #ldirectord 的日志文件

logfile="local0"

quiescent=no  #当一个节点在checktimeout设置的时间周期内没有响应是它是静止的(它的权重为0),当你设置了这个选项后,ldirectord将会从IPVS表中移除真实服务器而不是停止它,从IPVS表移除节点将中断现有的客户端连接,并使LVS丢掉所有的连接跟踪记录和持续连接模板,如果你不将这个选项设置为no,当某个节点崩溃时,对某些客户端计算机而言可能会显示为集群关闭了,因为在这个节点崩溃前这些客户端计算机被分配给它了,而连接跟踪记录和程序连接模板仍然保留在Director上。

# A sample virual with a fallback that will override the gobal setting

virtual=192.168.10.100:80  #虚拟Ip 即使对外提供服务的ip地址

real=192.168.10.1.:80 gate   #真实服务器 当然gate 后面还可以指明权重

real=192.168.10.2:80 gate

# real=192.168.6.6:80 gate

fallback=127.0.0.1:80 gate

service=http  #服务类型

request=".ldirectord.html " #must be created on real server too  这是ldirectord 检测真实服务器是的服务器是否存活的文件

receive="OK" #this is .ldirectord.html content  #监测的文件中必须包含OK 这样的字符,ldirectord 才能识别该服务正常,否则为所失败

# virtualhost=some.domain.com.au

scheduler=wrr  此处要和配置的lvs 的调度算法一致

#persistent=600

#netmask=255.255.255.255

protocol=tcp

checktype=negotiate  # ldirectord 使用什么的方法检测这不是服务器,如果真实服务在设定的时间内没有返回,自己指定的信息,则该节点就被认为已经死掉了

 

配置友好页面返回信息,即使当所有的RealServer 出现问题的时,并能为用户提供一些友好的服务信息的页面

# cd /etc/ha.d/resource.d

  ln  -vs  /etc/init.d/httpd   ./

9 lvs 的启动脚本 ,并把该脚本拷贝到/etc/init.d/lvs ,且修改权限

注: 该脚本是在调度器上执行的,即是heartbeat节点上执行的

   #vim lvs

   !/bin/bash

#chkconfig: 354 20 80

#description: start lvs

VIP=192.168.10.100

RIP1=192.168.10.1

RIP2=192.168.10.2

/etc/rc.d/init.d/functions

case "$1" in

                start)

                        echo "start lvs"

                        #set VIP

                        /sbin/ifconfig eth0:0 $VIP netmask 255.255.255.255

                        /sbin/route add -host $VIP dev eth0:0

                        #clean IPVS table

                        /sbin/ipvsadm -C

                        #set lvs

                                /sbin/ipvsadm -A -t $VIP:80 -s rr

                                /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g

                                /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g

                        #run lvs

                        /sbin/ipvsadm

                        #end

                        ;;

                stop)

                        echo "stop lvs"

                        /sbin/ipvsadm -C

                        ;;

                *)

                        echo "Usage:$0 {start|stop}"

                       ;;

                exit 1

esac

  #chmod  755 /etc/init.d/lvs

 

第四, 配置RealServer ,即使真实服务器,并把下面的脚本拷贝到/etc/init.d/RealServer ,并修改权限

  注:该脚本是在真实服务器上启动的

     #vim RealServer

VIP=192.168.2.173

host=`/bin/hostname`

case "$1" in

                start)

                        #start lvs

                        /sbin/ifconfig lo down

                        /sbin/ifconfig lo up

                        echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore

                        echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

                        echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

                        echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

                        sysctl -p > /dev/null 2>&1

                        /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 up

                        /sbin/route add -host $VIP dev lo:0

                        ;;

                stop)

                        #stop lvs

                        /sbin/ifconfig lo:0 down

                        echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore

                        echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce

                        echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore

                        echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce

                        sysctl -p > /dev/null 2>&1

                        ;;

                status)

                        #status of lvs

                        islothere=`/sbin/ifconfig lo:0 |grep $VIP`

                        isrothere=`/netstat -rn |grep "lo" |grep "$VIP"`

                        if [ ! "islothere" -o ! "isrothere" ];then

                                        echo "the realserver is stopped"

                                else

                                        echo "realserver is running"

                        fi

                        ;;

                *)

                        echo "Usage:$0{start|stop|status}"

                  ;;

                exit 1

esac

 

# chmod  755 /etc/init.d/RealServer

并启动该脚本

  #/etc/init.d/lvs  start

第五,

1.在各个真实服务器上的apache的家目录中创建文件

     #vim  .ldirectord.html

          OK

   并启动apache

 2 .启动真实服务器上的RealServer 脚本

     #/etc/init.d/RealServer start

 启动heartbeat

   #/etc/init.d/lvs  start

   #service heartbeat start

 

 










本文转自 freehat08 51CTO博客,原文链接:http://blog.51cto.com/freehat/410299,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
20698 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
13872 0
负载均衡LVS集群详解
一、LB--负载均衡 在负载均衡集群中需要一个分发器,我们将其称之为Director,它位于多台服务器的上面的中间层,根据内部锁定义的规则或调度方式从下面的服务器群中选择一个以此来进行响应请求,而其分发的方式则是根据某个算法进行的。
908 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
18999 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
25240 0
+关注
20381
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载