一 基本介绍
二 部署高可用
利用keepalived软件实现
作用:
1.为LVS服务而诞生
2.实现高可用服务功能
高可用keepalived服务部署流程
第一步: 准备高可用服务架构 (两台负载均衡服务器)
第二步: 安装部署keepalived软件(lb01 lb02)
yum install -y keepalived
第三步: 编写keepalived配置文件
vim /etc/keepalived/keepalived.conf
配置文件说明
GLOBAL CONFIGURATION 全局配置
VRRPD CONFIGURATION vrrp协议配置部分
LVS CONFIGURATION LVS服务管理配置部分
! Configuration File for keepalived
global_defs { ---全局配置部分
notification_email { ---设置发送邮件信息的收件人
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc ---设置连接的邮件服务器信息
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL ---高可用集群主机身份标识(集群中主机身份标识名称不能重复)
}
vrrp_instance VI_1 { ---Vrrp相关配置(vrrp实例配置--一个服务可以启动多个主进程)
state MASTER ---标识所在家族中的身份(master/backup)
interface eth0 ---指定虚拟IP地址出现在什么网卡上
virtual_router_id 51 ---标识家族身份信息,多台高可用服务配置要一致
priority 100 ---设定优先级 优先级越高就越有可能成为主
advert_int 1 ---定义组播包发送的时间间隔(秒),主备必须配置成一致
authentication { ---实现通讯需要认证过程
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { ---配置虚拟IP地址信息
192.168.200.16
192.168.200.17
192.168.200.18
}
}
LB01配置
global_defs {
router_id lb01
}
vrrp_instance scxiang {
state MASTER
interface ens32
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3/24
}
}
LB02配置
global_defs {
router_id lb02
}
vrrp_instance scxiang {
state BACKUP
interface ens32
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地址解析关系
将域名指向10.0.0.3
三 高可用服务企业应用
3.1 常见问题之脑裂问题
出现原因:高可用备服务器接收不到主服务器发送的组播包,备服务器会自动生成VIP地址
物理原因:
1.通信线路出现问题
逻辑原因:
01.有安全策略阻止
如何解决脑裂问题
01.进行监控,发出告警
脚本
[root@lb02 scripts]# cat /server/scripts/naolie.sh
#!/bin/bash
ip a s | grep “10.0.0.3” &>/dev/null
if [ $? -eq 0 ] ;then
echo “keepalived 服务出现异常,请进行检查”|mail -s 异常告警-keepalived 505597482@qq.com
fi
设置邮件
set from=shichuan_xiang@163.com smtp=smtp.163.com
set smtp-auth-user=shichuan_xiang@163.com smtp-auth-password=TWLLDSRFCUVDBEHL smtp-auth=login
02.直接关闭一台服务器的keepalived服务
3.2.如何实现keepalived服务自动释放vip地址资源
nginx+keepalived:nginx服务停止,keepalived也必须停止
第一步:编写监控nginx的服务状态脚本
#!/bin/bash
ss -tnlp | grep nginx &>/dev/null
if [ $? -ne 0 ] ;then
systemctl stop keepalived
fi
第二步:测试监控脚本
第三步:实时监控nginx服务状态—keepalived配置文件
vrrp_script check_web {
script “/server/scripts/check_web.sh” —-定义需要监控的脚本(脚本有执行权限)
interval 2 —-执行脚本的时间间隔(秒)
weight 2 —- ???
}
track_script {
check_web —-调用执行你的脚本信息
}
配置文件
global_defs {
router_id lb01
}
vrrp_script check_web {
script "/server/scripts/check_web.sh"
interval 2
weight 2
}
vrrp_instance scxiang {
state MASTER
interface ens32
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
}
}
3.3.如何实现高可用集群的双主配置
第一步: 编写lb01服务器keepalived配置文件
global_defs {
router_id lb01
}
vrrp_instance instance_01 {
state MASTER
interface ens32
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 instance_02 {
state BABKUP
interface ens32
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配置文件
global_defs {
router_id lb02
}
vrrp_instance instance01 {
state BACKUP
interface ens32
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 instance02 {
state MASTER
interface ens32
virtual_router_id 52
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.4/24
}
}
4.高可用服务安全访问配置(负载均衡服务)
第一步:修改nginx负载均衡文件
upstream scxiang{
server 10.0.0.7;
server 10.0.0.8;
server 10.0.0.9;
}
server {
listen 10.0.0.3:80;
server_name www.scxiang.com;
location / {
proxy_pass http://scxiang;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
server {
listen 10.0.0.4:80;
server_name bbs.scxiang.com;
location / {
proxy_pass http://scxiang;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
第二步:修改内核文件
异常问题:
a.如何配置监听网卡上没有的地址
解决:需要修改内核信息
echo ‘net.ipv4.ip_nonlocal_bind = 1’ >>/etc/sysctl.conf
sysctl -p
第三步:重启nginx服务
systemctl restart nginx
weight参数:权重值参数,主要用于和优先级进行运算
重要知识点01:
求和运算:weight数值必须是正数,weight+priority 自动提升优先级,使主机可以成为主服务器
求差运算:weight数值必须使负数,weight-priority 自动降低优先级,使主机可以成为备服务器
重要知识点02:
运行一个脚本,执行脚本结束之后,脚本的执行结果可以为真,看脚本执行返回值 $?=0
运行一个脚本,执行脚本结束之后,脚本的执行结果可以为假,看脚本执行返回值 $?<>0非零
重要知识点03:
将知识点1和知识点2结合
权重值为正数:
1.脚本运行后为真 weight+priority
2.脚本运行后为假 priority
权重值为负数:
1.脚本运行后为真 priority
2.脚本运行后为假 weight-priority