前言
为了满足系统的高可用,一般都需要搭建集群。当主机挂掉的时候,我们的系统还可以继续提供服务。当我们使用nginx作为反向代理和动静分离服务器的时候,也是如此。实现系统的高可用性,是我们程序员关注的重点。本文介绍了nginx结合keepalived实现主从模式搭建高可用集群。
前提知识
本文不作过多的nginx相关配置介绍,默认读者已经了解nginx的相关知识。
keepalived的介绍
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
系统架构图
实现步骤
1.环境配置
1.1 安装nginx
安装相关依赖
1
|
yum install pcre-devel zlib zlib-devel openssl openssl-devel |
上传解压压缩包
1
|
tar zxvf nginx-1.12.2. tar .gz |
创建目录,检测配置
1
2
|
mkdir -p /usr/local/nginx . /configure --prefix= /usr/local/nginx |
预编译和安装
1
|
make && make install |
启动、停止相关命令
1
2
3
4
|
cd /usr/local/nginx/sbin/ . /nginx . /nginx -s stop . /nginx -s start |
1.2 安装keepalived
1
|
yum install -y keepalived |
2.主机配置
修改keepalived配置文件
1
|
vim /etc/keepalived/keepalived .conf |
修改的内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#新增的配置 vrrp_script chk_http_port { script "/shell/nginx_check.sh" #脚本地址 interval 2 #检测脚本执行的间隔 weight 2 #比重 } vrrp_instance VI_1 { state MASTER #主服务器为MASTER,从服务器为BACKUP interface eth0 #网卡 virtual_router_id 51 #主、备机的virtual_router_id必须相同 priority 100 #主、备机不同的优先级,主机优先级较大,备机值较小,默认是100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } #虚拟IP地址 virtual_ipaddress { 192.168.126.88 } } |
创建编写脚本文件
1
2
|
mkdir /shell/nginx_check .sh vim /shell/nginx_check .sh |
脚本文件内容如下
1
2
3
4
5
6
7
8
9
|
#!/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 |
3.从机配置
修改keepalived配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
vrrp_instance VI_1 { state BACKUP #主服务器为MASTER,从服务器为BACKUP interface eth0 #网卡 virtual_router_id 51 #主、备机的virtual_router_id必须相同 priority 50 #主、备机不同的优先级,主机优先级较大,备机值较小 advert_int 1 authentication { auth_type PASS auth_pass 1111 } #虚拟IP地址 virtual_ipaddress { 192.168.126.88 } } |
4.启动服务
启动
1
|
service keepalived start |
查看虚拟IP地址
1
2
3
4
5
6
7
8
9
10
11
12
|
ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link /loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1 /8 scope host lo inet6 ::1 /128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link /ether 00:0c:29:4f:31:ce brd ff:ff:ff:ff:ff:ff inet 192.168.126.100 /24 brd 192.168.126.255 scope global eth0 inet 192.168.126.88 /32 scope global eth0 inet6 fe80::20c:29ff:fe4f:31ce /64 scope link valid_lft forever preferred_lft forever |
5.关闭防火墙测试
关闭防火墙
1
2
3
4
|
service iptables stop #查看防火墙是否开机自启动 chkconfig --list | grep iptables chkconfig iptables off |
登陆虚拟IP地址查看
1
|
http: //192 .168.126.88/ |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。
原文链接:https://juejin.im/post/5df34f6d6fb9a0162b7f3423