深圳东风大厦 网站建设,东城做网站,网站设计流程包括,贵阳网站建设端觉什么是高可用#xff1f; HA#xff08;high availability#xff09;即高可用性#xff1b;就是在高可用集群中发生单点故障时#xff0c;能够自动转移资源并切换服务#xff0c;以保证服务一直在线的机制。 LVS LVS#xff1a;#xff08;linux virtual server#…什么是高可用 HAhigh availability即高可用性就是在高可用集群中发生单点故障时能够自动转移资源并切换服务以保证服务一直在线的机制。 LVS LVSlinux virtual server即linux虚拟服务器开源项目主要达到负载均衡的作用。 LVS组成 LVS 由2部分程序组成包括 ipvs 和 ipvsadm ipvs(ip virtual server)一段代码工作在内核空间叫ipvs是真正生效实现调度的代码。ipvsadm另外一段是工作在用户空间叫ipvsadm负责为ipvs内核框架编写规则定义谁是集群服务而谁是后端真实的服务器(Real Server) ipvsadm包安装 ╭─rootlocalhost.localdomain ~
╰─➤ yum install ipvsadm -y负载均衡比较 LVS 抗负载能力强。抗负载能力强、性能高能达到F5硬件的60%对内存和cpu资源消耗比较低工作在网络4层通过vrrp协议转发仅作分发之用具体的流量由linux内核处理因此没有流量的产生。稳定性、可靠性好自身有完美的热备方案如LVSKeepalived应用范围比较广可以对所有应用做负载均衡不支持正则处理不能做动静分离。支持负载均衡算法rr轮循、wrr带权轮循、lc最小连接、wlc权重最小连接配置 复杂对网络依赖比较大稳定性很高。 Ngnix 工作在网络的7层之上可以针对http应用做一些分流的策略比如针对域名、目录结构Nginx对网络的依赖比较小理论上能ping通就就能进行负载功能Nginx安装和配置比较简单测试起来比较方便也可以承担高的负载压力且稳定一般能支撑超过1万次的并发对后端服务器的健康检查只支持通过端口来检测不支持通过url来检测。Nginx对请求的异步处理可以帮助节点服务器减轻负载Nginx仅能支持http、https和Email协议这样就在适用范围较小。不支持Session的直接保持但能通过ip_hash来解决。、对Big request header的支持不是很好支持负载均衡算法Round-robin轮循、Weight-round-robin带权轮循、Ip-hashIp哈希Nginx还能做Web服务器即Cache功能。 HAProxy 支持两种代理模式TCP四层和HTTP七层支持虚拟主机能够补充Nginx的一些缺点比如Session的保持Cookie的引导等工作支持url检测后端的服务器出问题的检测会有很好的帮助。更多的负载均衡策略比如动态加权轮循(Dynamic Round Robin)加权源地址哈希(Weighted Source Hash)加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。HAProxy可以对Mysql进行负载均衡对后端的DB节点进行检测和负载均衡。支持负载均衡算法Round-robin轮循、Weight-round-robin带权轮循、source原地址保持、RI请求URL、rdp-cookie根据cookie不能做Web服务器即Cache LVS三种工作模式 NAT模式路由模式隧道模式NAT模式 调度器环境 ##连接外部的网卡:
192.168.31.100
255.255.255.0
192.168.31.1
##连接real_server的网卡
172.16.100.1
255.255.255.0 real_server1环境: 172.16.100.2
255.255.255.0
172.16.100.1 #网关指向调度器 real_server2环境: 172.16.100.3
255.255.255.0
172.16.100.1 #网关指向调度器 调度器配置 ╭─rootlocalhost.localdomain ~
╰─➤ cat /proc/sys/net/ipv4/ip_forward
0
╭─rootlocalhost.localdomain ~
╰─➤ echo 1 /proc/sys/net/ipv4/ip_forward或者vim /etc/sysctl.conf
net.ipv4.ip_forward 1 #调度器配置命令
ipvsadm -A -t 192.168.31.100:80 -s rr
ipvsadm -a -t 192.168.31.100:80 -r 192.168.250.2 -m
ipvsadm -a -t 192.168.31.100:80 -r 192.168.250.3 -m 查看配置LVS内容 ╭─rootlocalhost.localdomain ~
╰─➤ ipvsadm -Ln
IP Virtual Server version 1.2.1 (size4096)
Prot LocalAddress:Port Scheduler Flags- RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.137.3:80 rr- 172.16.100.10:80 Masq 1 0 2 - 172.16.100.20:80 Masq 1 0 2 特点 调度器会成为性能上的瓶颈可以不同网段 路由模式 DR模式环境direct_server:192.168.254.17real_server:192.168.254.18real_server:192.168.254.19#vip为虚拟服务ipvip:192.168.254.250
.................................................................................................................... 调度器
direct_server:ipvsadm -C #清除配置信息#添加对外提供的服务ipipvsadm -A -t 192.168.254.250:80 -s rr #-A为ADD -t为tcp -s rr为设置算法为轮叫算法#添加2台real_server主机ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.18:80 -g #-a为add -t为tcp -r为realserver -g为DR路由模式ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.19:80 -g #-a为add -t为tcp -r为realserver -g为DR路由模式#配置网卡的子网口为vipip地址为192.168.254.250ifconfig ens33:0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.255 up#添加路由访问192.168.254.250都走ens33:0这个网卡)route add -host 192.168.254.250 dev ens33:0
........................................................................................................................
real_server端real_server:#在回环地址的子网口上配置服务ip(vip)ifconfig lo:0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.255 up #添加静态路由指定lo:0端口route add -host 192.168.254.250 dev lo:0echo 1/proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2/proc/sys/net/ipv4/conf/lo/arp_announceecho 1/proc/sys/net/ipv4/conf/all/arp_ignoreecho 2/proc/sys/net/ipv4/conf/all/arp_announceecho 0/proc/sys/net/ipv4/conf/lo/arp_ignoreecho 0/proc/sys/net/ipv4/conf/lo/arp_announceecho 0/proc/sys/net/ipv4/conf/all/arp_ignoreecho 0/proc/sys/net/ipv4/conf/all/arp_announcearp_ignore:定义接收到ARP请求时的响应级别 0默认只用本地配置的有响应地址都给予响应 1仅仅在目标IP是本地地址并且是配置在请求进来的接口上的时候才给予响应(仅在请求的目标地址配置请求到达的接口上的时候才给予响应)arp_announce定义将自己的地址向外通告时的级别 0默认表示使用配置在任何接口的任何地址向外通告 1尽量仅向目标网络通告与其网络匹配的地址 2仅向与本地接口上地址匹配的网络进行通告 拓展python 远程布置LVS路由模式代码 import paramiko
vip 192.168.254.250
ds 192.168.254.13
rs1 192.168.254.11
rs2 192.168.254.12
ds_cmd
ipvsadm -C;
ipvsadm -A -t {vip}:80 -s wrr;
ipvsadm -a -t {vip}:80 -r {rs1}:80 -w 1 -g;
ipvsadm -a -t {vip}:80 -r {rs2}:80 -w 2 -g;
ifconfig ens33:0 {vip} broadcast {vip} netmask 255.255.255.255 up;
route add -host {vip} dev ens33:0;
.format(vipvip, rs1rs1, rs2rs2)rs1_cmd
ifconfig lo:0 {vip} broadcast {vip} netmask 255.255.255.255 up;
route add -host {vip} dev lo:0;
echo 1/proc/sys/net/ipv4/conf/lo/arp_ignore;
echo 2/proc/sys/net/ipv4/conf/lo/arp_announce;
echo 1/proc/sys/net/ipv4/conf/all/arp_ignore;
echo 2/proc/sys/net/ipv4/conf/all/arp_announce;
service httpd restart
.format(vipvip)
rs2_cmd
ifconfig lo:0 {vip} broadcast {vip} netmask 255.255.255.255 up;
route add -host {vip} dev lo:0;
echo 1/proc/sys/net/ipv4/conf/lo/arp_ignore;
echo 2/proc/sys/net/ipv4/conf/lo/arp_announce;
echo 1/proc/sys/net/ipv4/conf/all/arp_ignore;
echo 2/proc/sys/net/ipv4/conf/all/arp_announce;
service httpd restart
.format(vipvip)ssh paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())def direct_server():ssh.connect({ds}.format(dsds), 22, root, root,timeout3)stdin, stdout, stderr ssh.exec_command(ds_cmd)print(stderr.read().decode(utf-8))print(stdout.read().decode(utf-8))print(dicret_server配置完成)def real_server1():ssh.connect({rs1}.format(rs1rs1), 22, root, root, timeout3)stdin, stdout, stderr ssh.exec_command(rs1_cmd)print(stderr.read().decode(utf-8))print(stdout.read().decode(utf-8))print(real_server1配置完成)def real_server2():ssh.connect({rs2}.format(rs2rs2), 22, root, root, timeout3)stdin, stdout, stderr ssh.exec_command(rs2_cmd)print(stderr.read().decode(utf-8))print(stdout.read().decode(utf-8))print(real_server2配置完成)def main():direct_server()real_server1()real_server2()ssh.close()if __name__ __main__:main() keepalived vrrp协议 VRRP协议是一种主备模式的协议通过VRRP可以在网络发生故障时透明地进行设备切换不影响主机间的数据通信这其中涉及两个概念物理路由器和虚拟路由器 VRRP可以将两台或者多台物理路由器设备虚拟成一个虚拟路由器这个虚拟路由器通过虚拟IP一个或多个对外提供服务 在虚拟路由器内部是多个物理路由器协同工作同一时间只有一台物理路由器对外提供服务这台物理路由器被称之为主路由器处于master状态角色。它拥有对外提供的虚拟ip提供各种网络功能比如arp请、icmp、数据转发等 其他物理路由器不拥有对外提供服务的虚拟ip也不提供对外网络功能仅仅接收master的vrrp状态通告信息这些路由器被统称为备份路由器处于backup角色。 在一个虚拟路由器中只有处于master角色的路由器会一直发送vrrp数据包处于backup角色的路由器只接受master发过来的报文信息用来监控master运行状态因此不会发生master抢占的现象除非它的优先级更高 当master不可用时backup也就无法收到master发过来的报文信息于是就认定master出现故障接着多台backup就会进行选举优先级最高的backup将成为新的master这种选举并进行角色的过程非常快因此也就保证了服务的持续可用性 keepalived结构体系 安装keepalived ╭─rootlocalhost.localdomain ~
╰─➤ yum install keepalived -ykeepalived主配置文件 ╭─rootlocalhost.localdomain ~
╰─➤ vim /etc/keepalived/keepalived.conf主配置文件分三部分 全局配置VRRP配置LVS配置 拓展1基于mysql或者mariadb数据库的高可用如下配置 ! Configuration File for keepalivedglobal_defs {notification_email {}
}vrrp_script chk_mysql { #check_mysql是为执行脚本计划起的名字script /root/sh/check_mysql.sh #指定要执行脚本的路径interval 2 #脚本执行间隔每2s检测一次
}vrrp_instance HA_1 {state BACKUPinterface ens33virtual_router_id 151priority 100advert_int 1nopreemptauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.254.250/24}track_script { #跟踪脚本计划 chk_mysqlchk_mysql}
} 脚本文件内容 ╭─rootlocalhost.localdomain ~/sh
╰─➤ vim check_mysql.sh
...................................................
#!/bin/bash
service mariadb status
if [ $? -nq 0 ];thenservice keepalived stop
.................................................. 拓展2基于web网站的负载均衡高可用如下配置 keepalived:yum install keepalivedvim /etc/keepalived/keepalived.conf! Configuration File for keepalived
#全局配置
global_defs {notification_email {#收件人地址}#邮件服务器
}
VRRP配置DS1
vrrp_instance VI_1 {state MASTER #角色类型MASTER|BACKUPinterface ens33 #网卡名称virtual_router_id 51 #虚拟路由id需要与BACKUP一致priority 100 #优先级advert_int 1 #没1秒检查一次#nopreempt #非抢占模式authentication {auth_type PASS #认证类型 主备之间必须一样auth_pass 1111 #认证密码 主备之间必须一样}virtual_ipaddress {192.168.254.250/24 #虚拟ipvip}
}#LVS配置
virtual_server 192.168.254.250 80 { delay_loop 3 #健康检查时间间隔lb_algo rr #负载均衡调度算法 lb_kind DR #负载均衡转发规则 protocol TCP #协议real_server 192.168.254.18 80 { #要监控的real_server的ip和端口号weight 1 #权重TCP_CHECK { #基于tcp协议的检查connect_timeout 3 #连接时间超时retry 3 #重连次数delay_before_retry 3 #重连间隔时间}}real_server 192.168.254.19 80 {weight 1TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3} }
} 转载于:https://www.cnblogs.com/du-z/p/11120825.html