为了丰富21运维网站内容和记录下配置服务器步骤,本文简单记录下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 } }