高可用服务部署详谈(附高可用服务企业应用)

负载均衡反向代理服务基础优化

提高反向代理效率

扩展提升超时设置指令:网络通讯设置超时,是为了尽快释放连接资源

Syntax:			proxy_connect_timeout time;			用户端  -请求01-> 代理端  web01
Default:		proxy_connect_timeout 60s;			推荐20s
Context:		http,server,location

Syntax:			proxy_connect_timeout time;			用户端  -请求01 时间 请求02-> 代理端  web01
Default:		proxy_connect_timeout 60s;			
Context:		http,server,location

Syntax:			proxy_connect_timeout time;			用户端  <响应01 时间 响应02-> 代理端  web01
Default:		proxy_connect_timeout 60s;			
Context:		http,server,location

PS:尽量把负载压力向前推,在前端实现缓冲或缓存

Syntax:		proxy_buffering on | off;			是否开启缓冲功能
Default:	proxy_buffering on;
Context:	http,server,location

Syntax:		proxy_buffer_size size;				缓冲头部信息大小  存储所有数据头部信息
Default:	proxy_buffer_size 4k|8K|16K;		HTTP协议数据包(头部信息)
Context:	http,server,location

Syntax:		proxy_buffers number size;				缓冲头部信息大小  存储所有数据信息
Default:	proxy_buffers 8 4K|16K;					HTTP协议数据包(请求主体信息)
Context:	http,server,location

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tfkoES1f-1650600014577)(E:\Typora软件\linux运维笔记\运维笔记图片库\067 负载均衡部分笔记截图.png)]

网站缓存服务功能配置

(加快部分数据相应效率)

第一个历程:创建缓存存储环境

mkdir /tmp/ngx_cache
mount -t tmp -o size=100M tmps /tmp/ngx_cache

第二个历程:编写配置文件:

vim proxy.conf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YOGJNgXv-1650600014578)(E:\Typora软件\linux运维笔记\运维笔记图片库\068 负载均衡部分笔记截图.png)]

高可用服务概念介绍

keepalived实现高可用功能主要是借助vrrp协议原理,实现服务器设备之间主备关系

实现两台相关功能服务器具有主备,当服务器出现故障,可以自动使用备服务器顶替主服务器作用

负载均衡服务器 —冗余能力

存储服务器 —冗余能力

备份服务器 —冗余能力

数据库服务器 —冗余能力

高可用服务原理过程

vrrp (虚拟路由冗余协议 Virtual Router Redundancy Protocol)

1.主服务器和备份服务器要使用vrrp协议交流

(1)主服务器告诉备份服务器我还活着

(2)主服务器与备份服务器竞选机制

2.将主服务器上进行虚拟IP地址标识

主服务器 10.0.0.5 vip 10.0.0.3 www.nana.com ----10.0.0.3

备服务器 10.0.0.6 (如果上面塌了 vip换人)

PS:vip地址在主服务器与备服务器切换的过程称为IP地址漂移过程

3.主服务器恢复功能后,会有资源抢占过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9c7Q9vxo-1650600014579)(E:\Typora软件\linux运维笔记\运维笔记图片库\069 keepalived高可用原理说明.PNG)]

高可用服务的部署过程

第一个历程:部署高可用服务环境准备

两台负载均衡服务器 (克隆生成)

第二个历程:安装部署keepalived服务

yum install keepalived

第三个历程:编写服务程序配置文件

lb01上

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs{
	router_id lb01
}

vrrp_instance VI_1 {
	state MASTER
	interface eth0
	virtual_router_id 51
	priority 150
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		10.0.0.3
	}
}

lb02上

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs{
	router_id lb02
}

vrrp_instance VI_1 {
	state BACKUP
	interface eth0
	virtual_router_id 51
	priority 100
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		10.0.0.3
	}
}

第四个历程:启动服务程序

systemctl start keepalived.service

高可用服务配置文件说明

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs{
	router_id lb01						---定义高可用服务器主机标识信息
}

vrrp_instance VI_1 {					---可以建立一个高可用集群环境
	state MASTER						---简单描述次服务器身份  MASTER BACKUP
	interface eth0						---设置vip地址出现在一个网卡上
	virtual_router_id 51				---一个高可用集群每台主机的标识信息  所在集群是否相同
	priority 150						---优先级越大越有可能成为主		
	advert_int 1						---发送vrrp组播包时间间隔(主备要一致)
	authentication {					---实现主备通讯的认证过程
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		10.0.0.3						---设置一个虚拟IP地址 (公网地址)
	}
}

高可用服务常见问题

脑裂问题:

(主服务器和备服务器都有vip)

主服务器无法将组播包传输到备服务器时,备服务器会出现VIP地址信息,但主服务器此时VIP仍旧存在,导致主和备都可以接受用户的访问,会造成后端服务器数据不一致情况。

对脑裂情况进行监控:

主服务先停止

脚本实现监控:

#!/bin/bash
# 监控备服务器上是否出现vip地址
while true
do
	sleep 5
	ip add s eth0|grep "10.0.0.3" >/dev/null
	if [ $? -eq 0]
	then
		echo "主服务器可能出现异常,请检查"
	if
done

补充:

[root@lb01 ~]# grep zaizai test.txt 
22222.3333    zaizai
[root@lb01 ~]# echo $?
0
说明:grep命令在实行过程中,如果能成功筛选出指定信息,命令执行后的返回值为0
[root@lb01 ~]# grep zhangna test.txt 
[root@lb01 ~]# echo $?
1
说明:grep命令执行过程中,如果不能筛选出指定信息,命令执行后的返回值为非零

高可用服务企业应用

1.需要监控业务状态情况

监控主服务器上nginx负载均衡服务状态,如果负载均衡出现问题,keepalived服务器需要进行切换

如何实现监控:脚本

#!/bin/bash
# 监控nginx服务状况
方法一:可以判断服务进程信息
ps -ef|grep -c nginx -lt 2
nginx服务停止了

方法二:可以判断服务端口信息
netstat -lntup|grep 80

方法三:判断服务pid文件是否存在
if [ ! -f /var/run/nginx.pid]
then
	systemctl stop keepalived
fi

方法四:判断网站返回状态码 200 /301 /302
curl -I -H host:www.oldboy.com 10.0.0.3 -s |awk 'NR=={print $2}' 

脚本实现:vim check_web.sh

#!/bin/bash
web_info=$(ps -ef|grep -c nginx)
if [ $web_info -lt 2 ]
then
	systemctl stop keepalived
fi

PS:脚本名称不要含有要判断的进程名称

keepalived监控脚本如何运行:

方法一:监控脚本放入定时任务中

方法二:实现监控监控实时运行(while true)

方法三:将脚本放入keepalived配置服务中

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs{
	router_id lb01
}
vrrp_script check_web {				---监控任务名称 check_web
	script "root/check_web.sh"		---定义需要调取执行脚本信息(脚本需要有执行权限)
	interval 2						---脚本运行间隔时间
	weight 2						---可以利用权重数值和优先级做运算
}

vrrp_instance VI_1 {
	state MASTER
	interface eth0
	virtual_router_id 51
	priority 150
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		10.0.0.3
	}
	track_script {						---调取监控任务信息
		check_web
	}
}

智能切换过程

网站出现异常时:

LB01 主服务器可以降低优先级 将流量转换给 备服务器

网站恢复正常时:

LB01 主服务器可以恢复优先级 将流量转换给 主服务器


脚本执行结果:

权重数值是正数:

  • 执行成功:脚本执行的返回值为0 优先级+weight 求和运算 150+2
  • 执行失败:脚本执行的返回值为非0 优先级保持不变

权重数值是负数:

  • 执行成功:脚本执行的返回值为0 优先级保持不变
  • 执行失败:脚本执行的返回值为非0 优先级-weight 求差运算 150+(-2)
2.需要实现负载双主配置

不同主备服务器上有不同vip地址

第一个历程:编写lb01配置文件

vrrp_instance VI_1 {
	state MASTER
	interface eth0
	virtual_router_id 51
	priority 150
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		10.0.0.3
	}
}
vrrp_instance VI_2 {
	state BACKUP
	interface eth0
	virtual_router_id 51
	priority 100
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		10.0.0.4
	}
}

第二个程序:编写lb02配置文件

vrrp_instance VI_1 {
	state BACKUP
	interface eth0
	virtual_router_id 51
	priority 100
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		10.0.0.3
	}
}
vrrp_instance VI_2 {
	state MASTER
	interface eth0
	virtual_router_id 52
	priority 150
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		10.0.0.4
	}
}

第三个历程:配置好DNS本地解析

10.0.0.3 www.nana.com blog.nana.com —> 10.0.0.5 lb01

1.0.0.0.4 bbs.nana.com zhihu.nana.com —>10.0.0.6 lb02

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值