linux 综合架构高可用服务
keepalived 高可用服务介绍说明
用途:
-
避免负载均衡服务出现单点问题
高可用服务的原理
通过 VRRP协议竞选谁是主(通过虚拟IP进行标识),主会定期的向从发送组播证明自己活着,如果主在规定的时间内没发送,则从就会根据 VRRP协议竞选出主(在网卡上出现虚拟 IP 通过 ip -a 查看,网卡中的虚拟地址),当主(以前的)恢复是,会抢占成主
高可用keepalived服务部署流程
一个历程: 准备高可用服务架构
- lb01 lb02 两台机器
第二个历程: 安装部署keepalived软件,在1b01和1b02两台主机上
yum install -y keepalived
配置文件说明
man keepalived.conf
GLOBAL CONFIGURATION --- 全局配置部分
VRRPD CONFIGURATION --- VRRP协议配置部分
LVS CONFIGURATION --- LVS服务管理配置部分
配置文件 /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
}
}
第三个历程: 编写keepalived配置文件
lb01配置信息
/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配置信息
/etc/keepalived/keepalived.conf
! 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服务
systemctl start keepalived

在 1b01(主)上查看地址信息发现 虚拟ip10.0.0.3/24出现了

在 1b02(从)上查看地址信息发现并没有虚拟ip10.0.0.3/24

假如 主机 down 掉了,主机的虚拟ip就会消失,从主机上就会出现虚拟的ip
在 1b01上执行
systemctl stop keepalived
在 1b02上查看

当主 1b01 恢复后,会把虚拟的ip再次抢占回来
第四个历程
当外部访问 10.0.0.3 上会把请求接入到主上,当主挂掉后,会把所有的请求转移到从上去,当主恢复后,在把资源抢占回来
高可用服务企业应用
高可用服务常见异常问题---脑裂问题(主从都生成虚拟ip地址)
出现原因:
- 高可用备服务器接收不到主服务器发送的组播包,备服务器上会自动生成VIP地址
物理原因:
- 高可用集群之间通讯线路出现问题
逻辑原因:
- 有安全策略阻止
如何解决脑裂问题
01. 进行监控,发出告警
备服务器出现VIP地址的原因:
-
a 主服务器出现故障
-
b 出现脑裂问题
#!/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
02. 直接关闭一台服务器的keepalived服务
systemctl stop keepalived
如何实现keepalived服务自动释放vip地址资源,nginx服务停止,keepalived也必须停止
第一个历程: 编写监控nginx服务状态监控
/server/scripts/check_web.sh
#!/bin/bash num=`ps -ef|grep -c [n]ginx` if [ $num -lt 2 ] then systemctl stop keepalived fi
第二个历程实时监控nginx服务状态---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;
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;
}
}
第二个历程: 修改内核文件
异常问题:
01. 如何设置监听网卡上没有的地址(公网地址etho网卡公网ip取消,只保留虚拟ip)
解决: 需要修改内核信息
-
echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf
-
sysctl -p
第三个历程: 重启nginx负载均衡服务
- systemctl restart nginx

浙公网安备 33010602011771号