`
xitong
  • 浏览: 6177051 次
文章分类
社区版块
存档分类
最新评论

【redhat5.5】linux服务器负载均衡LB Cluster的(LVS)技术 实现方案

 
阅读更多
【1】 LVS简介
LVS(linux virtual server)在linux内核中实现的基于IP层和基于内容请求分发的负载平衡调度解决方法,工作在传输层


【2】 LVS的三种路由方式
1】 VS-NAT
数据包流向: CIP-DGW-VIP-RIP-DIP-DGW-CIP
VS-NAT 最易于配置
不适用于大量服务器(20台)及大量数据更新的服务,所有流量都经挂分发器
可扩展性差
双向修改数据包的IP和端口
2】 VS-DR
数据包流向: CIP-DGW-VIP-RIP-DGW-CIP
能够同时处理大量的客户端请求(出站流量不经过分发器),多用于大量真是服务器或频繁更新的服务(服务器IP为真实IP)
可扩展性好
仅修改请求包的MAC地址
3】 VS-TUN
数据包流向: CIP-DGW-VIP-RIP-DGW-CIP
可以夸广播域,即不再同一局域网内
可扩展性好
仅修改请求进入IP

【3】 LVS的调度算法(10种)
1】循环调度(rr)
2】加权循环调度(wrr)
3】最少连接(lc)
4】加权最少连接(wlc)(默认)
5】基于地区的最少连接调度(lblc)

【4】 安装软件包
在安装镜像的Cluster文件夹内
yum -y install ipvsadmin

【5】 ipvsadmin 常用命令
ipvsadm -Ln 查看分发规测和分发情况
ipvsadm -Ln -c 查看连接状态
ipvsadm -L -n --rate 查看当前连接数
ipvsadm -L -n --stats 查看总连接数
ipvsadm -C 清空规则

【6】 LVS的常用架构搭建与配置
1】 VS-NAT路由方式的搭建与配置
a】网络拓扑结构
client 8.8.48.22 (CIP)
|
|
| 8.8.48.1
DGW
| 4.4.64.1
|
| 4.4.64.66 (VIP)
Director
| 10.10.68.1 (DIP)
|
------------------------------
| | |
A B C (real http server) (RIP)
10.10.68.201 10.10.68.202 10.10.68.203

b】 real http server (ABC)的配置

A(10.10.68.201)的配置
ifconfig eth0 10.10.68.201/24
route add default gw 10.10.68.1
echo 10.10.68.201 > /var/www/html/index.html

service httpd start

B(10.10.68.202) C(10.10.68.203)同上配置

c】 DGW 的配置

ifconfig eth0 8.8.48.1/24
ifconfig eth0:0 4.4.64.1/24
echo 1 > /proc/sys/net/ipv4/ip_forward

d】 Director 分发器的配置

ifconfig eth0 4.4.64.66/24
ifconfig eth0:0 10.10.68.1/24
echo 1 > /proc/sys/net/ipv4/ip_forward
route add default gw 4.4.64.1
ipvsadm -A -t 4.4.64.66:80 -s rr
ipvsadm -a -t 2.2.2.2:80 -r 10.10.68.201 -m
ipvsadm -a -t 2.2.2.2:80 -r 10.10.68.201 -m
ipvsadm -a -t 2.2.2.2:80 -r 10.10.68.201 -m
e】 Client 端 测试
ifconfig eth0 8.8.48.22/24
route add default gw 8.8.48.1

elinks -dump http://4.4.64.66

2】 VS-DR 路由方式搭建配置
a】 网络拓扑结构
Client 8.8.48.22
|
|
| 8.8.48.1
DGW
| 4.4.64.1
|
| 4.4.64.66 (VIP)
Director
| 4.4.64.100 (DIP)
|
-----------------------------------
| | |
A B C (real http server) (RIP)
eth0:4.4.64.201 4.4.64.202 4.4.64.203
lo:0 4.4.64.66 4.4.64.66 4.4.64.66

b】real http server (ABC)的配置
A(4.4.64.201)的配置
ifconfig lo:0 4.4.64.66/32 (VIP)
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce (关闭VIP的arp响应)
ifconfig eth0 4.4.64.201/24
route add default gw 4.4.64.1

echo 10.10.68.201 > /var/www/html/index.html
service httpd start

B(10.10.68.202) C(10.10.68.203)同上配置


c】DGW 的配置
ifconfig eth0 8.8.48.1/24
ifconfig eth0:0 4.4.64.1/24
echo 1 > /proc/sys/net/ipv4/ip_forward

d】 Director 分发器的配置
ifconfig eth0 4.4.64.100/24 #(顺序不能和下行颠倒,保证同一广播域数据由eth0 发出)
ifconfig eth0:0 4.4.64.66/24
echo 1 > /proc/sys/net/ipv4/ip_forward

route add default gw 4.4.64.1


ipvsadm -A -t 4.4.64.66:80 -s wrr
ipvsadm -a -t 2.2.2.2:80 -r 10.10.68.201 -g -w 10 (权重)
ipvsadm -a -t 2.2.2.2:80 -r 10.10.68.201 -g -w 20
ipvsadm -a -t 2.2.2.2:80 -r 10.10.68.201 -g -w 30

e】 配置完成 Client 端 测试
ifconfig eth0 8.8.48.22/24
route add default gw 8.8.48.1

elinks -dump http://4.4.64.66

【7】 LVS 实现多端口服务的负载均衡集群 ----->如FTP 服务
1】 网络拓扑结构
Client 8.8.48.22
|
|
| 8.8.48.1
DGW
| 4.4.64.1
|
| 4.4.64.66 (VIP)
Director
| 4.4.64.100 (DIP)
|
-----------------------------------
| | |
A B C (real ftp server) (RIP)
eth0:4.4.64.201 4.4.64.202 4.4.64.203
lo:0 4.4.64.66 4.4.64.66 4.4.64.66

2】 real ftp server (ABC)的配置
A(4.4.64.201)的配置
ifconfig lo:0 4.4.64.66/32 (VIP)
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce (关闭VIP的arp响应)
ifconfig eth0 4.4.64.201/24
route add default gw 4.4.64.1

vim /etc/vsftpd/vsftpd.conf
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=60000

touch /var/ftp/4.4.64.201
service vsftpd start

B(10.10.68.202) C(10.10.68.203)同上配置

3】 DGW 的配置
ifconfig eth0 8.8.48.1/24
ifconfig eth0:0 4.4.64.1/24
echo 1 > /proc/sys/net/ipv4/ip_forward

4】 Director 分发器的配置
ifconfig eth0 4.4.64.100/24 #(顺序不能和下行颠倒,保证同一广播域数据由eth0 发出)
ifconfig eth0:0 4.4.64.66/24
echo 1 > /proc/sys/net/ipv4/ip_forward
route add default gw 4.4.64.1
ipvsadm -C
iptables -t mangle -A PREROUTING -p tcp -d 4.4.64.66 --dport 21 -j MARK --set-mark 2100
iptables -t mangle -A PREROUTING -p tcp -d 4.4.64.66 --dport 50000:60000 -j MARK --set-mark 2100

ipvsadm -C
ipvsadm -A -f 2100 -s lc -p 300 (LVS保持持久性连接300秒:同一client 请求发给同一real ftp server)
ipvsadm -a -f 2100 -r 4.4.64.201 -g
ipvsadm -a -f 2100 -r 4.4.64.202 -g
ipvsadm -a -f 2100 -r 4.4.64.203 -g

5】 配置完成 Client 端 测试
ifconfig eth0 8.8.48.22/24
route add default gw 8.8.48.1

ftp 4.4.64.66

【8】 通过Piranha程序实现(VS-DR方式的HTTP LB Cluster)的高可用性
1】 Piranha简介
Piranha是一个用来监视、配置、和管理LVS集群的基于WEB的工具。它是维护/etc/sysconfig/ha/lvs.cf集群配置文件的默认工具。

2】 网络拓扑结构
Client 8.8.48.22
|
|
| 8.8.48.1
DGW ----------------------
| 4.4.64.1 |
| |
| 4.4.64.66 (VIP) |
Director(主) Director(备)
| 4.4.64.100 (DIP) | 4.4.64.200(DIP)
| |
---------------------------------------------------
| | |
A B C (real http server) (RIP)
eth0:4.4.64.201 4.4.64.202 4.4.64.203
lo:0 4.4.64.66 4.4.64.66 4.4.64.66

3】 DGW ,Director(主) 和 real http server 的配置同上 6
Director(备)的配置同Director(主) 然后测试 主备 都正常工作

4】 在Director(主)和Director(备)上均安装Piranha软件
yum install piranha
5】 Director(主)上的配置

a】 piranha-passwd #生成网站登录密码

依赖此配置文件:

/etc/sysconfig/ha/conf/httpd.conf
b】 /etc/init.d/piranha-gui start #启动服务
c】 netstat -naltp | grep :3636 #查看服务是否启动成功
d】 firefox http://4.4.64.100:3636/piranha/ #打开登录页面
e】 根据页面提示进行配置,配置完成后退出 查看生成的配置文件
cat /etc/sysconfig/ha/lvs.cf
serial_no = 20
primary = 4.4.64.100
service = lvs
backup_active = 1
backup = 4.4.64.200
heartbeat = 1
heartbeat_port = 539
keepalive = 3
deadtime = 10
network = direct
debug_level = NONE
monitor_links = 1
syncdaemon = 0
virtual web_lb {
     active = 1
     address = 4.4.64.66 eth0:0
     sorry_server = 127.0.0.1
     vip_nmask = 255.255.255.0
     port = 80
     send = "GET / HTTP/1.0\r\n\r\n"
     expect = "HTTP"
     use_regex = 0
     load_monitor = none
     scheduler = rr
     protocol = tcp
     timeout = 2
     reentry = 10
     quiesce_server = 0
     server RSA {
         address = 4.4.64.201
         active = 1
         port = 80
         weight = 1
     }
     server RSB {
         address = 4.4.64.202
         active = 1
         port = 80
         weight = 1
     }
     server RSC {
         address = 4.4.64.203
         active = 1
         port = 80
         weight = 1
     }
}

f】 scp /etc/sysconfig/ha/lvs.cf 4.4.64.200:/etc/sysconfig/ha/ #将配置文件拷贝到Director(备)上
g】 配置Director(主) 和 Director(备)的Sorry页面,当所有realserver都故障时,请求会被分发给director提供的sorry页面);
echo Sorry,please wait... > /var/www/html/index.html
service httpd start
h】 /etc/init.d/pulse start
Director(主) 和 Director(备) 均启动此服务
i】 ps aux | grep lvs #查看启动的进程
/usr/sbin/lvsd #此进程用于在主备director间检查心跳,并进行浮动资源部署和故障切换
/usr/sbin/nanny #此进程用于检查realserver健康情况,有几个realserver就有几个nanny进程
j】 两边都启动pulse服务后,可以看到在主director(2.2.2.100)上能看到浮动资源(VIP和lvs分发策略),而备director上并没有这些资源至此配置完成.
h】 进行测试
Director(主)故障后,自动切到Director(备)上 ,Director 恢复后 自动切回
三个realserver 都故障后,显示 Sorry 页面
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics