国家重点项目建设库网站,网络营销推广怎么做,wordpress改变上传目录,网站做导航条书接上回这次加了个keepalived
一、集群与分布式
1.1 集群介绍
**集群#xff08;Cluster#xff09;**是将多台计算机组合成一个系统#xff0c;以解决特定问题的计算机集合。集群系统可以分为以下三种类型#xff1a;
**LB#xff08;Load Balancing#xff0c;负载…书接上回这次加了个keepalived
一、集群与分布式
1.1 集群介绍
**集群Cluster**是将多台计算机组合成一个系统以解决特定问题的计算机集合。集群系统可以分为以下三种类型
**LBLoad Balancing负载均衡**多个主机组成的集群每个主机只承担一部分访问请求从而平衡负载。**HAHigh Availability高可用**通过冗余和故障切换机制避免单点故障SPOF。**HPCHigh-performance computing高性能计算**用于需要高计算能力的任务如科学计算和复杂的数据处理。
1.2 分布式系统
分布式系统是指将计算和存储分散在多台计算机上以提高系统的性能、可靠性和可扩展性。分布式系统的常见应用包括
**分布式存储**例如CephGlusterFSFastDFSMogileFS等。**分布式计算**例如Hadoop和Spark。**分布式应用**通过功能拆分和微服务架构将单一应用程序划分成多个小服务服务之间相互协调为用户提供最终价值。**分布式静态资源**将静态资源存储在不同的存储集群上以提高访问效率。**分布式数据和存储**使用key-value缓存系统来提高数据访问速度。**分布式计算**如使用Hadoop集群处理大数据业务。
1.3 集群设计原则
**可扩展性**集群的横向扩展能力即增加更多节点来提高性能。**可用性**系统的无故障时间SLA服务级别协议。**性能**系统的访问响应时间。**容量**单位时间内的最大并发吞吐量如C10K问题。
二、LVSLinux Virtual Server
2.1 LVS工作原理
LVS通过请求报文的目标IP、目标协议和端口将其调度转发至某个真实服务器RS。根据调度算法选择RS。LVS作为内核级功能工作在INPUT链的位置将发往INPUT的流量进行处理。
2.2 LVS集群体系架构
LVS的架构包括代理服务器VS、真实服务器RS、客户机IPCIP、虚拟服务器IPVIP、调度器IPDIP和真实服务器IPRIP。
2.3 LVS功能及组织架构
LVS主要用于高访问量业务通过负载均衡提高应用程序的可用性和可靠性。
2.4 LVS集群类型中的术语
**VS代理服务器**也称为Director Server (DS)或Dispatcher负责调度和负载均衡。**RS真实服务器**提供实际服务的服务器。**CIP客户机IP**客户端的IP地址。**VIP虚拟服务器IP**代理服务器的外网IP。**DIP调度器IP**代理服务器的内网IP。**RIP真实服务器IP**真实服务器的IP地址。
访问流程CIP – VIP DIP – RIP
三、LVS工作模式和命令
3.1 LVS集群的工作模式
LVS支持多种工作模式
**LVS-NAT**修改请求报文的目标IP通过DNAT实现多目标IP的负载均衡。**LVS-DR**直接路由模式通过封装新的MAC地址转发报文。**LVS-TUN**隧道模式通过IP隧道实现负载均衡。**LVS-FullNAT**修改请求报文的源和目标IP。
3.1.1 LVS的NAT模式
**请求阶段**客户端请求报文的源IP是CIP目的IP是VIP。**转发阶段**代理服务器修改目的IP为RIP转发给真实服务器。**响应阶段**真实服务器将响应报文发送回代理服务器代理服务器修改源IP为VIP再转发给客户端。
NAT模式的特点包括支持端口映射、必须是Linux系统等。
3.1.2 LVS的DR模式
DR模式Direct Routing通过直接路由实现负载均衡特点如下
代理服务器与RS在同一个物理网络。请求报文经由代理服务器但响应报文直接由RS发回客户端。不支持端口映射RS可以使用大多数操作系统。
3.1.3 工作模式总结比较
模式优点缺点真实服务器要求支持网络真实服务器数量真实服务器网关DR性能最好不支持跨网段Non-arp deviceLANHigh (100)Own routerTUN支持WAN服务器支持隧道模式TunnelingLAN/WANHigh (100)Own routerNAT端口转换性能瓶颈anyPrivateLow (10~20)LVS内网地址
3.2 LVS调度算法
LVS调度算法分为静态方法和动态方法
**静态方法**不考虑服务器状态仅根据算法进行调度。常见算法有轮询RR、加权轮询WRR、源地址哈希SH和目标地址哈希DH。**动态方法**根据服务器的负载状态进行调度。常见算法有最少连接LC、加权最少连接WLC、最短预期延迟SED、永不排队NQ等。
四、ipvsadm工具
4.1 ipvsadm工具选项
-A添加虚拟服务器。-D删除整个虚拟服务器。-C清空所有规则。-R重新加载规则。-s指定负载调度算法如轮询rr、加权轮询wrr、最少连接lc、加权最少连接wlc。-a添加真实服务器节点服务器。-d删除某个节点。-t指定VIP地址及TCP端口。-r指定RIP地址及TCP端口。-m使用NAT集群模式。-g使用DR模式。-i使用TUN模式。-w设置权重权重为0时表示暂停节点。-p 60保持长连接60秒。-l列出LVS虚拟服务器。-n以数字形式显示地址、端口等信息常与“-l”选项组合使用。
安装与配置
主程序/usr/sbin/ipvsadm规则保存工具/usr/sbin/ipvsadm-save规则重载工具/usr/sbin/ipvsadm-restore配置文件/etc/sysconfig/ipvsadm-configipvs调度规则文件/etc/sysconfig/ipvsadm
通过扩展后的内容进一步解释了每个部分的概念和具体操作有助于更全面地理解集群与分布式系统的设计与实现。 192.168.10.10 192.168.10.20 192.168.10.30 location ~ \.jsp$ {proxy_pass http://192.168.10.50:8080;} location ~ \.(jsp|html)$ {root /usr/share/nginx/html;}192.168.10.40 192.168.10.50 结果验证 自此出起开始本章内容
对192.168.10.20进行如下配置
! Configuration File for keepalivedglobal_defs {notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}notification_email_from Alexandre.Cassenfirewall.locsmtp_server 127.0.0.1 smtp_connect_timeout 30router_id LVS01vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_script check_down {script /etc/keepalived/ng.shinterval 1weight -30fall 3rise 2timeout 2
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.188}track_script {check_down}
}下面对该配置文件进行注释和讲解
# Configuration File for keepalivedglobal_defs {# 定义接收通知的电子邮件地址列表notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}# 定义发送通知的电子邮件地址notification_email_from Alexandre.Cassenfirewall.loc# 定义SMTP服务器的地址用于发送电子邮件通知smtp_server 127.0.0.1 # 定义与SMTP服务器连接的超时时间秒smtp_connect_timeout 30# 定义路由器的唯一标识符router_id LVS01# 跳过对接收到的VRRP通告中的地址进行检查这可以避免因网络配置问题导致的误报vrrp_skip_check_adv_addr# #vrrp_strict 是一个可选的指令如果启用它将强制执行VRRP协议的严格检查。在这里它被注释掉了。#vrrp_strict# 定义GRATUITOUS ARP请求的发送间隔秒0表示不发送vrrp_garp_interval 0# 定义组播NANeighbor Advertisement消息的发送间隔秒通常与garp_interval保持一致0表示不发送vrrp_gna_interval 0
}# 定义一个VRRP脚本检查用于监控服务或资源的状态
vrrp_script check_down {# 指定要执行的脚本路径script /etc/keepalived/ng.sh# 定义脚本执行的间隔时间秒interval 1# 定义脚本执行失败时本机的优先级调整值weight -30# 定义脚本连续失败多少次后认为服务不可用fall 3# 定义脚本连续成功多少次后认为服务已恢复rise 2# 定义脚本执行的超时时间秒timeout 2
}# 定义一个VRRP实例
vrrp_instance VI_1 {# 设置VRRP实例的初始状态可以是MASTER或BACKUPstate MASTER# 指定绑定的网络接口interface ens33# 设置虚拟路由器的ID同一个网络内的不同VRRP实例应该使用不同的IDvirtual_router_id 51# 设置本机的优先级值越大优先级越高priority 100# 设置VRRP通告的发送间隔秒advert_int 1# 定义VRRP实例的认证方式和密码authentication {auth_type PASS # 使用密码认证auth_pass 1111 # 设置认证密码}# 定义虚拟IP地址列表virtual_ipaddress {192.168.10.188}# 指定要跟踪的脚本检查当脚本检查失败时会调整本机的优先级track_script {check_down}
} 所需要的脚本
#!/bin/bash
#check_nginx
killall -0 nginx
if [[ $? -ne 0 ]];thensystemctl stop keepalived
fi
对192.168.10.30进行如下配置
! Configuration File for keepalivedglobal_defs {notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}notification_email_from Alexandre.Cassenfirewall.locsmtp_server 127.0.0.1 smtp_connect_timeout 30router_id LVS01vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.188}track_script {check_down}
}由此可见实验是成功的