一、群集的结构与工作模式
1.群集含义
Cluster,集群、群集
由多台主机构成,但对外只表现为一个整体
2.群集的类型
(1)负载均衡群集(Load Balancer)
(2)高可用群集 (High Available)
(3)高性能运算群集 (High Performance Computer)
二、负载均衡
(一)概念
1.负载均衡的结构
第一层,负载调度器(Load Balancer 或 Director)
第二层,服务器池(Server Pool)
第三层,共享存储(Share Storage)
2.负载均衡的工作模式
(1)地址转换(NAT)模式
(2)IP隧道(TUN)模式
不常用,所以就不研究了。
(3)直接路由(DR)模式
3.LVS的负载均衡调度算法
轮询(Round Robin)
加权轮询(Weighted Round Robin)
最少连接(Least Connections)
加权最少连接(Weighted Least Connections)
….
4.使用ipvsadm工具
(1)创建虚拟服务器
(2)添加、删除服务器节点
(3)查看群集及节点情况
(4)保存负载分配策略
三、构建LVS负载均衡群集(DR)
虚拟服务器的IP为192.168.8.114
LVS调度器IP为192.168.8.116
真实服务器IP为192.168.8.113、192.168.8.115
(一)LVS调度器配置
1.群集接口开启
网卡为eth0
设置群集接口
ifconfig eth0:0虚拟服务器的IP broadcast 虚拟服务器的IP netmask 255.255.255.255 up
此配置为临时配置,重启IP就没有了。
ifconfig eth0:0 192.168.8.114 broadcast 192.168.8.114 netmask 255.255.255.255 up
2.添加群集路由
[root@sutang ~]# route add -host 192.168.8.114 dev eth0:0
192.168.8.114为虚拟服务器IP。
3.配置LVS-DR群集策略
(1)安装ipvsadm
ipvs的管理工具。
ipvs是ip虚拟服务器。
yum 或 rpm安装
我采用光盘安装
cd /media/CentOS_6.5_Final/Packages
rpm -ivh ipvsadm-1.26-2.el6.x86_64.rpm
(2)添加一个虚拟服务器
[root@sutang ~]# ipvsadm -A -t 192.168.8.114:80 -s rr
rr是指在这台服务器上采用轮询的负载均衡调度算法
-A添加一台虚拟服务器
-t说明虚拟服务器提供的是tcp服务
-s采用什么调度算法,选项有:rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq
(3)添加真实服务器
[root@sutang ~]# ipvsadm -a -t 192.168.8.114:80 -r 192.168.8.113:80 -g -w 1
[root@sutang ~]# ipvsadm -a -t 192.168.8.114:80 -r 192.168.8.115:80 -g -w 1
-a 添加真实服务器
-t 采用tcp服务
-r 真实服务器
-g 指定LVS的工作模式为直接路由模式
-w 真实服务器的权值
[root@sutang ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.8.114:80 rr
-> 192.168.8.113:80 Route 1 0 0
-> 192.168.8.115:80 Route 1 0 0
-L 显示内核虚拟服务器表
-n 输出IP地址和端口的数字形式
(4)保存配置
ipvsadm-save >/etc/sysconfig/ipvsadm
(5)启动ipvsadm
service ipvsadm start
(二)真实服务器配置
两台服务器都同样配置。
1.安装测试服务httpd
yum -y install httpd
我们测试httpd的负载均衡。
2.关闭响应ARP请求
vim /etc/sysctl.conf
在文件末尾添加如下内容:
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
修改并生效
sysctl -p
3.配置群集端口
ifconfig lo:0 192.168.8.114 broadcast 192.168.8.114 netmask 255.255.255.255 up
此为临时配置,重启network失效。
其中的IP为虚拟服务器的IP。
4.添加群集路由
[root@su ~]# route add -host 192.168.8.114 lo:0
5.分别在两台真实服务器添加测试页
echo "115" > /var/www/html/index.html
echo "113" > /var/www/html/index.html
(三)测试
启动真实服务器的httpd服务、关闭真实服务器的防火墙与selinux
浏览器直接访问虚拟服务器的IP
刷新一下
查看连接情况
[root@sutang ~]# ipvsadm -Lnc
IPVS connection entries
pro expire state source virtual destination
TCP 01:19 FIN_WAIT 192.168.8.112:60422 192.168.8.114:80 192.168.8.115:80
TCP 01:04 FIN_WAIT 192.168.8.112:60420 192.168.8.114:80 192.168.8.115:80
TCP 01:05 FIN_WAIT 192.168.8.112:60421 192.168.8.114:80 192.168.8.113:80
TCP 01:03 FIN_WAIT 192.168.8.112:60419 192.168.8.114:80 192.168.8.113:80
四、构建LVS负载均衡群集(NAT)
LVS调度器两张网卡(一张内网、一张外网):内网IP(192.168.88.116)、外网IP(192.168.8.116)
两台真实服务器(只需将网关设置为LVS调度器的内网网卡)(192.168.88.113、192.168.88.115)
内网网段:192.168.88.0/24
虚拟服务器的IP绑定在LVS调度器的外网网卡上。
(一)LVS调度器配置
1.开启路由转发
此步是为了使用防火墙的nat表转换功能的必须步骤。
vim /etc/sysctl.conf
启用并生效
sysctl -p
2.启用防火墙的nat表
利用防火墙的nat表将内网IP转换为外网IP。
iptables -t nat -F //清除之前的iptable的规则
iptables -t nat -A POSTROUTING -s 内网网段 -o 外网网卡 -j SNAT --to-source 外网IP
#将源地址为内网地址的数据包转换为外网网卡的IP
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o eth0 -j SNAT --to-source 192.168.8.116
下面这条是应用于公网IP隔一段时间就变时采用。
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o eth0 -j SNAT --to-source MASQUERADE
3.配置LVS-NAT群集策略
(1)安装ipvsadm
ipvs的管理工具。
ipvs是ip虚拟服务器。
yum 或 rpm安装
此处我采用光盘安装
cd /media/CentOS_6.5_Final/Packages
rpm -ivh ipvsadm-1.26-2.el6.x86_64.rpm
(2)添加一个虚拟服务器
[root@sutang ~]# ipvsadm -A -t 192.168.8.116:80 -s rr
rr是指在这台服务器上采用轮询的负载均衡调度算法
-A添加一台虚拟服务器
-t说明虚拟服务器提供的是tcp服务
-s采用什么调度算法,选项有:rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq
(3)添加真实服务器
[root@sutang ~]# ipvsadm -a -t 192.168.8.116:80 -r 192.168.88.113:80 -m
[root@sutang ~]# ipvsadm -a -t 192.168.8.116:80 -r 192.168.88.115:80 -m
-a 添加真实服务器
-t 采用tcp服务
-r 真实服务器
-m 指定LVS的工作模式为NAT模式
[root@sutang ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.8.116:80 rr
-> 192.168.88.113:80 Masq 1 0 0
-> 192.168.88.115:80 Masq 1 0 0
-L 显示内核虚拟服务器表
-n 输出IP地址和端口的数字形式
(4)保存配置
[root@sutang ~]# ipvsadm-save >/etc/sysconfig/ipvsadm
(5)启动ipvsadm
service ipvsadm start
(二)真实服务器
--------------第一台服务器----------------
1.安装测试服务httpd
yum或rpm安装
2.修改网卡网关
将网卡网关修改为LVS调度器的内网网卡IP。
vim /etc/sysconfig/network-scripts/ifcfg-eth0
3.编写测试页
echo "115" > /var/www/html/index.html
-------------第二台服务器---------------
1.安装测试服务httpd
yum或rpm安装
2.修改网卡网关
3.编写测试页
echo "113" > /var/www/html/index.html
(三)测试
浏览器直接访问外网IP
刷新一下:
查看连接情况
[root@sutang ~]# ipvsadm -Lnc
IPVS connection entries
pro expire state source virtual destination
TCP 00:13 TIME_WAIT 192.168.8.112:52326 192.168.8.116:80 192.168.88.115:80
TCP 00:45 TIME_WAIT 192.168.8.112:52328 192.168.8.116:80 192.168.88.113:80
TCP 00:57 TIME_WAIT 192.168.8.112:52334 192.168.8.116:80 192.168.88.113:80
TCP 00:10 TIME_WAIT 192.168.8.112:52325 192.168.8.116:80 192.168.88.113:80
TCP 00:57 TIME_WAIT 192.168.8.112:52333 192.168.8.116:80 192.168.88.115:80
TCP 01:12 TIME_WAIT 192.168.8.112:52338 192.168.8.116:80 192.168.88.115:80
TCP 00:46 TIME_WAIT 192.168.8.112:52329 192.168.8.116:80 192.168.88.115:80
TCP 00:46 TIME_WAIT 192.168.8.112:52330 192.168.8.116:80 192.168.88.113:80
TCP 00:58 TIME_WAIT 192.168.8.112:52336 192.168.8.116:80 192.168.88.113:80
TCP 00:57 TIME_WAIT 192.168.8.112:52335 192.168.8.116:80 192.168.88.115:80
TCP 00:57 TIME_WAIT 192.168.8.112:52332 192.168.8.116:80 192.168.88.113:80
TCP 00:56 TIME_WAIT 192.168.8.112:52331 192.168.8.116:80 192.168.88.115:80