1)负载均衡集群:将客户机的访问请求分给多个服务器,从而缓解整个系统压力
2)高可用集群:故障切换,双机热备,多机热备
3)高性能运算集群:通过专业的硬件和软件将多个服务器的CPU、内存等资源整合在一起,形成一个超级计算机
1)第一层:负载调度器
2)第二层:服务器池
3)第三层:共享存储
1)地址转换:简称NAT模式,调度器作为所有服务器的网关
2)ip隧道:简称TUN模式,调度器仅作为客户机的访问入口,各服务器有独立的公网ip,不经过调度器直接回应客户机,通过专用ip隧道与调度器通信
3)直接路由:简称DR模式,与TUN模式类似,但调度器与个服务器处于同一网络,通过本地网络连接
加载ip_vs模块:modprobe ip_vs
查看模块信息:cat /proc/net/ip_vs
1)轮询:将收到的请求按顺序平均分给每台服务器,
2)加权轮询:根据服务器的处理能力分配请求,保证处理能力强的服务器处理更多的访问请求
3)最少连接:根据服务器的已连接数进行分配,将请求有限分配给连接数少的节点
4)加权最少连接:在服务器性能差异较大时,性能好的将处理更多的请求
1)ipvsadm命令
命令 解释
-A 添加虚拟服务器(调度器——网关)
-t 指定虚拟IP地址(调度器外网ip)和端口
-s 指定调度算法
rr:轮询 wrr:加权轮询 lc:最少轮询 wlc:加权最少连接
-a 添加要调度的服务器
-r 指定服务器的ip和端口
-m 使用NAT模式
-g 使用DR模式
-i 使用TUN模式
-w 指定权重(权重为0表示暂停该节点)
-d 从服务器池中删除指定服务器
-D 删除此虚拟服务器
ipvsadm-save/service ipvsadm save 保存策略(需重定向指定文件,不指定则为默认文件)
ipvsadm-restore 恢复策略
1)打开调度器路由转发功能
vim /etc/sysctll.conf
net.ipv4.ip_forward = 1
sysctl -p
2)设置SNAT
1)配置负载均衡策略
ipvsadm -At 172.16.17.21:80 -s rr
例:ipvsadm -at 172.16.17.21:80 -r 192.168.1.1:80 -m -w 1
2)配置节点服务器
安装配置httpd
此处省略
LVS负载调度器作为集群的访问入口,但不作为网关使用,服务器池中各节点各自有两个网卡,一个网卡属于内网负责接收调度器的调度,另一个接入Internet,由各节点将响应数据发送给客户机
以下是我的拓扑图,是在虚拟机中完成的,系统是CentOS 6.5
1)配置虚拟IP地址(VIP)
vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
ONBOOT=yes
IPADDR=192.168.1.1
NETMASK=255.255.255.0
2)因为调度器和个服务器要用到公用VIP,为避免冲突,关闭内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
3)配置负载均衡策略
ipvsadm -At 192.168.11.114:80 -s rr
ipvsadm -at 192.168.11.114:80 -r 192.168.11.115 -g -w 1
ipvsadm -at 192.168.11.114:80 -r 192.168.11.116 -g -w 1
4)配置节点服务器
① 配置VIP
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.1.2
NETMASK=255.255.255.255
② 添加VIP本地访问路由
vim /etc/sysctl.conf
/sbin/route add -host 192.168.11.114 dev lo:0
route add -host 192.168.11.114 dev lo:0
③ 关闭内核重定向参数
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
④ 安装并配置httpd
5)测试LVS集群
在前面的基础上,添加网关服务器,集群内所有机器只有一个私有ip和VIP,客户机访问网关的公网IP时映射到调度器的VIP,再有服务器通过网关直接回复数据给客户机
以下是我的拓扑图,配置省略
192.168.11.0是模拟的外网,1.0是内网
Keepalived采用VRRP(虚拟路由冗余协议)热备份协议,有多台路由器组成一个热备组,通过VIP对外提供服务,每个热备组同一时刻只有一个主路由器提供服务,其他处于备份状态,
yum -y install kernel-devel openssl-devel popt-devel
yum -y install ipvsadm
1)解压
2)配置安装
./configure --prefix=/ --with-kernel-dir=/usr/src/kernel/2.6.32-431.e16.x86_64
make && make install
3)设置开机启动
chkconfig --add keepalived
chkconfig keepalived on
Keepalived配置文件位置/etc/keepalived/keepalive.conf,global_defs {…}为热备部分配置,virtual_server{…}部分为调度器部分
global_defs {
router_id KEEP #本服务器的名称
}
vrrp_instance VI_1 { #热备组名
state BACKUP #热备状态,master为主服务器,backup为备份服务器
interface eth0 #承载VIP的网卡接口
virtual_router_id 1 #热备组ID
priority 99 #优先级,越大优先级越高
advert_int 1 #通告间隔描述(心跳频率)
authentication { #认证类型,每个组必须相同
auth_type PASS #认证类型(当前为密码认证)
auth_pass 123456 #密码
}
virtual_ipaddress {
192.168.1.2 #指定漂移地址(VIP)可以有多个
}
}
virtual_server 192.168.1.2 80 { #虚拟服务器VIP,端口
delay_loop 6 #健康检查时间(秒)
lb_algo rr #调度算法(当前为轮询)
lb_kind DR #群集工作模式(当前为DR)
!persistence 50 #连接保持时间(!为注释)
protocol TCP #应用采用的协议(当前为tcp)
real_server 192.168.1.3 80 { #第一个web节点的ip,端口
weight 1 #权重
TCP_CHECK { #健康检查方式
connect_port 80 #检查的端口
connect_timeout 3 #连接超时(秒)
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试间隔
}
}
}
主服务器:Keepalived的virtual_server{…}部分相当于LVS的所有配置
service Keepalived start
ip addr show dev eth0
从服务器:
service Keepalived start
ip addr show dev eth0
① 配置VIP
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.1.2
NETMASK=255.255.255.255
② 添加VIP本地访问路由
vim /etc/sysctl.conf
/sbin/route add -host 192.168.11.114 dev lo:0
route add -host 192.168.11.114 dev lo:0
③ 关闭内核重定向参数
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
④ 安装并配置httpd