配置高可用的集群
我们使用Nginx配置负载均衡的时候,当我们的tomcat宕机了,我们的nginx会自动给我剔除掉宕掉的服务器,但是我们应该也会联想到,如果Nginx宕机了呢?我们的请求就无法到达我们的反向代理服务器了
Nginx宕机了,解决方案
配置nginx配置高可用
配置多个nginx,一台master主服务器,多台从服务器
我们配置主从配置的时候需要一个软件 KeepAlived 用来检查nginx服务器是否还活着
我们还需要一个虚拟的IP地址
安装 keeplive 使用 yum命令进行安装 yum -y install keepalived 查看是否安装成功 rpm -q -a keepalived
安装成功之后会在 etc/keepalived下 生成keeplived.conf配置文件
分别配置 主和从服务器etc/keepalived下的keepalived.conf文件
keepalived.conf主配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51global_defs {
notification_email {
liu997121.com
}
notification_email_from liu997121.com
smtp_server imap.gmail.com
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2 #(检测脚本执行的间隔)
weight 2
}
vrrp_instance VI_1 {
state MASTER # 备份服务器上将 MASTER 改为 BACKUP
interface ens33 #网卡
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.50 # VRRP H 虚拟地址
}
}keepalived.conf从配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51global_defs {
notification_email {
liu997121.com
}
notification_email_from liu997121.com
smtp_server imap.gmail.com
smtp_connect_timeout 30
router_id LVS_DEVELBACKUP
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2 #(检测脚本执行的间隔)
weight 2
}
vrrp_instance VI_1 {
state BACKUP # 备份服务器上将 MASTER 改为 BACKUP
interface ens33 #网卡
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 80 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.50 #VRRP H 虚拟地址
}
}check_nginx_pid.sh校验脚本配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
这里还有一个坑,就是虚拟ip网段要和real server 真实ip的网络地址一致,比如 192.168.171.128,那么虚拟ip必须是 192.168.171. ,否则虚拟ip无法访问*
- 配置自动检测脚本
- 注意:一定要给这个脚本文件可执行权限(看到变成可执行的颜色),执行命令:chmod u+x /usr/local/src/nginx_check.sh
- 配置完成后分别启动ngxin 和 keepalived
- 打开配置的虚拟IP地址,看是否可以访问到 nginx首页
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ryder!
评论





