十年经验网站开发公司排名优化价格
1.概念
【1】负载均衡
- 负载均衡(Load Balance)是集群技术(Cluster)的一种应用。指将负载(工作任务)进行平衡、分摊到多个单元操作上进行运行,从而提高并发处理能力。
- 作用:
[1] 解决并发压力,提高应用处理性能(增加吞吐量,加强网络处理能力)
[2] 提供故障转移,实现高可用。
[3] 通过添加或者减少服务器数量,提供网站伸缩性(扩展性)。
[4] 安全防护
【2】高可用集群
高可用集群(High Availability Cluster,简称HA Cluster):是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务程序对外不间断的提供的服务,把因软件、人为造成的 故障对业务的影响降到最小的程度。
【3】pacemaker
pacemaker:pacemaker作为linux系统高可用HA的资源管理器,位于HA集群架构中的资源管理,资源代理层,它不提供底层心跳信息传递功能。(心跳信息传递是通过corosync来处理的这个使用有兴趣的可以在稍微了解一下,其实corosync并不是心跳代理的唯一组件,可以用hearbeat等来代 )。pacemaker管理资源是通过脚本的方式来执行的。我们可以将某个服务的管理通过shell,python等脚本语言进行处理,在多个节点上启 动相同的服务时,如果某个服务在某个节点上出现了单点故障那么pacemaker会通过资源管理脚本来发现服务在改节点不可用。
- 功能
Pacemaker的功能:检测和恢复节点和服务级别的故障
•存储不可知,不需要共享存储
•资源不可知,任何可以脚本化的都可以集群
•支持保护(也称为STONITH的首字母缩写,稍后解密),以确保数据完整性
•支持大型和小型集群
•支持quorate和资源驱动集群
•支持几乎任何冗余配置
•自动复制配置,可从任何节点更新
•能够指定集群范围内的服务订购、托管和反托管
【4】acemake+Corosync+heartbeat
• Pacemaker - 集群资源管理器(CRM),负责启动和停止服务,而且保证它们是一直运行着的以及某个时刻某服务只在一个节点上运行(避免多服务同时操作数据造成的混乱),利用集群基础构建提供的信息和成员管理能力,探测并恢复节点以及在其控制下的资源的失效切换,以实现高可用性。
• Corosync - 消息层组件,管理成员关系、消息和仲裁。
•Resource Agents - 资源代理,用来控制服务启停,监控服务状态的脚本集合,这些脚本将被LRM调用从而实现各种资源启动、停止、监控等等。任何资源代理都要使用同一种风格,接收四个参数:{start|stop|restart|status},包括配置IP地址的也是。
【5】服务器集群(Cluster)
使得多个服务器节点能够协同工作,根据目的的不同,服务器集群可以分为:
[1] 高性能集群:将单个重负载的请求分散到多个节点进行处理,最后在将处理结果进行汇总。
[2] 高可用集群:提高冗余单元,避免单点故障。
[3] 负载均衡集群:将大量的并发请求分担到多个处理节点。由于单个处理节点的故障不影响整个服务器,负载均衡集群同时也实现了高可用。
【6】 LVS(Linux Virtual Server,linux虚拟服务器)。
基于不同的网络技术,LVS支持多种负载均衡机制,包括i:VS/NAT(基于网络地址转换技术)、VS/TUN(基于IP隧道技术)、VS/DR(基于直接路由技术)。
不管使用哪种技术,LVS都不直接处理请求,而是将请求转发到后面真正的服务器(Real Server)。不同的机制,决定了相应包如何返回到客户端。
【4】 三种方法的有缺点比较:
[1] VS/NAT
- 优点:对后端服务器的操作系统无要求,只需要一个IP地址配置在调度器上,服务器组可以用私有的IP地址。支持端口映射。
- 缺点:请求和相应报文都需要通过调度器,伸缩能力有限。要求服务器和调度器在同一个VLAN。需要将服务器的调度网关指向调度器。对于那些将IP地址或者端口号在报文数据中传送的网络服务,需要编写相应的应用模块来转换报文数据中的IP地址或者端口号。
[2] VS/TUN
- 优点:不需要调度应答报文,性能高。服务器和调度器可以不在同一个VLAN。支持广域负载均衡。
- 缺点:所有的服务必须支持“IP Tunneling”协议,要安装内核模块,配置复杂。有建立IP隧道的开销。服务器上直接绑定虚拟IP,风险很大。不支持端口映射。
[3] VS/DR
- 优点:与VS/TUN相比,没有IP隧道的开销,性能最好。
- 缺点:要求调度器与服务器都有一块网卡连在同一物理网段(同一VLAN)上。要求服务器网路i设备不做ARP响应,或者能将报文重定向到本地的Socket端口上。服务器上直接绑定虚拟IP,风险很大。不支持端口映射。
2.实验
该实验解决的问题是单点故障,实现高可用,高可用主要是解决单点故障,也就双机热备
实验环境:该实验需要四台虚拟机server1 server2 server3 server4,其中将server1 server2作为调度器,server3 server4 作为服务器。
确认server1与server2可以通讯
ping通即可。
【1】设置免密登陆(在serve1与serve2中,此过程也可以不做)
此处以server1为例:
[root@server1 ~]# ssh-keygen[root@server1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.7.3
【2】在真机中挂载
[root@foundation18 ~]# mount /home/kiosk/Desktop/rhel-server-7.6-x86_64-dvd.iso /var/www/html/rhel7.6
mount: /var/www/html/rhel7.6: WARNING: device write-protected, mounted read-only.
[root@foundation18 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 3912920 0 3912920 0% /dev
tmpfs 3928820 43476 3885344 2% /dev/shm
tmpfs 3928820 10072 3918748 1% /run
tmpfs 3928820 0 3928820 0% /sys/fs/cgroup
/dev/mapper/rhel_foundation18-root 267575652 64172212 203403440 24% /
/dev/sda6 1038336 683528 354808 66% /boot
tmpfs 785764 48 785716 1% /run/user/1000
/dev/loop0 4391278 4391278 0 100% /var/www/html/rhel7.6
【3】配置yum仓库
在server1-server4中配置yum仓库:
[DVD]
name=rhel7.6
baseurl=http://172.25.18.250/rhel7.6
gpgcheck=0[HighAvailability]
name=HighAvailability
baseurl=http://172.25.18.250/rhel7.6/addons/HighAvailability
gpgcheck=0[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.18.250/rhel7.6/addons/ResilientStorage
gpgcheck=0
【4】安装软件包
安装的包将创建一个禁用密码的hacluster用户。虽然这对于在本地运行pc命令是没问题的,但是账户需要一个登陆密码来执行诸如同步corosync配置或在其他节点上启动和停止集群等任务。所以为hacluster用户设置一个密码,在两个结点上似乎用相同的密码。
[root@server1 ~]# yum install -y pacemaker pcs psmisc policycoreutils-python
[root@server1 ~]# ssh server2 "yum install -y pacemaker pcs psmisc policycoreutils-python"
[root@server1 ~]# systemctl enable --now pcsd.service[root@server1 ~]# ssh server2 "systemctl enable --now pcsd.service"
[root@server1 ~]# echo westos | passwd --stdin hacluster # 为hacluster用户设置一个密码,在两个节点上使用相同的密码
[root@server1 ~]# ssh server2 "echo westos | passwd --stdin hacluster"
[root@server1 yum.repos.d]# yum install httpd -y
3.实现高可用集群
【1】认证
[root@server1 ~]# pcs cluster auth server1 server2 #使用pcs集群auth认证为hacluster用户
[root@server1 ~]# pcs cluster setup --name mycluster server1 server2 #使用同一节点上的pc集群设置来生成和同步corosyno配置
【2】启动集群
[root@server1 ~]# pcs cluster start --all[root@server1 ~]# systemctl start corosynsc.service
[root@server1 ~]# systemctl start pacemaker.service[root@server1 ~]# pcs status #查看状态输出
【3】验证corosync的安装
root@server1 ~]# corosyns-cfgtool -s #用corosync-cfgtool检查集群通信是否顺畅
【4】stonith
[root@server1 ~]# pcs property set stonith-enabled=false #启用STONITH的集群选项设置为false
[root@server1 ~]# crm_verify -L
【5】一个添加资源
我们的第一个资源将是一个惟一的IP地址,集群可以在任何一个节点上打开这个IP地址。无论集群服务运行在何处,最终用户都需要一个一致的地址来与之联系。这里选择172.25.14.100(此地址必须尚未在网络上使用!不要重用某个节点已经配置的IP地址)作为浮动地址,并且命名为ClusterIP,并告诉集群检查它是否每30秒运行一次。
[root@server1 ~]# pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=172.2
4.测试
此时以存在172.25.14.100
【1】HA : 高可用集群应用场景-->解决单点故障(执行故障转移)
如果一台服务器集群套件关掉,vip就会到另外一台
关掉server1后,Cluster被server2接管,ip会自动移动到server2中
注意:重新启动server1,Cluster也不会切回server1
【2】网络故障
del删除172.25.14.100并查看,等待后再次ip addr查看发现又出现了。
【3】验证:当server2关闭httpd时,是否会迁移至server1
关闭apache
此时不会迁移到server1