redhatAS4.2 安装集群LVS
  环境描述:
  本文在配置LVS时使用三台linux,一台做Directorserver (192.168.0.25) ,两台做realserver(192.168.0.127 192.168.0.12,在配置lvs+heartbeat时又添加了一台(192.168.0.126)做为备份主节点,虚拟VIP: 192.168.0.100
  软件列表:
  ipvsadm-1.24.tar.gz
  libnet.tar 下载地址:http://www.packetfactory.net/libnet/ 稳定版本是:1.1.2.1
  e2fsprogs 可以用rpm 安装光盘
  heartbeat-2.0.2.tar.gz
  2.6内核已经集成IPVS内核补订了,所以不再需要重新编译内核.
  配置此集群分以下几种情况:
  (1)、配置基于DR模式Lvs集群
  (2)、配置基于隧道模式Lvs集群
  (3)、配置基于高可用Lvs+heartbeat
  (4)、此种配置方式可以加强LVS的主节点的高安全性前提下(主节点简称DR,备份主节点DRbak),考虑充分利用资源可以将DRbak做为realserver
  一、配置基于DR模式Lvs集群
  1、下载ipvsadm管理程序
  http://www.linuxvirtualserver.org/software/
  注意对应自己的内核版本
  ipvsadm-1.24.tar.gz
  tar zxvf ipvsadm-1.24.tar.gz
  cd ipvsadm-1.24
  make
  make install
  注意在make时可能会出现很多错误的信息,请按照如下操作就可以心编译正常
  ln -s /usr/src/kernels/2.6.9-22.EL-i686/ /usr/src/linux
  cd ipvsadm-1.24
  make
  make install
  2、配置VIP脚本
  [root@ns ~]#more /etc/init.d/lvsDR
  #!/bin/sh
  #create in 20060812 by ghb
  # description: start LVS of Directorserver
  VIP=192.168.0.100
  RIP1=192.168.0.127
  RIP2=192.168.0.128
  #RIPn=192.168.0.128~254
  GW=192.168.0.1
  . /etc/rc.d/init.d/functions
  case $1 in
  start)
  echo "start LVS of DirectorServer"
  # set the Virtual IP Address
  /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
  /sbin/route add -host $VIP dev eth0:0
  #Clear IPVS table
  /sbin/ipvsadm -C
  #set LVS
  /sbin/ipvsadm -A -t $VIP:80 -s rr #(如果需要session保持添加-p 默认保持300秒)
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
  #/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g
  #Run LVS
  /sbin/ipvsadm
  #end
  ;;
  stop)
  echo "close LVS Directorserver"
  /sbin/ipvsadm -C
  ;;
  *)
  echo "Usage: $0" {start|stop}
  exit 1
  esac
  (-s rr 是使用了轮叫算法,可以自行选择相应的算法,更改rr就可以了,ipvsadm -h查看帮助。-g 是使用lvs工作DR直接路由模式,也可自行修改)
  如果有多个realserver直接添加就可以了,之后启动此脚本就可以了。
  3、配置realserver脚本
  #!/bin/bash
  #description : start realserver
  #create in 20060812 by ghb
  VIP=192.168.0.100
  /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
  /sbin/route add -host $VIP dev lo:0
  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
  #end
  此脚本使realserver不响应arp请求,将此脚本分别在realserver上执行就可以了。
  测试:分别启动realserver上的httpd服务
  在realserver1 执行 echo "This is realserver1" > /var/www/html/index.html
  在realserver2 执行 echo "This is realserver2" > /var/www/html/index.html
  打开IE浏览器输入http://192.168.0.100 应该可以分别看到:This is realserver1 和 This is realserver1。
  二、配置基于隧道模式Lvs集群
  1、安装ipvsadmin方法和上面一样,在此略过
  2、配置LVS directorserver 脚本
  [root@ns ~]# more /etc/init.d/tunlvs
  #!/bin/sh
  # description: start LVS of Directorserver
  VIP=192.168.0.100
  RIP1=192.168.0.127
  RIP2=192.168.0.128
  #RIPn=192.168.0.n
  GW=192.168.0.1
  . /etc/rc.d/init.d/functions
  case $1 in
  start)
  echo "start LVS of DirectorServer"
  # set the Virtual IP Address
  /sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up
  /sbin/route add -host $VIP dev tunl0
  #Clear IPVS table
  /sbin/ipvsadm -C
  #set LVS
  /sbin/ipvsadm -A -t $VIP:80 -s rr
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i
  #/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -i
  #Run LVS
  /sbin/ipvsadm
  #end
  ;;
  stop)
  echo "close LVS Directorserver"
  ifconfig tunl0 down
  /sbin/ipvsadm -C
  ;;
  *)
  echo "Usage: $0" {start|stop}
  exit 1
  esac
  3、配置realserver
  [root@localhost ~]# more /etc/init.d/tunl
  #!/bin/sh
  # ghb in 20060812
  # description: Config realserver tunl port and apply arp patch
  VIP=192.168.0.100
  . /etc/rc.d/init.d/functions
  case $1 in
  start)
  echo "Tunl port starting"
  ifconfig tunl0 $VIP netmask 255.255.255.255 broadcast $VIP up
  /sbin/route add -host $VIP dev tunl0
  echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
  echo "2" > /proc/sys/net/ipv4/conf/tunl0/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)
  echo "Tunl port closing"
  ifconfig tunl0 down
  echo "1" > /proc/sys/net/ipv4/ip_forward
  echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
  ;;
  *)
  echo "Usage: $0" {start|stop}
  exit 1
  esac
  如果有多个Virutal IP,可以使用tunl0:0,tunl0:1...。
  此脚本分别在realserver上执行,目的使realserver忽略arp响应,并设定vip.
  测式同样按照上面的方法测试。
  三、配置基于高可用Lvs+heartbeat
  1、确定LVS使用DR或/tun模式,请对照上面的配置。
  本例使用tun模式
  Director server 端脚本文件
  [root@ns ~]# more /etc/init.d/tunlvs
  #!/bin/sh
  # description: start LVS of Directorserver
  VIP=192.168.0.100
  RIP1=192.168.0.127
  RIP2=192.168.0.128
  #RIPn=192.168.0.n
  GW=192.168.0.1
  . /etc/rc.d/init.d/functions
  case $1 in
  start)
  echo "start LVS of DirectorServer"
  # set the Virtual IP Address
  /sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up
  /sbin/route add -host $VIP dev tunl0
  #Clear IPVS table
  /sbin/ipvsadm -C
  #set LVS
  /sbin/ipvsadm -A -t $VIP:80 -s rr
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i
  #/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -i
  #Run LVS
  /sbin/ipvsadm
  #end
  ;;
  stop)
  echo "close LVS Directorserver"
  ifconfig tunl0 down
  /sbin/ipvsadm -C
  ;;
  *)
  echo "Usage: $0" {start|stop}
  exit 1
  esac
  realserver端同样使用上面的配置文件就可以。
  2、安装heartbeat
  libnet.tar 下载地址:http://www.packetfactory.net/libnet/ 稳定版本是:1.1.2.1
  e2fsprogs 可以用rpm 安装光盘
  heartbeat-2.0.2.tar.gz 下载地址: http://www.linux-ha.org/download/
  2.1安装
  tar -zxvf libnet.tar.gz
  cd libnet
  ./configure
  make
  make install
  tar zxf heartbeat-1.99.4.tar.gz
  cd heartbeat-1.99.4
  ./ConfigureMe configure --disable-swig --disable-snmp-subagent
  make
  make install
  cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/
  cp ldirectord/ldirectord.cf /etc/ha.d/
  配置:
  主配置文件(/etc/ha.d/ha.cf)
  #debugfile /var/log/ha-debug
  logfile /var/log/ha-log #指名heartbeat的日志存放位置
  #crm yes #支持ClusterResourceManager(集群资源管理)功能
  #bcast eth1 #指明心跳方式使用以太广播方式,并且是在eth1接口上进行广播。
  logfacility local0
  keepalive 2#指明心跳时间为2秒(即每两秒钟在eth1上发送一次广播)。
  deadtime 30#指定在30秒内没有心跳信号,则立即切换服务。
  warntime 10 #指明心跳延迟的时间为十秒。当10秒钟内备份机不能联系上主机(当前活动的服务器,即无心跳信号),就会往日志中写入一个警告日志,但此时不会切换服务。
  initdead 120 #With some configurations, the network takes some time to start working after a reboot. This is a separate deadtime to handle that case. It should be at least twice the normal deadtime.
  udpport 694#Use port number 694 for bcast or ucast communication. This is the default, and the official IANA registered port number.
  baud 19200
  serial /dev/ttyS0
  mcast eth0 225.0.0.1 694 1 0
  # 当主节点恢复后,是否自动切回
  auto_failback on
  # stonith用来保证共享存储环境中的数据完整性
  #stonith baytech /etc/ha.d/conf/stonith.baytech
  # watchdog能让系统在出现故障1分钟后重启该机器。这个功能可以帮助服务器在确实停止心跳后能够重新恢复心跳。
  # 如果使用该特性,则在内核中装入softdog内核模块,用来生成实际的设备文件,输入insmod softdog加载模块。
  # 输入grep misc /proc/devices(应为10),输入cat /proc/misc | grep watchdog(应为130)。
  # 生成设备文件:mknod /dev/watchdog c 10 130 。
  #watchdog /dev/watchdog
  node ns.ghb.com #Mandatory. Hostname of machine in cluster as described by uname -n.
  node nsbak.ghb.com
  # 默认heartbeat并不检测除本身之外的其他任何服务,也不检测网络状况。
  # 所以当网络中断时,并不会进行Load Balancer和Backup之间的切换。
  # 可以通过ipfail插件,设置'ping nodes'来解决这一问题。详细说明参考hearbeat文档。
  #ping 192.168.136.1 172.16.0.1
  ping_group group1 192.168.136.1 192.168.136.2
  respawn root /usr/lib/heartbeat/ipfail
  apiauth ipfail gid=root uid=root
  # 其他一些插件可以在/usr/lib/heartbeat下找到
  #apiauth ipfail uid=hacluster
  #apiauth ccm uid=hacluster
  #apiauth cms uid=hacluster
  #apiauth ping gid=haclient uid=alanr,root
  #apiauth default gid=haclient
  资源文件(/etc/ha.d/haresources):
  ns.aaa.com IPaddr::192.168.0.127/24/eth0 httpd
  #设置ns.aaa.com为主节点,集群服务器的ip地址为192.168.0.127 netmask 为255.255.255.240集群的服务有httpd
  认证文件(/etc/ha.d/authkeys),选取一种认证方式,这个文件的权限必须是600
  auth 1
  1 crc
  #2 sha1 sha1_any_password
  #3 md5 md5_any_password
  使用同样的方法配置节点2
  备份节点192.168.0.126 上的heartbeat和apache的配置与节点1要完全相同,lvs配置也要相同。
  2.2
  完装完毕进行测试,关闭主节点机器,另一台自动接管,主节点恢复后自动接管回服务。如果以上测试没有问题,那么开始和lvs整合。
  配置Ldirectord
  Ldirectord的作用是监测Real Server,当Real Server失效时,把它从Load Balancer列表中删除,恢复时重新添加,在安装heartbeat时已经安装了Ldirectord。
  配置(/etc/ha.d/ldirectord.cf):
  # Global Directives
  checktimeout=3
  checkinterval=1
  fallback=127.0.0.1:80
  autoreload=yes
  logfile="/var/log/ldirectord.log"
  quiescent=yes
  # A sample virual with a fallback that will override the gobal setting
  virtual=192.168.0.100:80
  real=192.168.0.127:80 gate
  real=192.168.0.128:80 gate
  fallback=127.0.0.1:80 gate
  service=http
  request="test.html"
  receive="Test Page"
  virtualhost="www.xxxxxx.net"
  scheduler=rr
  #persistent=600
  #netmask=255.255.255.255
  protocol=tcp
  在每个Real Server的中添加监控页:
  echo "Test Page" >> /var/www/html/test.html
  修改heartbeat的资源文件/etc/ha.d/haresources
  ns.ghb.com 192.168.0.100 tunlvs ldirectord httpd
  现在可以在主节点192.168.0.25上启动heartbeat
  /etc/init.d/heartbeat start
  在备份节点也启动heartbeat /etc/init.d/heartbeat start
  测试:关闭主节点,备份节点将自动接管directorserver服务。(主节点正常时用ifconfig 是可以看tunl接可口的,而备份节点用ifconfig 命令是看不到的,只有在接管主节点服务后才是可以见的)
  至此第三部分配置完毕。
  四、考虑充份使用资源,将备份节点也做为realserver.
  在主备director server 上都要做如下配置
  1.director server 需要在脚本文件中将添加realserver,我们预先设置所有机器为realserver。
  #!/bin/sh
  # description: start LVS of Directorserver
  VIP=192.168.0.100
  RIP1=192.168.0.127
  RIP2=192.168.0.128
  RIP3=192.168.0.25
  RIP4=192.168.0.126
  GW=192.168.0.1
  . /etc/rc.d/init.d/functions
  case $1 in
  start)
  echo "start LVS of DirectorServer"
  # set the Virtual IP Address
  /sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up
  /sbin/route add -host $VIP dev tunl0
  #Clear IPVS table
  /sbin/ipvsadm -C
  #set LVS
  /sbin/ipvsadm -A -t $VIP:80 -s rr
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -i
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -i
  #Run LVS
  /sbin/ipvsadm
  #end
  ;;
  stop)
  echo "close LVS Directorserver"
  ifconfig tunl0 down
  /sbin/ipvsadm -C
  ;;
  *)
  echo "Usage: $0" {start|stop}
  exit 1
  esac
  2.修改/etc/ha.d/ldirectord.cf
  # Global Directives
  checktimeout=3
  checkinterval=1
  fallback=127.0.0.1:80
  autoreload=yes
  logfile="/var/log/ldirectord.log"
  quiescent=yes
  # A sample virual with a fallback that will override the gobal setting
  virtual=192.168.0.100:80
  real=192.168.0.126:80 gate
  real=192.168.0.127:80 gate
  real=192.168.0.128:80 gate
  real=192.168.0.25:80 gate
  fallback=127.0.0.1:80 gate
  service="http"
  request="test.html"
  receive="Test Page"
  virtualhost="www.xxxxx.net"
  scheduler=rr
  #persistent=600
  #netmask=255.255.255.255
  protocol=tcp
  3、将realserver的启动脚本加入到主节点,和备份节点中,并且这个脚本的启动级必须先于heartbeat,关闭级必须后于heartbeat
  chkconfig tunl on 添加到系统启动
  4、创建closetunl启动脚本,为启动director server 做准备
  more /etc/init.d/closetunl
  #!/bin/sh
  # create in 200608 ghb
  # description: close tunl0 and arp_ignore
  VIP=192.168.136.100
  . /etc/rc.d/init.d/functions
  case $1 in
  start)
  echo "start director server and close tunl"
  ifconfig tunl0 down
  echo "1" > /proc/sys/net/ipv4/ip_forward
  echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
  ;;
  stop)
  echo "start Real Server"
  ifconfig tunl0 $VIP netmask 255.255.255.255 broadcast $VIP up
  /sbin/route add -host $VIP dev tunl0
  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
  ;;
  *)
  echo "Usage: lvs" {start|stop}
  exit 1
  esac
  chmod 755 /etc/init.d/closetunl
  5、修改/etc/ha.d/haresources
  ns.wdxc.com closetunl 192.168.0.100 tunlvs ldirectord httpd
  6、测试
  http://192.168.0.100 应该可以轮到四台机器上
  配置完毕
  总结,上面就是本人在本配置LVS+heartbeat过程,本过程还没涉及到共享存储这块,我觉得集群整套方案,共享存储是相当重要的部分,简易实现通过NFS也可以实现共享存储,但是在要求更大,更快时,可以要考虑其的存储方式如SAN等。还有就是后端数据库之间的负载,同步问题等,本人将在下一步解决关于共享存储,数据库负载方面的问题。也希望大家可以给出一些方案或是想法,大家共同讨论一下,共同学习,共同进步。

linux lvs 配置的更多相关文章

  1. LVS配置

    今天面试时,突然被面试官问到怎样用shell命令搞定某个文件夹下java代码行数的统计. 想了一下,基本思路就是找到这个文件夹下面的所有java文件,然后每个文件统计一下代码,外层套个for循环,叠加 ...

  2. Linux CentOS 配置Tomcat环境

    一.下载Tomcat 下载Tomcat方式也有两种,可以参考我的前一篇博文Linux CentOS配置JDK环境,这边就不再赘述. 二.在Linux处理Tomcat包 1.创建tomcat文件夹 mk ...

  3. Linux下配置一个VNC服务器

    在Linux下配置一个VNC服务器,并设置2个用户,要求其中一个用户登录时不需要输入密码. 然后在客户端使用ssh+vncview的方式访问. 1确认vnc安装 2配置vncserver 3测试vnc ...

  4. Linux网络配置基础

    linux网络配置常见有两种:桥接模式(Bridge)与NAT模式,还有一种Host-Only模式由于其局限性通常被舍弃就不加以说明了,下面我们介绍下桥接模式(Bridge)和NAT模式. 桥接模式( ...

  5. 在 Linux 上配置一个 syslog 服务器

    syslog服务器可以用作一个网络中的日志监控中心,所有能够通过网络来发送日志的设施(包含了Linux或Windows服务器,路由器,交换机以及其他主机)都可以把日志发送给它. 通过设置一个syslo ...

  6. Linux 目录配置

    一.Linux 目录配置标准:FHS FHS(Filessystem Hierarchy Standard) 的重点在于规范每个特定的目录下应该要放置什么样子的数据. FHS依据文件系统使用的频繁与否 ...

  7. 在Linux上配置xampp后远程访问域名报错

    在Linux上配置xampp后远程访问域名报错: New XAMPP security concept: Access to the requested object is only availabl ...

  8. linux下配置mysql默认编码utf8

    linux下配置mysql默认编码utf8 下面是需要在对应地方加入的配置 [client] default-character-set=utf8 [mysqld] character-set-ser ...

  9. Linux下配置Lamp

    linux下配置lamp步骤: 一.快速安装Apache+PHP5+MySql 先更新: # yum update 然后安装LAMP环境:(163的yum源上只有php5.1.6 mysql 5.0. ...

随机推荐

  1. Java8新特性Optional、接口中的默认方法与静态方法

    Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ...

  2. 旧书重温:0day2【6】bind_shell

    学习了以上5节课,我们学到了很多知识,例如如何动态获取指定函数的地址:我们也学到了很多经验,例如如何发现代码中的错误,如何用od定位到错误,并修正. 有了以上积累,今天我们继续实验bind_shell ...

  3. IOS Quartz 2D 学习(1)

    IOS提供两种创建图形的途径: 1.OpenGL. 2.Quartz.Core Animation.UIKit图形支持. UIKit的图形系统 1.视图绘画周期: DrawRect方法,在任何时候,当 ...

  4. 你该了解的10个 Python 模块

    Python很优雅.使用以下模块有助于保持你的代码整洁.易于维护.欢迎补充. Docopt.忘了optparse和argparse吧,使用docstring来构建优雅的.高可读性.复杂(如果你有这个需 ...

  5. LeetCode Construct Binary Tree from String

    原题链接在这里:https://leetcode.com/problems/construct-binary-tree-from-string/description/ 题目: You need to ...

  6. 洛谷 P1930 亚瑟王的宫殿 Camelot

    传送门 题目大意:棋盘有骑士有王,让所有点跳到一个点,求所有棋子跳的步数和,和最小. 题解:bfs+枚举 王的人生: 1):自己走到聚集点 2):某个骑士来到王这里,两个棋子一起到聚集点 3):王走几 ...

  7. Java Config 注解

    java config是指基于java配置的spring.传统的Spring一般都是基本xml配置的,后来spring3.0新增了许多java config的注解,特别是spring boot,基本都 ...

  8. WPF简单模拟QQ登录背景动画(转)

    介绍 之所以说是简单模拟,是因为我不知道QQ登录背景动画是怎么实现的.这里是通过一些办法把它简化了,做成了类似的效果 效果图 大体思路 首先把背景看成是一个4行8列的点的阵距,X轴Y轴都是距离70.把 ...

  9. 手把手使用 Webpack 4 建立 VUE 项目

    手把手使用 Webpack 4 建立 VUE 项目 安装 node.js 略 安装 cnpm 略 安装 webpack cnpm install webpack -g 安装 vue-cli cnpm ...

  10. thinkphp的select和find的区别(转)

    做普通PHP项目转thinkphp时,字段自动完整匹配,ajax时前台数据一直取不到,后发现是select和find返回数据集有差异,参考下面方法修改. $this->ajaxReturn($m ...