您的位置:首页 > 运维架构 > 网站架构

直接路由的高可用LVS集群配置

2014-07-02 16:54 323 查看

直接路由的高可用LVS集群配置:

调度服务器IP:(106.3.43.240)192.168.11.100,节点服务器分别为:192.168.11.101,192.168.11.102

一、安装ipvsadmin:

1、yum -y install ipvsadmin(推荐用第一种方法)

2、下载http://www.linuxvirtualserver.org/software/,找到相应的版本:

注意对应自己的内核版本

  ipvsadm-1.24.tar.gz

  tar zxvf ipvsadm-1.24.tar.gz

  cd ipvsadm-1.24

  make

  make install

  要想编译正常,需要把内核做一个软件连接到安装目录:

  ln -s /usr/src/kernels/2.6.9-22.EL-i686/ /usr/src/linux

  cd ipvsadm-1.24

  make

  make install

二、配置调度服务器:

1、添加节点:

先清除:

/sbin/ipvsadm -C

添加:

/sbin/ipvsadm -A -t 192.168.11.100:80 -s rr #(如果需要session保持添加-p 默认保持300秒)

  /sbin/ipvsadm -a -t 192.168.11.100:80 -r 192.168.11.101:80 -g

  /sbin/ipvsadm -a -t 192.168.11.100:80 -r 192.168.11.102:80 -g

  #/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g(多个节点)

#/sbin/ipvsadm -d -r $VIP:80 -r $RIP3:80 -g(删除节点)

说明:1、选项-a表示添加服务器、-t用来指定VIP地址及TCP端口、-r用来指定RIP地址及TCP端口,-m表示使用NAT群集模式(-g

DR模式、-I TUN模式),-w用来设置权后重(权重为0时表示暂停节点)。

2、需要删除整个虚拟服务器时,使用选项-D并指定虚拟IP地址即可,无需指定节点。例如若执行“ipvsadm –D –t 192.168.11.101:80”,则删除此虚拟服务器。

2、添加虚拟IP到第一块网卡(外网)并路由(只有一个网卡,他的地址:106.3.43.240):

/sbin/ifconfig eth0:0 192.168.11.100 broadcast 192.168.11.255 netmask 255.255.255.255 up

  /sbin/route add -host 192.168.11.100 dev eth0:0

3、运行LVS

/sbin/ipvsadm

4、以上写成一个脚本运行也可:

#vi/etc/init.d/lvsrs

#!/bin/sh

# description: start LVS of Directorserver

VIP=192.168.11.100

RIP1=192.168.11.101

RIP2=192.168.11.102

#RIPn=192.168.11.103~254(添加其它节点)

GW=192.168.11.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直接路由模式)

三、配置节点服务器:

1、配置网络:

/sbin/ifconfig lo:0 192.168.11.100 broadcast 192.168.11.255 netmask 255.255.255.255 up

  /sbin/route add -host 192.168.11.100 dev lo:0

2、修改sysct1.conf:

sysctl -w net.ipv4.ip_forward=0

sysctl -w net.ipv4.conf.lo.arp_ignore=1

sysct1 -w net.ipv4.conf.lo.arp_announce=2

sysct1 -w net.ipv4.conf.all.arp_ignore=1

sysct1 -w net.ipv4.conf.all.arp_announce =2

或者:

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

或者vi sysctl

net.ipv4.ip_forward=0

net.ipv4.conf.lo.arp_ignore=1

net.ipv4.conf.lo.arp_announce=2

net.ipv4.conf.all.arp_ignore=1

net.ipv4.conf.all.arp_announce =2

执行:sysctl -p

3、写成脚本如下:

#!/bin/bash

  #description : start realserver

  VIP=192.168.11.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上的httpd服务(节点服务器的www/html文件夹,可以共用NAS存储挂载上去)

  在realserver1 执行 echo "This is realserver1" > /var/www/html/index.html

  在realserver2 执行 echo "This is realserver2" > /var/www/html/index.html

  打开IE浏览器输入http://192.168.11.100 应该可以分别看到:This is realserver1 和 This is realserver1。

查看节点状态:

#ipvsadm -L -n

查看负载连接情况:

#ipvsadm -Lnc

LVS的负载调度算法

针对不同的网络服务和配置需要,LVS调度器提供多种不同的负载调度算法,其中最常用的四种得法包括:轮询、加权轮询、最少

连接、加权最少连接。

轮询(Round Robin):将收到的访问请求按照顺序轮流分配给群集中的各个节点(真实 服务器),均等的对待每一台服务器,而不

管服务器实际的连接数和系统负载。

加权轮询(Weighted Round Robin):根据真实服务器的处理能力轮流分配收到的访问请 求,调度器可以自动查询各节点的负载情

况,并动态调整其权重。这样可以保证处理能力强的服务器承担更多的访问流量。

最少连接(Least Connections):根据真实服务器已建立的连接数进行分配,将收到的访 问请求优先分配给连接数最少的节点。如

果所有的服务器节点性能相近,采用这种方式可以更好的均衡负载。

加权最少连接(Weighted Least Connections):在服务器节点的性能差异较大的情况下,可以为真实服务器自动调整权重,权得较

高的节点将承担更大比例的活动连接负载。

五、给调度服务器添加备份:

1、下载heartbeatak或者直接安装:yum -y install heartbeat

说明:需要安装:epel-release包,32位:wget http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm 64位:wgethttp://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm

修改epel.repo文件:

编译/etc/yum.repos.d/epel.repo,做如下改动

#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch

mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

改为:

baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch

#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

2、配置heartbeat

#chkconfig --levels 235 heartbeat on

复制三个文件:

# cp /usr/share/doc/heartbeat-3.0.4/ha.cf /etc/ha.d/ #ha.cf HA的配置文件

# cp /usr/share/doc/heartbeat-3.0.4/haresources /etc/ha.d/ #haresources 资源文件

# cp /usr/share/doc/heartbeat-3.0.4/authkeys /etc/ha.d/ #HA节点间的验证文件

配置:

# vi /etc/ha.d/ha.cf

debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility local0

keepalive 2

deadtime 30

warntime 10

initdead 120

udpport 694

ucast eth1 1.1.1.2 #心跳

auto_failback on

node DR1

node DR2

ping 172.16.1.1 172.16.1.11 #网关与另一个节点IP

respawn hacluster /usr/lib/heartbeat/ipfail

deadping 30

apiauth ipfail uid=hacluster

use_logd yes

conn_logd_time 60

# vi /etc/ha.d/authkeys #定义认证的keys

auth 1

1 crc

#chmod 600 /etc/ha.d/authkeys 修改authkeys文件权限

# vi/etc/ha.d/haresources #配置HA资源

DR1 IPaddr::192.168.11.100/24/eth0 httpd

启动heartbeat:

#service heartbeat start

六、也可使用keepalived给调度服务器添加备份

1、安装keepalived

#yum -y install kernel kernel-devel keepalived

#chkconfig --levels 235 keepalived on

2、配置:

vi /etc/keepalived/keepalived.conf

global_defs {

notification_email {

test@163.com

}

notification_email_from root@localhost

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state MASTER # 备份服务器上将 MASTER 改为 BACKUP

interface eth0 # HA 监测网络接口

virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同

priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小

advert_int 2 # VRRP Multicast 广播周期秒数

authentication {

auth_type PASS #VRRP 认证方式

auth_pass 1111 #VRRP 口令字

}

virtual_ipaddress {

192.168.11.100 # VRRP HA 虚拟地址 如果有多个VIP,继续换行填写

}

}

virtual_server 192.168.11.100 80 {

delay_loop 2 # 每隔 6 秒查询 realserver 状态

lb_algo rr #lvs 算法

lb_kind DR # Direct Route

persistence_timeout 50 # 同一IP 的连接60 秒内被分配到同一台realserver

protocol TCP # 用 TCP 协议检查 realserver 状态

real_server 192.168.11.101 80 {

weight 3 #(权重)

TCP_CHECK {

connect_timeout 10 #(10秒无响应超时)

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 192.168.11.102 80 {

weight 3 #(权重)

TCP_CHECK {

connect_timeout 10 #(10秒无响应超时)

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

说明:备份调度服务器主要改二个地方:

state BACKUP # 备份服务器上将 MASTER 改为 BACKUP

priority 99 # 主、备机取不同的优先级,主机值较大,备份机值较小

启动:service keepalived start

七、通过piranha给调度服务器添加备份

1、安装:yum -y install piranha

2、启动:

#/etc/init.d/piranha-gui start #启动WEB配置界面

#/usr/sbin/piranha-passwd #设置web登录密码,默认用户名:piranha

#service pulse start #启动pulse

3、打开web:http://192.168.11.100:3636,进行配置

4、也可以直接配置lvs.cf文件:

#vi /etc/sysconfig/ha/lvs.cf

serial_no = 41

#primary_private = 10.0.0.1

service = lvs

backup_active = 1

backup = 192.168.11.99

#backup_private = 10.0.0.2

heartbeat = 1

heartbeat_port = 539

keepalive = 6

deadtime = 18

network = direct

debug_level = NONE

monitor_links = 1

syncdaemon = 1

virtual web_vip {

active = 1

address = 192.168.11.100 eth0:1

vip_nmask = 255.255.255.255

sorry_server = 127.0.0.1

port = 80

pmask = 255.255.255.255

use_regex = 0

load_monitor = none

scheduler = rr

protocol = tcp

timeout = 6

reentry = 15

quiesce_server = 0

server web01 {

address = 192.168.11.101

active = 1

port = 80

weight = 1

}

server web02 {

address = 192.168.11.102

active = 1

port = 80

weight = 1

}

}

附录:lvs.cf配置详解

———————————————–

serial_no = 41 #序号

primary = 192.168.0.112 #主LVS的公网IP

#primary_private = 10.0.0.1 #内部ip地址,用于心跳检测

service = elain_lvs #服务名称,可以自己定义

backup_active = 1 #是否有备份

backup = 192.168.1.211 #备份LVS的公网IP

#backup_private = 10.0.0.2

heartbeat = 1 #是否开启心跳

heartbeat_port = 649 #心跳的UDP端口

keepalive = 6 #心跳间隔(秒)

deadtime = 18 #如果主 LVS 节点在deadtime(秒)后没有答复,那么备份 LVS 路由器节点就会发起失效转移。

network = direct #LVS类型(direct,tunnel,nat),此处用direct类型

debug_level = NONE #debug信息级别

monitor_links = 1 #是否开启realserver的监视功能,和后面的scheduler(调度算法)以及load_monitor相关

syncdaemon = 1

virtual web_vip { #虚拟服务的名称,可自定义. 可定义多个virtual lvs服务

active = 1 #是否激活

address = 192.168.0.115 eth0:1 #虚拟服务所绑定的ip(vip)以及设备名

sorry_server = 127.0.0.1 #当rs全部失效时访问本机

vip_nmask = 255.255.255.255 #vip相对应的掩码

port = 80 #虚拟服务的端口

persistent = 30 #使用持久稳固的服务时间

pmask = 255.255.255.255 #如果使用持久会话,设置子网掩码

use_regex = 0 #expect中是否使用正则表达式

load_monitor = none #LVS 路由器能够使用 rup 或 ruptime 来监视各个真正服务器的载量。

scheduler = rr #LVS调度算法

protocol = tcp #虚拟服务使用的协议类型

timeout = 6 #realserver失效后从lvs路由条目中移除realserver所必须经过的时间(秒)

reentry = 15 #移除以后的realserver重新加入lvs路由条目所必须经过的时间(秒)

quiesce_server = 0

server web01 { #realsever服务名称,可自定义

address = 192.168.0.113 #realserver的ip地址

active = 1 #是否激活

port = 80 #rs端口

weight = 1 #权重

}

server web02 {

address = 192.168.0.114

active = 1

port = 80

weight = 1

}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: