1.群集分类
·
1)负载均衡:提供服务器的响应和处理能力
·
2)高可用群集:保障服务器的可靠性(解决单点故障问题)
·
3)高性能群集:多个服务器资源整个为一个服务器(提高运算能力,如超级计算机,云环境)
2.集群结构
·
1)第一层:网络群集:LVS,KEEPALIVED,HAProxy的,Nginx的(upsteam)
·
2)第二层:MySQL的集群:主从复制,读写分离,MMMM(主主复制),心跳+ DRBD + MySQL的高可用方案
·
3)第三层:存储集群:NFS + KEEPALIVED + DRDB,HA-集群(红帽),MFS(分布式文件系统)
·
4)第四层:缓存:memcacge、nosql
·
5)第五层:代理层:CDN,Squid,varnish
3.用户访问
客户端 - >代理层 - >缓存层 - > Web群集 - >存储集群 - > MySQL群集
4.负载均衡群集三种模式
1)NAT:方便配置,负载调度器压力大(适用于内网环境,需做DNAT)
2)DR:NAT,TUN综合,但需做DNAT
3)TUN:缓解调度器压力,但每个服务器都需一个公网IP(网络分散全国各地,可加快访问)
5.LVS
1)章文嵩:1995
2)ipvsadm
6.LVS调度算法
1)轮询:依顺序将请求分发给网站
2)加权轮询:根据服务器性能,动态调整权值
3)最小连接:根据服务器的连接数分发给网络
4)加权最小连接:根据服务器的性能,最小连接数动态调整权值
7.部署LVS + NAT
实验环境:
主机IP | 主机名 | 服务器角色 |
192.168.100.10 (VM1) | Centos01 | Web1 |
192.168.100.20 (VM1) | Centos02 | Web2 |
192.168.100.30 (VM1) 192.168.192.164 (NAT) | Centos03 | LVS |
部署的Web-1
)vim /etc/sysconfig/network-scrips/ifcfg-ens37
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
NAME="ens37"
DEVICE="ens37"
ONBOOT="yes"
IPADDR=192.168.100.10
NETMASK=255.255.255.0
GATEWAY=192.168.100.30 //LVS内网ip
systemctl restart network
2.配置安装YUM
)rm -rf /etc/yum.repos.d/*
)vim /etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
3.部署的httpd
echo "Web1" >/var/www/html/index.html
systemctl start httpd && systemctl enable httpd
部署的Web-2
1.配置IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
NAME="ens37"
DEVICE="ens37"
ONBOOT="yes"
IPADDR=192.168.100.20
NETMASK=255.255.255.0
GATEWAY=192.168.100.30
systemctl restart network
配置安装YUM
rm -rf /etc/yum.repos.d/*
vim /etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
mount /dev/cdrom /mnt //
需要挂载系统安装光盘
3.部署的httpd
echo ‘Web2’ >/www/html/index.html
systemctl start httpd && systemctl enable httpd
部署网关+ LVS
需两块网卡,一块VMNET1(内网),第二块桥接/NAT(外网)
1.配置IP
vim /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
NAME="ens37"
DEVICE="ens37"
ONBOOT="yes"
IPADDR=192.168.100.30
NETMASK=255.255.255.0
cp /etc/sysconfig/network-scrips/ifcfg-ens37 /etc/sysconfig/network-scrips/ifcfg-ens33
vim /etc/sysconfig/network-scrips/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
systemctl restart network
2.配置安装YUM
rm -rf /etc/yum.repos.d/*
vim /etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
lsmod | grep ip_vs //过滤查看是否加载lvs
3.开启路由转发
4.配置负载分配策略
systemctl stop ipvsadm //清除原LVS规则
ipvsadm -A -t 192.168.192.164:80 -s rr //指定192.168.192.164:80作为调度器,监听客户端请求(192.168.192.164为LVS公网IP地址)
ipvsadm -a -t 192.168.192.164:80 -r 192.168.100.10:80 -m -w 1 //LVS使用NAT模式,将客户端web1 192.168.100.10:80加入到调度器的Web集群中,权值设为1
ipvsadm -a -t 192.168.192.164:80 -r 192.168.100.20:80 -m -w 1 //LVS使用NAT模式,将客户端web2 192.168.100.20:80加入到调度器的Web集群中,权值设为1
ipvsadm -S >/etc/sysconfig/ipvsadm //CentOS 7默认保存,也可执行此命令保存 )
详解:
-A:添加一条新的记录,记录调度器地址和端口
-a:添加一条新的记录,记录真实服务器(这里指的Web服务器)地址和端口
-t:指明调度器提供的是TCP服务
-s:指定算法;常用选项rr,wrr,lc,wlc,lblc,lblcr,dh,sh,sed,nq
-r:指定真实服务器(这里指的Web服务器)的地址和端口