一、LVS群集应用基础
1.群集的类型
1)负载均衡集群:将客户机的访问请求分给多个服务器,从而缓解整个系统压力
2)高可用集群:故障切换,双机热备,多机热备
3)高性能运算集群:通过专业的硬件和软件将多个服务器的CPU、内存等资源整合在一起,形成一个超级计算机
2.负载均衡的分层结构
1)第一层:负载调度器
2)第二层:服务器池
3)第三层:共享存储
3.负载均衡的工作模式
1)地址转换:简称NAT模式,调度器作为所有服务器的网关
2)ip隧道:简称TUN模式,调度器仅作为客户机的访问入口,各服务器有独立的公网ip,不经过调度器直接回应客户机,通过专用ip隧道与调度器通信
3)直接路由:简称DR模式,与TUN模式类似,但调度器与个服务器处于同一网络,通过本地网络连接
二、LVS虚拟服务器
1.LVS是针对Linux内核开发的一个负载均衡项目,是Linux内核的一部分,默认编译为ip_vs模块
加载ip_vs模块:modprobe ip_vs
查看模块信息:cat /proc/net/ip_vs
2.LVS负载调度算法
1)轮询:将收到的请求按顺序平均分给每台服务器,
2)加权轮询:根据服务器的处理能力分配请求,保证处理能力强的服务器处理更多的访问请求
3)最少连接:根据服务器的已连接数进行分配,将请求有限分配给连接数少的节点
4)加权最少连接:在服务器性能差异较大时,性能好的将处理更多的请求
2.LVS管理工具——ipvsadm
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 恢复策略
三、构建LVS负载均衡群集
1.LVS-NAT地址转换模式
1)打开调度器路由转发功能
vim /etc/sysctll.conf
net.ipv4.ip_forward = 1
sysctl -p
2)设置SNAT
2.配置负载分配策略
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
此处省略
3.测试LVS集群
LVS-DR
一、LVS-DR概述
LVS负载调度器作为集群的访问入口,但不作为网关使用,服务器池中各节点各自有两个网卡,一个网卡属于内网负责接收调度器的调度,另一个接入Internet,由各节点将响应数据发送给客户机
二、配置多个公网ip的LVS-DR
以下是我的拓扑图,是在虚拟机中完成的,系统是CentOS 6.5
1.配置负载调度器
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的LVS-DR
1.概述
在前面的基础上,添加网关服务器,集群内所有机器只有一个私有ip和VIP,客户机访问网关的公网IP时映射到调度器的VIP,再有服务器通过网关直接回复数据给客户机
以下是我的拓扑图,配置省略
192.168.11.0是模拟的外网,1.0是内网
LVS+Keepalived高可用集群
一、keepalived概述
Keepalived采用VRRP(虚拟路由冗余协议)热备份协议,有多台路由器组成一个热备组,通过VIP对外提供服务,每个热备组同一时刻只有一个主路由器提供服务,其他处于备份状态,
二、Keepalived的安装与控制
1.安装支持包
yum -y install kernel-devel openssl-devel popt-devel
yum -y install ipvsadm
2.编译安装Keepalived
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的配置文件
1.Keepalived主配置文件介绍
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 #重试间隔
}
}
}
四、配置LVS+Keepalived高可用集群
以下是我的拓扑图
1.按照上面的配置文件模板配置好Keepalived主服务器和从服务器
主服务器:Keepalived的virtual_server{…}部分相当于LVS的所有配置
service Keepalived start
ip addr show dev eth0
从服务器:
service Keepalived start
ip addr show dev eth0
2.配置web节点服务器
① 配置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