请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册
搜索

本文来自

服务器安全专区

服务器安全专区

人已关注

请添加对本版块的简短描述

LVS ipvsadm+heartbeat+ldirecrtord(DR)

[复制链接]
1611 abc 发表于 2018-11-29 13:56:59

一、      网络环境

  Vip=192.168.15.200

         real=192.168.15.101

         real=192.168.15.103

         master=10.0.0.2

         slave=10.0.0.3

        (此实验为虚拟机环境)



一、软件包安装
[root@localhost ~]# rpm -qa|grep heart

heartbeat-ldirectord-2.1.3-3.el5.centos

heartbeat-pils-2.1.3-3.el5.centos

heartbeat-stonith-2.1.3-3.el5.centos

heartbeat-2.1.3-3.el5.centos

[root@localhost ~]# rpm -qa|grep ipvs

ipvsadm-1.24-10

[root@localhost ~]# rpm -qa|grep arp

arptables-noarp-addr-0.99.2-1.rh.el.um.1

arptables_jf-0.0.8-8

[root@localhost ~]# rpm -qa|grep perl-Mail

perl-Mail-POP3Client-2.17-1.el5.centos

perl-MailTools-1.77-1.el5.centos

[root@localhost ~]# cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/

[root@localhost ~]# cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/

[root@localhost ~]# cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/

[root@localhost ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.3/ldirectord.cf

/etc/ha.d/







二、配置ldirectord

checktimeout=3

checkinterval=1

这个值指定ldirectord在两个检查之间的间隔时间

fallback=127.0.0.1:80

autoreload=yes

#是否自动重载

logfile="/var/log/ldirectord.log"

#logfile="local0"

emailalert="haibo@myhexin.com"

emailalertfreq=3600

emailalertstatus=all

quiescent=no



# Sample for an http virtual service

virtual=192.168.15.200:80

        real=192.168.15.101:80 gate

        real=192.168.15.103:80 gate

#       real=192.168.15.200:80 gate

#       fallback=127.0.0.1:80 gate

#       service=http

#       request="index.html"

#       receive="Test Page"

#       virtualhost=some.domain.com.au

        scheduler=wrr

#       persistent=600

        #netmask=255.255.255.255

        protocol=tcp

        checktype=connect

检测端口是否可达

        checkport=80

#       request="index.html"

#       receive="Test Page"

#       virtualhost=www.x.y.z

         --ldirectord配置详解

三、 ha.cf配置



[root@LVS-master ~]# vi /etc/ha.d/ha.cf

debugfile /var/log/ha-debug



logfile /var/log/ha-log

#定义日志文件的位置,如果两个都没有定义,默认会写入/var/log/message



logfacility local0

keepalive 2

#指定心跳间隔时间即每隔2秒钟在eth0上发送一次广播



deadtime 30

#指定若备用节点在30内没有收到主节点的心跳信号,则立即接管主节点的服务资源



warntime 10

#指定心跳延迟的时间为10秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务



initdead 120

#在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍



udpport 694

#开放防火墙694端口



baud 19200

#设置串行通信的波特率



bcast eth0 # Linux

#采用udp广播来通知心跳



#serial /dev/ttyS0
使用串口heartbeat - 如果你不使用串口heartbeat, 你必须选择其它的介质,比如以太网bcast (ethernet) heartbeat。如果你使用其它串口heartbeat,修改/dev/ttyS0 为其它的串口设备



mcast eth0 225.0.0.1 694 1 0

#采用udp多播来通知心跳,建议主副使用

ucast eth0 192.168.2.121

#单播eth0的IP,此处从为从的IP

auto_failback on

#主节点恢复后,是否自动切回,主可设置恢复后切回,从设置为off

watchdog /dev/watchdog

#看门狗,如果本节点在超过一分钟后还没有发出心跳,那么本节点自动重启

#可选项:watchdog功能提供了一种方法能让系统在出现故障无法提供"heartbeat"时,仍然具有最小的功能,能在出现故障1分钟后重启该机器。这个功能可以帮助服务器在确实停止心跳后能够重新恢复心跳。如果你想使用该特性,你必须在内核中装入"softdog" 内核模块用来生成实际的设备文件。想要达到这个目的, 首先输入 "insmod softdog" 加载模块。然后,输入"grep misc /proc/devices" 注意显示的数字 (should be 10). 然后, 输入"cat /proc/misc | grep watchdog" 注意输出显示出的数字(should be 130)。现在你可以生成设备文件使用如下命令:"mknod /dev/watchdog c 10 130" 。



node LVS-master

node LVS-slave

#与uname -n保持一致,第一个为主节点,第二个为副节点

ping_group group1 192.168.2.121 192.168.2.127

respawn root /usr/lib/heartbeat/ipfail

#ping和respawn用来测试网络连接,ping后面接外网网关或者其他可靠的设备的IP,如果这个IP一旦ping不通了(意味该机的外网down了),则利用respawn调用/usr/lib/heartbeat/ipfail来主动进行切换。

apiauth ipfail gid=root uid=root

启用ipfail进程的用户是root





四、配置验证文件

.vi /etc/ha.d/authkeys
auth 2

#1 crc

2 sha1 10jqka

#3 md5 Hello!



五、Ipvs配置
#!/bin/sh

VIP=192.168.56.199

RIP1=192.168.15.101

RIP2=192.168.15.103

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

case "$1" in

    start)

        echo " start LVS "

#      # set the Virtual  IP Address

       /sbin/ifconfig enp0s8:0 192.168.56.199 broadcast 192.168.56.199 netmask 255.255.255.255 up

       /sbin/route add -host 192.168.56.199 dev enp0s8:0

       /sbin/ipvsadm -C

       /sbin/ipvsadm -A -t  192.168.56.199:80 -s rr

       /sbin/ipvsadm -a -t  192.168.56.199:80 -r 192.168.56.101:80 -g

       /sbin/ipvsadm -a -t  192.168.56.199:80 -r 192.168.56.106:80 -g

        ;;

    stop)

        echo "close LVS Director"

        /sbin/ipvsadm -C

         /sbin/ifconfig eth1:0 down


        ;;

    *)

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

        exit 1

esac

(-s rr 是使用了轮叫算法,可以自行选择相应的算法,更改rr就可以了。

  ipvsadm -h查看帮助。-g 是使用lvs工作DR直接路由模式,也可自行修改

lvs 状态查看

操作步骤详细到命令行级别

查看LVS的连接情况: ipvsadm -L -n

查看LVS的吞吐量情况: ipvsadm -L -n -rate

查看LVS的统计信息: ipvsadm -L -n -stat

实时查看LVS连接状态变化: watch ipvsadm –ln

--ipvsadm命令参考

六、realserver配置

vi /etc/init.d/real.sh

#!/bin/bash

#description : start realserver

VIP=192.168.15.200

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

case "$1" in

start)

echo " start LVS of REALServer"

/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 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


;;

stop)

/sbin/ifconfig lo:0 down

echo "close LVS Directorserver"

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

;;

*)

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

exit 1

esac

此realserver为开起相关路由功能,修改它的执行权限,然后用./real.sh start来启动

注:也可不编写如上realserver直接配置,然后保存即可!(如下)



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(保存配置)



七、directord与VIP结合至heartbeat

vi /etc/ha.d/haresources

LVS-master ipvs ldirectord

Herartbeat默认寻找程序的路径为 :/etc/rc.d/init.d/   和/etc/ha.d



八、 slave机器配置

把主调度器121上的配置文件及脚本拷贝至从127机器上,并开放694端口

更改ha.cf配置文件

ucast eth0 192.168.2.127 #eth0的IP,此处从为从的IP

auto_failback off

master和slave启动:service heartbeat start

九、参考资料

http://faovic.javaeye.com/blog/147610

http://gsliuyang.blog.51cto.com/286500/223912

http://weijia.blog.51cto.com/616222/119853

LVS ipvsadm+heartbeat+ldirecrtord(DR)
http://88fly.blog.163.com/blog/s ... 6/?suggestedreading



回复

使用道具 举报

 楼主| abc 发表于 2018-11-29 13:59:40
lvs server
  1. #!/bin/sh

  2. VIP=192.168.56.200

  3. RIP1=192.168.56.101

  4. RIP2=192.168.56.103


  5. case "$1" in

  6.     start)

  7.         echo " start LVS "

  8. #      # set the Virtual  IP Address

  9.        /sbin/ifconfig enp0s8:0 $VIP broadcast $VIP netmask 255.255.255.255 up

  10.        /sbin/route add -host $VIP dev enp0s8:0

  11.        /sbin/ipvsadm -C

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

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

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

  15.         ;;

  16.     stop)

  17.         echo "close LVS Director"

  18.         /sbin/ipvsadm -C

  19.          /sbin/ifconfig enp0s8:0 down


  20.         ;;

  21.     *)

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

  23.         exit 1

  24. esac
复制代码


real server

  1. #!/bin/bash

  2. #description : start realserver

  3. VIP=192.168.56.200


  4. case "$1" in

  5. start)

  6. echo " start LVS of REALServer"

  7. /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

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

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

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

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


  12. sysctl -p


  13. ;;

  14. stop)

  15. /sbin/ifconfig lo:0 down

  16. echo "close LVS Directorserver"

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

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

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

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

  21. ;;

  22. *)

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

  24. exit 1

  25. esac
复制代码


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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