本文简单记录下Linux环境下lvs-nat模式(基础调度器路由转发)负载均衡简单配置,揭开这个神秘东西的面纱,让你五分钟钟搞定配置LVS-NAT。
- 环境配置: 三台centos 6.5
- 调度器: DIP:
192.168.1.11
VIP:192.168.1.110
- web服务器: RIP:
192.168.1.9
RIP:192.168.1.10
一、前期服务器环境搭建
由于是之前kvm克隆了dr模式下的服务器,这里和dr下边的IP和服务器环境信息是一样的。只不过是web服务器取消了arp禁响应和VIP配置。
(1) 配置lamp环境,这里不做演示。
(2)关闭selinux、调度器和所有web服务器上的iptables
(3)设置时间同步,保证服务器时间一致(后期nfs或数据同步用到,包括session同步需要)
二、配置调度器
1. 开启IP转发
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
可以查看是否开启。
2. 调度器安装ipvsadm和keepalived
首先安装依赖包:
yum -y install gcc make openssl-devel openssl net-snmp net-snmp-devel popt popt-devel
安装ipvs和keepalived:
yum install ipvsadm keepalived -y
chkconfig ipvsadm on
chkconfig keepalived on
修改keepalived.conf配置文件配置服务器IP信息:
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER #备用机器这里需要更改成BACKUP
interface eth0
virtual_router_id 51
priority 100 #备机优先级设置低于100的数值。数值越高优先级越高。
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.110
}
}
virtual_server 192.168.1.110 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.1.9 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.1.10 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
配置完以后启动keepalived:
service keepalived start
现在通过ipvsadm查看ip信息:
[root@natlb ~]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.110:http rr persistent 50
-> 192.168.0.9:http Masq 3 0 0
-> 192.168.0.10:http Masq 3 0 0
三、真实服务器配置
这个无需做特殊配置,只是把网关设置成VIP就可以了。设置以后可以用route查看网关。
好了。配置完成。测试下论坛访问,依旧是1.9和1.10轮流提供web访问。
拓展部分:
如果需要进行nfs系统配置,请参考《Linux下网络文件系统NFS的配置实现数据共享》
如果要进行mysql主从配置,请参考《mysql数据库如何设置互为主从》
DR模式配置过程,请参考《Linux(centos 6.X)环境下LVS-DR模式负载均衡集群系统快速配置》
补充LVS添加url检测防止假死:
real_server 192.168.1.120 80 {
weight 50
HTTP_GET {
url {
path /ok.php
status_code 200
}
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
}
}