今天所做的努力
都是在为明天积蓄力量

负载均衡lvs+nat

安装环境:
CentOS6.5
Ipvsadm
【Keepalived】
LVS NAT 模式
拓扑图 注:LVS bkup、File...、DB....等是可选; LVS master配置
1、设置双网卡 eth0 、eth1
Eth0--à192.168.1.10
Eth1-à192.168.10.100
2、开启IP转发表,开启了LVS的路由功能。
echo "1" >/proc/sys/net/ipv4/ip_forward
3、安装ipvsadm
yum install --nogpgcheck ipvsadm.`uname -m`
4、关闭iptables、selinux Real Server 配置: 1、配置IP对应的内网IP,并设置默认网关为 192.168.1.10(也可用route add default gw 192.168.1.10),并重启网卡;
【此处我们搭建web服务器httpd】
安装httpd   yum install  -y  httpd
在APACHE默认的首页文件里面写入20、21……等等,以便区别是那台服务器;
测试web服务器能正常访问;
【所有Real Server 配置均如上】 LVS Master服务器上
ipvsadm -C
ipvsadm -At 192.168.10.100:80 -s rr
ipvsadm -at 192.168.10.100:80 -r 192.168.1.20:80 -m
ipvsadm -at 192.168.10.100:80 -r 192.168.1.21:80 -m
【注意】此一定要关闭iptables否则会导致不能正常访问;
解释: ipvsadm –C 清除之前设置的所有规则 ipvsadm -At 192.168.10.100:80 -s rr A代表新增一个端口,t代表tcp传输,-s rr表示是以轮叫的算法配置(这里调度算法可根据服务器或者网站的相关配置自行选择其它算法); ipvsadm -at 192.168.10.100:80 -r 192.168.1.20:80 –m a和r代表访问192.168.10.100时转移至IP 192.168.1.20 .-m代表nat模式(-g代表DR模式,-i 代表ip-tun模式) ,t代表tcp传输
 
以上设置后若没有错误可通过 http:// 192.168.10.100 访问啦,第一次访问应该是192.168.1.20,第二次应该是192.168.1.21……这里返回那台服务器就是调度算法起作用了;此处经常配置导致无法访问的是iptables 和 Real Server上的网关,可在WEB服务器上用netstat 查看到有很多TCP的SYN状态,此应该是网关方面不正确导致;
可通过 ipvsadm

1
2
3
4
5
6
7
[root@LVSMaster~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.100:http rr
-> 192.168.1.20:http           Masq    1      1          3
-> 192.168.1.21:http           Masq    1      0          4

查看到当前的访问; 将数据文件和数据库与web服务器分开存放: 试想每一台Real Server上都存放相同的Web数据和数据库,若有上百台web服务器,数据同步就是一个不小的考验;将文件与web服务器分开存放是一种不错的选择,文件服务器只存放文件、数据库服务器只存放数据库信息,可用Windows文件共享、linux samba web服务器通过内网共享的路径调用即可,这样达到了数据的唯一性、一更新全更新;
Ipvsadm会根据规则对请求的报文转发到相应的服务器,但并不检测对应的服务器是否是正常状态,若对应的web服务器出故障,则此次会话将不能正常访问,解决此问题此入了keepalived: Keepalived Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。 Keepalived安装: yum install --nogpgcheck keepalived.`uname -m` 安装keepalived后要对配置文件/etc/keepalived/keepalived.conf 修改,大概配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
! Configuration Fileforkeepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER# 标示为主lvs
interface eth0# HA检测端口
virtual_router_id 51# 主备的virtual_router_id 必须相同
priority 100# 优先级,备lvs要比主lvs稍小
advert_int 1# VRRP Multicast 广播周期秒数
authentication {# 定义认证
auth_type PASS# 认证方式为口令认证
auth_pass 1111# 定义口令
}
virtual_ipaddress {# 定义vip
192.168.10.100# 多个vip可换行添加
}
}
virtual_server 192.168.10.100 80 {
delay_loop 6# 每隔6秒查看realserver状态
lb_algo dh# 调度算法为dh
lb_kind NAT# lvs工作模式为NAT模式
nat_mask 255.255.255.0
persistence_timeout 50# 同一IP 的连接50秒内被分配到同一台realserver(测试时建议改为0)
protocol TCP# 用TCP监测realserver的状态
real_server 192.168.1.20 80 {# 定义realserver
weight 3# 定义权重
TCP_CHECK {# 注意TCP_CHECK和{之间的空格,如果没有的话只会添加第一个realserver
connect_timeout 3# 三秒无响应超时
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.1.21 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.1.22 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

以上安装后重启 ipvsadm和keepalived,在重启前最好是清除ipvsadm的规则ipvsadm -C
其它的配置则相同,
LVS Bkup服务器与LVS master是一样的,是master的备机,当然master 中断后自动启用bkup服务器,只是在配置文件/etc/keepalived/keepalived.conf 里面
state MASTER和 priority 100 不一样;为state BACKUP ,priority 99
配置ipvsadm+keepalived 建议可用我们提供的安装脚本一键安装部署;以上安装是介绍手动安装过程以掌握其基本配置原理。。
LVS不仅仅是用于web负载均衡,可用于很多方面;比如 数据库、DNS、MAIL、FTP..........等等,读者可深入研究灵活掌握运用;

赞(1)
未经允许不得转载:流觞博客 » 负载均衡lvs+nat
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

今天所做的努力都是在为明天积蓄力量

联系我们留言建议