第一个历程: 准备高可用服务架构
第二个历程: 安装部署keepalived软件
[root@ lb01 ~]# yum install -y keepalived
第三个历程: 编写keepalived配置文件
[root@ lb01 ~]#vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs { --- 全局配置部分
notification_email { --- 设置发送邮件信息的收件人
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from 1459387476@qq.com --- 设置连接的邮件服务器信息
smtp_server smtp.qq.com
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服务
[root@ lb01 keepalived]# systemctl start keepalived.service
[root@ lb01 keepalived]# systemctl status keepalived.service
● keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2021-05-26 16:14:07 CST; 2s ago
启动好后我们就可以看到相关信息配置正确
[root@ lb01 keepalived]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:3e:d3:e1 brd ff:ff:ff:ff:ff:ff
inet 192.168.149.5/24 brd 192.168.149.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.149.3/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::afb0:6f94:6e1f:7045/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:3e:d3:eb brd ff:ff:ff:ff:ff:ff
inet 172.168.3.5/24 brd 172.168.3.255 scope global noprefixroute ens37
valid_lft forever preferred_lft forever
inet6 fe80::cba9:e9e2:10e5:8ae2/64 scope link noprefixroute
valid_lft forever preferred_lft forever
**此时 用户访问192.168.149.3时,就等价于访问192.168.149.5**
第四个历程: 修改域名和IP地址解析关系
修改hosts文件,解析改为192.168.149.3,访问.3就等于访问.5
高可用服务企业应用
1、 高可用服务常见异常问题—脑裂问题
出现原因:
高可用备服务器接收不到主服务器发送的组播包,备服务器上会自动生成VIP地址
物理原因:
高可用集群之间通讯线路出现问题
逻辑原因:
有安全策略阻止
2、如何解决脑裂问题:
01. 进行监控,发出告警
备服务器出现VIP地址的原因:
a 主服务器出现故障
b 出现脑裂问题
[root@ lb01 ~]# vim check_naolie.sh
#!/bin/bash
ip a s eth0|grep “10.0.0.3” >/dev/null
if [ $? -eq 0 ]
then
echo “keepalived服务出现异常,请进行检查”|mail -s 异常告警-keepalived 1459387476@qq.com
fi
shell脚本进行比较判断
-eq 等于
-ne 不等于
-lt 小于
-gt 大于
-le 小于等于
-ge 大于等于
02.直接关闭一台服务器的keepalived服务
如何实现keepalived服务自动释放vip地址资源
nginx+ keepalived: nginx服务停止,keepalived必须停
第一个历程: 编写监控nginx服务状态监控
[root@ lb01 scripts]# vim check_nginx.sh
#!/bin/bash
num=`ps -ef|grep -c [n]ginx`
if [ $num -lt 2 ]
then
systemctl stop keepalived
fi
第二个历程: 测试监控脚本
[root@ lb01 scripts]# vim check_web.sh
#!/bin/bash
num=ps -ef|grep -c nginx
if [ $num -lt 2 ]
then
systemctl stop keepalived
if
第三个历程: 实时监控nginx服务状态—keepalived配置文件
check_web=/server/scripts/check_web.sh
vrrp_script check_web {
script "/server/scripts/check_web.sh" --- 定义需要监控脚本(脚本是执行权限) (决对路径)
interval 3 --- 执行脚本的间隔时间(秒)
weight 2 (顶头写,就能成功启动)
}
$check_web ---调用执行一下
track_script {
check_web --- 调用执行你的脚本信息
}
这些信息要填写在keepalive的配置文件中
整完重启一下
如何高可用集群双主配置
第一个历程: 编写lb01服务器keepalived配置文件
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
vrrp_instance oldgirl {
state BACKUP (这里改)
interface ens33
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
第二个历程: 编写lb02服务器keepalived配置文件
改的地方和第一步一样
第三个历程: 编写域名和IP地址解析信息
进行抓包查看:
www.kitty.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.kitty.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负载均衡文件
nginx的www配置文件
upstream oldboy {
server 192.168.149.7:80;
server 192.168.149.8:80;
server 192.168.149.9:80;
}
server {
listen 192.168.149.3:80;
server_name www.kitty.com;
location / {
proxy_pass http://kitty;
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 192.168.149.4:80;
server_name bbs.kitty.com;
location / {
proxy_pass http://kitty;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
第二个历程: 修改内核文件
异常问题:
01. 如何设置监听网卡上没有的地址
解决: 需要修改内核信息
echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf
sysctl -p
第三个历程: 重启nginx负载均衡服务
本文详细介绍了如何通过Keepalived实现高可用服务架构,包括软件安装、配置文件编写、服务启动,以及针对脑裂问题的监控和解决方案。重点涉及VIP地址管理和负载均衡配置,确保服务的稳定性和安全性。
615

被折叠的 条评论
为什么被折叠?



