目录
简介
1 高可用服务的概念介绍
2 部署安装高可用服务
3 高可用服务配置文件参数说明
4 高可用服务VRRP协议原理
5 高可用服务常见问题(脑裂文件)
6 高可用服务如何进行监控
7 高可用服务实现双主配置
高可用服务介绍说明
避免负载均衡服务出现单点问题
高可用服务的原理
实现部署高可用服务
利用keepalived软件实现
作用:
- 为LVS服务而诞生出来的 k8s + 容器技术docker 容器<--镜像<--仓库 春节抢红包
keepalived + LVS负载均衡软件(4层) - 实现高可用服务功能
高可用keepalived服务部署流程
第一个历程: 准备高可用服务架构
第二个历程: 安装部署keepalived软件 (lb01 lb02)
yum install -y keepalived
第三个历程: 编写keepalived配置文件
vim /etc/keepalived/keepalived.conf
GLOBAL CONFIGURATION --- 全局配置部分
VRRPD CONFIGURATION --- VRRP协议配置部分
LVS CONFIGURATION --- LVS服务管理配置部分
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs { --- 全局配置部分
notification_email { --- 设置发送邮件信息的收件人
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from oldboy@163.com --- 设置连接的邮件服务器信息
smtp_server 163.smtp.xxx_
smtp_connect_timeout 30
router_id LVS_DEVEL --- 高可用集群主机身份标识(集群中主机身份标识名称不能重复)
}
vrrp_instance oldboy { --- Vrrp协议家族 oldboy
state MASTER --- 标识所在家族中的身份 (MASTER/BACKUP)
interface eth0 --- 指定虚拟IP地址出现在什么网卡上
virtual_router_id 51 --- 标识家族身份信息 多台高可用服务配置要一致
priority 100 --- 设定优先级 优先级越高,就越有可能成为主
advert_int 1 --- 定义组播包发送的间隔时间(秒) 主和备配置要一样 1
authentication { --- 实现通讯需要有认证过程
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { --- 配置虚拟IP地址信息
192.168.200.16
192.168.200.17
192.168.200.18
}
}
删掉多余信息
lb01配置信息:
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb01
}
vrrp_instance oldboy {
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/24
}
}
lb02配置信息:
! Configuration File for keepalived
global_defs {
router_id lb02
}
vrrp_instance oldboy {
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/24
}
}
第三个历程: 启动keepalived服务
...
第四个历程: 修改域名和IP地址解析关系
高可用服务企业应用
高可用服务常见异常问题---脑裂问题
如何解决脑裂问题:
出现原因:
高可用备服务器接收不到主服务器发送的组播包,备服务器上会自动生成VIP地址
如何解决脑裂问题:
物理原因:
高可用集群之间通讯线路出现问题
如何解决脑裂问题:
逻辑原因:
有安全策略阻止
如何解决脑裂问题:
- 进行监控,发出告警
备服务器出现VIP地址的原因:
a 主服务器出现故障
b 出现脑裂问题
可用shell脚本(备机)监控
#!/bin/bash
ip a s eth0|grep "10.0.0.3" >/dev/null
if [ $? -eq 0 ]
then
echo "keepalived服务出现异常,请进行检查"|mail -s 异常告警-keepalived 330882721@qq.com
fi
## 结合while循环可实时监控
shell脚本进行比较判断
-eq 等于
-ne 不等于
-lt 小于
-gt 大于
-le 小于等于
-ge 大于等于
实现keepalived服务自动释放vip地址资源
nginx(皇帝) + keepalived(妃子): nginx服务停止(皇帝死了),keepalived也必须停止(殉情)
第一个历程: 编写监控nginx服务状态监控(主机)
vim check_web.sh
#!/bin/bash
num=`ps -ef|grep -c nginx`
if [ $num -lt 2 ]
then
systemctl stop keepalived
fi
加上执行权限
第二个历程: 测试监控脚本
第三个历程: 实时监控nginx服务状态---keepalived配置文件
# check_web=/server/scripts/check_web.sh
vrrp_script check_web {
script "/server/scripts/check_web.sh" --- 定义需要监控脚本(脚本是执行权限)
interval 2 --- 执行脚本的间隔时间(秒)
weight 2 --- ???
}
$check_web
track_script {
check_web --- 调用执行你的脚本信息
}
#位置要放正确,见下面
############################################
keepalived信息配置
[root@lb01 scripts]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb01
}
vrrp_script check_web {
script "/server/scripts/check_web.sh"
interval 3
weight 2
}
vrrp_instance oldboy {
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/24
}
track_script {
check_web
}
}
高可用集群双主配置
第一个历程: 编写lb01服务器keepalived配置文件
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb01
}
vrrp_instance oldboy {
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/24
}
}
vrrp_instance oldgirl {
state BACKUP
interface eth0
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.4/24
}
}
第二个历程: 编写lb02服务器keepalived配置文件
! Configuration File for keepalived
global_defs {
router_id lb02
}
vrrp_instance oldboy {
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/24
}
}
vrrp_instance oldgirl {
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/24
}
}
第三个历程: 编写域名和IP地址解析信息
进行抓包查看:
www.oldboy.com --- 10.0.0.3(10.0.0.5)
10.0.0.1 --- 10.0.0.3
10.0.0.5 --- 10.0.0.7
10.0.0.7 --- 10.0.0.5
10.0.0.3 --- 10.0.0.1
bbs.oldboy.com --- 10.0.0.4(10.0.0.6)
10.0.0.1 --- 10.0.0.4
10.0.0.6 --- 10.0.0.7
10.0.0.7 --- 10.0.0.6
10.0.0.4 --- 10.0.0.1
高可用服务安全访问配置(负载均衡服务)
第一个历程: 修改nginx负载均衡文件
upstream oldboy {
server 10.0.0.7:80;
server 10.0.0.8:80;
server 10.0.0.9:80;
}
server {
listen 10.0.0.3:80; ## 只监听虚拟ip
server_name www.oldboy.com;
location / {
proxy_pass http://oldboy;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_next_upstream error timeout http_404 http_502 http_403;
}
}
server {
listen 10.0.0.4:80; ################
server_name bbs.oldboy.com;
location / {
proxy_pass http://oldboy;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
第二个历程: 修改内核文件
异常问题:
- 如何设置监听网卡上没有的地址
解决: 需要修改内核信息echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf (可以监听本地网卡没有的地址) sysctl -p 加载配置
第三个历程: 重启nginx负载均衡服务(改监听地址一定要重启)
systemctl restart nginx
weight参数: 权重值参数,主要用于和优先级进行运算
(网盘d44_02)
重要知识点01:
求和运算: weight数值必须是正数 weight + priority 自动提升优先级, 使主机可以成为主服务器
求差运算: weight数值必须是负数 weight - priority 自动降低优先级, 使主机可以成为备服务器
重要知识点02:
运行一个脚本, 执行脚本结束之后, 脚本的执行结果可以为真 看脚本执行返回值 $?==0
运行一个脚本, 执行脚本结束之后, 脚本的执行结果可以为假 看脚本执行返回值 $$<>0
重要知识点03:
如何将知识01 + 知识02
权重值为正数:
- 脚本运行后为真 weight + priority
- 脚本运维后为假 priority
权重值为负数: - 脚本运行后为真 priority
- 脚本运维后为假 weight - priority
高可用服务总结
1) 负载均衡服务扩展补充
根据用uri信息进行负载均衡(动静分离架构)
根据user_agent信息进行负载均衡(手机用户和浏览器访问用户页面信息可以不一致)
2) 高可用服务作用(避免出现单点故障)
3) keepalived高可用服务
- 管理LVS负载均衡软件
- 实现高可用功能(vrrp原理)
4) keepalived服务配置文件
5) keepalived服务企业应用
- 可能出现脑裂问题 --- 脚本编写
- 如何实现自动释放资源 --- 脚本(监控web服务) 修改keepalived文件
- 如何实现双主配置 --- 编写keepalived配置文件 编写多个vrrp实例
- 如何实现负载均衡安全访问 --- 编写负载均衡nginx配置文件 配置监听vip地址信息
发表评论